Aitken(埃特金)逐次插值法 | 一次插值、二次插值、k次插值

2023-10-30 20:32

本文主要是介绍Aitken(埃特金)逐次插值法 | 一次插值、二次插值、k次插值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Aitken(埃特金)逐次插值法

判断离散数据 ( x i , y i ) ( i = 0 , 1 , 2 , ⋯ , n ) (x_i,y_i)(i=0,1,2,\cdots,n) (xi,yi)(i=0,1,2,,n)的插值精度,既可以采用事后误差估计的方法,也可以在插值点x的附近选取部分数据进行插值,然后再增加一些插值节点进行插值。若两次的插值结果之差小于规定的误差,则可认为插值精度复合要求而停止。这种在插值计算精度不够时增加节点(插值多项式的次数一般不宜超过6~8次)以提高插值精度方法就是所谓的逐次插值法。

在上述情况中,运用Lagrange插值方法存在一个明显缺点,就是当插值节点发生变化和增加时,Lagrange插值公式中的所有基函数都得重新计算,即计算量大。由于插值节点发生变化和增加只是个别节点,因此只对发生变化和增加的结点进行计算以减小计算量十分重要。

Aitken逐次插值法就是一种可以灵活地增加插值节点数,在前面计算结果的基础上继续进行计算而不必重新开始计算的方法。可见,Aitken逐次插值法具有承袭性的特点。

先约定表示插值结果的符号,设在插值区间 [ a , b ] [a,b] [a,b]上,有n+1个顺序排列的插值节点 x 0 , ⋯ , x k , ⋯ , x n x_0,\cdots,x_k,\cdots,x_n x0,,xk,,xn,插值点为x。由前k个顺序排列的插值节点 x 0 , x 1 , ⋯ , x k − 1 x_0,x_1,\cdots,x_{k-1} x0,x1,,xk1构成的插值函数是x的k-1次多项式,可以用 f ( x 0 , ⋯ , x k − 1 ; x k − 1 ) f(x_0,\cdots,x_{k-1};x_{k-1}) f(x0,,xk1;xk1)表示,简记为 f k − 1 ( x k − 1 ) f_{k-1}(x_{k-1}) fk1(xk1)。在上述k个插值节点 x 0 , x 1 , ⋯ , x k − 1 x_0,x_1,\cdots,x_{k-1} x0,x1,,xk1的后面,再顺序增加一个新插值节点 x i ( i ≥ k ) x_i(i\geq k) xi(ik),进行k次插值。其插值函数是x的k次多项式,用 f ( x 0 , ⋯ , x k − 1 ; x k ) f(x_0,\cdots,x_{k-1};x_k) f(x0,,xk1;xk)表示,简记为 f k ( x i ) f_k(x_i) fk(xi),其中k表示插值次数, x k x_k xk为新增加的插值节点。在简记符号 f k ( x i ) f_k(x_i) fk(xi)中,k个顺序排列插值节点 x 0 , x 1 , ⋯ , x k − 1 x_0,x_1,\cdots,x_{k-1} x0,x1,,xk1中的最后一个节点 x k − 1 x_{k-1} xk1,由 f k ( x i ) f_k(x_i) fk(xi)下标k隐含地给出。

  1. 一次插值(线性插值)

首先给出一个固定插值节点 x 0 x_0 x0及其函数值 f ( x 0 ) f(x_0) f(x0),再新增加一个节点 x i ( i ≥ 1 ) x_i(i\geq 1) xi(i1)(自然同时也给出其函数值 f ( x i ) f(x_i) f(xi)),用这两个插值节点进行线性插值,其结果为:
f 1 ( x i ) = x − x i x 0 − x i f ( x 0 ) + x − x 0 x i − x 0 f ( x i ) ( i ≥ 1 ) f_1(x_i)=\frac{x-x_i}{x_0-x_i}f(x_0)+\frac{x-x_0}{x_i-x_0}f(x_i) \quad (i\geq 1) f1(xi)=x0xixxif(x0)+xix0xx0f(xi)(i1)
若取 i = 1 i=1 i=1,则表示以 x 0 , x 1 x_0,x_1 x0,x1为节点进行一次插值,结果为:
f 1 ( x 1 ) = x − x 1 x 0 − x 1 f ( x 0 ) + x − x 0 x 1 − x 0 f ( x 1 ) f_1(x_1)=\frac{x-x_1}{x_0-x_1}f(x_0)+\frac{x-x_0}{x_1-x_0}f(x_1) f1(x1)=x0x1xx1f(x0)+x1x0xx0f(x1)
若取 i = 2 i=2 i=2,则表示以 x 0 x_0 x0 x 2 x_2 x2为节点进行一次插值,结果为:
f 1 ( x 2 ) = x − x 2 x 0 − x 2 f ( x 0 ) + x − x 0 x 2 − x 0 f ( x 2 ) f_1(x_2)=\frac{x-x_2}{x_0-x_2}f(x_0)+\frac{x-x_0}{x_2-x_0}f(x_2) f1(x2)=x0x2xx2f(x0)+x2x0xx0f(x2)
由此可得出如下结论: f 1 ( x i ) f_1(x_i) f1(xi)表示取固定节点 x 0 x_0 x0和变化节点 x i ( i ≥ 1 ) x_i(i\geq 1) xi(i1)及其相应的 f ( x 0 ) , f ( x 1 ) f(x_0),f(x_1) f(x0),f(x1)进行线性插值,得到关于x的一次多项式。

  1. 二次插值

顺序给出两个插值节点 x 0 , x 1 x_0,x_1 x0,x1,再新增加一个节点 x i ( i ≥ 2 ) x_i(i\geq 2) xi(i2),用这3个插值节点进行插值,其结果为:
f k ( x i ) = ( x − x 1 ) ( x − x 2 ) ( x 0 − x 1 ) ( x 0 − x 2 ) f ( x 0 ) + ( x − x 0 ) ( x − x 2 ) ( x 1 − x 0 ) ( x 1 − x 2 ) f ( x 1 ) + ( x − x 0 ) ( x − x 1 ) ( x 2 − x 0 ) ( x 2 − x 1 ) f ( x 2 ) f_k(x_i)=\frac{(x-x_1)(x-x_2)}{(x_0-x_1)(x_0-x_2)}f(x_0)+\frac{(x-x_0)(x-x_2)}{(x_1-x_0)(x_1-x_2)}f(x_1)+\frac{(x-x_0)(x-x_1)}{(x_2-x_0)(x_2-x_1)}f(x_2) fk(xi)=(x0x1)(x0x2)(xx1)(xx2)f(x0)+(x1x0)(x1x2)(xx0)(xx2)f(x1)+(x2x0)(x2x1)(xx0)(xx1)f(x2)
若取i=2,则表示以 x 0 , x 1 x_0,x_1 x0,x1 x 2 x_2 x2为节点进行二次插值,其结果为:
f 2 ( x 2 ) = ( x − x 1 ) ( x − x 2 ) ( x 0 − x 1 ) ( x 0 − x 2 ) f ( x 0 ) + ( x − x 0 ) ( x − x 2 ) ( x 1 − x 0 ) ( x 1 − x 2 ) f ( x 1 ) + ( x − x 0 ) ( x − x 1 ) ( x 2 − x 0 ) ( x 2 − x 1 ) f ( x 2 ) f_2(x_2)=\frac{(x-x_1)(x-x_2)}{(x_0-x_1)(x_0-x_2)}f(x_0)+\frac{(x-x_0)(x-x_2)}{(x_1-x_0)(x_1-x_2)}f(x_1)+\frac{(x-x_0)(x-x_1)}{(x_2-x_0)(x_2-x_1)}f(x_2) f2(x2)=(x0x1)(x0x2)(xx1)(xx2)f(x0)+(x1x0)(x1x2)(xx0)(xx2)f(x1)+(x2x0)(x2x1)(xx0)(xx1)f(x2)
若取i=3,则表示以 x 0 , x 1 x_0,x_1 x0x1 x 3 x_3 x3为节点进行二次插值,其结果为:
f 2 ( x 3 ) = ( x − x 1 ) ( x − x 3 ) ( x 0 − x 1 ) ( x 0 − x 3 ) f ( x 0 ) + ( x − x 0 ) ( x − x 3 ) ( x 1 − x 0 ) ( x 1 − x 3 ) f ( x 1 ) + ( x − x 0 ) ( x − x 3 ) ( x 3 − x 0 ) ( x 2 − x 1 ) f ( x 3 ) f_2(x_3)=\frac{(x-x_1)(x-x_3)}{(x_0-x_1)(x_0-x_3)}f(x_0)+\frac{(x-x_0)(x-x_3)}{(x_1-x_0)(x_1-x_3)}f(x_1)+\frac{(x-x_0)(x-x_3)}{(x_3-x_0)(x_2-x_1)}f(x_3) f2(x3)=(x0x1)(x0x3)(xx1)(xx3)f(x0)+(x1x0)(x1x3)(xx0)(xx3)f(x1)+(x3x0)(x2x1)(xx0)(xx3)f(x3)
整理 f 2 ( x 2 ) f_2(x_2) f2(x2)得:
f 2 ( x 2 ) = x − x 2 x 1 − x 2 f 1 ( x 1 ) + x − x 1 x 2 − x 1 f 1 ( x 2 ) f_2(x_2)=\frac{x-x_2}{x_1-x_2}f_1(x_1)+\frac{x-x_1}{x_2-x_1}f_1(x_2) f2(x2)=x1x2xx2f1(x1)+x2x1xx1f1(x2)
同理
f 2 ( x i ) = x − x i x 1 − x i f 1 ( x 1 ) + x − x 1 x i − x 1 f 1 ( x i ) f_2(x_i)=\frac{x-x_i}{x_1-x_i}f_1(x_1)+\frac{x-x_1}{x_i-x_1}f_1(x_i) f2(xi)=x1xixxif1(x1)+xix1xx1f1(xi)
由此可得出如下结论: f 2 ( x i ) f_2(x_i) f2(xi)表示取固定节点 x 1 x_1 x1和变化节点 x i ( i ≥ k ) x_i(i\geq k) xi(ik)及其相应的 f 1 ( x 1 ) , f 1 ( x i ) f_1(x_1),f_1(x_i) f1(x1)f1(xi)进行线性插值,得到关于x的2次多项式。

  1. k次插值

根据以上分析,可以推出如下结论:用两个 k − 1 k-1 k1次插值的结果 f k − 1 ( x k − 1 ) f_{k-1}(x_{k-1}) fk1(xk1) f k − 1 ( x i ) f_{k-1}(x_i) fk1(xi),进行线性插值,即可得到k次插值的结果 f k ( x i ) f_k(x_i) fk(xi)。即:

f k ( x i ) f_k(x_i) fk(xi)表示固定节点 x k − 1 x_{k-1} xk1和变化节点 x i ( i ≥ k ) x_i(i\geq k) xi(ik)及其相应的 f k − 1 ( x k − 1 ) , f k − 1 ( x i ) f_{k-1}(x_{k-1}),f_{k-1}(x_i) fk1(xk1),fk1(xi)进行线性插值,从而得到关于x的k次多项式:
f k ( x i ) = x − x i x k − 1 − x i f k − 1 ( x k − 1 ) + x − x k − 1 x i − x k − 1 f k − 1 ( x i ) , ( i ≥ k ) (10) f_k(x_i)=\frac{x-x_i}{x_{k-1}-x_i}f_{k-1}(x_{k-1})+\frac{x-x_{k-1}}{x_i-x_{k-1}}f_{k-1}(x_i), \quad (i\geq k) \tag{10} fk(xi)=xk1xixxifk1(xk1)+xixk1xxk1fk1(xi),(ik)(10)
根据(10)式,可以计算出当 k = 1 , 2 , ⋯ , n ( i = k , k + 1 , ⋯ , n ) k=1,2,\cdots,n(i=k,k+1,\cdots,n) k=1,2,,n(i=k,k+1,,n)时的 f k ( x i ) f_k(x_i) fk(xi),由于计算 f k ( x i ) f_k(x_i) fk(xi)有很强的规律性,故将其排列成下表所示,该表称为Aitken插值表。从表中可以看出, f k ( x i ) f_k(x_i) fk(xi)是逐列计算出来的。这种足部提高插值次数以获得更高精度插值结果的插值方法称为Aitken逐次插值方法。

在这里插入图片描述
Aitken逐次插值法的特点是:

(1)将一个高次插值过程归结为线性插值的多次重复。

(2)插值表中的每个数据均为插值结果,从这些数据的一致程度可判断插值结果的精度,如果未达到精度要求,则在增加一个节点进行插值,直至满意为止。

这篇关于Aitken(埃特金)逐次插值法 | 一次插值、二次插值、k次插值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/310420

相关文章

电脑多久清理一次灰尘合? 合理清理电脑上灰尘的科普文

《电脑多久清理一次灰尘合?合理清理电脑上灰尘的科普文》聊起电脑清理灰尘这个话题,我可有不少话要说,你知道吗,电脑就像个勤劳的工人,每天不停地为我们服务,但时间一长,它也会“出汗”——也就是积累灰尘,... 灰尘的堆积几乎是所有电脑用户面临的问题。无论你的房间有多干净,或者你的电脑是否安装了灰尘过滤器,灰尘都

(function() {})();只执行一次

测试例子: var xx = (function() {     (function() { alert(9) })(); alert(10)     return "yyyy";  })(); 调用: alert(xx); 在调用的时候,你会发现只弹出"yyyy"信息,并不见弹出"10"的信息!这也就是说,这个匿名函数只在立即调用的时候执行一次,这时它已经赋予了给xx变量,也就是只是

flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位

flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位 一、背景二、定位问题三、解决方法 一、背景 flume系列之:定位flume没有关闭某个时间点生成的tmp文件的原因,并制定解决方案在博主上面这篇文章的基础上,在机器内存、cpu资源、flume agent资源都足够的情况下,flume agent又出现了tmp文件无法关闭的情况 二、

一些数学经验总结——关于将原一元二次函数增加一些限制条件后最优结果的对比(主要针对公平关切相关的建模)

1.没有分段的情况 原函数为一元二次凹函数(开口向下),如下: 因为要使得其存在正解,必须满足,那么。 上述函数的最优结果为:,。 对应的mathematica代码如下: Clear["Global`*"]f0[x_, a_, b_, c_, d_] := (a*x - b)*(d - c*x);(*(b c+a d)/(2 a c)*)Maximize[{f0[x, a, b,

jmeter之仅一次控制器

仅一次控制器作用: 不管线程组设置多少次循环,它下面的组件都只会执行一次 Tips:很多情况下需要登录才能访问其他接口,比如:商品列表、添加商品到购物车、购物车列表等,在多场景下,登录只需要1次,我们期望的是重复执行登陆后面的接口来做压测,这就和事务相关,例如 事务1: 登录—>添加购物车 事务2: 登录—>购物车列表 事务3: 登录—>商品列表—>添加购物车 … 一、仅一次控制器案例 在

一次生产环境大量CLOSE_WAIT导致服务无法访问的定位过程

1.症状 生产环境的一个服务突然无法访问,服务的交互过程如下所示: 所有的请求都是通过网关进入,之后分发到后端服务。 现在的情况是用户服务无法访问商旅服务,网关有大量java.net.SocketTimeoutException: Read timed out报错日志,商旅服务也不断有日志打印,大多是回调和定时任务日志,所以故障点在网关和商旅服务,大概率是商旅服务无法访问导致网关超时。 后

关于一次速度优化的往事

来自:hfghfghfg, 时间:2003-11-13 16:32, ID:2292221你最初的代码 Button1 34540毫秒 5638毫秒  Button2 我的代码 这个不是重点,重点是这个  来自:hfghfghfg, 时间:2003-11-13 16:54, ID:22923085528毫秒 不会吧,我是赛杨1.1G  128M内存  w2000, delphi6  128M

【线性代数】正定矩阵,二次型函数

本文主要介绍正定矩阵,二次型函数,及其相关的解析证明过程和各个过程的可视化几何解释(深蓝色字体)。 非常喜欢清华大学张颢老师说过的一段话:如果你不能用可视化的方式看到事情的结果,那么你就很难对这个事情有认知,认知就是直觉,解析的东西可以让你理解,但未必能让你形成直觉,因为他太反直觉了。 正定矩阵 定义 给定一个大小为 n×n 的实对称矩阵 A ,若对于任意长度为 n 的非零向量 ,有 恒成

一次关于生产环境服务无故宕机的排查过程

故事的开始 这个故事是在一年之前,当时我们的系统运行在客户的k8s环境上。然后很神奇的是每个月底我们都会服务宕机,当然我们开启了多个实例。当时的容器线条就像心跳图一样(或许有些描述的不太准确,我没有找到当时那个像心电图一样的容器资源监控图)。 第一次的排查 当时我们还是很有信心去解决这个问题的。由于每个月的月底都是业务使用的高峰时段,也就是说,从表象上来看,qps一高,容器就挂。 业务日

记一次knife4j文档请求异常 SyntaxError: Unexpected token ‘<‘, ... is not valid JSON

knife4j页面报错问题定位 前几天开发新接口,开发完成后想使用knife4j测试一下接口功能,突然发现访问页面报错提示:knife4j文档请求异常,但之前运行还是正常的,想想会不会与升级依赖有关系,启动其他微服务发现文档接口访问正常,排除因依赖版本升级导致在线API文档无法使用情况,还是和本服务新增接口有关系。 定位问题 首先f12打开调试台,重新刷新页面,看到console有报错提示