Loading [MathJax]/jax/output/HTML-CSS/jax.js

多项式插值定理

🔎 [16:46]

定理:若xi两两不同,则对任意给定的yi,存在唯一的次数至多是n次的多项式pn,使得pn(x)=yi,i=0,,xn

✅ 唯一的多项式p的意思是唯一的一组系数a0,,an

证明:在幂基(1,x,,xn)下待定多项式p的形式为:
p(x)=a0+a1x+a2x2++anxn
定理不限于幂基,下面证时过程只是以幂基为例
由插值条件p(xi)=yi,i=0,,n得到如下方程组:

👆 如果基函数选取不一样,方程组的系数矩阵不同

系数矩阵为Vandermonde矩阵,其行列式非零,因此方程组有唯一解。

✅ 如果不使用幂基而是别的基函数,也能得到上述方程组并解出唯一解,只是矩阵的内容不同。
要求解的系数是a1,a2,,an,此处系数a是未知数,而不是通常理解的x, x 代表输入,因此是已知量。

技巧1:构造插值问题的通用解

🔎 [17:44] ✅ 上一页方法中的问题:每次x或y变化都要构造一个公式来解。本页的目的是,只变y而x不变时不需要构造矩阵和解方程。

给定 n+1个点 {(x0,y0),,(xn,yn)}, 寻找一组次数为n的多项式基函数li使得

li(xj)={1, if i=j0, if ij

那么,插值问题的解为:
P(x)=y0l0(x)+y1l1(x)++ynln(x)=ni=0yili(x)

✅ 这样做的好处是,即使y变化,也不用重新解方程组。li(x)可以通过上述方程组提前解出来,以y为系数对li(x)做线性组合,就可以得到P(x)
多项式li(x)被称为拉格朗日多项式,即拉格朗日插值问题的通用解。
该方法称为拉格朗日插值。
给定n+1个点,通过上面的方法解方程组,可以解出li(x)系数,从而得到拟合函数。
n+1 个点有任何一点改变,都要重新"构造方程组→解系数→得拟合函数"。
该技巧对以上过程做简化。在 n+1 个定点的x不变而只有y的变­化的情况下,无须解方程而快速得到拟合函数。
具体步骤为:
2.先求拟合函数 li(x). 用上一页的方法。
构造用于拟合li(x)的数据点。其中xi为原给定的n+1个时,xi,yi为公式(1)中的li(xj),这样给每个li(x)构造了n+1个用于拟合点。例如:
n+1个点{(x0,1),(x1,0),(xn,0)}导拟合函数l0(x)
这样就得到了n+1个函数li(x)
在拟合li(x)的过程中只用到了原给定数据点的x而没有用 y。因此,只要x不变,li(x)函数就一直适用。
要拟合的函数P(x)就成了li(x)的线性组合,yi是系数。

💡 我的思考
根据 Aa=y 解出a,得到拟合函数f(x)=A(x)a
现在,先算出 Aa=E,Ey=yAay=Aa.
因此得到拟合函数f(x)=A(x)a=A(x)ay.
结论:把计算的过程或目标分解,分析每一部分计算的依赖项。根据依赖项决定是否能提前算好。

怎么计算多项式li(x)?

n阶多项式,且有以下n个根

x0,x1,x2,,xi1,xi+1,,xn

故可表示为

li(x)=Ci(xx0)(xx1)(xxi1)(xxi+1)(xxn)=Ciji(xxj)

li(xi)=1可得
1=ciji(xixj)ci=1ji(xixj)

最终多项式基函数为
li(x)=ji(xxj)ji(xixj)

多项式li(x)被称为拉格朗日多项式

技巧2:更方便的求解表达

Newton插值:具有相同“导数”(差商)的多项式构造(n阶Taylor展开)

定义:
一阶差商:

f[x0,x1]=f(x1)f(x0)x1x0

k阶差商:

设{x0,x1,,xk}互不相同,f(x)关于{x0,x1,,xk}的k阶差商为:

f[x0,x1,,xk]=f[x1,,xk]f[x0,x1,,xk1]xkx0

所以Newton插值多项式表示为: Nn(x)=f(x0)+f[x0,x1](xx0)++f[x0,x1,,xn](xx0)(xxn1)

🔎 [19:23]
❓ 这里也没听懂?意思是预算出的有阶的差商?

多项式插值存在的问题

系统矩阵稠密

例如Vandermonde矩阵,处处非零元素

✅ 稀疏矩阵的优势:有好的迭代方法,计算很快.
eigen库:非常有名的数学库

病态问题

依赖于基函数选取,矩阵可能病态,导致难于求解(求逆)

病态矩阵示例

考虑二元方程组,解为(1,1)
x1+0.5x2=1.5

0.667x1+0.333x2=1

对第二个方程右边项扰动0.001,解为 (0,3) x1+0.5x2=1.5

0.667x1+0.333x2=0.999

对矩阵系数进行扰动,解为(2,-1)
x1+0.5x2=1.5

0.667x1+0.334x2=1

✅ 对系数矩阵或y向量做微小的扰动,其解的变化会非常大。

输入数据的细微变化导致输出(解)的剧烈变化

将线性方程看成直线(超平面),当系统病态时,直线变为近似平行,求解(即直线求交)变得困难、不精确

矩阵条件数

κ2(A)=maxx0|Ax||x|minx0|Ax||x|

矩阵条件数等于矩阵最大特征值和最小特征值之间比例,条件数大意味着基元之间有太多相关性,造成不稳定。

范德蒙矩阵的条件数

多项式插值问题是病态的,因为对于等距分布的数据点xi,范德蒙矩阵的条件数随着数据点数n呈指数级增长(多项式的最高次数为n1

✅ 多项式插值如果使用了高阶的基函数,就容易出现病态问题

因为幂(单项式)函数基的特点是,幂函数之间差别随着次数增加而减小,不同幂函数之间唯一差别为增长速度(xixi1增长快)

🔎 [26:31]
✅ 幂函数基,高阶后函数变化非常快,那么结果就会被幂底严重挠动

解决方法

好的基函数一般需要系数交替,且互相抵消问题,例如:

基之间互相抵消,函数就不会一直增长。
[?] 秦九韶算法

可使用正交多项式基。可通过Gram‐Schmidt正交化获得正交多项式基。

振荡(Runge)现象

结论

多项式插值存在以下问题:

  • 多项式插值不稳定,控制点的微小变化可导致完全不同的结果
  • 振荡(Runge)现象,多项式随着插值点数(可以是细微)增加而摆动

因此需要更好的基函数来做插值,例如Bernstein基函数、分片多项式


本文出自CaterpillarStudyGroup,转载请注明出处。 https://caterpillarstudygroup.github.io/GAMES102_mdbook/