计算方法(四):插值与拟合
文章目录
- 插值与拟合
- 插值概念与基础理论
- 插值问题的提法
- 插值多项式的存在唯一性
- 插值余项
- 插值多项式的求法
- 拉格朗日(Lagrange)型插值多项式
- 差商与牛顿基本插值多项式
- 差分与等距结点下的牛顿公式
- 埃尔米特(Hermite)插值
- 分段低次插值
- 分段线性插值与分段二次插值
- 三次样条插值
- 三斜率(三转角)方程组
- 三弯矩方程组(M关系式)
- 曲线拟合的最小二乘法
- 最小二乘解的求法
- 线性最小二乘问题的求法
- 多项式拟合最小二乘法
- 加权技巧的应用
插值与拟合
插值概念与基础理论
插值问题的提法
给定函数 f ( x ) f(x) f(x) 在区间 [ a , b ] [a,b] [a,b] 上的 n + 1 n+1 n+1 个函数值:
x x 0 x 1 ⋯ x n f ( x ) f ( x 0 ) f ( x 1 ) ⋯ f ( x n ) \begin{array}{c|ccccc}x & x_0 & x_1 & \cdots & x_n\\ \hline f(x) & f(x_0) & f(x_1) & \cdots & f(x_n)\end{array} xf(x)x0f(x0)x1f(x1)⋯⋯xnf(xn)
x 0 , x 1 , ⋯ , x n x_0,x_1,\cdots,x_n x0,x1,⋯,xn 互不相同。 Φ \Phi Φ 为给定的某一个函数类。若 Φ \Phi Φ 上有函数 φ ( x ) \varphi(x) φ(x),满足
φ ( x i ) = f ( x i ) , i = 0 , 1 , 2 , ⋯ , n \varphi(x_i)=f(x_i),i=0,1,2,\cdots,n φ(xi)=f(xi),i=0,1,2,⋯,n
则称 φ ( x ) \varphi(x) φ(x) 为 f ( x ) f(x) f(x) 关于结点 x 0 , x 1 , ⋯ , x n x_0,x_1,\cdots,x_n x0,x1,⋯,xn 在 Φ \Phi Φ 上的插值函数, x 0 , x 1 , ⋯ , x n x_0,x_1,\cdots,x_n x0,x1,⋯,xn 称为插值结点, [ a , b ] [a,b] [a,b] 称为插值区间, f ( x ) f(x) f(x) 称为被插函数。
根据插值定义,插值函数实际上是一条经过平面上点 ( x i , f ( x i ) ) i = 0 , 1 , ⋯ , n (x_i,f(x_i))_{i=0,1,\cdots,n} (xi,f(xi))i=0,1,⋯,n 的曲线,这条平面曲线函数,就可以作为 f ( x ) f(x) f(x) 的逼近函数。
插值函数的存在唯一性:插值函数类 Φ \Phi Φ 为一个函数空间,若插值结点数为 n + 1 n+1 n+1,实际上给出了 n + 1 n+1 n+1 个限制条件,为了保证插值函数的存在唯一性,给出的插值函数空间应是 n + 1 n+1 n+1 维的,即 d i m Φ = n + 1 dim\Phi=n+1 dimΦ=n+1。
任取 Φ \Phi Φ 上 n + 1 n+1 n+1 个线性无关函数 φ 0 ( x ) , φ 1 ( x ) , ⋯ , φ n ( x ) \varphi_0(x),\varphi_1(x),\cdots,\varphi_n(x) φ0(x),φ1(x),⋯,φn(x),它们可作为 Φ \Phi Φ 的一组基,记为:
Φ = s p a n { φ 0 ( x ) , φ 1 ( x ) , ⋯ , φ n ( x ) } \Phi=span\{\varphi_0(x),\varphi_1(x),\cdots,\varphi_n(x)\} Φ=span{φ0(x),φ1(x),⋯,φn(x)}
于是,任取 φ ( x ) ∈ Φ \varphi(x)\in\Phi φ(x)∈Φ,则 φ ( x ) \varphi(x) φ(x) 可唯一地表为:
φ ( x ) = a 0 φ 0 ( x ) + a 1 φ 1 ( x ) + ⋯ + a n φ n ( x ) \varphi(x)=a_0\varphi_0(x)+a_1\varphi_1(x)+\cdots+a_n\varphi_n(x) φ(x)=a0φ0(x)+a1φ1(x)+⋯+anφn(x)
这里 ( a 0 , a 1 , ⋯ , a n ) (a_0,a_1,\cdots,a_n) (a0,a1,⋯,an) 称之为 φ ( x ) \varphi(x) φ(x) 在基 { φ i ( x ) } i = 1 n \{\varphi_i(x)\}^n_{i=1} {φi(x)}i=1n 下的坐标。
(*)定理: { x i } i = 0 n \{x_i\}^n_{i=0} {xi}i=0n 为 [ a , b ] [a,b] [a,b] 上 n + 1 n+1 n+1 个互异点, Φ = s p a n { φ 0 ( x ) , φ 1 ( x ) , ⋯ , φ n ( x ) } \Phi=span\{\varphi_0(x),\varphi_1(x),\cdots,\varphi_n(x)\} Φ=span{φ0(x),φ1(x),⋯,φn(x)} 为 n + 1 n+1 n+1 维函数空间,定义在 [ a , b ] [a,b] [a,b] 上的函数 f ( x ) f(x) f(x) 关于结点 { x i } i = 0 n \{x_i\}^n_{i=0} {xi}i=0n 在 Φ \Phi Φ 上的插值函数存在且唯一的充要条件为行列式:
∣ φ 0 ( x 0 ) φ 1 ( x 0 ) ⋯ φ n ( x 0 ) φ 0 ( x 1 ) φ 1 ( x 1 ) ⋯ φ n ( x 1 ) ⋯ ⋯ φ 0 ( x n − 1 ) φ 1 ( x n − 1 ) ⋯ φ n ( x n − 1 ) φ 0 ( x n ) φ 1 ( x n ) ⋯ φ n ( x n ) ∣ ≠ 0 \left|\begin{matrix}\varphi_0(x_0) & \varphi_1(x_0) & \cdots & \varphi_n(x_0)\\\varphi_0(x_1) & \varphi_1(x_1) & \cdots & \varphi_n(x_1)\\&\cdots&\cdots\\\varphi_0(x_{n-1}) & \varphi_1(x_{n-1}) & \cdots & \varphi_n(x_{n-1})\\\varphi_0(x_n) & \varphi_1(x_n) & \cdots & \varphi_n(x_n)\end{matrix}\right|\neq0 ∣∣∣∣∣∣∣∣∣∣φ0(x0)φ0(x1)φ0(xn−1)φ0(xn)φ1(x0)φ1(x1)⋯φ1(xn−1)φ1(xn)⋯⋯⋯⋯⋯φn(x0)φn(x1)φn(xn−1)φn(xn)∣∣∣∣∣∣∣∣∣∣=0
插值多项式的存在唯一性
记 P n = { a 0 + a 1 x + ⋯ + a n x n ∣ a i ∈ R } P_n=\{a_0+a_1x+\cdots+a_nx^n|a_i\in R\} Pn={a0+a1x+⋯+anxn∣ai∈R},则 P n P_n Pn 为一个 n + 1 n+1 n+1 维的线性空间( n n n 次多项式空间)。
若 { x i } i = 0 n \{x_i\}^n_{i=0} {xi}i=0n 为 [ a , b ] [a,b] [a,b] 上互异点, f ( x ) f(x) f(x) 为定义在 [ a , b ] [a,b] [a,b] 上的函数,若有 P n ( x ) ∈ P n P_n(x)\in P_n Pn(x)∈Pn,满足 P n ( x i ) = f ( x i ) , i = 0 , 1 , ⋯ , n P_n(x_i)=f(x_i),i=0,1,\cdots,n Pn(xi)=f(xi),i=0,1,⋯,n,则称 P n ( x ) P_n(x) Pn(x) 为 f ( x ) f(x) f(x) 关于结点 { x i } i = 0 n \{x_i\}^n_{i=0} {xi}i=0n 的 n n n 次插值多项式。
定理1: f ( x ) f(x) f(x) 关于 n + 1 n+1 n+1 个互异结点 { x i } i = 0 n \{x_i\}^n_{i=0} {xi}i=0n 的 n n n 次插值多项式存在且唯一。
证明:设插值多项式: P n ( x ) = a 0 + a 1 x + ⋯ + a n x n P_n(x)=a_0+a_1x+\cdots+a_nx^n Pn(x)=a0+a1x+⋯+anxn,满足 a 0 + a 1 x i + ⋯ + a n x i n = f ( x i ) , i = 0 , 1 , ⋯ , n a_0+a_1x_i+\cdots+a_nx_i^n=f(x_i),i=0,1,\cdots,n a0+a1xi+⋯+anxin=f(xi),i=0,1,⋯,n,而
D = ∣ 1 x 0 x 0 2 ⋯ x 0 n 1 x 1 x 1 2 ⋯ x 1 n ⋮ ⋮ ⋮ ⋮ 1 x n x n 2 ⋯ x n n ∣ = ∏ n ≥ i > j ≥ 0 ( x i − x j ) ≠ 0 D=\left|\begin{matrix}1&x_0&x_0^2&\cdots&x_0^n\\1&x_1&x_1^2&\cdots&x_1^n\\\vdots&\vdots&\vdots&&\vdots\\1&x_n&x_n^2&\cdots&x_n^n\end{matrix}\right|=\prod_{n\geq i>j\geq0}(x_i-x_j)\neq0 D=∣∣∣∣∣∣∣∣∣11⋮1x0x1⋮xnx02x12⋮xn2⋯⋯⋯x0nx1n⋮xnn∣∣∣∣∣∣∣∣∣=n≥i>j≥0∏(xi−xj)=0
由克莱姆法则得 a 0 , a 1 , ⋯ , a n a_0,a_1,\cdots,a_n a0,a1,⋯,an 存在唯一,即 P n P_n Pn 上存在且唯一的有 P n ( x ) P_n(x) Pn(x),满足 P n ( x i ) = f ( x i ) , i = 0 , 1 , ⋯ , n P_n(x_i)=f(x_i),i=0,1,\cdots,n Pn(xi)=f(xi),i=0,1,⋯,n。同时, n n n 次插值多项式 P ( x ) P(x) P(x) 可表示为 P n ( x ) = a 0 + a 1 x + ⋯ + a n x n P_n(x)=a_0+a_1x+\cdots+a_nx^n Pn(x)=a0+a1x+⋯+anxn,其中 a i = D i D , i = 0 , 1 , 2 , ⋯ , n a_i=\frac{D_i}{D},i=0,1,2,\cdots,n ai=DDi,i=0,1,2,⋯,n。
D i = ∣ 1 x 0 ⋯ x 0 i − 1 f ( x 0 ) x 0 i + 1 ⋯ x 0 n 1 x 1 ⋯ x 1 i − 1 f ( x 1 ) x 1 i + 1 ⋯ x 1 n ⋯ ⋯ 1 x n ⋯ x n i − 1 f ( x n ) x n i + 1 ⋯ x n n ∣ D_i=\left|\begin{matrix}1&x_0&\cdots&x_0^{i-1}&f(x_0)&x_0^{i+1}&\cdots&x_0^n\\1&x_1&\cdots&x_1^{i-1}&f(x_1)&x_1^{i+1}&\cdots&x_1^n\\&&&\cdots&\cdots\\1&x_n&\cdots&x_n^{i-1}&f(x_n)&x_n^{i+1}&\cdots&x_n^n\end{matrix}\right| Di=∣∣∣∣∣∣∣∣111x0x1xn⋯⋯⋯x0i−1x1i−1⋯xni−1f(x0)f(x1)⋯f(xn)x0i+1x1i+1xni+1⋯⋯⋯x0nx1nxnn∣∣∣∣∣∣∣∣
插值余项
R n ( x ) = f ( x ) − P n ( x ) R_n(x)=f(x)-P_n(x) Rn(x)=f(x)−Pn(x) 称为插值余项(或称误差)。
定理2:若 f ∈ C n + 1 [ a , b ] f\in C^{n+1}[a,b] f∈Cn+1[a,b],互异点 { x i } i = 0 n ⊂ [ a , b ] \{x_i\}^n_{i=0}\subset[a,b] {xi}i=0n⊂[a,b],则 f ( x ) f(x) f(x) 以 { x i } i = 0 n \{x_i\}^n_{i=0} {xi}i=0n 为插值结点的 n n n 次插值多项式余项:
R n ( x ) = f ( n + 1 ) ( ξ ) ( n + 1 ) ! ( x − x 0 ) ( x − x 1 ) ⋯ ( x − x n ) 其 中 : m i n { x 0 , x 1 , ⋯ , x n , x } ≤ ξ = ξ ( x ) ≤ m a x { x 0 , x 1 , ⋯ , x n , x } R_n(x)=\frac{f^{(n+1)}(\xi)}{(n+1)!}(x-x_0)(x-x_1)\cdots(x-x_n)\\其中:min\{x_0,x_1,\cdots,x_n,x\}\leq\xi=\xi(x)\leq max\{x_0,x_1,\cdots,x_n,x\} Rn(x)=(n+1)!f(n+1)(ξ)(x−x0)(x−x1)⋯(x−xn)其中:min{x0,x1,⋯,xn,x}≤ξ=ξ(x)≤max{x0,x1,⋯,xn,x}
推论: 若 f ( x ) ∈ C ( n + 1 ) [ a , b ] f(x)\in C^{(n+1)}[a,b] f(x)∈C(n+1)[a,b],且 ∣ f ( n + 1 ) ( x ) ∣ ≤ M n + 1 ( a ≤ x ≤ b ) |f^{(n+1)}(x)|\leq M_{n+1}(a\leq x\leq b) ∣f(n+1)(x)∣≤Mn+1(a≤x≤b),则 f ( x ) f(x) f(x) 以 { x i } i = 0 n \{x_i\}^n_{i=0} {xi}i=0n 为插值结点的 n n n 次插值多项式余项
∣ R n ( x ) ∣ ≤ M n + 1 ( n + 1 ) ! ∣ ω n + 1 ( x ) ∣ |R_n(x)|\leq\frac{M_{n+1}}{(n+1)!}|\omega_{n+1}(x)| ∣Rn(x)∣≤(n+1)!Mn+1∣ωn+1(x)∣
其中: ω n + 1 ( x ) = ∏ i = 0 n ( x − x i ) \omega_{n+1}(x)=\prod^n_{i=0}(x-x_i) ωn+1(x)=∏i=0n(x−xi)
注: 若插值点 x x x 位于插值区间 [ m i n 1 ≤ i ≤ n x i , m a x 1 ≤ i ≤ n x i ] [min_{1\leq i\leq n}x_i,max_{1\leq i\leq n}x_i] [min1≤i≤nxi,max1≤i≤nxi] 内,则该插值过程称为内插,否则称为外插。一般情况下,内插效果要比外插好一点,所以,插值结点尽可能选取在插值区间内。
插值多项式的求法
拉格朗日(Lagrange)型插值多项式
对于给定的 n + 1 n+1 n+1 个互异结点 { x i } i = 0 n \{x_i\}^n_{i=0} {xi}i=0n,如果能找到 P n P_n Pn 上 n + 1 n+1 n+1 个多项式 { l i ( x ) } i = 0 n \{l_i(x)\}^n_{i=0} {li(x)}i=0n,满足
l i ( x j ) = δ i j = { 1 , i = j 0 , i ≠ j , i , j = 0 , 1 , ⋯ , n l_i(x_j)=\delta_{ij}=\begin{cases}1,i=j\\0,i\neq j\end{cases},i,j=0,1,\cdots,n li(xj)=δij={1,i=j0,i=j,i,j=0,1,⋯,n
那么 L n ( x ) = ∑ i = 0 n l i ( x ) f ( x i ) L_n(x)=\sum^n_{i=0}l_i(x)f(x_i) Ln(x)=∑i=0nli(x)f(xi) 就是 f ( x ) f(x) f(x) 关于结点 { x i } i = 0 n \{x_i\}^n_{i=0} {xi}i=0n 的 n n n 次插值多项式。其中, { l i ( x ) } i = 0 n ⊂ P n \{l_i(x)\}^n_{i=0}\subset P_n {li(x)}i=0n⊂Pn,有 ∑ i = 0 n l i ( x ) f ( x i ) ∈ P n \sum^n_{i=0}l_i(x)f(x_i)\in P_n ∑i=0nli(x)f(xi)∈Pn,且有
L n ( x k ) = ∑ i = 0 n l i ( x k ) f ( x i ) = f ( x k ) , k = 0 , 1 , ⋯ , n L_n(x_k)=\sum^n_{i=0}l_i(x_k)f(x_i)=f(x_k),k=0,1,\cdots,n Ln(xk)=i=0∑nli(xk)f(xi)=f(xk),k=0,1,⋯,n
l i ( x ) l_i(x) li(x) 的构造: l i ( x j ) = 0 ( j ≠ i ) l_i(x_j)=0(j\neq i) li(xj)=0(j=i):
l i ( x ) = ∏ j = 0 , j ≠ i n x − x j x i − x j = ( x − x 0 ) ⋯ ( x − x i − 1 ) ( x − x i + 1 ) ⋯ ( x − x n ) ( x i − x 0 ) ⋯ ( x i − x i − 1 ) ( x i − x i + 1 ) ⋯ ( x i − x n ) l_i(x)=\prod^n_{j=0,j\neq i}\frac{x-x_j}{x_i-x_j}=\frac{(x-x_0)\cdots(x-x_{i-1})(x-x_{i+1})\cdots(x-x_n)}{(x_i-x_0)\cdots(x_i-x_{i-1})(x_i-x_{i+1})\cdots(x_i-x_n)} li(x)=j=0,j=i∏nxi−xjx−xj=(xi−x0)⋯(xi−xi−1)(xi−xi+1)⋯(xi−xn)(x−x0)⋯(x−xi−1)(x−xi+1)⋯(x−xn)
{ l i ( x ) } i = 0 n \{l_i(x)\}^n_{i=0} {li(x)}i=0n 是一组线性无关的函数,可作为 P n P_n Pn 的一组基,称为关于结点 { x i } i = 0 n \{x_i\}^n_{i=0} {xi}i=0n的Lagrange基,其插值多项式称为Lagrange型插值多项式,记为 L n ( x , f ) L_n(x,f) Ln(x,f) 或 L n ( x ) L_n(x) Ln(x),即
L n ( x ) = ∑ i = 0 n l i ( x ) f ( x i ) = ∑ i = 0 n ( ∏ j = 0 , j ≠ i n x − x j x i − x j ) f ( x i ) L_n(x)=\sum^n_{i=0}l_i(x)f(x_i)=\sum^n_{i=0}(\prod^n_{j=0,j\neq i}\frac{x-x_j}{x_i-x_j})f(x_i) Ln(x)=i=0∑nli(x)f(xi)=i=0∑n(j=0,j=i∏nxi−xjx−xj)f(xi)
记 ω n + 1 ( x ) = ( x − x 0 ) ( x − x 1 ) ⋯ ( x − x n ) , ω n + 1 ′ ( x i ) = ∏ j = 0 , j ≠ i n ( x i − x j ) \omega_{n+1}(x)=(x-x_0)(x-x_1)\cdots(x-x_n),\omega'_{n+1}(x_i)=\prod^n_{j=0,j\neq i}(x_i-x_j) ωn+1(x)=(x−x0)(x−x1)⋯(x−xn),ωn+1′(xi)=∏j=0,j=in(xi−xj),得
l i ( x ) = ω n + 1 ( x ) ( x − x i ) ω n + 1 ′ ( x i ) L n ( x ) = ∑ i = 0 n ω n + 1 ( x ) ( x − x i ) ω n + 1 ′ ( x i ) f ( x i ) l_i(x)=\frac{\omega_{n+1}(x)}{(x-x_i)\omega'_{n+1}(x_i)}\\L_n(x)=\sum^n_{i=0}\frac{\omega_{n+1}(x)}{(x-x_i)\omega'_{n+1}(x_i)}f(x_i) li(x)=(x−xi)ωn+1′(xi)ωn+1(x)Ln(x)=i=0∑n(x−xi)ωn+1′(xi)ωn+1(x)f(xi)
当 n = 1 n=1 n=1 时,可得 f ( x ) f(x) f(x) 关于 x 0 , x 1 x_0,x_1 x0,x1 的线性插值多项式的Lagrange型式:
L 1 ( x ) = x − x 1 x 0 − x 1 f ( x 0 ) + x − x 0 x 1 − x 0 f ( x 1 ) L_1(x)=\frac{x-x_1}{x_0-x_1}f(x_0)+\frac{x-x_0}{x_1-x_0}f(x_1) L1(x)=x0−x1x−x1f(x0)+x1−x0x−x0f(x1)
当 n = 2 n=2 n=2 时,可得 f ( x ) f(x) f(x) 关于 x 0 , x 1 , x 2 x_0,x_1,x_2 x0,x1,x2 的线性插值多项式的Lagrange型式:
L 2 ( x ) = l 0 ( x ) f ( x 0 ) + l 1 ( x ) f ( x 1 ) + l 2 f ( 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 ) L_2(x)=l_0(x)f(x_0)+l_1(x)f(x_1)+l_2f(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) L2(x)=l0(x)f(x0)+l1(x)f(x1)+l2f(x2)=(x0−x1)(x0−x2)(x−x1)(x−x2)f(x0)+(x1−x0)(x1−x2)(x−x0)(x−x2)f(x1)+(x2−x0)(x2−x1)(x−x0)(x−x1)f(x2)
三点插值又称抛物插值。
误差的事后估计方法: 定理 2 给出了当被插函数充分光滑时的插值误差表达式,推论给出了误差的界。但在实际计算中,涉及到高价导数,很难给出较精确的估计,所以常用误差的事后估计。
记 L n ( x ) L_n(x) Ln(x) 为 f ( x ) f(x) f(x) 以 x 0 , x 1 , ⋯ , x n x_0,x_1,\cdots,x_n x0,x1,⋯,xn 为结点的插值多项式,对确定的 x x x,我们需要对误差 f ( x ) − L n ( x ) f(x)-L_n(x) f(x)−Ln(x) 做出估计。为此,另取一个结点 x n + 1 x_{n+1} xn+1,记 L n ( 1 ) ( x ) L^{(1)}_n(x) Ln(1)(x) 为 f ( x ) f(x) f(x) 以 x 1 , x 2 , ⋯ , x n , x n + 1 x_1,x_2,\cdots,x_n,x_{n+1} x1,x2,⋯,xn,xn+1 为结点的插值多项式,由定理2,可得到:
f ( x ) − L n ( x ) = f ( n + 1 ) ( ξ ) ( n + 1 ) ! ( x − x 0 ) ( x − x 1 ) ⋯ ( x − x n ) f ( x ) − L n ( 1 ) ( x ) = f ( n + 1 ) ( ξ 2 ) ( n + 1 ) ! ( x − x 1 ) ( x − x 2 ) ⋯ ( x − x n ) ( x − x n + 1 ) f(x)-L_n(x)=\frac{f^{(n+1)}(\xi)}{(n+1)!}(x-x_0)(x-x_1)\cdots(x-x_n)\\f(x)-L^{(1)}_n(x)=\frac{f^{(n+1)}(\xi_2)}{(n+1)!}(x-x_1)(x-x_2)\cdots(x-x_n)(x-x_{n+1}) f(x)−Ln(x)=(n+1)!f(n+1)(ξ)(x−x0)(x−x1)⋯(x−xn)f(x)−Ln(1)(x)=(n+1)!f(n+1)(ξ2)(x−x1)(x−x2)⋯(x−xn)(x−xn+1)
若 f ( n + 1 ) ( x ) f^{(n+1)}(x) f(n+1)(x) 在插值区间上变化不大时,则:
f ( x ) − L n ( x ) f ( x ) − L n ( 1 ) ( x ) ≈ x − x 0 x − x n + 1 ( x − x n + 1 ) ( f ( x ) − L n ( x ) ) ≈ ( x − x 0 ) ( f ( x ) − L n ( 1 ) ( x ) ) f ( x ) ≈ x − x n + 1 x 0 − x n + 1 L n ( x ) + x − x 0 x n + 1 − x 0 L n ( 1 ) ( x ) 即 : f ( x ) − L n ( x ) ≈ x − x 0 x 0 − x n + 1 ( L n ( x ) − L n ( 1 ) ( x ) ) \frac{f(x)-L_n(x)}{f(x)-L^{(1)}_n(x)}\approx\frac{x-x_0}{x-x_{n+1}}\\(x-x_{n+1})(f(x)-L_n(x))\approx(x-x_0)(f(x)-L^{(1)}_n(x))\\f(x)\approx\frac{x-x_{n+1}}{x_0-x_{n+1}}L_n(x)+\frac{x-x_0}{x_{n+1}-x_0}L^{(1)}_n(x)\\即:f(x)-L_n(x)\approx\frac{x-x_0}{x_0-x_{n+1}}(L_n(x)-L^{(1)}_n(x)) f(x)−Ln(1)(x)f(x)−Ln(x)≈x−xn+1x−x0(x−xn+1)(f(x)−Ln(x))≈(x−x0)(f(x)−Ln(1)(x))f(x)≈x0−xn+1x−xn+1Ln(x)+xn+1−x0x−x0Ln(1)(x)即:f(x)−Ln(x)≈x0−xn+1x−x0(Ln(x)−Ln(1)(x))
上式较好地给出了插值误差的实际估计。
差商与牛顿基本插值多项式
对于给定的 n + 1 n+1 n+1 个结点 x 0 , x 1 , ⋯ , x n x_0,x_1,\cdots,x_n x0,x1,⋯,xn,考虑 n n n 次多项式: 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 ) N_n(x)=a_0+a_1(x-x_0)+a_2(x-x_0)(x-x_1)+\cdots+a_n(x-x_0)(x-x_1)\cdots(x-x_{n-1}) Nn(x)=a0+a1(x−x0)+a2(x−x0)(x−x1)+⋯+an(x−x0)(x−x1)⋯(x−xn−1) 满足插值条件: N n ( x i ) = f ( x i ) = y i , i = 0 , 1 , ⋯ , n N_n(x_i)=f(x_i)=y_i,i=0,1,\cdots,n Nn(xi)=f(xi)=yi,i=0,1,⋯,n,称 N n ( x ) N_n(x) Nn(x) 是以 x 0 , x 1 , ⋯ , x n x_0,x_1,\cdots,x_n x0,x1,⋯,xn 为结点的 n n n 次牛顿型插值多项式。
定义1:设函数 f ( x ) f(x) f(x) 在点 x 0 , x 1 , x 2 , ⋯ x_0,x_1,x_2,\cdots x0,x1,x2,⋯ 上的值依次为 f ( x 0 ) , f ( x 1 ) , f ( x 2 ) , ⋯ f(x_0),f(x_1),f(x_2),\cdots f(x0),f(x1),f(x2),⋯,则称
f [ x i , x j ] = f ( x j ) − f ( x i ) x j − x i f[x_i,x_j]=\frac{f(x_j)-f(x_i)}{x_j-x_i} f[xi,xj]=xj−xif(xj)−f(xi)
为 f ( x ) f(x) f(x) 在 x i , x i x_i,x_i xi,xi 处的一阶差商。称
f [ x i , x j , x k ] = f [ x j , x k ] − f [ x i , x j ] x k − x i f[x_i,x_j,x_k]=\frac{f[x_j,x_k]-f[x_i,x_j]}{x_k-x_i} f[xi,xj,xk]=xk−xif[xj,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 处的二阶差商。一般地,称 m − 1 m-1 m−1 阶差商的差商:
f [ x i 0 , x i 1 , ⋯ , x i m ] = f [ x i 1 , ⋯ , x i m ] − f [ x i 0 , ⋯ , x i m − 1 ] x i m − x i 0 f[x_{i0},x_{i1},\cdots,x_{im}]=\frac{f[x_{i1},\cdots,x_{im}]-f[x_{i0},\cdots,x_{im-1}]}{x_{im}-x_{i0}} f[xi0,xi1,⋯,xim]=xim−xi0f[xi1,⋯,xim]−f[xi0,⋯,xim−1]
为 f ( x ) f(x) f(x) 在 x i 0 , x i 1 , ⋯ , x i m x_{i0},x_{i1},\cdots,x_{im} xi0,xi1,⋯,xim 处的 m m m 阶差商。特别的,规定零阶差商为: f [ x i ] = f ( x i ) f[x_i]=f(x_i) f[xi]=f(xi)。
通过归纳法, m m m 阶差商可表示成 f ( x 0 ) , f ( x 1 ) , ⋯ , f ( x m ) f(x_0),f(x_1),\cdots,f(x_m) f(x0),f(x1),⋯,f(xm) 的线性组合:
f [ x 0 , x 1 , ⋯ , x m ] = ∑ j = 0 m f ( x j ) ( x j − x 0 ) ⋯ ( x j − x j − 1 ) ( x j − x j + 1 ) ⋯ ( x j − x m ) f[x_0,x_1,\cdots,x_m]=\sum_{j=0}^m\frac{f(x_j)}{(x_j-x_0)\cdots(x_j-x_{j-1})(x_j-x_{j+1})\cdots(x_j-x_m)} f[x0,x1,⋯,xm]=j=0∑m(xj−x0)⋯(xj−xj−1)(xj−xj+1)⋯(xj−xm)f(xj)
差商具有对称性:任意调换结点的次序,不影响差商的值。 例如:
f [ x 0 , x 1 , x 2 ] = f [ x 1 , x 2 , x 0 ] = f [ x 1 , x 0 , x 2 ] f[x_0,x_1,x_2]=f[x_1,x_2,x_0]=f[x_1,x_0,x_2] f[x0,x1,x2]=f[x1,x2,x0]=f[x1,x0,x2]
由插值条件 N n ( x i ) = f ( x i ) N_n(x_i)=f(x_i) Nn(xi)=f(xi),可得
N n ( x 0 ) = a 0 = f ( x 0 ) → a 0 = f ( x 0 ) N n ( x 1 ) = a 0 + a 1 ( x 1 − x 0 ) = f ( x 1 ) → a 1 = f ( x 1 ) − f ( x 0 ) x 1 − x 0 = f [ x 0 , x 1 ] N n ( x 2 ) = a 0 + a 1 ( x 2 − x 0 ) + a 2 ( x 2 − x 0 ) ( x 2 − x 1 ) = f ( x 2 ) → a 2 = f [ x 0 , x 2 ] − f [ x 0 , x 1 ] x 2 − x 0 = f [ x 0 , x 1 , x 2 ] N_n(x_0)=a_0=f(x_0)\rightarrow a_0=f(x_0)\\N_n(x_1)=a_0+a_1(x_1-x_0)=f(x_1)\rightarrow a_1=\frac{f(x_1)-f(x_0)}{x_1-x_0}=f[x_0,x_1]\\N_n(x_2)=a_0+a_1(x_2-x_0)+a_2(x_2-x_0)(x_2-x_1)=f(x_2)\rightarrow a_2=\frac{f[x_0,x_2]-f[x_0,x_1]}{x_2-x_0}=f[x_0,x_1,x_2] Nn(x0)=a0=f(x0)→a0=f(x0)Nn(x1)=a0+a1(x1−x0)=f(x1)→a1=x1−x0f(x1)−f(x0)=f[x0,x1]Nn(x2)=a0+a1(x2−x0)+a2(x2−x0)(x2−x1)=f(x2)→a2=x2−x0f[x0,x2]−f[x0,x1]=f[x0,x1,x2]
由归纳法可得:
a k = f [ x 0 , x 1 , ⋯ , x k ] ( k = 0 , 1 , ⋯ , n ) a_k=f[x_0,x_1,\cdots,x_k](k=0,1,\cdots,n) ak=f[x0,x1,⋯,xk](k=0,1,⋯,n)
以 x 0 , x 1 , ⋯ , x n x_0,x_1,\cdots,x_n x0,x1,⋯,xn 为结点的 n n n 次牛顿型插值多项式:
N n ( x ) = f ( x 0 ) + f [ x 0 , x 1 ] ( x − x 0 ) + f [ x 0 , x 1 , x 2 ] ( x − x 0 ) ( x − x 1 ) + ⋯ + f [ x 0 , x 1 , ⋯ , x n ] ( x − x 0 ) ( x − x 1 ) ⋯ ( x − x n − 1 ) N_n(x)=f(x_0)+f[x_0,x_1](x-x_0)+f[x_0,x_1,x_2](x-x_0)(x-x_1)+\cdots+f[x_0,x_1,\cdots,x_n](x-x_0)(x-x_1)\cdots(x-x_{n-1}) Nn(x)=f(x0)+f[x0,x1](x−x0)+f[x0,x1,x2](x−x0)(x−x1)+⋯+f[x0,x1,⋯,xn](x−x0)(x−x1)⋯(x−xn−1)
当新增加一个结点 x n + 1 x_{n+1} xn+1 时:
N n + 1 ( x ) = N n ( x ) + f [ x 0 , x 1 , ⋯ , x n , x n + 1 ] ( x − x 0 ) ( x − x 1 ) ⋯ ( x − x n − 1 ) ( x − x n ) N_{n+1}(x)=N_n(x)+f[x_0,x_1,\cdots,x_n,x_{n+1}](x-x_0)(x-x_1)\cdots(x-x_{n-1})(x-x_n) Nn+1(x)=Nn(x)+f[x0,x1,⋯,xn,xn+1](x−x0)(x−x1)⋯(x−xn−1)(x−xn)
插值多项式的误差(差商形式)表示:
f ( x ) ≡ f ( x 0 ) + f [ x 0 , x 1 ] ( x − x 0 ) + ⋯ + f [ x 0 , x 1 , ⋯ , x n ] ( x − x 0 ) ⋯ ( x − x n − 1 ) + f [ x 0 , x 1 , ⋯ , x n , x ] ( x − x 0 ) ⋯ ( x − x n ) = N n ( x ) + f [ x 0 , x 1 , ⋯ , x n , x ] ( x − x 0 ) ⋯ ( x − x n ) f(x)\equiv f(x_0)+f[x_0,x_1](x-x_0)+\cdots+f[x_0,x_1,\cdots,x_n](x-x_0)\cdots(x-x_{n-1})+f[x_0,x_1,\cdots,x_n,x](x-x_0)\cdots(x-x_n)\\=N_n(x)+f[x_0,x_1,\cdots,x_n,x](x-x_0)\cdots(x-x_n) f(x)≡f(x0)+f[x0,x1](x−x0)+⋯+f[x0,x1,⋯,xn](x−x0)⋯(x−xn−1)+f[x0,x1,⋯,xn,x](x−x0)⋯(x−xn)=Nn(x)+f[x0,x1,⋯,xn,x](x−x0)⋯(x−xn)
若 f ( x ) ∈ C n + 1 [ a , b ] f(x)\in C^{n+1}[a,b] f(x)∈Cn+1[a,b],则有
R n ( x ) = f ( x ) − N n ( x ) = f [ x 0 , x 1 , ⋯ , x n , x ] ( x − x 0 ) ⋯ ( x − x n ) f [ x 0 , x 1 , ⋯ , x n , x ] = f ( n + 1 ) ( ξ ) ( n + 1 ) ! R_n(x)=f(x)-N_n(x)=f[x_0,x_1,\cdots,x_n,x](x-x_0)\cdots(x-x_n)\\f[x_0,x_1,\cdots,x_n,x]=\frac{f^{(n+1)}(\xi)}{(n+1)!} Rn(x)=f(x)−Nn(x)=f[x0,x1,⋯,xn,x](x−x0)⋯(x−xn)f[x0,x1,⋯,xn,x]=(n+1)!f(n+1)(ξ)
一般地,若 f ( x ) ∈ C n + 1 [ a , b ] f(x)\in C^{n+1}[a,b] f(x)∈Cn+1[a,b],则存在 ξ ∈ ( a , b ) \xi\in(a,b) ξ∈(a,b),使得
f [ x 0 , x 1 , ⋯ , x n ] = f ( n ) ( ξ ) n ! f[x_0,x_1,\cdots,x_n]=\frac{f^{(n)}(\xi)}{n!} f[x0,x1,⋯,xn]=n!f(n)(ξ)
差分与等距结点下的牛顿公式
设函数 f ( x ) f(x) f(x) 在等距结点 x k = x 0 + k h ( k = 0 , 1 , 2 , ⋯ ) x_k=x_0+kh(k=0,1,2,\cdots) xk=x0+kh(k=0,1,2,⋯) 上的值 f ( x k ) f(x_k) f(xk) 已知,步长 h h h 为常数。
定义2:函数 y = f ( x ) y=f(x) y=f(x) 在 x k x_k xk 处以 h h h 为步长的一阶向前差分与二阶向前差分:
Δ y k = Δ f ( x k ) = f ( x k + 1 ) − f ( x k ) Δ 2 y k = Δ 2 f ( x k ) = Δ ( Δ f ( x k ) ) = Δ f ( x k + 1 ) − Δ f ( x k ) = f ( x k + 2 ) − 2 f ( x k + 1 ) + f ( x k ) \Delta y_k=\Delta f(x_k)=f(x_{k+1})-f(x_k)\\\Delta^2y_k=\Delta^2f(x_k)=\Delta(\Delta f(x_k))=\Delta f(x_{k+1})-\Delta f(x_k)=f(x_{k+2})-2f(x_{k+1})+f(x_k) Δyk=Δf(xk)=f(xk+1)−f(xk)Δ2yk=Δ2f(xk)=Δ(Δf(xk))=Δf(xk+1)−Δf(xk)=f(xk+2)−2f(xk+1)+f(xk)
一般性, m m m 阶向前差分:
Δ m y k = Δ m f ( x k ) = Δ ( Δ m − 1 f ( x k ) ) = Δ m − 1 f ( x k + 1 ) − Δ m − 1 f ( x k ) \Delta^my_k=\Delta^mf(x_k)=\Delta(\Delta^{m-1}f(x_k))=\Delta^{m-1}f(x_{k+1})-\Delta^{m-1}f(x_k) Δmyk=Δmf(xk)=Δ(Δm−1f(xk))=Δm−1f(xk+1)−Δm−1f(xk)
定义3:函数 y = f ( x ) y=f(x) y=f(x) 在 x k x_k xk 处以 h h h 为步长的一阶向后差分与二阶向后差分:
▽ y k = ▽ f ( x k ) = f ( x k ) − f ( x k − 1 ) ▽ 2 y k = ▽ 2 f ( x k ) = ▽ ( ▽ f ( x k ) ) = ▽ f ( x k ) − ▽ f ( x k − 1 ) = f ( x k ) − 2 f ( x k − 1 ) + f ( x k − 2 ) \triangledown y_k=\triangledown f(x_k)=f(x_k)-f(x_{k-1})\\\triangledown^2y_k=\triangledown^2f(x_k)=\triangledown(\triangledown f(x_k))=\triangledown f(x_k)- \triangledown f(x_{k-1})=f(x_k)-2f(x_{k-1})+f(x_{k-2}) ▽yk=▽f(xk)=f(xk)−f(xk−1)▽2yk=▽2f(xk)=▽(▽f(xk))=▽f(xk)−▽f(xk−1)=f(xk)−2f(xk−1)+f(xk−2)
一般性, m m m 阶向后差分:
▽ m y k = ▽ m f ( x k ) = ▽ ( ▽ m − 1 f ( x k ) ) = ▽ m − 1 f ( x k ) − ▽ m − 1 f ( x k − 1 ) \triangledown^my_k=\triangledown^mf(x_k)=\triangledown(\triangledown^{m-1}f(x_k))=\triangledown^{m-1}f(x_k)-\triangledown^{m-1}f(x_{k-1}) ▽myk=▽mf(xk)=▽(▽m−1f(xk))=▽m−1f(xk)−▽m−1f(xk−1)
差商与差分关系:
f [ x 0 , x 1 , ⋯ , x m ] = Δ m f ( x 0 ) m ! h m f [ x n , x n − 1 , ⋯ , x n − m ] = ▽ m f ( x n ) m ! h m f[x_0,x_1,\cdots,x_m]=\frac{\Delta^mf(x_0)}{m!h^m}\\f[x_n,x_{n-1},\cdots,x_{n-m}]=\frac{\triangledown^mf(x_n)}{m!h^m} f[x0,x1,⋯,xm]=m!hmΔmf(x0)f[xn,xn−1,⋯,xn−m]=m!hm▽mf(xn)
等距结点的Newton型多项式插值的差分形式:引入变量 t t t ,设 x = x 0 + t h x=x_0+th x=x0+th (有 x − x i = ( t − i ) h x-x_i=(t-i)h x−xi=(t−i)h),则等距结点的Newton插值公式:
N n ( x 0 + t h ) = f ( x 0 ) + t Δ f ( x 0 ) + t ( t − 1 ) 2 ! Δ 2 f ( x 0 ) + ⋯ + t ( t − 1 ) ⋯ ( t − n + 1 ) n ! Δ n f ( x 0 ) N_n(x_0+th)=f(x_0)+t\Delta f(x_0)+\frac{t(t-1)}{2!}\Delta^2f(x_0)+\cdots+\frac{t(t-1)\cdots(t-n+1)}{n!}\Delta^nf(x_0) Nn(x0+th)=f(x0)+tΔf(x0)+2!t(t−1)Δ2f(x0)+⋯+n!t(t−1)⋯(t−n+1)Δnf(x0)
若 f ( x ) ∈ C n + 1 [ a , b ] f(x)\in C^{n+1}[a,b] f(x)∈Cn+1[a,b],则插值误差可表示为
R n ( x ) = R n ( x 0 + t h ) = t ( t − 1 ) ⋯ ( t − n ) ( n + 1 ) ! h n + 1 f ( n + 1 ) ( ζ ) , ζ ∈ ( x 0 , x n ) R_n(x)=R_n(x_0+th)=\frac{t(t-1)\cdots(t-n)}{(n+1)!}h^{n+1}f^{(n+1)}(\zeta),\zeta\in(x_0,x_n) Rn(x)=Rn(x0+th)=(n+1)!t(t−1)⋯(t−n)hn+1f(n+1)(ζ),ζ∈(x0,xn)
(1)牛顿表初公式或牛顿向前差分公式:若 x x x 在 x 0 x_0 x0 附近,选取的牛顿型插值公式为
N n ( x 0 + t h ) = f ( x 0 ) + t Δ f ( x 0 ) + t ( t − 1 ) 2 ! Δ 2 f ( x 0 ) + ⋯ + t ( t − 1 ) ⋯ ( t − n + 1 ) n ! Δ n f ( x 0 ) N_n(x_0+th)=f(x_0)+t\Delta f(x_0)+\frac{t(t-1)}{2!}\Delta^2f(x_0)+\cdots+\frac{t(t-1)\cdots(t-n+1)}{n!}\Delta^nf(x_0) Nn(x0+th)=f(x0)+tΔf(x0)+2!t(t−1)Δ2f(x0)+⋯+n!t(t−1)⋯(t−n+1)Δnf(x0)
(2)牛顿表末公式或牛顿向后差分公式:若 x x x 在 x n x_n xn 附近,选取的牛顿型插值公式为
N n ( x ) = N n ( x n + t h ) = f ( x n ) + f [ x n , x n − 1 ] ( x − x n ) + f [ x n , x n − 1 , x n − 2 ] ( x − x n ) ( x − x n − 1 ) + f [ x n , x n − 1 , ⋯ , x 0 ] ( x − x n ) ( x − x n − 1 ) ⋯ ( x − x 1 ) = f ( x n ) + t ▽ f ( x n ) + t ( t + 1 ) 2 ! ▽ 2 f ( x n ) + ⋯ + t ( t + 1 ) ⋯ ( t + n − 1 ) n ! ▽ n f ( x n ) 其 中 , x k = x n − ( n − k ) h R n ( x ) = R n ( x n + t h ) = t ( t + 1 ) ⋯ ( t + n ) ( n + 1 ) ! h n + 1 f ( n + 1 ) ( ζ ) , ζ ∈ ( x 0 , x n ) N_n(x)=N_n(x_n+th)=f(x_n)+f[x_n,x_{n-1}](x-x_n)+f[x_n,x_{n-1},x_{n-2}](x-x_n)(x-x_{n-1})\\+f[x_n,x_{n-1},\cdots,x_0](x-x_n)(x-x_{n-1})\cdots(x-x_1)\\=f(x_n)+t\triangledown f(x_n)+\frac{t(t+1)}{2!}\triangledown^2f(x_n)+\cdots+\frac{t(t+1)\cdots(t+n-1)}{n!}\triangledown^nf(x_n)\\其中,x_k=x_n-(n-k)h\\R_n(x)=R_n(x_n+th)=\frac{t(t+1)\cdots(t+n)}{(n+1)!}h^{n+1}f^{(n+1)}(\zeta),\zeta\in(x_0,x_n) Nn(x)=Nn(xn+th)=f(xn)+f[xn,xn−1](x−xn)+f[xn,xn−1,xn−2](x−xn)(x−xn−1)+f[xn,xn−1,⋯,x0](x−xn)(x−xn−1)⋯(x−x1)=f(xn)+t▽f(xn)+2!t(t+1)▽2f(xn)+⋯+n!t(t+1)⋯(t+n−1)▽nf(xn)其中,xk=xn−(n−k)hRn(x)=Rn(xn+th)=(n+1)!t(t+1)⋯(t+n)hn+1f(n+1)(ζ),ζ∈(x0,xn)
(3)牛顿表中插值公式:
定义4: δ y k = f ( x k + h 2 ) − f ( x k − h 2 ) = y k + 1 2 − y k − 1 2 \delta y_k=f(x_k+\frac{h}{2})-f(x_k-\frac{h}{2})=y_{k+\frac{1}{2}}-y_{k-\frac{1}{2}} δyk=f(xk+2h)−f(xk−2h)=yk+21−yk−21 称为一阶中心差分。
δ m y k = δ m − 1 y k + 1 2 − δ m − 1 y k − 1 2 \delta^my_k=\delta^{m-1}y_{k+\frac{1}{2}}-\delta^{m-1}y_{k-\frac{1}{2}} δmyk=δm−1yk+21−δm−1yk−21 称为 m m m 阶中心差分。
埃尔米特(Hermite)插值
插值在给定的结点处,不但要求插值多项式的函数值与被插函数的函数值相同,同时还要求在结点处,插值多项式的一阶直至指定阶的导数值也与被插函数的相应阶导数值相等。
设 f ( x ) f(x) f(x) 为 [ a , b ] [a,b] [a,b] 上充分光滑函数,对给定的插值结点 { x i } i = 0 n \{x_i\}^n_{i=0} {xi}i=0n 及相应的重数标号 { m i } i = 0 n \{m_i\}^n_{i=0} {mi}i=0n,当 ∑ i = 0 n m i = N + 1 \sum_{i=0}^nm_i=N+1 ∑i=0nmi=N+1 时,若有 H ( x ) ∈ P n H(x)\in P_n H(x)∈Pn 满足:
H ( l ) ( x i ) = f ( l ) ( x i ) , l = 0 , 1 , ⋯ , m i − 1 , i = 0 , 1 , ⋯ , n H^{(l)}(x_i)=f^{(l)}(x_i),l=0,1,\cdots,m_i-1,i=0,1,\cdots,n H(l)(xi)=f(l)(xi),l=0,1,⋯,mi−1,i=0,1,⋯,n
则称 H ( x ) H(x) H(x) 为 f ( x ) f(x) f(x) 关于结点 { x i } i = 0 n \{x_i\}^n_{i=0} {xi}i=0n 及重数标号 { m i } i = 0 n \{m_i\}^n_{i=0} {mi}i=0n 的埃尔米特插值多项式。
二重( m i = 2 m_i=2 mi=2): f ( x ) ∈ C 2 [ a , b ] f(x)\in C^2[a,b] f(x)∈C2[a,b],若有 H 2 n + 1 ( x i ) = f ( x i ) , H 2 n + 1 ′ ( x i ) = f ′ ( x i ) , i = 0 , 1 , ⋯ , n H_{2n+1}(x_i)=f(x_i),H'_{2n+1}(x_i)=f'(x_i),i=0,1,\cdots,n H2n+1(xi)=f(xi),H2n+1′(xi)=f′(xi),i=0,1,⋯,n,称 H 2 n + 1 ( x ) H_{2n+1}(x) H2n+1(x) 为 f ( x ) f(x) f(x) 关于结点 { x i } i = 0 n \{x_i\}^n_{i=0} {xi}i=0n 的二重埃尔米特插值多项式,其存在且唯一(由克拉默法则易得)。
基函数构造法:
H 2 n + 1 ( x ) = ∑ i = 0 n A i ( x ) f ( x i ) + ∑ i = 0 n B i ( x ) f ′ ( x i ) H_{2n+1}(x)=\sum_{i=0}^nA_i(x)f(x_i)+\sum_{i=0}^nB_i(x)f'(x_i) H2n+1(x)=i=0∑nAi(x)f(xi)+i=0∑nBi(x)f′(xi)
在 P 2 n + 1 P_{2n+1} P2n+1 上构造 2 n + 2 2n+2 2n+2 个基函数 { A i ( x ) , B i ( x ) } i = 0 n \{A_i(x),B_i(x)\}^n_{i=0} {Ai(x),Bi(x)}i=0n,分别满足
{ A i ( x j ) = δ i j A i ′ ( x j ) = 0 , j = 0 , 1 , ⋯ , n , i = 0 , 1 , ⋯ , n { B i ( x j ) = 0 B i ′ ( x j ) = δ i j , j = 0 , 1 , ⋯ , n , i = 0 , 1 , ⋯ , n \begin{cases}A_i(x_j)=\delta_{ij}\\A'_i(x_j)=0\end{cases},j=0,1,\cdots,n,i=0,1,\cdots,n\\\begin{cases}B_i(x_j)=0\\B'_i(x_j)=\delta_{ij}\end{cases},j=0,1,\cdots,n,i=0,1,\cdots,n {Ai(xj)=δijAi′(xj)=0,j=0,1,⋯,n,i=0,1,⋯,n{Bi(xj)=0Bi′(xj)=δij,j=0,1,⋯,n,i=0,1,⋯,n
可得 x 0 , x 1 , ⋯ , x i − 1 , x i + 1 , ⋯ , x n x_0,x_1,\cdots,x_{i-1},x_{i+1},\cdots,x_n x0,x1,⋯,xi−1,xi+1,⋯,xn 为 A i ( x ) A_i(x) Ai(x) 的二重零点, A i ( x ) ∈ P 2 n + 1 A_i(x)\in P_{2n+1} Ai(x)∈P2n+1,有:
A i ( x ) = ( a i x + b i ) [ ( x − x 0 ) 2 ( x − x 1 ) 2 ⋯ ( x − x i − 1 ) 2 ( x − x i + 1 ) 2 ⋯ ( x − x n ) 2 ] 也 可 设 : A i ( x ) = [ a i ( x − x i ) + b i ] ∏ j = 0 , j ≠ i n ( x − x j ) 2 A_i(x)=(a_ix+b_i)[(x-x_0)^2(x-x_1)^2\cdots(x-x_{i-1})^2(x-x_{i+1})^2\cdots(x-x_n)^2]\\也可设:A_i(x)=[a_i(x-x_i)+b_i]\prod_{j=0,j\neq i}^n(x-x_j)^2 Ai(x)=(aix+bi)[(x−x0)2(x−x1)2⋯(x−xi−1)2(x−xi+1)2⋯(x−xn)2]也可设:Ai(x)=[ai(x−xi)+bi]j=0,j=i∏n(x−xj)2
由 A i ( x i ) = 1 , A i ′ ( x i ) = 0 A_i(x_i)=1,A'_i(x_i)=0 Ai(xi)=1,Ai′(xi)=0 得
b i = 1 / ∏ j = 0 , j ≠ i n ( x i − x j ) 2 A i ( x ) = [ 1 − 2 ( x − x i ) ∑ j = 0 , j ≠ i n 1 x i − x j ] l i 2 ( x ) b_i=1/\prod_{j=0,j\neq i}^n(x_i-x_j)^2\\A_i(x)=[1-2(x-x_i)\sum_{j=0,j\neq i}^n\frac{1}{x_i-x_j}]l_i^2(x) bi=1/j=0,j=i∏n(xi−xj)2Ai(x)=[1−2(x−xi)j=0,j=i∑nxi−xj1]li2(x)
其中, l i ( x ) l_i(x) li(x) 为关于点 { x i } i = 0 n \{x_i\}^n_{i=0} {xi}i=0n 的Lagrange 基函数。用类似的方法,可得到
B i ( x ) = ( x − x i ) l i 2 ( x ) H 2 n + 1 ( x ) = ∑ i = 0 n A i ( x ) f ( x i ) + ∑ i = 0 n B i ( x ) f ′ ( x i ) B_i(x)=(x-x_i)l_i^2(x)\\H_{2n+1}(x)=\sum_{i=0}^nA_i(x)f(x_i)+\sum_{i=0}^nB_i(x)f'(x_i) Bi(x)=(x−xi)li2(x)H2n+1(x)=i=0∑nAi(x)f(xi)+i=0∑nBi(x)f′(xi)
二重埃尔米特插值多项式的误差分析:若 f ∈ C 2 n + 2 [ a , b ] f\in C^{2n+2}[a,b] f∈C2n+2[a,b],则 f ( x ) f(x) f(x) 关于 [ a , b ] [a,b] [a,b] 上结点 { x i } i = 0 n \{x_i\}^n_{i=0} {xi}i=0n 的二重埃尔米特插值多项式误差为
f ( x ) − H 2 n + 1 ( x ) = f ( 2 n + 2 ) ( ξ ) ( 2 n + 2 ) ! ω n + 1 2 ( x ) m i n { x 0 , x 1 , ⋯ , x n , x } ≤ ξ = ξ ( x ) ≤ m a x { x 0 , x 1 , ⋯ , x n , x } f(x)-H_{2n+1}(x)=\frac{f^{(2n+2)}(\xi)}{(2n+2)!}\omega^2_{n+1}(x)\\min\{x_0,x_1,\cdots,x_n,x\}\leq\xi=\xi(x)\leq max\{x_0,x_1,\cdots,x_n,x\} f(x)−H2n+1(x)=(2n+2)!f(2n+2)(ξ)ωn+12(x)min{x0,x1,⋯,xn,x}≤ξ=ξ(x)≤max{x0,x1,⋯,xn,x}
具有两个结点 x 0 , x 1 x_0,x_1 x0,x1 的二重埃尔米特插值为一个三次多项式,基函数分别为:
A 0 ( x ) = [ 1 − 2 x − x 0 x 0 − x 1 ] ( x − x 1 x 0 − x 1 ) 2 A 1 ( x ) = [ 1 − 2 x − x 1 x 1 − x 0 ] ( x − x 1 x 0 − x 1 ) 2 B 0 ( x ) = ( x − x 0 ) ( x − x 1 x 0 − x 1 ) 2 B 1 ( x ) = ( x − x 1 ) ( x − x 1 x 0 − x 1 ) 2 A_0(x)=[1-2\frac{x-x_0}{x_0-x_1}](\frac{x-x_1}{x_0-x_1})^2\\A_1(x)=[1-2\frac{x-x_1}{x_1-x_0}](\frac{x-x_1}{x_0-x_1})^2\\B_0(x)=(x-x_0)(\frac{x-x_1}{x_0-x_1})^2\\B_1(x)=(x-x_1)(\frac{x-x_1}{x_0-x_1})^2 A0(x)=[1−2x0−x1x−x0](x0−x1x−x1)2A1(x)=[1−2x1−x0x−x1](x0−x1x−x1)2B0(x)=(x−x0)(x0−x1x−x1)2B1(x)=(x−x1)(x0−x1x−x1)2
所以,二重埃尔米特插值多项式为:
H 3 ( x ) = A 0 ( x ) f ( x 0 ) + A 1 ( x ) f ( x 1 ) + B 0 ( x ) f ′ ( x 0 ) + B 1 ( x ) f ′ ( x 1 ) H_3(x)=A_0(x)f(x_0)+A_1(x)f(x_1)+B_0(x)f'(x_0)+B_1(x)f'(x_1) H3(x)=A0(x)f(x0)+A1(x)f(x1)+B0(x)f′(x0)+B1(x)f′(x1)
若 f ∈ C 4 [ a , b ] f\in C^4[a,b] f∈C4[a,b],则有误差表达式:
R 3 ( x ) = f ( x ) − H 3 ( x ) = f ( 4 ) ( ξ ) 4 ! ( x − x 0 ) 2 ( x − x 1 ) 2 R_3(x)=f(x)-H_3(x)=\frac{f^{(4)}(\xi)}{4!}(x-x_0)^2(x-x_1)^2 R3(x)=f(x)−H3(x)=4!f(4)(ξ)(x−x0)2(x−x1)2
一般形式的Hermite插值问题:求一个次数不大于 n + r + 1 n+r+1 n+r+1 的代数多项式 H ( x ) H(x) H(x) ,满足:
H ( x i ) = f ( x i ) , i = 0 , 1 , 2 , ⋯ , n H ′ ( x i ) = f ′ ( x i ) , i = 0 , 1 , 2 , ⋯ , r ( r ≤ n ) H(x_i)=f(x_i),i=0,1,2,\cdots,n\\H'(x_i)=f'(x_i),i=0,1,2,\cdots,r(r\leq n) H(xi)=f(xi),i=0,1,2,⋯,nH′(xi)=f′(xi),i=0,1,2,⋯,r(r≤n)
令 H ( x ) = ∑ k = 0 n h k ( x ) f ( x k ) + ∑ k = 0 r h ˉ k ( x ) f ′ ( x k ) H(x)=\sum_{k=0}^nh_k(x)f(x_k)+\sum_{k=0}^r\bar{h}_k(x)f'(x_k) H(x)=∑k=0nhk(x)f(xk)+∑k=0rhˉk(x)f′(xk),其中 h k ( x ) 、 h ˉ k ( x ) h_k(x)、\bar{h}_k(x) hk(x)、hˉk(x) 都是 n + r + 1 n+r+1 n+r+1 次待定多项式,并且满足:
h k ( x i ) = { 1 i = k 0 i ≠ k i , k = 0 , 1 , ⋯ , n h k ′ ( x i ) = 0 , k = 0 , 1 , ⋯ , n ; i = 0 , 1 , ⋯ , r h ˉ k ′ ( x i ) = { 1 i = k 0 i ≠ k i , k = 0 , 1 , ⋯ , r h ˉ k ( x i ) = 0 , k = 0 , 1 , ⋯ , r ; i = 0 , 1 , ⋯ , n h_k(x_i)=\begin{cases}1\ \ i=k\\0\ \ i\neq k\end{cases}\ \ \ \ i,k=0,1,\cdots,n\\h'_k(x_i)=0,\ \ k=0,1,\cdots,n;i=0,1,\cdots,r\\\bar{h}_k'(x_i)=\begin{cases}1\ \ i=k\\0\ \ i\neq k\end{cases}\ \ \ \ i,k=0,1,\cdots,r\\\bar{h}_k(x_i)=0,\ \ k=0,1,\cdots,r;i=0,1,\cdots,n hk(xi)={1 i=k0 i=k i,k=0,1,⋯,nhk′(xi)=0, k=0,1,⋯,n;i=0,1,⋯,rhˉk′(xi)={1 i=k0 i=k i,k=0,1,⋯,rhˉk(xi)=0, k=0,1,⋯,r;i=0,1,⋯,n
1、求解 h k ( x ) ( k = 0 , 1 , ⋯ , n ) h_k(x)(k=0,1,\cdots,n) hk(x)(k=0,1,⋯,n):由条件可得, x i ( i = 0 , 1 , ⋯ , r ; i ≠ k ) x_i(i=0,1,\cdots,r;i\neq k) xi(i=0,1,⋯,r;i=k) 是 h k ( x ) h_k(x) hk(x) 的二重零点, x i ( i = r + 1 , r + 2 , ⋯ , n ; i ≠ k ) x_i(i=r+1,r+2,\cdots,n;i\neq k) xi(i=r+1,r+2,⋯,n;i=k) 是 h k ( x ) h_k(x) hk(x) 的零点。当 0 ≤ k ≤ r 0\leq k\leq r 0≤k≤r 时:
h k ( x ) = ( A x + B ) ( x − x 0 ) 2 ⋯ ( x − x k − 1 ) 2 ( x − x k + 1 ) 2 ⋯ ( x − x r ) 2 ( x − x r + 1 ) ⋯ ( x − x n ) = ( A x + B ) ∏ i = 0 , i ≠ k r ( x − x i ) 2 ∏ i = r + 1 n ( x − x i ) h_k(x)=(Ax+B)(x-x_0)^2\cdots(x-x_{k-1})^2(x-x_{k+1})^2\cdots(x-x_r)^2(x-x_{r+1})\cdots(x-x_n)\\=(Ax+B)\prod_{i=0,i\neq k}^r(x-x_i)^2\prod_{i=r+1}^n(x-x_i) hk(x)=(Ax+B)(x−x0)2⋯(x−xk−1)2(x−xk+1)2⋯(x−xr)2(x−xr+1)⋯(x−xn)=(Ax+B)i=0,i=k∏r(x−xi)2i=r+1∏n(x−xi)又由 h k ( x k ) = 1 , h k ′ ( x k ) = 0 h_k(x_k)=1,h_k'(x_k)=0 hk(xk)=1,hk′(xk)=0 得:
( A x k + B ) ∏ i = 0 , i ≠ k r ( x k − x i ) 2 ∏ i = r + 1 n ( x k − x i ) = 1 A ∏ i = 0 i ≠ k r ( x k − x i ) 2 ∏ i = r + 1 n ( x k − x i ) + 2 ( A x k + B ) ∑ j = 0 r ( x k − x j ) ∏ i = 0 i ≠ j i ≠ k r ( x k − x i ) 2 ∏ i = r + 1 n ( x k − x i ) + ( A x k + B ) ∑ j = r + 1 n ∏ i = 0 i ≠ k r ( x k − x i ) 2 ∏ i = r + 1 i ≠ j n ( x k − x i ) = 0 (Ax_k+B)\prod_{i=0,i\neq k}^r(x_k-x_i)^2\prod_{i=r+1}^n(x_k-x_i)=1\\A\prod_{i=0\\i\neq k}^r(x_k-x_i)^2\prod_{i=r+1}^n(x_k-x_i)+2(Ax_k+B)\sum_{j=0}^r(x_k-x_j)\prod_{i=0\\i\neq j\\i\neq k}^r(x_k-x_i)^2\prod_{i=r+1}^n(x_k-x_i)+(Ax_k+B)\sum_{j=r+1}^n\prod_{i=0\\i\neq k}^r(x_k-x_i)^2\prod_{i=r+1\\i\neq j}^n(x_k-x_i)=0 (Axk+B)i=0,i=k∏r(xk−xi)2i=r+1∏n(xk−xi)=1Ai=0i=k∏r(xk−xi)2i=r+1∏n(xk−xi)+2(Axk+B)j=0∑r(xk−xj)i=0i=ji=k∏r(xk−xi)2i=r+1∏n(xk−xi)+(Axk+B)j=r+1∑ni=0i=k∏r(xk−xi)2i=r+1i=j∏n(xk−xi)=0
解得
A = − 2 ∑ j = 0 r 1 x k − x j + ∑ j = r + 1 n 1 x k − x j ∏ i = 0 i ≠ k r ( x k − x i ) 2 ∏ i = r + 1 n ( x k − x i ) B = − 1 − A x k ∏ i = 0 i ≠ k r ( x k − x i ) 2 ∏ i = r + 1 n ( x k − x i ) h k ( x ) = { 1 − ( x − x k ) [ l k n ′ ( x k ) + l k r ′ ( x k ) ] } l k n ( x ) l k r ( x ) , k = 0 , 1 , ⋯ , r 其 中 : l k n ( x ) = ∏ i = 0 i ≠ k n x − x i x k − x i l k r ( x ) = ∏ i = 0 i ≠ k r x − x i x k − x i l k n ′ ( x k ) = ∏ i = 0 i ≠ k n 1 x k − x i l k r ′ ( x k ) = ∏ i = 0 i ≠ k r 1 x k − x i A=-\frac{2\sum_{j=0}^r\frac{1}{x_k-x_j}+\sum_{j=r+1}^n\frac{1}{x_k-x_j}}{\prod_{i=0\\i\neq k}^r(x_k-x_i)^2\prod_{i=r+1}^n(x_k-x_i)}\\B=-\frac{1-Ax_k}{\prod_{i=0\\i\neq k}^r(x_k-x_i)^2\prod_{i=r+1}^n(x_k-x_i)}\\h_k(x)=\{1-(x-x_k)[l'_{kn}(x_k)+l'_{kr}(x_k)]\}l_{kn}(x)l_{kr}(x),k=0,1,\cdots,r\\其中:l_{kn}(x)=\prod_{i=0\\i\neq k}^n\frac{x-x_i}{x_k-x_i}\\l_{kr}(x)=\prod_{i=0\\i\neq k}^r\frac{x-x_i}{x_k-x_i}\\l'_{kn}(x_k)=\prod_{i=0\\i\neq k}^n\frac{1}{x_k-x_i}\\l'_{kr}(x_k)=\prod_{i=0\\i\neq k}^r\frac{1}{x_k-x_i} A=−∏i=0i=kr(xk−xi)2∏i=r+1n(xk−xi)2∑j=0rxk−xj1+∑j=r+1nxk−xj1B=−∏i=0i=kr(xk−xi)2∏i=r+1n(xk−xi)1−Axkhk(x)={1−(x−xk)[lkn′(xk)+lkr′(xk)]}lkn(x)lkr(x),k=0,1,⋯,r其中:lkn(x)=i=0i=k∏nxk−xix−xilkr(x)=i=0i=k∏rxk−xix−xilkn′(xk)=i=0i=k∏nxk−xi1lkr′(xk)=i=0i=k∏rxk−xi1
当 r + 1 ≤ k ≤ n r+1\leq k \leq n r+1≤k≤n 时, h k ( x ) h_k(x) hk(x) 具有如下形式:
h k ( x ) = C ∏ i = 0 r ( x − x i ) 2 ∏ i = r + 1 i ≠ k n ( x − x i ) h_k(x)=C\prod_{i=0}^r(x-x_i)^2\prod_{i=r+1\\i\neq k}^n(x-x_i) hk(x)=Ci=0∏r(x−xi)2i=r+1i=k∏n(x−xi)
由 h k ( x k ) = 1 h_k(x_k)=1 hk(xk)=1 得:
C = 1 ∏ i = 0 r ( x k − x i ) 2 ∏ i = r + 1 i ≠ k n ( x k − x i ) h k ( x ) = w r ( x ) w r ( x k ) l k n ( x ) , k = r + 1 , r + 2 , ⋯ , n 其 中 : w r ( x ) = ∏ i = 0 r ( x − x i ) w r ( x k ) = ∏ i = 0 r ( x k − x i ) l k n ( x ) = ∏ i = 0 i ≠ k n x − x i x k − x i C=\frac{1}{\prod_{i=0}^r(x_k-x_i)^2\prod_{i=r+1\\i\neq k}^n(x_k-x_i)}\\h_k(x)=\frac{w_r(x)}{w_r(x_k)}l_{kn}(x),k=r+1,r+2,\cdots,n\\其中:w_r(x)=\prod_{i=0}^r(x-x_i)\\w_r(x_k)=\prod_{i=0}^r(x_k-x_i)\\l_{kn}(x)=\prod_{i=0\\i\neq k}^n\frac{x-x_i}{x_k-x_i} C=∏i=0r(xk−xi)2∏i=r+1i=kn(xk−xi)1hk(x)=wr(xk)wr(x)lkn(x),k=r+1,r+2,⋯,n其中:wr(x)=i=0∏r(x−xi)wr(xk)=i=0∏r(xk−xi)lkn(x)=i=0i=k∏nxk−xix−xi
2、求解 h ˉ k ( x ) ( k = 0 , 1 , ⋯ , n ) \bar{h}_k(x)(k=0,1,\cdots,n) hˉk(x)(k=0,1,⋯,n):由条件可得, x i ( i = 0 , 1 , ⋯ , r ; i ≠ k ) x_i(i=0,1,\cdots,r;i\neq k) xi(i=0,1,⋯,r;i=k) 是 h ˉ k ( x ) \bar{h}_k(x) hˉk(x) 的二重零点, x i ( i = k , r + 1 , r + 2 , ⋯ , n ) x_i(i=k,r+1,r+2,\cdots,n) xi(i=k,r+1,r+2,⋯,n) 是 h ˉ k ( x ) \bar{h}_k(x) hˉk(x) 的零点。当 0 ≤ k ≤ r 0\leq k\leq r 0≤k≤r 时:
h ˉ k ( x ) = D ∏ i = 0 n ( x − x i ) ∏ i = 0 i ≠ k r ( x − x i ) \bar{h}_k(x)=D\prod_{i=0}^n(x-x_i)\prod_{i=0\\i\neq k}^r(x-x_i) hˉk(x)=Di=0∏n(x−xi)i=0i=k∏r(x−xi)
由 h ˉ k ′ ( x k ) = 1 \bar{h}'_k(x_k)=1 hˉk′(xk)=1得
D = 1 ∑ j = 0 n ∏ i = 0 i ≠ j n ( x k − x i ) ∏ i = 0 i ≠ k r ( x k − x i ) + ∑ j = 0 j ≠ k r ∏ i = 0 n ( x k − x i ) ∏ i = 0 i ≠ k i ≠ j r ( x k − x i ) h ˉ k ( x ) = ( x − x k ) l k n ( x ) l k r ( x ) , k = 0 , 1 , ⋯ , r D=\frac{1}{\sum_{j=0}^n\prod_{i=0\\i\neq j}^n(x_k-x_i)\prod_{i=0\\i\neq k}^r(x_k-x_i)+\sum_{j=0\\j\neq k}^r\prod_{i=0}^n(x_k-x_i)\prod_{i=0\\i\neq k\\i\neq j}^r(x_k-x_i)}\\\bar{h}_k(x)=(x-x_k)l_{kn}(x)l_{kr}(x),k=0,1,\cdots,r D=∑j=0n∏i=0i=jn(xk−xi)∏i=0i=kr(xk−xi)+∑j=0j=kr∏i=0n(xk−xi)∏i=0i=ki=jr(xk−xi)1hˉk(x)=(x−xk)lkn(x)lkr(x),k=0,1,⋯,r
补充:重节点差商
f [ x 0 , x 1 , x 2 , x 1 ] = f [ x 1 , x 2 , x 1 ] − f [ x 0 , x 1 , x 2 ] x 1 − x 0 f [ x 1 , x 2 , x 1 ] = f [ x 2 , x 1 ] − f [ x 1 , x 1 ] x 2 − x 1 f [ x 1 , x 1 ] = lim x 2 → x 1 f [ x 1 , x 2 ] = lim x 2 → x 1 f ( x 2 ) − f ( x 1 ) x 2 − x 1 = f ′ ( x 1 ) 类 似 的 , f [ x 1 , x 1 , x 1 ] = 1 2 ! f ′ ′ ( x 1 ) f [ x 1 , x 1 , ⋯ , x 1 ⏟ n + 1 个 ] = 1 n ! f ( n ) ( x 1 ) f[x_0,x_1,x_2,x_1]=\frac{f[x_1,x_2,x_1]-f[x_0,x_1,x_2]}{x_1-x_0}\\f[x_1,x_2,x_1]=\frac{f[x_2,x_1]-f[x_1,x_1]}{x_2-x_1}\\f[x_1,x_1]=\lim_{x_2\rightarrow x_1}f[x_1,x_2]=\lim_{x_2\rightarrow x_1}\frac{f(x_2)-f(x_1)}{x_2-x_1}=f'(x_1)\\类似的,f[x_1,x_1,x_1]=\frac{1}{2!}f''(x_1)\\f[\underbrace{x_1,x_1,\cdots,x_1}_{n+1个}]=\frac{1}{n!}f^{(n)}(x_1) f[x0,x1,x2,x1]=x1−x0f[x1,x2,x1]−f[x0,x1,x2]f[x1,x2,x1]=x2−x1f[x2,x1]−f[x1,x1]f[x1,x1]=x2→x1limf[x1,x2]=x2→x1limx2−x1f(x2)−f(x1)=f′(x1)类似的,f[x1,x1,x1]=2!1f′′(x1)f[n+1个 x1,x1,⋯,x1]=n!1f(n)(x1)
例如,已知 f ( x ) f(x) f(x) 在结点 x 0 , x 1 , x 2 x_0,x_1,x_2 x0,x1,x2 上的函数值和在 x 1 x_1 x1 处的导数值,求次数不超过3次的多项式 P ( x ) P(x) P(x):
P ( x ) = f ( x 0 ) + f [ x 0 , x 1 ] ( x − x 0 ) + f [ x 0 , x 1 , x 2 ] ( x − x 0 ) ( x − x 1 ) + f [ x 0 , x 1 , x 2 , x 1 ] ( x − x 0 ) ( x − x 1 ) ( x − x 2 ) P(x)=f(x_0)+f[x_0,x_1](x-x_0)+f[x_0,x_1,x_2](x-x_0)(x-x_1)+f[x_0,x_1,x_2,x_1](x-x_0)(x-x_1)(x-x_2) P(x)=f(x0)+f[x0,x1](x−x0)+f[x0,x1,x2](x−x0)(x−x1)+f[x0,x1,x2,x1](x−x0)(x−x1)(x−x2)
分段低次插值
龙格(Runge)现象:为减少逼近误差,盲目地提高插值阶是不可取的。一个解决办法:缩小插值区间,即分段低次插值。
分段线性插值与分段二次插值
对给定区间 [ a , b ] [a,b] [a,b] 作分割: a = x 0 < x 1 < x 2 < ⋯ < x n = b a=x_0<x_1<x_2<\cdots<x_n=b a=x0<x1<x2<⋯<xn=b。在每个小区间 [ x i − 1 , x i ] [x_{i-1},x_i] [xi−1,xi] 上作 f ( x ) f(x) f(x) 以 x i − 1 , x i x_{i-1},x_i xi−1,xi 为结点的线性插值,记为 L 1 ( x ) L_1(x) L1(x),则
f ( x ) ≈ L 1 ( x ) = f ( x i − 1 ) x − x i x i − 1 − x i + f ( x i ) x − x i − 1 x i − x i − 1 f(x)\approx L_1(x)=f(x_{i-1})\frac{x-x_i}{x_{i-1}-x_i}+f(x_i)\frac{x-x_{i-1}}{x_i-x_{i-1}} f(x)≈L1(x)=f(xi−1)xi−1−xix−xi+f(xi)xi−xi−1x−xi−1
即为分段线性插值(折线插值)。
特点:
- L 1 ( x ) ∈ C [ a , b ] L_1(x)\in C[a,b] L1(x)∈C[a,b]。
- L 1 ( x ) L_1(x) L1(x) 在 [ x i − 1 , x i ] [x_{i-1},x_i] [xi−1,xi] 上为一个不高于一次的多项式。
误差:若 f ( x ) ∈ C 2 [ a , b ] f(x)\in C^2[a,b] f(x)∈C2[a,b],则 ∣ f ( x ) − L 1 ( x ) ∣ ≤ M 2 8 h 2 |f(x)-L_1(x)|\leq\frac{M_2}{8}h^2 ∣f(x)−L1(x)∣≤8M2h2,其中 M 2 = max a ≤ x ≤ b ∣ f ′ ′ ( x ) ∣ , h i = x i − x i − 1 , h = max 1 ≤ i ≤ n h i M_2=\max_{a\leq x\leq b}|f''(x)|,h_i=x_i-x_{i-1},h=\max_{1\leq i\leq n}h_i M2=maxa≤x≤b∣f′′(x)∣,hi=xi−xi−1,h=max1≤i≤nhi
证明:当 x ∈ [ x i − 1 , x i ] x\in[x_{i-1},x_i] x∈[xi−1,xi] 时,可得:
f ( x ) − L 1 ( x ) = f ′ ′ ( ξ ) 2 ! ( x − x i − 1 ) ( x − x i ) ∣ f ( x ) − L 1 ( x ) ∣ ≤ M 2 2 ∣ ( x − x i − 1 ) ( x − x i ) ∣ ≤ M 2 2 ⋅ 1 4 ( x i − x i − 1 ) 2 ≤ M 2 8 h 2 f(x)-L_1(x)=\frac{f''(\xi)}{2!}(x-x_{i-1})(x-x_i)\\|f(x)-L_1(x)|\leq\frac{M_2}{2}|(x-x_{i-1})(x-x_i)|\leq\frac{M_2}{2}·\frac{1}{4}(x_i-x_{i-1})^2\leq\frac{M_2}{8}h^2 f(x)−L1(x)=2!f′′(ξ)(x−xi−1)(x−xi)∣f(x)−L1(x)∣≤2M2∣(x−xi−1)(x−xi)∣≤2M2⋅41(xi−xi−1)2≤8M2h2
由此可知,当区间分割加密,即 max i ( x i − x i − 1 ) → 0 \max_i(x_i-x_{i-1})\rightarrow0 maxi(xi−xi−1)→0,分段线性插值 L 1 ( x ) L_1(x) L1(x) 收敛于 f ( x ) f(x) f(x)。
分段线性插值有很好的收敛性质,但却是不光滑的。
分段二次插值(分段抛物插值):
f ( x ) ≈ L 2 ( x ) = ∑ k = i − 1 i + 1 [ f ( x i ) ∏ j = i − 1 j ≠ k i + 1 ( x − x j x k − x j ) ] f(x)\approx L_2(x)=\sum_{k=i-1}^{i+1}[f(x_i)\prod_{j=i-1\\j\neq k}^{i+1}(\frac{x-x_j}{x_k-x_j})] f(x)≈L2(x)=k=i−1∑i+1[f(xi)j=i−1j=k∏i+1(xk−xjx−xj)]
三次样条插值
定义5: △ : a = x 0 < x 1 < x 2 < ⋯ < x n = b \triangle:a=x_0<x_1<x_2<\cdots<x_n=b △:a=x0<x1<x2<⋯<xn=b 为 [ a , b ] [a,b] [a,b] 上的一个分割,若函数 S ( x ) S(x) S(x) 满足:
- S ( x ) S(x) S(x) 在每个子区间 [ x i , x i + 1 ] [x_i,x_{i+1}] [xi,xi+1] 上为不高于三次的多项式;
- S ( x ) ∈ C 2 ( a , b ) S(x)\in C^2(a,b) S(x)∈C2(a,b);
- S ( x i ) = f ( x i ) , i = 0 , 1 , ⋯ , n S(x_i)=f(x_i),i=0,1,\cdots,n S(xi)=f(xi),i=0,1,⋯,n
则称 S ( x ) S(x) S(x) 为 f ( x ) f(x) f(x) 在 △ \triangle △ 上的三次样条插值函数。
唯一性:需要提出两个限制条件,称为边界条件或端点条件,通常有三种提法:
S ( x ) S(x) S(x) 两端的一阶导数值等于预先给定的值,即
S ′ ( x 0 ) = y 0 ′ , S ′ ( x n ) = y n ′ S'(x_0)=y_0',S'(x_n)=y_n' S′(x0)=y0′,S′(xn)=yn′
称为 D 1 D_1 D1 样条。S ( x ) S(x) S(x) 两端的二阶导数值等于预先给定的值,即
S ′ ′ ( x 0 ) = y 0 ′ ′ , S ′ ′ ( x n ) = y n ′ ′ S''(x_0)=y_0'',S''(x_n)=y_n'' S′′(x0)=y0′′,S′′(xn)=yn′′
称为 D 2 D_2 D2 样条。特别的,当 S ′ ′ ( x 0 ) = S ′ ′ ( x n ) = 0 S''(x_0)=S''(x_n)=0 S′′(x0)=S′′(xn)=0 时,为自然样条。若三次样条为以 b − a b-a b−a 为周期的周期函数( f ( x n ) = f ( x 0 ) , S ( x 0 + 0 ) = S ( x n − 0 ) f(x_n)=f(x_0),S(x_0+0)=S(x_n-0) f(xn)=f(x0),S(x0+0)=S(xn−0)),则称 S ′ ( x 0 + 0 ) = S ′ ( x n − 0 ) , S ′ ′ ( x 0 + 0 ) = S ′ ′ ( x n − 0 ) S'(x_0+0)=S'(x_n-0),S''(x_0+0)=S''(x_n-0) S′(x0+0)=S′(xn−0),S′′(x0+0)=S′′(xn−0) 为周期样条。
三斜率(三转角)方程组
S ( x ) S(x) S(x) 为一个不高于三次的多项式。设 S ′ ( x i ) = d i , i = 0 , 1 , ⋯ , n S'(x_i)=d_i,i=0,1,\cdots,n S′(xi)=di,i=0,1,⋯,n, S ( x ) S(x) S(x) 在 [ x i , x i + 1 ] [x_i,x_{i+1}] [xi,xi+1] 上的表达式为 S i ( x ) S_i(x) Si(x),于是有
S i ( x i ) = f ( x i ) , S i ( x i + 1 ) = f ( x i + 1 ) S i ′ ( x i ) = d i , S i ′ ( x i + 1 ) = d i + 1 h i + 1 = x i + 1 − x i S_i(x_i)=f(x_i),S_i(x_{i+1})=f(x_{i+1})\\S_i'(x_i)=d_i,S_i'(x_{i+1})=d_{i+1}\\h_{i+1}=x_{i+1}-x_i Si(xi)=f(xi),Si(xi+1)=f(xi+1)Si′(xi)=di,Si′(xi+1)=di+1hi+1=xi+1−xi
记:
λ i = h i + 1 h i + h i + 1 , μ i = 1 − λ i = h i h i + h i + 1 , C i = 3 ( λ i f [ x i − 1 , x i ] + μ i f [ x i , x i + 1 ] ) \lambda_i=\frac{h_{i+1}}{h_i+h_{i+1}},\mu_i=1-\lambda_i=\frac{h_i}{h_i+h_{i+1}},C_i=3(\lambda_if[x_{i-1},x_i]+\mu_if[x_i,x_{i+1}]) λi=hi+hi+1hi+1,μi=1−λi=hi+hi+1hi,Ci=3(λif[xi−1,xi]+μif[xi,xi+1])
则有三次样条插值的 d d d 关系式(或 m m m 关系式):
λ i d i − 1 + 2 d i + μ i d i + 1 = C i , i = 1 , 2 , ⋯ , n − 1 \lambda_id_{i-1}+2d_i+\mu_id_{i+1}=C_i,i=1,2,\cdots,n-1 λidi−1+2di+μidi+1=Ci,i=1,2,⋯,n−1
加入两个端点条件,才能解得 { d i } i = 0 n \{d_i\}^n_{i=0} {di}i=0n,有三种方法:
D 1 D_1 D1 样条: S ( x ) S(x) S(x) 两端的一阶导数值等于预先给定的值:
S ′ ( x 0 ) = y 0 ′ , S ′ ( x n ) = y n ′ S'(x_0)=y_0',S'(x_n)=y_n' S′(x0)=y0′,S′(xn)=yn′
求线性方程组,得 d i ( i = 1 , ⋯ , n − 1 ) d_i(i=1,\cdots,n-1) di(i=1,⋯,n−1):
[ 2 μ 1 λ 2 2 μ 2 ⋱ ⋱ ⋱ λ n − 2 2 μ n − 2 λ n − 1 2 ] [ d 1 d 2 ⋮ d n − 2 d n − 1 ] = [ C 1 − λ 1 y 0 ′ C 2 ⋮ C n − 2 C n − 1 − μ n − 1 y n ′ ] \left[\begin{matrix}2&\mu_1&&\\\lambda_2&2&\mu_2&\\\ddots&\ddots&\ddots\\&\lambda_{n-2}&2&\mu_{n-2}\\&&\lambda_{n-1}&2\end{matrix}\right]\left[\begin{matrix}d_1\\d_2\\\vdots\\d_{n-2}\\d_{n-1}\end{matrix}\right]=\left[\begin{matrix}C_1-\lambda_1y_0'\\C_2\\\vdots\\C_{n-2}\\C_{n-1}-\mu_{n-1}y_n'\end{matrix}\right] ⎣⎢⎢⎢⎢⎡2λ2⋱μ12⋱λn−2μ2⋱2λn−1μn−22⎦⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎡d1d2⋮dn−2dn−1⎦⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎡C1−λ1y0′C2⋮Cn−2Cn−1−μn−1yn′⎦⎥⎥⎥⎥⎥⎤D 2 D_2 D2 样条: S ( x ) S(x) S(x) 两端的二阶导数值等于预先给定的值:
S ′ ′ ( x 0 ) = y 0 ′ ′ , S ′ ′ ( x n ) = y n ′ ′ S''(x_0)=y_0'',S''(x_n)=y_n'' S′′(x0)=y0′′,S′′(xn)=yn′′
由 S ′ ′ ( x ) S''(x) S′′(x) 在 [ x i , x i + 1 ] [x_i,x_{i+1}] [xi,xi+1] 的表达式,容易得到:
2 d 0 + d 1 = 3 f [ x 0 , x 1 ] − h 1 2 y 0 ′ ′ d n − 1 + 2 d n = 3 f [ x n − 1 , x n ] − h n 2 y n ′ ′ 2d_0+d_1=3f[x_0,x_1]-\frac{h_1}{2}y_0''\\d_{n-1}+2d_n=3f[x_{n-1},x_n]-\frac{h_n}{2}y_n'' 2d0+d1=3f[x0,x1]−2h1y0′′dn−1+2dn=3f[xn−1,xn]−2hnyn′′
可得关于 { d i } i = 0 n \{d_i\}^n_{i=0} {di}i=0n 的一组线性方程组:
[ 2 1 λ 1 2 μ 1 ⋱ ⋱ ⋱ λ n − 1 2 μ n − 1 1 2 ] [ d 0 d 1 ⋮ d n − 1 d n ] = [ 3 f [ x 0 , x 1 ] − h 1 2 y 0 ′ ′ C 1 ⋮ C n − 1 3 f [ x n − 1 , x n ] − h n 2 y n ′ ′ ] \left[\begin{matrix}2&1&&\\\lambda_1&2&\mu_1&\\\ddots&\ddots&\ddots\\&\lambda_{n-1}&2&\mu_{n-1}\\&&1&2\end{matrix}\right]\left[\begin{matrix}d_0\\d_1\\\vdots\\d_{n-1}\\d_n\end{matrix}\right]=\left[\begin{matrix}3f[x_0,x_1]-\frac{h_1}{2}y_0''\\C_1\\\vdots\\C_{n-1}\\3f[x_{n-1},x_n]-\frac{h_n}{2}y_n''\end{matrix}\right] ⎣⎢⎢⎢⎢⎡2λ1⋱12⋱λn−1μ1⋱21μn−12⎦⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎡d0d1⋮dn−1dn⎦⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎡3f[x0,x1]−2h1y0′′C1⋮Cn−13f[xn−1,xn]−2hnyn′′⎦⎥⎥⎥⎥⎥⎤周期样条:若三次样条为以 b − a b-a b−a 为周期的周期函数, f ( x n ) = f ( x 0 ) , S ( x 0 ) = S ( x n ) , S ′ ( x 0 ) = S ′ ( x n ) , S ′ ′ ( x 0 ) = S ′ ′ ( x n ) f(x_n)=f(x_0),S(x_0)=S(x_n),S'(x_0)=S'(x_n),S''(x_0)=S''(x_n) f(xn)=f(x0),S(x0)=S(xn),S′(x0)=S′(xn),S′′(x0)=S′′(xn),可得
λ n − 1 d n − 2 + 2 d n − 1 + μ n − 1 d 0 = C n − 1 λ 0 d n − 1 + 2 d 0 + μ 0 d 1 = C 0 这 里 : λ 0 = h 1 h n + h 1 , μ 0 = 1 − λ 0 = h n h n + h 1 C 0 = 3 ( λ 0 f [ x n − 1 , x n ] + μ 0 f [ x 0 , x 1 ] ) \lambda_{n-1}d_{n-2}+2d_{n-1}+\mu_{n-1}d_0=C_{n-1}\\\lambda_0d_{n-1}+2d_0+\mu_0d_1=C_0\\这里:\lambda_0=\frac{h_1}{h_n+h_1},\mu_0=1-\lambda_0=\frac{h_n}{h_n+h_1}\\C_0=3(\lambda_0f[x_{n-1},x_n]+\mu_0f[x_0,x_1]) λn−1dn−2+2dn−1+μn−1d0=Cn−1λ0dn−1+2d0+μ0d1=C0这里:λ0=hn+h1h1,μ0=1−λ0=hn+h1hnC0=3(λ0f[xn−1,xn]+μ0f[x0,x1])
得到关于 { d i } i = 0 n \{d_i\}^n_{i=0} {di}i=0n 的一组线性方程组:
[ 2 μ 0 λ 0 λ 1 2 μ 1 ⋱ ⋱ ⋱ λ n − 2 2 μ n − 2 μ n − 1 λ n − 1 2 ] [ d 0 d 1 ⋮ d n − 2 d n − 1 ] = [ C 0 C 1 ⋮ C n − 2 C n − 1 ] \left[\begin{matrix}2&\mu_0&&\lambda_0\\\lambda_1&2&\mu_1&\\\ddots&\ddots&\ddots\\&\lambda_{n-2}&2&\mu_{n-2}\\\mu_{n-1}&&\lambda_{n-1}&2\end{matrix}\right]\left[\begin{matrix}d_0\\d_1\\\vdots\\d_{n-2}\\d_{n-1}\end{matrix}\right]=\left[\begin{matrix}C_0\\C_1\\\vdots\\C_{n-2}\\C_{n-1}\end{matrix}\right] ⎣⎢⎢⎢⎢⎡2λ1⋱μn−1μ02⋱λn−2μ1⋱2λn−1λ0μn−22⎦⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎡d0d1⋮dn−2dn−1⎦⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎡C0C1⋮Cn−2Cn−1⎦⎥⎥⎥⎥⎥⎤
求出 { d i } i = 0 n \{d_i\}^n_{i=0} {di}i=0n ,即得在 [ x i , x i + 1 ] [x_i,x_{i+1}] [xi,xi+1] 上的三次样条插值函数为:
S i ( x ) = 1 h i + 1 3 [ h i + 1 + 2 ( x − x i ) ] ( x − x i + 1 ) 2 f ( x i ) + 1 h i + 1 3 [ h i + 1 − 2 ( x − x i + 1 ) ] ( x − x i ) 2 f ( x i + 1 ) + 1 h i + 1 2 ( x − x i ) ( x − x i + 1 ) 2 d i + 1 h i + 1 2 ( x − x i + 1 ) ( x − x i ) 2 d i + 1 S_i(x)=\frac{1}{h_{i+1}^3}[h_{i+1}+2(x-x_i)](x-x_{i+1})^2f(x_i)\\+\frac{1}{h_{i+1}^3}[h_{i+1}-2(x-x_{i+1})](x-x_i)^2f(x_{i+1})\\+\frac{1}{h_{i+1}^2}(x-x_i)(x-x_{i+1})^2d_i\\+\frac{1}{h_{i+1}^2}(x-x_{i+1})(x-x_i)^2d_{i+1} Si(x)=hi+131[hi+1+2(x−xi)](x−xi+1)2f(xi)+hi+131[hi+1−2(x−xi+1)](x−xi)2f(xi+1)+hi+121(x−xi)(x−xi+1)2di+hi+121(x−xi+1)(x−xi)2di+1
三弯矩方程组(M关系式)
对于样条插值函数 S ( x ) ∈ C 2 ( a , b ) S(x)\in C^2(a,b) S(x)∈C2(a,b),设 S ′ ′ ( x i ) = M i , i = 0 , 1 , ⋯ , n S''(x_i)=M_i,i=0,1,\cdots,n S′′(xi)=Mi,i=0,1,⋯,n 为待求参数。
三次样条插值的 M M M 关系式:
μ i M i − 1 + 2 M i + λ i M i + 1 = c i , i = 1 , 2 , ⋯ , n − 1 c i = 6 f [ x i − 1 , x i , x i + 1 ] \mu_iM_{i-1}+2M_i+\lambda_iM_{i+1}=c_i,i=1,2,\cdots,n-1\\c_i=6f[x_{i-1},x_i,x_{i+1}] μiMi−1+2Mi+λiMi+1=ci,i=1,2,⋯,n−1ci=6f[xi−1,xi,xi+1]
加入两个端点条件,通过 M M M 关系式可解得 { M i } i = 0 n \{M_i\}^n_{i=0} {Mi}i=0n,有三种方法:
D 1 D_1 D1 样条: S ( x ) S(x) S(x) 两端的一阶导数值等于预先给定的值:
S ′ ( x 0 ) = y 0 ′ , S ′ ( x n ) = y n ′ S'(x_0)=y_0',S'(x_n)=y_n' S′(x0)=y0′,S′(xn)=yn′
对 i = 0 i=0 i=0 及 i = n − 1 i=n-1 i=n−1 时的 S i ( x ) S_i(x) Si(x) 求导,并分别对 x 0 , x n x_0,x_n x0,xn 代入,整理得:
2 M 0 + M 1 = 6 h 1 ( f [ x 0 , x 1 ] − y 0 ′ ) M n − 1 + 2 M n = 6 h n ( y n ′ − f [ x n − 1 , x n ] ) 2M_0+M_1=\frac{6}{h_1}(f[x_0,x_1]-y_0')\\M_{n-1}+2M_n=\frac{6}{h_n}(y_n'-f[x_{n-1},x_n]) 2M0+M1=h16(f[x0,x1]−y0′)Mn−1+2Mn=hn6(yn′−f[xn−1,xn])
得到关于 { M i } i = 0 n \{M_i\}^n_{i=0} {Mi}i=0n 的方程组:
[ 2 1 μ 1 2 λ 1 ⋱ ⋱ ⋱ μ n − 1 2 λ n − 1 1 2 ] [ M 0 M 1 ⋮ M n − 1 M n ] = [ 6 h 1 ( f [ x 0 , x 1 ] − y 0 ′ ) c 1 ⋮ c n − 1 6 h n ( y n ′ − f [ x n − 1 , x n ] ) ] \left[\begin{matrix}2&1&&\\\mu_1&2&\lambda_1&\\\ddots&\ddots&\ddots\\&\mu_{n-1}&2&\lambda_{n-1}\\&&1&2\end{matrix}\right]\left[\begin{matrix}M_0\\M_1\\\vdots\\M_{n-1}\\M_n\end{matrix}\right]=\left[\begin{matrix}\frac{6}{h_1}(f[x_0,x_1]-y_0')\\c_1\\\vdots\\c_{n-1}\\\frac{6}{h_n}(y_n'-f[x_{n-1},x_n])\end{matrix}\right] ⎣⎢⎢⎢⎢⎡2μ1⋱12⋱μn−1λ1⋱21λn−12⎦⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎡M0M1⋮Mn−1Mn⎦⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎡h16(f[x0,x1]−y0′)c1⋮cn−1hn6(yn′−f[xn−1,xn])⎦⎥⎥⎥⎥⎥⎤D 2 D_2 D2 样条: S ( x ) S(x) S(x) 两端的二阶导数值等于预先给定的值:
S ′ ′ ( x 0 ) = y 0 ′ ′ , S ′ ′ ( x n ) = y n ′ ′ S''(x_0)=y_0'',S''(x_n)=y_n'' S′′(x0)=y0′′,S′′(xn)=yn′′
得到关于 { M i } i = 0 n \{M_i\}^n_{i=0} {Mi}i=0n 的方程组:
[ 2 λ 1 μ 2 2 λ 2 ⋱ ⋱ ⋱ μ n − 2 2 λ n − 2 μ n − 1 2 ] [ M 1 M 2 ⋮ M n − 2 M n − 1 ] = [ c 1 − μ 1 y 0 ′ ′ c 2 ⋮ c n − 2 c n − 1 − λ n − 1 y n ′ ′ ] \left[\begin{matrix}2&\lambda_1&&\\\mu_2&2&\lambda_2&\\\ddots&\ddots&\ddots\\&\mu_{n-2}&2&\lambda_{n-2}\\&&\mu_{n-1}&2\end{matrix}\right]\left[\begin{matrix}M_1\\M_2\\\vdots\\M_{n-2}\\M_{n-1}\end{matrix}\right]=\left[\begin{matrix}c_1-\mu_1y_0''\\c_2\\\vdots\\c_{n-2}\\c_{n-1}-\lambda_{n-1}y_n''\end{matrix}\right] ⎣⎢⎢⎢⎢⎡2μ2⋱λ12⋱μn−2λ2⋱2μn−1λn−22⎦⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎡M1M2⋮Mn−2Mn−1⎦⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎡c1−μ1y0′′c2⋮cn−2cn−1−λn−1yn′′⎦⎥⎥⎥⎥⎥⎤周期样条:若三次样条为以 b − a b-a b−a 为周期的周期函数, f ( x n ) = f ( x 0 ) , S ( x 0 ) = S ( x n ) , S ′ ( x 0 ) = S ′ ( x n ) , S ′ ′ ( x 0 ) = S ′ ′ ( x n ) f(x_n)=f(x_0),S(x_0)=S(x_n),S'(x_0)=S'(x_n),S''(x_0)=S''(x_n) f(xn)=f(x0),S(x0)=S(xn),S′(x0)=S′(xn),S′′(x0)=S′′(xn),可得:
μ 0 M n − 1 + 2 M 0 + λ 0 M 1 = 6 h 1 + h n ( f [ x 0 , x 1 ] − f [ x n − 1 , x n ] ) 这 里 : λ 0 = h 1 h 1 + h n , μ 0 = 1 − λ 0 = h n h 1 + h n μ n − 1 M n − 1 + 2 M n − 1 + λ n − 1 M 0 = c n − 1 \mu_0M_{n-1}+2M_0+\lambda_0M_1=\frac{6}{h_1+h_n}(f[x_0,x_1]-f[x_{n-1},x_n])\\这里:\lambda_0=\frac{h_1}{h_1+h_n},\mu_0=1-\lambda_0=\frac{h_n}{h_1+h_n}\\\mu_{n-1}M_{n-1}+2M_{n-1}+\lambda_{n-1}M_0=c_{n-1} μ0Mn−1+2M0+λ0M1=h1+hn6(f[x0,x1]−f[xn−1,xn])这里:λ0=h1+hnh1,μ0=1−λ0=h1+hnhnμn−1Mn−1+2Mn−1+λn−1M0=cn−1
得到关于 { M i } i = 0 n − 1 \{M_i\}^{n-1}_{i=0} {Mi}i=0n−1 的方程组:
[ 2 λ 0 μ 0 μ 1 2 λ 1 ⋱ ⋱ ⋱ μ n − 2 2 λ n − 2 λ n − 1 μ n − 1 2 ] [ M 0 M 1 ⋮ M n − 2 M n − 1 ] = [ 6 h 1 + h n ( f [ x 0 , x 1 ] − f [ x n − 1 , x n ] ) c 1 ⋮ c n − 2 c n − 1 ] \left[\begin{matrix}2&\lambda_0&&\mu_0\\\mu_1&2&\lambda_1&\\\ddots&\ddots&\ddots\\&\mu_{n-2}&2&\lambda_{n-2}\\\lambda_{n-1}&&\mu_{n-1}&2\end{matrix}\right]\left[\begin{matrix}M_0\\M_1\\\vdots\\M_{n-2}\\M_{n-1}\end{matrix}\right]=\left[\begin{matrix}\frac{6}{h_1+h_n}(f[x_0,x_1]-f[x_{n-1},x_n])\\c_1\\\vdots\\c_{n-2}\\c_{n-1}\end{matrix}\right] ⎣⎢⎢⎢⎢⎡2μ1⋱λn−1λ02⋱μn−2λ1⋱2μn−1μ0λn−22⎦⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎡M0M1⋮Mn−2Mn−1⎦⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎡h1+hn6(f[x0,x1]−f[xn−1,xn])c1⋮cn−2cn−1⎦⎥⎥⎥⎥⎥⎤
求出 { M i } i = 0 n \{M_i\}^n_{i=0} {Mi}i=0n ,即得在 [ x i , x i + 1 ] [x_i,x_{i+1}] [xi,xi+1] 上的三次样条插值函数为:
S i ( x ) = M i ( x i + 1 − x ) 3 6 h i + 1 + M i + 1 ( x − x i ) 3 6 h i + 1 + ( y i − M i 6 h i + 1 2 ) x i + 1 − x h i + 1 + ( y i + 1 − M i + 1 6 h i + 1 2 ) x − x i h i + 1 S_i(x)=M_i\frac{(x_{i+1}-x)^3}{6h_{i+1}}+M_{i+1}\frac{(x-x_i)^3}{6h_{i+1}}\\+(y_i-\frac{M_i}{6}h_{i+1}^2)\frac{x_{i+1}-x}{h_{i+1}}+(y_{i+1}-\frac{M_{i+1}}{6}h_{i+1}^2)\frac{x-x_i}{h_{i+1}} Si(x)=Mi6hi+1(xi+1−x)3+Mi+16hi+1(x−xi)3+(yi−6Mihi+12)hi+1xi+1−x+(yi+1−6Mi+1hi+12)hi+1x−xi
定理3:满足3个边界条件其中一个的三次样条插值函数 S ( x ) S(x) S(x) 存在且唯一。
曲线拟合的最小二乘法
选取 φ ( x ) \varphi(x) φ(x),使偏差平方和最小:
∑ i = 1 m δ i 2 = ∑ i = 1 m [ φ ( x i ) − y i ] 2 = min \sum_{i=1}^m\delta_i^2=\sum_{i=1}^m[\varphi(x_i)-y_i]^2=\min i=1∑mδi2=i=1∑m[φ(xi)−yi]2=min
最小二乘解的求法
设 φ ( x ) = F ( a 0 , a 1 , ⋯ , a n , x ) \varphi(x)=F(a_0,a_1,\cdots,a_n,x) φ(x)=F(a0,a1,⋯,an,x),其中 n < m , a k ( k = 0 , 1 , ⋯ , n ) n<m,a_k(k=0,1,\cdots,n) n<m,ak(k=0,1,⋯,n) 是待定参数,记
S ( a 0 , a 1 , ⋯ , a n ) = ∑ i = 1 m [ F ( a 0 , a 1 , ⋯ , a n , x i ) − y i ] 2 S(a_0,a_1,\cdots,a_n)=\sum_{i=1}^m[F(a_0,a_1,\cdots,a_n,x_i)-y_i]^2 S(a0,a1,⋯,an)=i=1∑m[F(a0,a1,⋯,an,xi)−yi]2
根据最小二乘法原则,求 a 0 ∗ , ⋯ , a n ∗ a_0^*,\cdots,a_n^* a0∗,⋯,an∗,满足:
∂ S ∂ a k = 0 ( k = 0 , 1 , ⋯ , n ) \frac{\partial S}{\partial a_k}=0\ \ \ \ \ (k=0,1,\cdots,n) ∂ak∂S=0 (k=0,1,⋯,n)
由上式的解 a 0 ∗ , ⋯ , a n ∗ a_0^*,\cdots,a_n^* a0∗,⋯,an∗ 得到的:
φ ∗ ( x ) = F ( a 0 ∗ , a 1 ∗ , ⋯ , a n ∗ , x ) \varphi^*(x)=F(a_0^*,a_1^*,\cdots,a_n^*,x) φ∗(x)=F(a0∗,a1∗,⋯,an∗,x)
就为所求的最小二乘解。
线性最小二乘问题的求法
φ ( x ) = a 0 φ 0 ( x ) + a 1 φ 1 ( x ) + ⋯ + a n φ n ( x ) \varphi(x)=a_0\varphi_0(x)+a_1\varphi_1(x)+\cdots+a_n\varphi_n(x) φ(x)=a0φ0(x)+a1φ1(x)+⋯+anφn(x),此时:
S ( a 0 , a 1 , ⋯ , a n ) = ∑ i = 1 m [ ∑ k = 0 n a k φ k ( x i ) − y i ] 2 S(a_0,a_1,\cdots,a_n)=\sum_{i=1}^m[\sum_{k=0}^na_k\varphi_k(x_i)-y_i]^2 S(a0,a1,⋯,an)=i=1∑m[k=0∑nakφk(xi)−yi]2
由 ∂ S ∂ a k = 0 ( k = 0 , 1 , ⋯ , n ) \frac{\partial S}{\partial a_k}=0\ \ (k=0,1,\cdots,n) ∂ak∂S=0 (k=0,1,⋯,n),得
∑ i = 1 m φ k ( x i ) [ ∑ k = 0 n a k φ k ( x i ) − y i ] = 0 , k = 0 , 1 , ⋯ , n a 0 ∑ i = 1 m φ k ( x i ) φ 0 ( x i ) + ⋯ + a n ∑ i = 1 m φ k ( x i ) φ n ( x i ) = ∑ i = 1 m φ k ( x i ) y i \sum_{i=1}^m\varphi_k(x_i)[\sum_{k=0}^na_k\varphi_k(x_i)-y_i]=0,k=0,1,\cdots,n\\a_0\sum_{i=1}^m\varphi_k(x_i)\varphi_0(x_i)+\cdots+a_n\sum_{i=1}^m\varphi_k(x_i)\varphi_n(x_i)=\sum_{i=1}^m\varphi_k(x_i)y_i i=1∑mφk(xi)[k=0∑nakφk(xi)−yi]=0,k=0,1,⋯,na0i=1∑mφk(xi)φ0(xi)+⋯+ani=1∑mφk(xi)φn(xi)=i=1∑mφk(xi)yi
引入内积记号: ( h , g ) = ∑ i = 1 m h ( x i ) g ( x i ) (h,g)=\sum_{i=1}^mh(x_i)g(x_i) (h,g)=∑i=1mh(xi)g(xi),则上述方程组可以表示为
a 0 ( φ k , φ 0 ) + ⋯ + a n ( φ k , φ n ) = ( φ k , f ) , k = 0 , 1 , ⋯ , n [ ( φ 0 , φ 0 ) ( φ 0 , φ 1 ) ⋯ ( φ 0 , φ n ) ( φ 1 , φ 0 ) ( φ 1 , φ 1 ) ⋯ ( φ 1 , φ n ) ⋮ ⋮ ⋮ ( φ n , φ 0 ) ( φ n , φ 1 ) ⋯ ( φ n , φ n ) ] [ a 0 a 1 ⋮ a n ] = [ ( φ 0 , f ) ( φ 1 , f ) ⋮ ( φ n , f ) ] a_0(\varphi_k,\varphi_0)+\cdots+a_n(\varphi_k,\varphi_n)=(\varphi_k,f),k=0,1,\cdots,n\\ \left[\begin{matrix}(\varphi_0,\varphi_0)&(\varphi_0,\varphi_1)&\cdots&(\varphi_0,\varphi_n)\\(\varphi_1,\varphi_0)&(\varphi_1,\varphi_1)&\cdots&(\varphi_1,\varphi_n)\\\vdots&\vdots&&\vdots\\(\varphi_n,\varphi_0)&(\varphi_n,\varphi_1)&\cdots&(\varphi_n,\varphi_n)\end{matrix}\right] \left[\begin{matrix}a_0\\a_1\\\vdots\\a_n\end{matrix}\right]= \left[\begin{matrix}(\varphi_0,f)\\(\varphi_1,f)\\\vdots\\(\varphi_n,f)\end{matrix}\right] a0(φk,φ0)+⋯+an(φk,φn)=(φk,f),k=0,1,⋯,n⎣⎢⎢⎢⎡(φ0,φ0)(φ1,φ0)⋮(φn,φ0)(φ0,φ1)(φ1,φ1)⋮(φn,φ1)⋯⋯⋯(φ0,φn)(φ1,φn)⋮(φn,φn)⎦⎥⎥⎥⎤⎣⎢⎢⎢⎡a0a1⋮an⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡(φ0,f)(φ1,f)⋮(φn,f)⎦⎥⎥⎥⎤
解上述方程组即得到相应的最小二乘解: φ ∗ ( x ) = a 0 ∗ φ 0 ( x ) + a 1 ∗ φ 1 ( x ) + ⋯ + a n ∗ φ n ( x ) \varphi^*(x)=a_0^*\varphi_0(x)+a_1^*\varphi_1(x)+\cdots+a_n^*\varphi_n(x) φ∗(x)=a0∗φ0(x)+a1∗φ1(x)+⋯+an∗φn(x)
多项式拟合最小二乘法
取 φ 0 ( x ) = 1 , φ 1 ( x ) = x , ⋯ , φ n ( x ) = x n \varphi_0(x)=1,\varphi_1(x)=x,\cdots,\varphi_n(x)=x^n φ0(x)=1,φ1(x)=x,⋯,φn(x)=xn,则可得
( φ j , φ k ) = ∑ i = 1 m x i j x i k = ∑ i = 1 m x i j + k , j , k = 0 , 1 , ⋯ , n ( φ i , f ) = ∑ i = 1 m x i j y i , k = 0 , 1 , ⋯ , n (\varphi_j,\varphi_k)=\sum_{i=1}^mx_i^jx_i^k=\sum_{i=1}^mx_i^{j+k},j,k=0,1,\cdots,n\\(\varphi_i,f)=\sum_{i=1}^mx_i^jy_i,k=0,1,\cdots,n (φj,φk)=i=1∑mxijxik=i=1∑mxij+k,j,k=0,1,⋯,n(φi,f)=i=1∑mxijyi,k=0,1,⋯,n
方程组为:
[ m ∑ i = 1 m x i ⋯ ∑ i = 1 m x i n ∑ i = 1 m x i ∑ i = 1 m x i 2 ⋯ ∑ i = 1 m x i n + 1 ⋮ ⋮ ⋮ ∑ i = 1 m x i n ∑ i = 1 m x i n + 1 ⋯ ∑ i = 1 m x i 2 n ] [ a 0 a 1 ⋮ a n ] = [ ∑ i = 1 m y i ∑ i = 1 m x i y i ⋮ ∑ i = 1 m x i n y i ] \left[\begin{matrix}m&\sum_{i=1}^mx_i&\cdots&\sum_{i=1}^mx_i^n\\\sum_{i=1}^mx_i&\sum_{i=1}^mx_i^2&\cdots&\sum_{i=1}^mx_i^{n+1}\\\vdots&\vdots&&\vdots\\\sum_{i=1}^mx_i^n&\sum_{i=1}^mx_i^{n+1}&\cdots&\sum_{i=1}^mx_i^{2n}\end{matrix}\right]\left[\begin{matrix}a_0\\a_1\\\vdots\\a_n\end{matrix}\right]=\left[\begin{matrix}\sum_{i=1}^my_i\\\sum_{i=1}^mx_iy_i\\\vdots\\\sum_{i=1}^mx_i^ny_i\end{matrix}\right] ⎣⎢⎢⎢⎡m∑i=1mxi⋮∑i=1mxin∑i=1mxi∑i=1mxi2⋮∑i=1mxin+1⋯⋯⋯∑i=1mxin∑i=1mxin+1⋮∑i=1mxi2n⎦⎥⎥⎥⎤⎣⎢⎢⎢⎡a0a1⋮an⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡∑i=1myi∑i=1mxiyi⋮∑i=1mxinyi⎦⎥⎥⎥⎤
求最小二乘法解的步骤:
- 根据数据 ( x i , y i ) ( i = 1 , 2 , ⋯ , m ) (x_i,y_i)(i=1,2,\cdots,m) (xi,yi)(i=1,2,⋯,m),确定函数空间 Φ \Phi Φ 和基函数 φ 0 ( x ) , φ 1 ( x ) , ⋯ , φ n ( x ) \varphi_0(x),\varphi_1(x),\cdots,\varphi_n(x) φ0(x),φ1(x),⋯,φn(x);
- 根据 φ ( x ) \varphi(x) φ(x) 的特点,建立 a k ( k = 0 , 1 , ⋯ , n ) a_k(k=0,1,\cdots,n) ak(k=0,1,⋯,n) 的法方程组;
- 通过解法方程组求取最小二乘解 φ ∗ ( x ) \varphi^*(x) φ∗(x) 对应的参数 a k ∗ ( k = 0 , 1 , ⋯ , n ) a_k^*(k=0,1,\cdots,n) ak∗(k=0,1,⋯,n)。
思考题:用最小二乘原理,求超定线性方程组: { 2 x + 4 y = 11 3 x − 5 y = 3 x + 2 y = 6 2 x + y = 7 \begin{cases}2x+4y=11\\3x-5y=3\\x+2y=6\\2x+y=7\end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧2x+4y=113x−5y=3x+2y=62x+y=7,并给出均方误差。
解: { δ 1 = 2 x + 4 y − 11 δ 2 = 3 x − 5 y − 3 δ 3 = x + 2 y − 6 δ 4 = 2 x + y − 7 , S ( x , y ) = ∑ i = 1 4 δ i 2 → min \begin{cases}\delta_1=2x+4y-11\\\delta_2=3x-5y-3\\\delta_3=x+2y-6\\\delta_4=2x+y-7\end{cases},S(x,y)=\sum_{i=1}^4\delta_i^2\rightarrow\min ⎩⎪⎪⎪⎨⎪⎪⎪⎧δ1=2x+4y−11δ2=3x−5y−3δ3=x+2y−6δ4=2x+y−7,S(x,y)=∑i=14δi2→min
加权技巧的应用
对给定实验数据 ( x i , y i ) ( i = 1 , 2 , ⋯ , m ) (x_i,y_i)(i=1,2,\cdots,m) (xi,yi)(i=1,2,⋯,m),寻求一个函数: φ ∗ ( x ) = a 0 ∗ φ 0 ( x ) + a 1 ∗ φ 1 ( x ) + ⋯ + a n ∗ φ n ( x ) \varphi^*(x)=a_0^*\varphi_0(x)+a_1^*\varphi_1(x)+\cdots+a_n^*\varphi_n(x) φ∗(x)=a0∗φ0(x)+a1∗φ1(x)+⋯+an∗φn(x),使:
∑ i = 1 m W i [ φ ∗ ( x i ) − y i ] 2 = min φ ( x ) ∈ Φ ∑ i = 1 m W i [ φ ( x i ) − y i ] 2 \sum_{i=1}^mW_i[\varphi^*(x_i)-y_i]^2=\min_{\varphi(x)\in\Phi}\sum_{i=1}^mW_i[\varphi(x_i)-y_i]^2 i=1∑mWi[φ∗(xi)−yi]2=φ(x)∈Φmini=1∑mWi[φ(xi)−yi]2
其中, φ ( x ) = a 0 φ 0 ( x ) + a 1 φ 1 ( x ) + ⋯ + a n φ n ( x ) \varphi(x)=a_0\varphi_0(x)+a_1\varphi_1(x)+\cdots+a_n\varphi_n(x) φ(x)=a0φ0(x)+a1φ1(x)+⋯+anφn(x), W i W_i Wi 是一列正数,称为权,它的大小反映了数据 ( x i , y i ) (x_i,y_i) (xi,yi) 地位的强弱。
可归结为求多元函数
S ( a 0 , a 1 , ⋯ , a n ) = ∑ i = 1 m W i [ ∑ k = 0 n a k φ k ( x i ) − y i ] 2 S(a_0,a_1,\cdots,a_n)=\sum_{i=1}^mW_i[\sum_{k=0}^na_k\varphi_k(x_i)-y_i]^2 S(a0,a1,⋯,an)=i=1∑mWi[k=0∑nakφk(xi)−yi]2
的极小点 ( a 0 ∗ , a 1 ∗ , ⋯ , a n ∗ ) (a_0^*,a_1^*,\cdots,a_n^*) (a0∗,a1∗,⋯,an∗)
特例:取 φ 0 ( x ) = 1 , φ 1 ( x ) = x , ⋯ , φ n ( x ) = x n \varphi_0(x)=1,\varphi_1(x)=x,\cdots,\varphi_n(x)=x^n φ0(x)=1,φ1(x)=x,⋯,φn(x)=xn,则可得法方程组
[ ∑ i = 1 m W i ∑ i = 1 m W i x i ⋯ ∑ i = 1 m W i x i n ∑ i = 1 m W i x i ∑ i = 1 m W i x i 2 ⋯ ∑ i = 1 m W i x i n + 1 ⋮ ⋮ ⋮ ∑ i = 1 m W i x i n ∑ i = 1 m W i x i n + 1 ⋯ ∑ i = 1 m W i x i 2 n ] [ a 0 a 1 ⋮ a n ] = [ ∑ i = 1 m W i y i ∑ i = 1 m W i x i y i ⋮ ∑ i = 1 m W i x i n y i ] \left[\begin{matrix}\sum_{i=1}^mW_i&\sum_{i=1}^mW_ix_i&\cdots&\sum_{i=1}^mW_ix_i^n\\\sum_{i=1}^mW_ix_i&\sum_{i=1}^mW_ix_i^2&\cdots&\sum_{i=1}^mW_ix_i^{n+1}\\\vdots&\vdots&&\vdots\\\sum_{i=1}^mW_ix_i^n&\sum_{i=1}^mW_ix_i^{n+1}&\cdots&\sum_{i=1}^mW_ix_i^{2n}\end{matrix}\right]\left[\begin{matrix}a_0\\a_1\\\vdots\\a_n\end{matrix}\right]=\left[\begin{matrix}\sum_{i=1}^mW_iy_i\\\sum_{i=1}^mW_ix_iy_i\\\vdots\\\sum_{i=1}^mW_ix_i^ny_i\end{matrix}\right] ⎣⎢⎢⎢⎡∑i=1mWi∑i=1mWixi⋮∑i=1mWixin∑i=1mWixi∑i=1mWixi2⋮∑i=1mWixin+1⋯⋯⋯∑i=1mWixin∑i=1mWixin+1⋮∑i=1mWixi2n⎦⎥⎥⎥⎤⎣⎢⎢⎢⎡a0a1⋮an⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡∑i=1mWiyi∑i=1mWixiyi⋮∑i=1mWixinyi⎦⎥⎥⎥⎤
计算方法(四):插值与拟合相关推荐
- matlab中a2=poly(p2),插值与拟合matlab实现
插值与拟合的Matlab实现 王正盛编写 在科技工程中,除了要进行一定的理论分析外,通过实验.观测数据,做分析.处理也是必不可少的一种途径.由于实验测定实际系统的数据具有一定的代表性,因此在处理时必须 ...
- 数学建模-预测模型总结(适用范围、优缺点)【灰色预测模型、插值与拟合、时间序列预测法、马尔科夫预测、差分方程、微分方程模型、神经元网络】
基于数学建模的预测方法种类繁多,从经典的单耗法.弹性系数法.统计分析法,到目前的灰色预测法.当在使用相应的预测方法建立预测模型时,我们需要知道主要的一些预测方法的研究特点,优缺点和适用范围.下面就当下 ...
- matlab插值与拟合例题_MATLAB中数据插值和数据拟合的用法
一.数据插值: 插值是在一组已知数据点的范围内添加新数据点的技术.可以使用插值来填充缺失的数据.对现有数据进行平滑处理以及进行预测等.MATLAB 中的插值技术可分为适用于网格上的数据点和散点数据点. ...
- Matlab的插值与拟合
文章目录 前言 在命令行窗口中完成插值与拟合 一.插值与拟合 二.使用步骤 1.插值 2.拟合 前言 在命令行窗口中完成插值与拟合 一.插值与拟合 插值:在离散数据的基础上补插连续函数,使得这条连续曲 ...
- 插值、拟合、线性和非线性的区别
插值.拟合.线性和非线性的区别 从一组实验数据Qi(x,y)怎样得到他们的所代表的函数(曲线)f(x)呢?拟合(fitting)就是做这个工作的.当然"插值"也可以做些粗燥的未知值 ...
- 数学建模——插值与拟合
文章目录 一.插值和拟合 1.什么是插值与拟合? 2.常用一维插值方法 (1)分段线性插值 (2)样条插值 3.常用二维插值方法 (1)插值节点为网格数据 (2)插值节点为非网格数据 4.拟合 二.插 ...
- matlab slice 斜切,MATLAB插值与拟合
密件宁静会猎哪吒腔肠发棵安曼前襟.小鲸起航击乐不疑故交浦项.城镇棵儿流驶四砂恩宠穆木,流脓广柑乖顺赤松漂漂!陋劣世俗募捐世医旋木率直北寺南白.补花女将栖身悖谬顺水观花女婴唱盘!度曲忻政型领卖乖便饭. ...
- java的拟合与插值库,插值和拟合区别
插值和拟合都是函数逼近或者数值逼近的重要组成部分.他们的共同点都是通过已知一些离散点集M上的约束,求取一个定义在连续集合S(M包含于S)的未知连续函数,从而达到获取整体规律目的,即通过"窥几 ...
- 【机器学习入门到精通系列】插值与拟合
文章目录 1 插值! 2 一维插值 拉格朗日插值法 分段线性插值法 例题 3 二维插值 网络结点插值法 例题 散乱数据插值 4 拟合! 5 区别与联系 1 插值! 在离散数据的基础上补插连续函数,使得 ...
最新文章
- AutoML大提速,谷歌开源自动化寻找最优ML模型新平台
- ubuntu 查看内存和cpu使用情况
- sdut 2107 DFS
- 源代码管理的新15条建议
- Java 集合系列17之 TreeSet详细介绍(源码解析)和使用示例
- mysql中ak替换键_数据库:唯一性约束_alternate key(替换键) mySQL Oracle 数据库 ak 唯一性约束...
- xxd命令转换二进制十六进制文件
- 【AMAD】django-activity-stream
- 将小写金额转换成大写金额[存储过程版]
- CentOS7-Python系列】之一【python-devel教训】
- python可以做什么工作-Python可以做什么工作?Python有哪些方向?
- java 悬浮提示框_弹出提示框的方式——java
- 拓端tecdat|Python多项式Logistic逻辑回归进行多类别分类和交叉验证准确度箱线图可视化
- android手机 无电池开机画面,还有这种操作,这款手机无电池也能开机
- 东芝机械手tspc安装_日本东芝工四轴机械手THL800
- C语言—递归函数有5个人围坐在一起,问第5个人多大年纪,他说比第4个人大2岁;问第4个人,他说比第3个人大2岁;问第3个人,他说比第2个人大2岁;问第2个人,他说比第1个人大2岁。第1个人说自己10岁
- Python中字符串的一些操作
- 拼音魔法 使用switch case简化复杂的if else
- java后台生成含有echarts图表的报告并发送邮件
- JS制作蔡徐坤打篮球小游戏(鸡你太美?)
热门文章
- python 去掉双引号_你要偷偷的学Python,然后惊呆所有人(第一天) - python阿喵
- 微信公众平台消息接口开发(11)地理位置查询 当地天气及附近商家
- echarts的多个y轴
- java之将两个数组中的“姓”和“名”随机拼接,让其生成新的名字
- 蓝桥杯等差数列,双阶乘
- 源码学习 - 【FreeRTOS】PRIVILEGED_FUNCTION 含义理解
- PostgreSQL谓词之EXISTS
- [分享]老歌150首
- 欧洲斯托克 50 指数
- 注塑机的锁模力怎么定?