数值分析(3)-多项式插值: 牛顿插值法

整理一下数值分析的笔记~
目录:

1. 误差
2. 多项式插值与样条插值(THIS)
3. 函数逼近
4. 数值积分与数值微分
5. 线性方程组的直接解法
6. 线性方程组的迭代解法
7. 非线性方程求根
8. 特征值和特征向量的计算
9. 常微分方程初值问题的数值解

1. 差商(均差)及其性质

定义1.设 f ( x ) f(x) f(x)在互异节点 x i x_i xi处的函数值为 f i , i = 0 , 1 , . . . , n f_i,i=0,1,...,n fi,i=0,1,...,n,称 f [ x i , x j ] = f i − f j x i − x j f[x_i,x_j]=\frac{f_i-f_j}{x_i-x_j} f[xi,xj]=xixjfifj f ( x ) f(x) f(x)关于节点 x i , x j x_i,x_j xi,xj的一阶差商, f [ x i , x j , x k ] = f [ x i , x k ] − f [ x i , x j ] x k − x j f[x_i,x_j,x_k]=\frac{f[x_i,x_k]-f[x_i,x_j]}{x_k-x_j} f[xi,xj,xk]=xkxjf[xi,xk]f[xi,xj] f ( x ) f(x) f(x)关于 x i , x j , x k x_i,x_j,x_k xi,xj,xk的二阶差商,以此类推k阶差商: f [ x 0 , x 1 , . . . , x k − 1 , x k ] = f [ x 0 , x 1 , . . . , x k − 1 ] − f [ x 0 , x 1 , . . . , x k − 2 , x k ] x k − 1 − x k f[x_0,x_1,...,x_{k-1},x_k]=\frac{f[x_0,x_1,...,x_{k-1}]-f[x_0,x_1,...,x_{k-2},x_k]}{x_{k-1}-x_k} f[x0,x1,...,xk1,xk]=xk1xkf[x0,x1,...,xk1]f[x0,x1,...,xk2,xk]

差商的性质:

  • 差商具有对称性,任意调换节点的次序,差商的值不变

  • f k ( x ) f^{k}(x) fk(x)在包含节点 x 0 , x 1 , . . . , x k x_0,x_1,...,x_k x0,x1,...,xk的区间存在时,在 x 0 , x 1 , . . . , x k x_0,x_1,...,x_k x0,x1,...,xk之间必存在一点 ξ \xi ξ使得:

f [ x 0 , x 1 , . . . , x k ] = f k ( ξ ) k ! f[x_0,x_1,...,x_k]=\frac{f^{k}(\xi)}{k!} f[x0,x1,...,xk]=k!fk(ξ)

eg.给出函数y=f(x)的函数表,写出函数的查商表。

i0123
x i x_i xi-2-112
f ( x i ) f(x_i) f(xi)531721

如下:

x i x_i xi f ( x i ) f(x_i) f(xi)一阶差商二阶差商三阶差商
-25
-13-2
11773
2214-1-1

2. 牛顿基本插值公式

定义2.称多项式:

N n ( x ) = a 0 + a 1 ( x − x 0 ) + a 2 ( x − x 0 ) ( x x 1 ) + . . . + a n ( x − x 0 ) ( x − x 1 ) . . . ( x − x n − 1 ) = f 0 + ∑ k = 1 n f [ x 0 , x 1 , . . . , x k ] ω k ( x ) 其 中 ω k ( x ) = ∏ j = 0 k − 1 ( x − x j ) N_n(x)=a_0+a_1(x-x_0)+a_2(x-x_0)(x_x1)+...+\\ a_n(x-x_0)(x-x_1)...(x-x_{n-1})\\ =f_0+\sum^{n}_{k=1}f[x_0,x_1,...,x_k]\omega_k(x)\\ 其中\omega_k(x)=\prod^{k-1}_{j=0}(x-x_j) Nn(x)=a0+a1(xx0)+a2(xx0)(xx1)+...+an(xx0)(xx1)...(xxn1)=f0+k=1nf[x0,x1,...,xk]ωk(x)ωk(x)=j=0k1(xxj)

f ( x ) f(x) f(x)关于节点 x i x_i xi的n次Newton基本插值多项式,由于插值多项式具有唯一性,所以牛顿基本插值公式余项为:

R n ( x ) = f ( x ) − N n ( x ) = f ( n + 1 ) ( ξ ) ( n + 1 ) ! ω n + 1 ( x ) R_n(x)=f(x)-N_n(x)=\frac{f^{(n+1)}(\xi)}{(n+1)!}\omega_{n+1}(x) Rn(x)=f(x)Nn(x)=(n+1)!f(n+1)(ξ)ωn+1(x)

eg.给出f(x)的函数表,求四次牛顿插值多项式。

x i x_i xi f ( x k ) f(x_k) f(xk)一阶均差二阶均差三阶均差四阶均差
0.400.41075
0.550.578151.11600
0.650.696751.186000.28000
0.800.888111.275730.358930.19733
0.901.026521.384100.433480.213000.03134

(五次均差较小近似0),按四次牛顿插值公式带入数据:

N 4 ( x ) = 0.41075 + 1.116 ( x − 0.4 ) + 0.28 ( x − 0.4 ) ( x − 0.55 ) + 0.19733 ( x − 0.4 ) ( x − 0.55 ) ( x − 0.65 ) + 0.03134 ( x − 0.4 ) ( x − 0.55 ) ( x − 0.65 ) ( x − 0.8 ) N_4(x)=0.41075+1.116(x-0.4)+0.28(x-0.4)(x-0.55)\\ +0.19733(x-0.4)(x-0.55)(x-0.65)\\ +0.03134(x-0.4)(x-0.55)(x-0.65)(x-0.8) N4(x)=0.41075+1.116(x0.4)+0.28(x0.4)(x0.55)+0.19733(x0.4)(x0.55)(x0.65)+0.03134(x0.4)(x0.55)(x0.65)(x0.8)

3. 差分及其性质

定义3.设f(x)在等距节点 x k = x 0 + k h x_k=x_0+kh xk=x0+kh处的函数值为 f k , k = 0 , 1 , , . . . , n f_k,k=0,1,,...,n fk,k=0,1,,...,n,称:

Δ f k = f k + 1 − f k , k = 0 , 1 , . . . , n − 1 为 f ( x ) 在 x k 处 的 一 阶 向 前 差 分 ∇ f k = f k − f k − 1 , k = 1 , 2 , . . . , n 为 f ( x ) 在 x k 处 的 一 阶 向 后 差 分 Δ 2 f k = Δ f k + 1 − Δ f k , k = 0 , 1 , . . . , n − 1 为 f ( x ) 在 x k 处 的 二 阶 向 前 差 分 ∇ 2 f k = ∇ f k − ∇ f k − 1 , k = 1 , 2 , . . . , n 为 f ( x ) 在 x k 处 的 二 阶 向 后 差 分 . . . 以 此 类 推 : Δ m f k = Δ m − 1 f k + 1 − Δ m − 1 f k − 1 为 f ( x ) 在 x k 处 的 m 阶 向 前 差 分 ∇ m f k = ∇ m − 1 f k − ∇ m − 1 f k − 1 为 f ( x ) 在 x k 处 的 m 阶 向 后 差 分 。 可 以 证 明 Δ m f k = ∇ m f k + m \Delta f_k=f_{k+1}-f_k,k=0,1,...,n-1 \\ 为f(x)在x_k处的一阶向前差分\\ \nabla f_k=f_k-f_{k-1},k=1,2,...,n\\ 为f(x)在x_k处的一阶向后差分\\ \Delta ^2 f_k=\Delta f_{k+1}-\Delta f_k,k=0,1,...,n-1 \\ 为f(x)在x_k处的二阶向前差分\\ \nabla^2f_k=\nabla f_k-\nabla f_{k-1},k=1,2,...,n\\ 为f(x)在x_k处的二阶向后差分\\ ...\\ 以此类推:\\ \Delta ^mf_k=\Delta^{m-1}f_{k+1}-\Delta^{m-1}f_{k-1}\\ 为f(x)在x_k处的m阶向前差分\\ \nabla ^mf_k=\nabla^{m-1}f_k-\nabla^{m-1}f_{k-1}\\ 为f(x)在x_k处的m阶向后差分。\\ 可以证明\Delta ^mf_k=\nabla^mf_{k+m} Δfk=fk+1fk,k=0,1,...,n1f(x)xkfk=fkfk1,k=1,2,...,nf(x)xkΔ2fk=Δfk+1Δfk,k=0,1,...,n1f(x)xk2fk=fkfk1,k=1,2,...,nf(x)xk...Δmfk=Δm1fk+1Δm1fk1f(x)xkmmfk=m1fkm1fk1f(x)xkmΔmfk=mfk+m

在等距节点的前提下,差商和差分有如下关系:

f [ x i , x i + 1 , . . . , x i + m ] = Δ m f i m ! ⋅ h m = ∇ m f i + m m ! ⋅ h m f[x_i,x_{i+1},...,x_{i+m}]=\frac{\Delta^mf_i}{m!\cdot h^m}=\frac{\nabla^mf_{i+m}}{m! \cdot h^m} f[xi,xi+1,...,xi+m]=m!hmΔmfi=m!hmmfi+m

4. 牛顿向前向后插值公式

牛顿前插公式

N n ( x 0 + t h ) = f 0 + t Δ f 0 + t ( t − 1 ) 2 ! Δ 2 f 0 + . . . + t ( t − 1 ) . . . ( t − n + 1 ) n ! Δ n f 0 N_n(x_0+th)=f_0+t\Delta f_0+\frac{t(t-1)}{2!}\Delta^2f_0+...+\\ \frac{t(t-1)...(t-n+1)}{n!}\Delta^nf_0\\ Nn(x0+th)=f0+tΔf0+2!t(t1)Δ2f0+...+n!t(t1)...(tn+1)Δnf0

前插公式余项 R n ( x ) = t ( t − 1 ) . . . ( t − n ) ( n + 1 ) ! h n + 1 f ( n + 1 ) ( ξ ) , ξ ∈ ( x 0 , x n ) R_n(x)=\frac{t(t-1)...(t-n)}{(n+1)!}h^{n+1}f^{(n+1)}(\xi),\xi \in(x_0,x_n) Rn(x)=(n+1)!t(t1)...(tn)hn+1f(n+1)(ξ),ξ(x0,xn)

牛顿后插公式

N n ( x 0 + t h ) = f n + t ∇ f n + t ( t + 1 ) 2 ! ∇ 2 f n + . . . + t ( t + 1 ) . . . ( t + n − 1 ) n ! ∇ n f n N_n(x_0+th)=f_n+t\nabla f_n+\frac{t(t+1)}{2!}\nabla^2f_n+...+\\ \frac{t(t+1)...(t+n-1)}{n!}\nabla^nf_n\\ Nn(x0+th)=fn+tfn+2!t(t+1)2fn+...+n!t(t+1)...(t+n1)nfn

后插公式余项: R n ( x ) = t ( t + 1 ) . . . ( t + n ) ( n + 1 ) ! h n + 1 f ( n + 1 ) ( ξ ) , ξ ∈ ( x 0 , x n ) R_n(x)=\frac{t(t+1)...(t+n)}{(n+1)!}h^{n+1}f^{(n+1)}(\xi),\xi \in(x_0,x_n) Rn(x)=(n+1)!t(t+1)...(t+n)hn+1f(n+1)(ξ),ξ(x0,xn)

eg.给出 f ( x ) = c o s x f(x)=cosx f(x)=cosx x k = k h , k = 0 , 1 , . . . , 6 , h = 0.1 x_k=kh,k=0,1,...,6,h=0.1 xk=kh,k=0,1,...,6,h=0.1处的函数值,用四次等距节点插值公式计算f(0.048)及f(0.566)的近似值并估计误差。

解:

根据题意插值条件为

x k x_k xk00.10.20.30.40.50.6
f ( x k ) f(x_k) f(xk)1.000000.995000.980070.955340.921060.877580.82534
1. 构造差分表
一阶二阶三阶四阶五阶
-0.005
-0.00993
-0.014930.00013
-0.00980.00012
-0.024730.00025-0.00002
-0.009550.00010
-0.034280.00035-0.00001
-0.009200.00009
-0.043480.00044
-0.00876
-0.05224

差分表中斜体数字是 x 0 x_0 x0处的各阶向前差分,黑体是 X 6 X_6 X6处的各阶向后差分。

2.应用牛顿前插公式计算 f ( 0.048 ) f(0.048) f(0.048)的近似值

取 x = 0.048 , x 0 = 0 , h = 0.1 , 则 t = x − x 0 h = 0.48 , 用 差 分 表 中 的 各 阶 向 前 差 分 , 得 : f ( 0.048 ) = c o s 0.048 ≈ N 4 ( 0.048 ) = f 0 + t Δ f 0 + t ( t − 1 ) 2 ! Δ 2 f 0 + . . . + t ( t − 1 ) . . . ( t − n + 1 ) n ! Δ n f 0 = 1.000 + 0.48 × ( − 0.00500 ) + ( 0.48 ) ( 0.48 − 1 ) 2 ! ( − 0.00993 ) + ( 0.48 ) ( 0.48 − 1 ) ( 0.48 − 2 ) 3 ! ( 0.00013 ) + ( 0.48 ) ( 0.48 − 1 ) ( 0.48 − 2 ) ( 0.48 − 3 ) 4 ! ( 0.00012 ) = 0.99885 取x=0.048,x_0=0,h=0.1,则t=\frac{x-x_0}{h}=0.48,\\ 用差分表中的各阶向前差分,得:\\ f(0.048)=cos0.048\approx N_4(0.048)\\ =f_0+t\Delta f_0+\frac{t(t-1)}{2!}\Delta^2f_0+...+\\ \frac{t(t-1)...(t-n+1)}{n!}\Delta^nf_0\\ =1.000+0.48 \times (-0.00500)+\frac{(0.48)(0.48-1)}{2!}(-0.00993)\\ +\frac{(0.48)(0.48-1)(0.48-2)}{3!}(0.00013)\\ +\frac{(0.48)(0.48-1)(0.48-2)(0.48-3)}{4!}(0.00012)=0.99885 x=0.048,x0=0,h=0.1,t=hxx0=0.48,f(0.048)=cos0.048N4(0.048)=f0+tΔf0+2!t(t1)Δ2f0+...+n!t(t1)...(tn+1)Δnf0=1.000+0.48×(0.00500)+2!(0.48)(0.481)(0.00993)+3!(0.48)(0.481)(0.482)(0.00013)+4!(0.48)(0.481)(0.482)(0.483)(0.00012)=0.99885

根据牛顿前插余项公式的误差估计:

∣ R 4 ( x ) ∣ ≤ M 5 5 ! ∣ t ( t − 1 ) ( t − 2 ) ( t − 3 ) ( t − 4 ) ∣ h 5 , 其 中 x = 0.048 , h = 0.1 , t = 0.48 , M 5 是 c o s x 的 五 次 导 函 数 在 区 间 [ 0 , 0.6 ] 上 绝 对 值 的 最 大 值 , 有 ∣ M 5 ∣ ≤ ∣ s i n 0.6 ∣ ≤ 0.565 可 知 ∣ R 4 ( 0.048 ) ∣ ≤ 1.5845 × 1 0 − 7 [ 0.5 × 1 0 − 6 |R_4(x)| \leq \frac{M_5}{5!}|t(t-1)(t-2)(t-3)(t-4)|h^5,\\ 其中x=0.048,h=0.1,t=0.48,\\ M_5是cosx的五次导函数在区间[0,0.6]上绝对值的最大值,有|M_5|\leq|sin0.6| \leq0.565\\ 可知|R_4(0.048)|\leq1.5845 \times 10^{-7} [0.5 \times 10^{-6} R4(x)5!M5t(t1)(t2)(t3)(t4)h5,x=0.048,h=0.1,t=0.48,M5cosx[0,0.6],M5sin0.60.565R4(0.048)1.5845×107[0.5×106

3. 应用牛顿后插公式计算f(0.566)的近似值

x = 0.566 , x 6 = 0.6 , h = 0.1 , 则 t = x − x 6 h = − 0.34 用 差 分 表 中 下 半 部 的 各 阶 向 后 差 分 得 : f ( 0.566 ) = c o s 0.0566 ≈ N 4 ( 0.566 ) = f n + t ∇ f n + t ( t + 1 ) 2 ! ∇ 2 f n + . . . + t ( t + 1 ) . . . ( t + n − 1 ) n ! ∇ n f n = 0.82534 + ( − 0.34 ) × ( − 0.05224 ) + − 0.34 ( − 0.34 + 1 ) 2 ! × ( − 0.00867 ) + − 0.34 ( − 0.34 + 1 ) ( − 0.34 + 2 ) 3 ! × ( − 0.00044 ) + − 0.34 ( − 0.34 + 1 ) ( − 0.34 + 2 ) ( − 0.34 + 3 ) 4 ! × ( 0.00009 ) = 0.84405 于 是 f ( 0.566 ) = c o s 0.566 ≈ 0.84405 x=0.566,x_6=0.6,h=0.1,则t=\frac{x-x_6}{h}=-0.34\\ 用差分表中下半部的各阶向后差分得: f(0.566)=cos0.0566\approx N_4(0.566)\\ =f_n+t\nabla f_n+\frac{t(t+1)}{2!}\nabla^2f_n+...+\\ \frac{t(t+1)...(t+n-1)}{n!}\nabla^nf_n\\ =0.82534+(-0.34)\times(-0.05224)\\ +\frac{-0.34(-0.34+1)}{2!}\times(-0.00867)\\ +\frac{-0.34(-0.34+1)(-0.34+2)}{3!}\times(-0.00044)\\ +\frac{-0.34(-0.34+1)(-0.34+2)(-0.34+3)}{4!}\times(0.00009)\\ =0.84405\\ 于是f(0.566)=cos0.566\approx0.84405 x=0.566,x6=0.6,h=0.1,t=hxx6=0.34f(0.566)=cos0.0566N4(0.566)=fn+tfn+2!t(t+1)2fn+...+n!t(t+1)...(t+n1)nfn=0.82534+(0.34)×(0.05224)+2!0.34(0.34+1)×(0.00867)+3!0.34(0.34+1)(0.34+2)×(0.00044)+4!0.34(0.34+1)(0.34+2)(0.34+3)×(0.00009)=0.84405f(0.566)=cos0.5660.84405

根据牛顿后插公式余项得:

∣ R 5 ( x ) ∣ ≤ M 5 5 ! ∣ t ( t + 1 ) ( t + 2 ) ( t + 3 ) ( t + 4 ) ∣ h 5 其 中 x = 0.566 , x 6 = 0.6 , h = 0.1 t = x − x 6 h = − 0.34 ∣ M 5 ∣ ≤ ∣ s i n 0.6 ∣ ≤ 0.565 得 ∣ R 5 ( 0.566 ) ∣ ≤ 1.7064 × 1 0 − 7 [ 0.5 × 1 0 − 6 ] |R_5(x)|\leq\frac{M_5}{5!}|t(t+1)(t+2)(t+3)(t+4)|h^5\\ 其中x=0.566,x_6=0.6,h=0.1\\ t=\frac{x-x_6}{h}=-0.34\\ |M_5|\leq|sin0.6|\leq0.565\\ 得|R_5(0.566)|\leq1.7064 \times 10^{-7} [0.5 \times 10^{-6}] R5(x)5!M5t(t+1)(t+2)(t+3)(t+4)h5x=0.566,x6=0.6,h=0.1t=hxx6=0.34M5sin0.60.565R5(0.566)1.7064×107[0.5×106]

5. 牛顿插值多项式小结

  • 优点:计算简单

  • 缺点:和拉格朗日插值方法相同,插值曲线在节点处有尖点,不光滑,节点处不可导


{持续更新}
欢迎扫描二维码关注微信公众号 深度学习与数学   [每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾]
在这里插入图片描述

  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
多项式插值是一种常用的插值方法,在数值计算中经常被使用。它的原理是通过已知数据点的函数值来构造一个多项式函数,将其作为近似函数来拟合数据。在Python中,实现多项式插值可以使用拉格朗日插值和牛顿插值两种方法。 对于拉格朗日插值,可以通过构造拉格朗日基函数和插值多项式来实现。首先,根据给定的数据点,求解每个拉格朗日基函数的系数,然后将这些基函数与对应的函数值相乘并求和,得到最终的插值多项式。在Python中,可以使用numpy库的polyfit函数来实现拉格朗日插值的计算,并使用matplotlib库进行曲线图的绘制。 牛顿插值是另一种常用的多项式插值方法。它基于差商的概念,通过递推计算差商表来得到插值多项式。在Python中,可以使用numpy库的polyfit函数来实现牛顿插值的计算,并使用matplotlib库进行曲线图的绘制。 通过实现这两种插值方法,并在给定的数据上进行插值计算,可以得到插值多项式的曲线图。这样可以直观地观察到插值多项式与原始数据之间的拟合效果,并验证Runge现象。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [数值计算——Python 实现拉格朗日插值以及牛顿插值](https://blog.csdn.net/weixin_47067425/article/details/127182964)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [python实现各种插值法(数值分析)](https://download.csdn.net/download/weixin_38685832/12861101)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值