数值分析(样条插值)总结
数值分析实验报告-插值、三次样条

实验报告:牛顿差值多项式&三次样条问题:在区间[-1,1]上分别取n=10、20用两组等距节点对龙格函数21()25f x x作多项式插值及三次样条插值,对每个n 值,分别画出插值函数及()f x 的图形。
实验目的:通过编程实现牛顿插值方法和三次样条方法,加深对多项式插值的理解。
应用所编程序解决实际算例。
实验要求:1. 认真分析问题,深刻理解相关理论知识并能熟练应用;2. 编写相关程序并进行实验;3. 调试程序,得到最终结果;4. 分析解释实验结果;5. 按照要求完成实验报告。
实验原理:详见《数值分析 第5版》第二章相关内容。
实验内容:(1)牛顿插值多项式1.1 当n=10时:在Matlab 下编写代码完成计算和画图。
结果如下:代码:clear allclcx1=-1:0.2:1;y1=1./(1+25.*x1.^2);n=length(x1);f=y1(:);for j=2:nfor i=n:-1:jf(i)=(f(i)-f(i-1))/(x1(i)-x1(i-j+1));endendsyms F x p ;F(1)=1;p(1)=y1(1);for i=2:nF(i)=F(i-1)*(x-x1(i-1));p(i)=f(i)*F(i);endsyms PP=sum(p);P10=vpa(expand(P),5);x0=-1:0.001:1;y0=subs(P,x,x0);y2=subs(1/(1+25*x^2),x,x0);plot(x0,y0,x0,y2)grid onxlabel('x')ylabel('y')P10即我们所求的牛顿插值多项式,其结果为:P10(x)=-220.94*x^10+494.91*x^8-9.5065e-14*x^7-381.43*x^6-8.504e-14*x^5+123.36*x^4+2.0202e-1 4*x^3-16.855*x^2-6.6594e-16*x+1.0并且这里也能得到该牛顿插值多项式的在[-1,1]上的图形,并和原函数进行对比(见Fig.1)。
数值分析(15)样条插值

数值分析
于是,在[xi , xi 1 ]上
( x xi 1 )2 (hi 2( x xi )) ( x xi )2 (hi 2( xi 1 x )) Si ( x ) yi yi 1 3 3 hi hi ( x xi 1 ) 2 ( x x i ) ( x xi ) 2 ( x xi 1 ) mi mi 1 2 2 hi hi
故构造S ( x )需要4n个条件 由(1)已知节点上函数值 yi , i 0,1, 2, ..., n。 这是n+1个条件
由(2)S ( x ) C 2 [a , b], 隐含着在内节点上应有 Si 1 ( xi ) Si ( xi ), Si'1 ( xi ) Si' ( xi ), Si''1 ( xi ) Si'' ( xi ), i 1, 2, ..., n 1
数值分析
数值分析
(3)如何求mi? 利用在节点上二阶导数连续的条件 由 Si''1 ( xi ) Si'' ( xi ), i 1, 2, ..., n 1 导出三转角方程(n 1个方程要解n 1个未知数)
(4)再由三转角方程 边界条件(补充两个方程) 封闭的方程组,可求出mi ,( i 0,1, 2, ..., n)
(2)构造三弯矩方程
利用S ( x )在内节点上一阶导数连续的条件, 在区间[ x i , x i 1 ]上 ' ( x ) 3a ( x- x ) 2 2b ( x- x ) c Si i i i i i
数值分析
数值分析
三、三弯矩方程求解法
三弯矩法的基本思想 (1)yi'' f '' ( xi )未知,但可设S '' ( xi ) M i , ( M i yi'' , 只是M i yi'' ) (2)如能求出M i,则可由M i 和yi 构造S ( x ).
数值分析插值知识点总结

数值分析插值知识点总结一、插值的基本概念插值是指在已知数据点的基础上,通过某种数学方法求得两个已知数据点之间的未知数值。
插值方法的基本思想是在已知数据点之间找出一个合适的函数形式,使得该函数穿过已知数据点,并预测未知点的数值。
插值问题通常出现在实际工程、科学计算中,比如天气预报、经济数据的预测、地震勘探等领域。
插值可以帮助人们预测未知点的数值,从而更好地了解数据之间的关系。
二、插值的分类根据插值的基本原理,插值方法可以分为多种类型,常见的插值方法包括:拉格朗日插值、牛顿插值、分段插值、立方插值、样条插值等。
1. 拉格朗日插值拉格朗日插值是一种通过拉格朗日多项式来实现数据插值的方法。
该方法通过已知的数据点(x1,y1), (x2,y2),...,(xn,yn)来确定一个n-1次的多项式P(x),使得P(xi)=yi。
2. 牛顿插值牛顿插值是利用牛顿插值多项式来实现数据插值的方法。
该方法通过已知的数据点(x1,y1), (x2,y2),...,(xn,yn)来确定一个n-1次的多项式P(x),使得P(xi)=yi。
3. 分段插值分段插值是将插值区间分割成多个小区间,然后在每个小区间内采用简单的插值方法进行插值。
常见的分段插值方法包括线性插值和抛物线插值。
4. 立方插值立方插值是一种通过构造三次多项式来实现数据插值的方法。
该方法通过已知的数据点(x1,y1), (x2,y2),...,(xn,yn)来确定一个三次多项式P(x),使得P(xi)=yi。
5. 样条插值样条插值是一种通过构造分段三次多项式来实现数据插值的方法。
该方法通过已知的数据点(x1,y1), (x2,y2),...,(xn,yn)来确定一个分段三次多项式P(x),使得P(xi)=yi。
三、插值的应用插值方法在实际工程中有着广泛的应用,常见的应用包括图像处理、声音处理、地图绘制、气象预测、经济预测等领域。
1. 图像处理在图像处理中,插值方法主要用于图像的放大、缩小以及图像的重构等操作。
数值分析三次样条插值

0
2
1
n1
1
n2
2 n1
M d 0
MM dd n2 M d 2
1 1 2 2
n1 n1 n n
di f xi2, xi1, xi
华长生制作
7
2、 三弯矩构造法
三次样条插值函数 S( x) 可以有多种表达式,有时用二阶导数
值S( xi) Mi (i 0,1,, n)
Mi
xi
表示时,使用更方便。 在力学上解释
为细M梁i 在 S处( x的) 弯矩,并且得到的弯矩与相邻两个弯矩有关,故
称用由于表S(示x)在区间的算[x法i , x为i三1](弯i 矩0,算1,法,。n 1) 上是三次多项式,
hn
n1 3
Mn
f
x0 , x1 f
xn1, xn
其中
0
h1 h1h n
1
0 ,
hn , 0 hnh0
d1
6(
f
[
x
,
0
x1]
f
x[ , n1
x
n])(h1
h
n)
1
.
可解出 M i (i 0,1,, n) ,方程组的矩阵形式为
2
hi
min hi
,M4
max x[a,b]
f (4) (x)
1in
华长生制作
16
精品课件!
精品课件!
可见S(x), S(x)和S(x)在[a,b]上一致收敛到f (x), f (x)和f (x)
研究生数值分析 样条插值

x
-0.46 -0.40 -0.36 -0.30 -0.26 -0.20 -0.16 -0.10 -0.06 -0.00
1 1 25x2
L10 (x)
0.15898 0.24145 0.20000 0.19999 0.23585 0.18878 0.30769 0.23535
0.37175 0.31650
f (x)
L1(x)
yi 1
x xi xi1 xi
yi
x xi1 xi xi1
这种分段低次插值称为分段线性插值。
在几何上就是用折线代替曲线,故分段线 性插值又称为折线插值。
类似地,为求f(x)的近似值,也可选取距点x
最近的3个节点 xi1, xi , xi1 进行二次插值,即取
f
(x)
L2 (x)
i 1
[ yk
k i1
i 1
(
j i 1
x xj xk x j
)]
jk
这种分段低次插值叫分段二次插值。
在几何上就是用分段抛物线代替曲线,故分 段二次插值又称为抛物线插值。
3、三次样条插值 对于给定的n+1个节点,求函数的近似值,可以
作 n次插值多项式,当n较大时,高次插值不仅计算 复杂,而且还可能出现高阶导数不一致收敛的现象;
若采用分段插值,虽计算简单,也具有一致收 敛性,但光滑性比较差.
有些实际问题,比如:船体放样,飞机的机翼 设计等要求二阶光滑度(有二阶的连续导数)。过去, 工程师制图时,往往用一根富有弹性的木条(称为 样条),把它用压铁固定在样点上,其他地方让它 自由弯曲,然后画一条曲线,称为样条曲线。
它实际上是由分段三次曲线连接而成,在连接 点处有二阶连续导数。我们对工程师描绘的样条曲 线,抽象成数学模型,得出的函数称为样条函数, 它实质上是分段多项式的光滑连接。
数值计算_样条插值方法

多项式插值方法—样条插值-5-4-3-2-1012345-0.500.511.52f (x)P 5(x)P 10(x)当插值节点过多→龙格现象插值多项式虽然满足插值条件,但是在节点之外,靠近插值区间端点处与实际函数偏离较大,出现了震荡现象如何解决龙格现象?☐根据数据特点选用三角函数或有理函数☐由于多项式的优良性能,更偏爱多项式☐使用分段函数数学模型,在较小的区间段上使用低次多项式插值要点与学习目标☐掌握样条插值的概念和数学模型☐了解样条插值函数系数的确定方法样条插值☐改善分段线性插值和二次插值的精度☐保持曲线的光滑性☐样条的概念三次样条插值函数对于给定的函数表 x)(x f yxx 1xny 1yn思考:根据该定义,关于四个节点的三次样条插值函数的数学模型是什么?需要多少个约束方程才能确定该样条?分段样条插值的数学模型231101112130123220212223122333031323323()=,[,]()()=,[,]()=,[,]S x a a x a x a x x x x S x S x a a x a x a x x x x S x a a x a x a x x x x ⎧+++∈⎪=+++∈⎨⎪+++∈⎩以四个节点为例,四个节点的样条插值函数思考:该函数能否由节点数据完全确定?231101112130123220212223122333031323323()=,[,]()()=,[,]()=,[,]S x a a x a x a x x x x S x S x a a x a x a x x x x S x a a x a x a x x x x ⎧+++∈⎪=+++∈⎨⎪+++∈⎩(0)(0)(1,2,...,1)'(0)'(0)(1,2, (1)''(0)''(0)(1,2, (1)()(0,1,...,)i i i i i ii i S x S x i n S x S x i n S x S x i n S x y i n -=+=-⎧⎪-=+=-⎪⎨-=+=-⎪⎪==⎩样条插值问题的边界条件归根到底,样条插值问题是线性方程组求解的问题。
数值分析实验报告-插值、三次样条

实验报告:牛顿差值多项式&三次样条问题:在区间[-1,1]上分别取n=10、20用两组等距节点对龙格函数21()25f x x作多项式插值及三次样条插值,对每个n 值,分别画出插值函数及()f x 的图形。
实验目的:通过编程实现牛顿插值方法和三次样条方法,加深对多项式插值的理解。
应用所编程序解决实际算例。
实验要求:1. 认真分析问题,深刻理解相关理论知识并能熟练应用; 2. 编写相关程序并进行实验; 3. 调试程序,得到最终结果; 4. 分析解释实验结果; 5. 按照要求完成实验报告。
实验原理:详见《数值分析 第5版》第二章相关内容。
实验内容:(1)牛顿插值多项式1.1 当n=10时:在Matlab 下编写代码完成计算和画图。
结果如下:代码:clear allclcx1=-1:0.2:1;y1=1./(1+25.*x1.^2);n=length(x1);f=y1(:);for j=2:nfor i=n:-1:jf(i)=(f(i)-f(i-1))/(x1(i)-x1(i-j+1));endendsyms F x p;F(1)=1;p(1)=y1(1);for i=2:nF(i)=F(i-1)*(x-x1(i-1));p(i)=f(i)*F(i);endsyms PP=sum(p);P10=vpa(expand(P),5);x0=-1:0.001:1;y0=subs(P,x,x0);y2=subs(1/(1+25*x^2),x,x0);plot(x0,y0,x0,y2)grid onxlabel('x')ylabel('y')P10即我们所求的牛顿插值多项式,其结果为:P10(x)=-220.94*x^10+494.91*x^8-9.5065e-14*x^7-381.43*x^6-8.504e-14*x^5+123.36* x^4+2.0202e-14*x^3-16.855*x^2-6.6594e-16*x+1.0并且这里也能得到该牛顿插值多项式的在[-1,1]上的图形,并和原函数进行对比(见Fig.1)。
数值分析(样条插值)总结

3/35
三次样条插值函数满足的连续条件:
(1) S(xj–)= S(xj+) ( j = 1,· · · ,n-1) 连续
(2) S' (xj–)= S'(xj+) ( j = 1,· · · ,n-1)导数连续
(3) S'' (xj–)= S'' (xj+) ( j = 1,· · · ,n-1)二阶导数连续
xn yn
设 f(x) 在各插值节点 xj 处的一阶导数为 mj
取 xj+1 – xj = h,( j = 0,1,2,· · · ,n-1)。当 x∈[xj, xj+ 1]时,
分段三次Hermite插值
x xj h h h h x j 1 x 2 x xj 2 ( x x j )( ) m j ( x x j 1 )( ) m j 1 h h )( x j 1 x ) y j (1 2
S ( x j 0) j ( x j ) y j j 1 ( x j ) y j 1 j ( x j )m j j 1 ( x j )m j 1
18:23
6 6 4 2 S ( x j 0) 2 y j 2 y j 1 m j m j 1 h h h h
18:23
16/35
程序片段2:
Matlab Code : 三次样条插值 % Evaluate spline s = u - x(k); v = y(k) + s.*(d(k) + s.*(c(k) + s.*b(k))); % ------------------------------------------------------function d = splineslopes(h,delta) % SPLINESLOPES Slopes for cubic spline interpolation. % splineslopes(h,delta) computes d(k) = S'(x(k)). % Uses not-a-knot end conditions. % Diagonals of tridiagonal system n = length(h)+1; a = zeros(size(h)); b = a; c = a; r = a; a(1:n-2) = h(2:n-1); a(n-1) = h(n-2)+h(n-1); b(1) = h(2); b(2:n-1) = 2*(h(2:n-1)+h(1:n-2));b(n) = h(n-2); c(1) = h(1)+h(2);c(2:n-1) = h(1:n-2);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4 2 4 j ( x j ) [ 2 ( x x j 1 ) ( x x j ) 2 ] x x j h h h 2 ( x ) [ 4 ( x x ) ( x x ) 2 ] j 1 j j j 1 2 2 x x j h h h
m j 1 4m j m j 1
3 ( y j 1 y j 1 ) h
3 m n 1 2 m n [ yn yn 1 ] h
18:23
( j=1, 2, · · · · · · , n-1 )
13/35
自然样条的导数值满足:
3 2m0 m1 [ y1 y0 ] h
3/35
三次样条插值函数满足的连续条件:
(1) S(xj–)= S(xj+) ( j = 1,· · · ,n-1) 连续
(2) S' (xj–)= S'(xj+) ( j = 1,· · · ,n-1)导数连续
(3) S'' (xj–)= S'' (xj+) ( j = 1,· · · ,n-1)二阶导数连续
S(x) 为在 [xj,xj+1]的三次多项式满足:
(1) Sj (xj-1) = yj-1 , Sj (xj) = yj , ( j = 1,· · · ,n) (2) S'j (xj) = S'j+1 (xj) ( j = 1,· · · ,n-1)
(3) · · ,n-1) 18:23 S'' (x ) = S'' j j j+1 (xj) ( j = 1,· 则称 S(x)为三次样条插值函数。
回顾1: 若 lim f ( x ) f ( x0 ), 则称函数在x0左连续;
18:23
x x0
若 lim f ( x ) f ( x0 ), 则称函数在x0 右连续。
x x0 +
4/35
n个三次多项式, 待定系数共4n个!
当x∈[xj , xj+ 1] ( j= 0,1,…n-1 )时 Sj(x)= aj + bj x + cj x2 + dj x3 插值条件: S(xj) = yj ( j = 0,1,· · · ,n ) 连续性条件: S(xj+0) =S(xj–0) ( j = 1,· · · ,n-1) S'(xj+0) =S' (xj–0) ( j = 1,· · · ,n-1) S'' (xj+0) =S' ' (xj–0) ( j = 1,· · · ,n-1) 由样条定义,可建立方程(4n-2)个!
m j 1 4m j m j 1
3 m n 1 2 m n [ yn yn 1 ] h
3 ( y j 1 y j 1 ) h
( j=1, 2, · · · · · · , n-1 )
2 1 m0 3[ y1 y0 ] / h 1 4 1 m 3( y y ) / h 3 1 1 严格对角占优矩阵 1 4 1 mn 1 3( yn yn 2 ) / h 1 2 mn 3( yn yn 1 ) / h
6 6 4 2 S ( x0 0) 2 y0 2 y1 m0 m1 0 h h h h
6 6 2 4 S ( xn 0) 2 yn1 2 yn mn1 mn 0 h h h h
自然样条的导数值满足:
3 2m0 m1 [ y1 y0 ] h
)2 y j 1
18:23
未知数个数 (n+1)!!
9/35
由S ''(x)连续,有等式 S''(xj + 0)=S''(xj – 0)
当 x∈[xj , xj+1]时, S(x) 由基函数组合而成
j ( x ) (1 2
x xj h h x j 1 x x x j 2 j 1 ( x ) (1 2 )( ) h h )( x j 1 x )2
11/35
6 6 4 2 S ( x j 0) 2 y j 2 y j 1 m j m j 1 h h h h
同理有 联立得
6 6 2 4 S ( x j 0) 2 y j 1 2 y j m j 1 m j h h h h
6 6 4 2 2 y j 2 y j 1 m j m j 1 h h h S( x j 0) S( x j 0) h
h x xj 2 j 1 ( x ) ( x x j 1 )( ) h
18:23
j ( x ) ( x x j )(
x j 1 x
)2
10/35
x xj 2 8 j( x j ) [ 3 ( x j 1 x ) (1 2 ) 2 ]x x j 2 h h h h 6 ( x ) [ 8 ( x x ) (1 2 x j 1 x ) 2 ] 2 j 1 j j 3 2 x x j h h h h
是否可以在光滑性和局部单调性之间折衷呢 ? 2/35
定义 5.4 给定区间[a , b]上的一个分划:
a = x0 < x 1 < … < x n = b · · ,n), 如果 已知 f(xj) = yj (j = 0,1,·
S1 ( x ), x [ x0 , x1 ] S ( x ), x [ x , x ] 2 1 2 S( x) S n ( x ), x [ x n1 , xn ]
S j ( x ) (1 2 x xj h h h h x j 1 x 2 x xj 2 ( x x j )( ) m j ( x x j 1 )( ) m j 1 h h )( x j 1 x ) y j (1 2
2
x j 1 x
)(
x xj
18:23
6 6 2 4 2 y j 1 2 y j m j 1 m j h h h h 3 m j 1 4m j m j 1 ( y j 1 y j 1 ) h
( j=1, 2, · · · · · · , n-1 )
12/35
设自然边界条件成立即
S ( 1)
18:23
S (1) 0
2 2 S (1) 0 S (0 ) S (0 ) 3
S (1)
S (0 ) S (0 ) 0
7/35
分段Hermite插值公式导出的样条方法
已知函数表
x f(x)
x0 y0
x1 y1
· · · · · ·
18:23
方程数少于未知数个数 ??
5/35
(1)自然边界条件: S'' (x0)=0, S'' (xn)=0
(2)周期边界条件: S'(x0)=S'(xn), S''(x0)=S'' (xn) (3)反射边界条件: S''(x0)=S''(x1), S''(xn-1)=S'' (xn) (4) 固定边界条件: S'(x0)=f '(x0), S'(xn)=f'( (1) 1 S (0 ) S (0 ) 0
显然
3 2 x 3 x , x [1, 0] 3 x 3, x [1, 0] 2 S ( x ) S ( x ) 3 x 3, x [0, 1] 3 x 2 3 x , x [0, 1] 2 3 3
18:23
6/35
例 5.7 已知f(–1) = 1, f(0) = 0, f(1) = 1。构造分 段三次多项式是满足自然边界的样条函数。
1 3 3 2 x x , x [1, 0] 2 2 S ( x) 1 x 3 3 x 2 , x [0, 1] 2 2
ji
1。
故amm vm amj v j
jm
18:23 |a 进而 mm |=|amm v m | | amj v j | | amj |矛盾。
jm
jm
15/35
程序片段1:
Matlab Code : 三次样条插值 function v = splinetx(x,y,u) % First derivatives h = diff(x); delta = diff(y)./h; d = splineslopes(h,delta); % Piecewise polynomial coefficients n = length(x); c = (3*delta - 2*d(1:n-1) - d(2:n))./h; b = (d(1:n-1) - 2*delta + d(2:n))./h.^2; % Find subinterval indices k so that x(k) <= u < x(k+1) k = ones(size(u)); for j = 2:n-1 k(x(j) <= u) = j; end
S ( x j 0) j ( x j ) y j j 1 ( x j ) y j 1 j ( x j )m j j 1 ( x j )m j 1
18:23
6 6 4 2 S ( x j 0) 2 y j 2 y j 1 m j m j 1 h h h h