版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kevin_zhao_zl/article/details/90544577
整理一下数值分析的笔记~
目录:
1. 误差
2. 多项式插值与样条插值(THIS)
3. 函数逼近
4. 数值积分与数值微分
5. 线性方程组的直接解法
6. 线性方程组的迭代解法
7. 非线性方程求根
8. 特征值和特征向量的计算
9. 常微分方程初值问题的数值解
1. 分段低次插值
1.1 高次插值的龙格现象
龙格现象就是插值多项式不收敛现象,节点(插值多项式的次数)增加不会带来精度的改善,甚至可能增加误差。
1.2 分段低次插值
插值时先把整个区间分成若干个小区间,每个区间上作低次插值,拼一个分段函数作插值函数。优点诸多但是缺点时节点处导数值不连续,这就产生了样条插值。
2. 三次样条插值
2.1 样条曲线的特点
-
点点通过
→ 插值
-
光顺
-
计算简单
-
(对于低阶样条)保凸
2.2 三次样条
定义:设
a=x0<x1<...<xn=b,函数
S(x)∈C2[a,b],且在每个
[xi,xi+1]上为三次多项式,同时满足
S(xi)=f(xi),(i=0,1,...,n),则称f为三次样条插值函数。
{三次样条与分段Hermite插值的根本区别在于其自身光滑除了端点外不需要知道f的导数值}
若S为f的三次样条插值函数:
S(x)=⎩⎪⎪⎪⎨⎪⎪⎪⎧S1(x),S2(x),...Sn(x),x∈[x0,x1]x∈[x1,x2]x∈[xn−1,xn]
则
Si(x)=ai0+ai1x+ai2x2+ai3x3,i=1,2,...,n,也就是共有4n个待定系数,而已知条件只有4n-2个,即:
i=0,1,2,...,n时,S(xi)=f(xi)i=1,2,...,n−1时,S(xi−)=S(xi+),S′(xi−)=S′(xi+),S′′(xi−)=S′′(xi+)
还需要两个才能确定最终的系数,通常是在区间端点a,b上各加一个条件即边界条件,由实际问题给出,常用的有三种类型:
-
给定两端点f(x)的一阶导数值
S′(x0)=f′(x0),S′(xn)=f′(xn)
-
给定两端点f(x)的二阶导数值
S′′(x0)=f′′(x0),S′′(xn)=f′′(xn)
-
f具有周期性,即:
S(x0+)=S(xn−),S′(x0+)=S′(xn−),S′′(x0+)=S′′(xn−)
但是通过4n个方程得到4n个待定参数也只是理论上可行,实际计算量太大,由此提出两种简单的构造方法:
2.3 三转角法(从样条函数的一阶导数出发)
假定
S′(xj)=mj(j=0,...,n),根据分段三次埃尔米特插值多项式:
S(x)=j=0∑n[fjαj(x)+mjβj(x)],其中αj(x)和βj(x)为三次埃尔米塔插值基函数
由插值条件,连续性条件和边界条件可得关于
mj的三对角方程组,求出
mj,得到三次样条插值函数。
2.4 三弯矩法(从样条函数的二阶导数出发)
S在
[xi−1,xi]上为三次多项式,所以其二阶导数必为一次式。
设S(x)在节点
xi处的二阶导数为:
S′′(xi)=Mi(i=0,1,...,n),则
s′′(x)在此小区间上是x的线性函数,且因为
S′′(xi−1)=Mi−1,S′′(xi)=Mi,用线性插值可得:
Si′′(x)=Mi−1xi−1−xix−xi+Mixi−xi−1x−xi−1,x∈[xi−1,xi]记hi=xi−xi−1,有S′′(x)=Mi−1hixi−x+Mihix−xi−1连续两次积分得Si(x)=Mi−16hi(xi−x)3+Mi6hi(x−xi−1)3+Ai(xi−x)+Bi(x−xi−1)由于Si(xi−1)=f(xi−1)=yi−1且Si(xi)=f(xi)=yi得:Si(xi−1)=61Mi−1hi2+Aihi=yi−1Si(xi)=61Mihi2+Bihi=yi得:Ai=hi1(yi−1+61Mi−1hi2)Bi=hi1(yi+61Mihi2)代入得:Si(x)=Mi−16hi(xi−x)3+Mi6hi(x−xi−1)3+hi1(yi−1+61Mi−1hi2)(xi−x)+hi1(yi+61Mihi2)(x−xi−1),x∈[xi−1,xi]其中M0,M−1,...,Mn是待求的常数,可利用S′(xi−0)=S′(xi+0)求出Mi
由于:
Si(x)=Mi−16hi(xi−x)3+Mi6hi(x−xi−1)3+hi1(yi−1+61Mi−1hi2)(xi−x)+hi1(yi+61Mihi2)(x−xi−1),x∈[xi−1,xi]求导,Si′(x)=−Mi−12hi(xi−x)2+Mi2hi(x−xi−1)2+hi(yi−yi−1)+6hi(Mi−Mi−1)
由此得:
Si′(xi−0)=6hiMi−1+3hiMi+hiyi−yi−1Si′(xi−1+0)=−3hiMi−1−6hiMi+hiyi−yi−1得Si+1′(xi+0)=−3hi+1Mi−6hi+1Mi+1+hi+1yi+1−yi
因为
Si′(xi−0)=Si+1′(xi+0)可以求出参数
Mi−1,Mi,Mi+1的一个方程:
6hiMi−1+3hi+hi+1Mi+6hi+1Mi+1=hi+1yi+1−yi+hiyi−yi−1
两边同乘
hi+hi+16,得方程:
hi+hi+1hiMi−1+2Mi+hi+hi+1hi+1Mi+1=hi+hi+16(f[xi,xi+1]−f[xi−1,xi])
令:
μi=hi+hi+1hiλi=hi+hi+1hi+1=1−μigi=hi+hi+16(f[xi,xi+1]−f[xi−1,xi])=6f[xi−1,xi,xi+1]
则方程可以简写为:
μiMi−1+2Mi+λiMi+1=gi,i=1,2,...,n−1,也就是共有n-1个方程,下面分三种边界条件依次讨论:
2.4.1 第一种边界条件,已知插值区间两端的一阶导数值
μi=hi+hi+1hi,λi=hi+hi+1higi=6f[xi−1,xi,xi+1],g0=h16(f[x0,x1]−y0′),gn=yn′−f[xn−1,xn]6
有三弯矩方程:
⎣⎢⎢⎢⎢⎡2μ1...12...λ1...μn−1...21...λn−12⎦⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎡M0M1...Mn−1Mn⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡g0g1...gn−1gn⎦⎥⎥⎥⎥⎤
2.4.2 第二种边界条件:已知插值区间两端的二阶导数值
有三弯矩矩阵:
⎣⎢⎢⎢⎢⎡2μ2...λ12...λ2...μn−2...2μn−1...λn−22⎦⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎡M1M2...Mn−2Mn−1⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡g1−μ1y0′′g2...gn−2gn−1−λn−1yn′′⎦⎥⎥⎥⎥⎤且有自然边界条件:M0=Mn=0
2.4.3 第三种边界条件
有三弯矩矩阵:
⎣⎢⎢⎢⎢⎡2μ2...λnλ12...λ2...μn−1...2μnμ1...λn−12⎦⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎡M1M2...Mn−1Mn⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡g1g2...gn−1gn⎦⎥⎥⎥⎥⎤
值得注意的是,上面三种条件中的线性方程组的系数矩阵都是非奇异的,因此有唯一解,三次样条函数由边界条件唯一确定。
eg.设
f(0)=0,f(1)=1,f(2)=0,f(3)=1,f′′(0)=1,f′′(3=0),试求
f(x)在区间[0,3]上的三次样条函数S(x).
解:由
M0=y0′′,Mn=yn′′知
M0=f′′(0)=1,M3=f′′(3)=0,构造差商表:
xi |
f(xi) |
一阶差商 |
二阶差商 |
0 |
0 |
|
|
1 |
1 |
1 |
|
2 |
0 |
-1 |
-1 |
3 |
1 |
1 |
1 |
由:
μi=hi+hi+1hiλi=hi+hi+1hi+1=1−μigi=hi+hi+16(f[xi,xi+1]−f[xi−1,xi])=6f[xi−1,xi,xi+1]
得
μ1=0.5,uμ2=0.5,λ1=λ2=0.5,g1=−6,g2=6,第二边界条件的三弯矩方程为:
⎣⎢⎢⎢⎢⎡2μ2...λ12...λ2...μn−2...2μn−1...λn−22⎦⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎡M1M2...Mn−2Mn−1⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡g1−μ1y0′′g2...gn−2gn−1−λn−1yn′′⎦⎥⎥⎥⎥⎤
得:
[20.50.52][M1M2]=[−6−0.56]
解得
M1=15−64,M2=1561
因为:
Si(x)=Mi−16hi(xi−x)3+Mi6hi(x−xi−1)3+hi1(yi−1+61Mi−1hi2)(xi−x)+hi1(yi+61Mihi2)(x−xi−1),x∈[xi−1,xi]
将
hi=1,M0=1,M1,M2代入可得:
x∈[0,1],S1(x)=901(−79x2+45x3+124x)x∈[1,2],S2(x)=901(125x3−567x2+736x−204)x∈[2,3],S3(x)=901(−61x3+549x2−1496x+1284)
{持续更新}
欢迎扫描二维码关注微信公众号 深度学习与数学 [每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾]