在平面坐标上,n+1个横坐标轴互异的点确定唯一的至多n次多项式。
Weierstrass 逼近定理:[a,b]上的连续函数都能被多项式一致逼近。
对于一个函数f(x),选取n个点,用这n个点确定的唯一的n−1次多项式近似f(x)
拟合的过程实际就是逐渐取点的过程,拟合程度不好,就逐渐取多一点
取点的方式有讲究:
取等距结点(Equispace)时,就很容易出现龙格现象。
切比雪夫分点(Chebyshev)是很好的选择。
***龙格现象:***多项式拟合中,拟合点所在的区间内拟合还可以,但出了这个区间,拟合函数就十分发散
对于一组点{(x0,y0),⋯,(xn,yn)},确定一个n次多项式Pn(x)=a0+a1x+⋯+anxn,带入点集,得到矩阵表示,即范德蒙矩阵 Vandermonde matrix:(中间部分)
y0y1⋮yn=11⋮1x0x1⋮xnx02x12⋮xn2⋯⋯⋱⋯x0nx1n⋮xnna0a1⋮an
Pn(x)=[x0,x1,⋯,xn][a0,a1,⋯,an]T
带入点集,用矩阵除法即可得到系数矩阵[a0,a1,⋯,an]T,但精度低。
拉格朗日插值把多项式转换为n+1组拉格朗日基函数的和,即
Pn(x)=i=0∑nyi∗li(x)
其中li(x)是对第i个点(xi,yi)构造的拉格朗日基函数(也是n次多项式),有x∈{x0,⋯,xn},
li(x)={1, 0, x=xix=xi⇒i=0∑nli(x)={1, UNKOWNx∈{x0,⋯,xn}x∈/{x0,⋯,xn}
问题简化为确定li(x),有:
li(x)=cij=0,j=i∏n(x−xj)li(xi)=1⇒ci=j=0,j=i∏n(xi−xj)1∴li(x)=j=0,j=i∏n(xi−xj)j=0,j=i∏n(x−xj)=j=0,j=i∏nxi−xjx−xj⇒Pn(x)=i=0∑nyij=0,j=i∏nxi−xjx−xj
对于拉格朗日插值函数Pn(x),有:
- 对点集外的点,每次计算插值需要O(n2)次加法和乘法
- 加入新点时,需要重新构造插值函数
- 多是理论意义,效率低,抛砖引玉的老祖宗
优化拉格朗日插值:
l(x)=j=0∏n(x−xj)ωi=j=0,j=i∏n(xi−xj)1⇒ li(x)=ωi⋅x−xil(x)⇒ Pn(x)=i=0∑nyi∗li(x)=l(x)i=0∑nx−xiωiyi
插值函数除以拉格朗日基函数的和,仍会经过点集,以此作对插值函数作优化,得到质心公式:
Pn(x)=i=0∑nli(x)l(x)i=0∑nx−xiωiyi=i=0∑nωi⋅x−xil(x)l(x)i=0∑nx−xiωiyi=i=0∑nx−xiωii=0∑nx−xiωiyi
对于一个点集,对应的各点权重集{ω0,ω1,⋯,ωn}是唯一的,只需要计算一次。质心公式插值:
- 对点集外的点,每次计算插值需要O(n)次加法
- 加入新点时,计算量都显著减少
- 对于分式中无定义的点,取极限或补充定义可以解决
- 拟合结果相对更稳定
原函数f(x),拟合函数Pn(x),误差为f(x)−Pn(x)=(n+1)!f(n+1)(ξ)l(x)。