函数逼近与数据拟合
多项式插值
拉格朗日插值
插值公式
已知(y=f(x))的函数表为
(x) | (x_0) | (x_1) | … | (x_n) |
---|---|---|---|---|
(f(x)) | (f(x_0)) | (f(x_1)) | … | (f(x_n)) |
寻找(n)次多项式(L_n(x))使满足插值条件:(f(x_i)=L_n(x_i)(i=0,...,n))
(l_k(x))是设计出来的形式,满足条件。[1]
引入记号:
则:
插值误差 / 插值余项表达式
在非节点处有误差,记为(R_n(x)),则(R_n(x)=f(x)-L_n(x))。
其中(f^{(n+1)})表示(n+1)阶导数。
由于(xi)在(a,b)内的具体位置通常不能确切给出,求(M_{n+1}=max_{a<x<b}|f^{(n+1)}(x)|),得到误差的边界
可知,误差和节点(x_0...x_n)有关,为使误差小,应使(|omega_{n+1}(x)|)尽可能小,即插值基点尽可能靠近(x)。
公式记忆
线性插值
抛物线插值
牛顿插值
基于拉格朗日插值的改进,拉氏插值在更新节点数量时,每次都要重新计算L,设计一种方法避免重复计算。
差商
称(frac{f(x_j)-f(x_i)}{x_j-x_i})为函数(f(x))关于节点(x_i,x_j)的一阶差商,记为:
称两个一阶差商(f[x_i,x_j])和(f[x_j,x_k])之间的差商为二阶差商,即:
(k)阶差商:
基本性质:
-
(k)阶差商可表示为函数值的线性组合。
[f[x_0,x_1,...,x_k]=sum_{i=0}^nfrac{f(x_i)}{omega^{prime}_{k+1}(x_i)} ] -
差商具有对称性,在(f[x_0,x_1,...,x_k])中任意改变节点次序,值不变。
[f[x_0,x_1,x_2]=frac{f[x_1,x_2]-f[x_0,x_1]}{x_2-x_0}=frac{f[x_0,x_2]-f[x_0,x_1]}{x_2-x_1} ] -
(n)次多项式(f(x))的(k)阶差商(f[x,x_0,...,x_{k-1}]),当(kle n)是(n-k)次多项式,当(k>n)时其值恒等于0。
-
(f[x,x_0,...,x_{k}]=frac{f^{(k)}(xi)}{k!}),其中(xi)介于(x_0,...,x_k)的最大值和最小值之间。
节点相重时的差商,有:
Newton插值多项式
用差商来构造:
则(f(x)=N_n(x)+ ilde{R}_n(x))。
Newton插值多项式有递推关系式:
公式记忆
差商表
(x_i) | (f(x_i)) | 一阶差商 | 二阶差商 | 三阶差商 | 四阶差商 |
---|---|---|---|---|---|
(x_0) | (f(x_0)) | ||||
(x_1) | (f(x_1)) | (f[x_0,x_1]=frac{f(x_1)-f(x_0)}{x_1-x_0}) | |||
(x_2) | (f(x_2)) | (f[x_1,x_2]) | (f[x_0,x_1,x_2]=frac{f[x_1,x_2]-f[x_0,x_1]}{x_2-x_0}) | ||
(x_3) | (f(x_3)) | (f[x_2,x_3]) | (f[x_1,x_2,x_3]) | (f[x_0,x_1,x_2,x_3]=frac{f[x_1,x_2,x_3]-f[x_0,x_1,x_2]}{x_3-x_0}) | |
(x_4) | (f(x_4)) | (f[x_3,x_4]) | (f[x_2,x_3,x_4]) | (f[x_1,x_2,x_3,x_4]) | (f[x_0,x_1,x_2,x_3,x_4]) |
* 等距节点插值
差分
等距节点:(x_i=x_0+ih i = 0,1,...,n),其中 (h) 称为步长。称等距节点对应的函数值之差为差分。(f_{k+1}-f_k) 为 (f(x)) 在 (x_k) 处步长为 (h) 的一阶向前差分,简称一阶差分:
(f(x)) 在 (x_k) 处步长为 (h) 的二阶向前差分:
(f(x)) 在 (x_k) 处步长为 (h) 的 (m) 阶向前差分:
差分和差商之间的关系:
将牛顿插值公式中各阶差商分别用相应的差分代替,得到等距节点的插值公式。
牛顿前插公式
已知节点 (x_i = x_0+ih i = 0,1,...,n),要用 (m+1) 个函数值信息计算靠近 (x_0) 附近点的函数近似值,则:
其中 (t) 表示 (x=x_0+th 0 le t le m),从 (x) 到 (x_0) 的步数。
牛顿后插公式
用 (m+1) 个函数值信息计算靠近 (x_n) 附近点的函数近似值,则:
公式记忆
一般当(x)靠近(x_0)时用前插,靠近(x_n)时用后插。如果对相同节点进行插值,前插公式和后插公式只有形式上的区别,实际是一个多项式,即:
常用公式:
三次前插
二次后插
PS: 差分值从差分表中直接读取
差分表
(x_i) | (f_i) | (Delta f_i) | (Delta^2 f_i) | (Delta^3 f_i) | … | (Delta^n f_i) |
---|---|---|---|---|---|---|
(x_0) | (f_0) | |||||
(Delta f_0) | ||||||
(x_1) | (f_1) | (Delta^2 f_0) | ||||
(Delta f_1) | (Delta^3 f_0) | |||||
(x_2) | (f_2) | (Delta^2 f_1) | … | … | (Delta^n f_0) | |
(Delta f_2) | … | (Delta^3 f_{n-3}) | ||||
(x_3) | (f_3) | … | (Delta^2 f_{n-2}) | |||
… | (Delta f_{n-1}) | |||||
(x_n) | (f_n) |
规律:前插就是上到下一条线的系数,后插就是下到上的一条线。n次插值用到n个系数。
埃尔米特插值
多项式插值在次数较高时,会产生Runge现象,解决方法是加入导数约束、分段插值。
埃尔米特插值不仅要求节点处函数值相等,还要求导数值相等。
设已知 (y=f(x)) 的函数及导数表为:
(x_i) | (x_0) | (x_1) | … | (x_n) |
---|---|---|---|---|
(f(x_i)) | (f(x_0)) | (f(x_1)) | … | (f(x_n)) |
(f^{prime}(x_i)) | (f^{prime}(x_0)) | (f^{prime}(x_1)) | … | (f^{prime}(x_n)) |
寻求 (2n+1) 次多项式 (H_{2n+1}(x)) 满足:
埃尔米特插值多项式
构造插值基函数 (h_i(x),ar{h}_i(x)) 使得 (H_{2n+1}(x)=sum_{i=0}^nh_i(x)f(x_i)+sum_{i=0}^n ar{h}_i(x)f^{prime}(x_i)) 。
注意埃尔米特插值和拉格朗日插值的相同点
根据公式(2),有:
构造埃尔米特插值基函数:
对 (l_i(x)) 两端取对数求导后,可以得到 (l^{prime}_i(x))。
所以,埃尔米特插值多项式为:
注意:余项(R=f_{原}-f_{插}),给定了函数的导数,要注意0,要结合函数值,注意余项平方。
最小二乘拟合
最小二乘问题
由实验采集到大量观测数据:
(x_i) | (x_1) | (x_2) | (x_3) | … | (x_N)(N很大) |
---|---|---|---|---|---|
(y_i) | (y_1) | (y_2) | (y_3) | … | (y_N) |
已知基函数 (phi_0(x),phi_1(x),...,phi_n(x)(n ll N ))(需线性无关),寻找 (p_n(x)=sum_{k=0}^n a_k phi_k(x)) ,使得误差函数 (Phi(a_0,a_1,...,a_n)=sum_{k=0}^N omega_k(f(x_k)-p_n(x_k))^2) 达到最小,其中 (omega_k) 是权系数,称 (p_n(x)) 为拟合函数。[2]
记(delta_i=f(x_i)-p_n(x_i)(i=1,...,N)) ,则称(delta_i)为(x_i)处的偏差或残差。将基函数取为幂函数,即(phi_k(x)=x^k,k=0,1,...,n),考虑误差函数:
称多元极值问题
为最小二乘问题,其解对应的
为数据 ((x_i,f(x_i)),i=0,...,N) 的 (n) 次最小二乘拟合多项式。
解(42)式应满足方程组 (frac{partial Phi}{partial a_j}=0),即
此 (n+1) 阶线性方程组称为正规方程组(或法方程组)。
记公式
如果是 (y=a+bx),对应 (j=0,1),则 (a,b) 应满足的正规方程组为:
如果是 (y=a+bx^2),对应 (j=0,2),则 (a,b) 应满足的正规方程组为:
如果经验公式是幂函数形式,就先取对数变成加和形式。