上海交大数值分析课件数值分析2-6(三次样条插值)

合集下载

(精品)数值分析课程设计-三次样条插值

(精品)数值分析课程设计-三次样条插值

《数值分析课程设计-三次样条插值》报告掌握三次样条插值函数的构造方法,体会三次样条插值函数对被逼近函数的近似。

三次样条插值函数边界条件由实际问题对三次样条插值在端点的状态要求给出。

以第1 边界条件为例,用节点处二阶导数表示三次样条插值函数,用追赶法求解相关方程组。

通过Matlab 编制三次样条函数的通用程序,可直接显示各区间段三次样条函数体表达式,计算出已给点插值并显示各区间分段曲线图。

引言分段低次样条插值虽然计算简单、稳定性好、收敛性有保证且易在电子计算机上实现,但只能保证各小段曲线在连接处的连续性,不能保证整件曲线的光滑性。

利用样条插值,既可保持分段低次插值多项式,又可提高插值函数光滑性。

故给出分段三次样条插值的构造过程算法步骤,利用Matlab软件编写三次样条插值函数通用程序,并通过数值算例证明程序的正确性。

三次样条函数的定义及特征定义:设[a,b] 上有插值节点,a=x1<x2<…xn=b,对应函数值为y1,y2,⋯yn。

若函数S(x) 满足S(xj) = yj ( j = 1,2, ⋯,n ), S(x) 在[xj,xj+1] ( j =1,2,⋯,n-1)上都是不高于三的多项式(为了与其对应j 从1 开始,在Matlab 中元素脚标从1 开始)。

当S(x) 在 [a,b] 具有二阶连续导数。

则称S(x) 为三次样条插值函数。

要求S(x) 只需在每个子区间[xj,xj+1] 上确定 1 个三次多项式,设为:Sj(x)=ajx3+bjx2+cjx+dj, (j=1,2,⋯,n-1) (1)其中aj,bj,cj,dj 待定,并要使它满足:S(xj)=yj, S(xj-0)=S(xj+0), (j=2,⋯,n-1) (2)S'(xj-0)=S'(xj+0), S"(xj-0)=S"(xj+0), (j=2,⋯,n-1) (3)式(2)、(3)共给出n+3(n-2)=4n-6 个条件,需要待定4(n-1) 个系数,因此要唯一确定三次插值函数,还要附加2个边界条件。

交大硕士研究生必修基础数学-数值分析-插值与拟合方法

交大硕士研究生必修基础数学-数值分析-插值与拟合方法

第5章 插值与拟合方法插值与拟合方法是用有限个函数值(),(0,1,,)i f x i n =⋅⋅⋅去推断或表示函数()f x 的方法,它在理论数学中提到的不多。

本章主要介绍有关解决这类问题的理论和方法,涉及的内容有多项式插值,分段插值及曲线拟合等。

对应的方法有Lagrange 插值,Newton 插值,Hermite 插值,分段多项式插值和线性最小二乘拟合。

1 实际案例2 问题的描述与基本概念先获得函数(已知或未知)()=在有y f x由表中数据构造一个函数P(x)作为f(x) 的近似函数,去参与有关f (x)的运算。

科学计算中,解决不易求出的未知函数的问题主要采用插值和拟合两种方法。

1)插值问题的描述已知函数()y f x =在[a,b ]上的n +1个互异点nx x x ⋅⋅⋅,,10处的函数值()i i y f x =,求f (x ) 的一个近似函数P (x ),满足()()(0,1,,)i i P x f x i n ==⋅⋅⋅ (5.1)● P (x ) 称为f (x )的一个插值函数; ● f (x ) 称为被插函数;点i x 为插值节点; ● ()()(0,1,,)i i P x f x i n ==⋅⋅⋅称为插值条件; ● ()()()R x f x P x =-称为插值余项。

当插值函数P (x )是多项式时称为代数插值(或多项式插值)。

一个代数插值函数P (x )可写为0()()()mkm k k k P x P x a x a R ===∈∑若它满足插值条件(5.1),则有线性方程组20102000201121112012m m m m m n n m n na a x a x a x y a a x a x a x y a a x a x a x y ⎧+++⋅⋅⋅=⎪+++⋅⋅⋅=⎪⎨⎪⎪+++⋅⋅⋅=⎩ (5.2)当m=n ,它的系数行列式为范德蒙行列式)(1110212110200j i ni j n nnnn nx x x x x x x x x x x D -∏==≤≤≤因为插值节点互异,0D ≠,故线性方程组(5.2)有唯一解,于是有定理 5.1 当插值节点互异时,存在一个满足插值条件()()(0,1,,)i i P x f x i n ==⋅⋅⋅的n 次插值多项式。

数值分析作业-三次样条插值

数值分析作业-三次样条插值

数值计算方法作业实验4.3 三次样条差值函数实验目的:掌握三次样条插值函数的三弯矩方法。

实验函数:dt ex f xt ⎰∞--=2221)(π实验内容:(1) 编程实现求三次样条插值函数的算法,分别考虑不同的边界条件; (2) 计算各插值节点的弯矩值;(3) 在同一坐标系中绘制函数f(x),插值多项式,三次样条插值多项式的曲线比较插值结果。

实验4.5 三次样条差值函数的收敛性实验目的:多项式插值不一定是收敛的,即插值的节点多,效果不一定好。

对三次样条插值函数如何呢?理论上证明三次样条插值函数的收敛性是比较困难的,通过本实验可以证明这一理论结果。

实验内容:按照一定的规则分别选择等距或非等距的插值节点,并不断增加插值节点的个数。

实验要求:(1) 随着节点个数的增加,比较被逼近函数和三样条插值函数的误差变化情况,分析所得结果并与拉格朗日插值多项式比较;(2) 三次样条插值函数的思想最早产生于工业部门。

作为工业应用的例子,考虑如下例子:某汽车制造商根据三次样条插值函数设计车门曲线,其中一算法描述:拉格朗日插值:错误!未找到引用源。

其中错误!未找到引用源。

是拉格朗日基函数,其表达式为:()∏≠=--=ni j j j i ji x x x x x l 0)()(牛顿插值:))...()(](,...,,[....))(0](,,[)0](,[)()(1102101210100----++--+-+=n n n x x x x x x x x x x f x x x x x x x f x x x x f x f x N其中⎪⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎪⎨⎧--=--=--=-)/(]),...,[],...,[(]...,[..],[],[],,[)()(],[01102110x x x x x f x x x f x x x f x x x x f x x f x x x f x x x f x f x x f n n n n i k j i k j k j i ji j i j i三样条插值:所谓三次样条插值多项式Sn(x)是一种分段函数,它在节点Xi(a<X0<X1……<Xn<b)分成的每个小区间[x i-1,x i ]上是三次多项式,其在此区间上的表达式如下:],[),6()6(]6)([6)(6)()(111113131i i ii i i i i i i i i i i i i i i i i i x x x h yM h M h h y x M M h h y y h x x Mi h x x M x S -------∈-+-+---+-+-=式中Mi=)(i x S ''.因此,只要确定了Mi 的值,就确定了整个表达式,Mi 的计算方法如下:令⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧=---+=+=+=+--++++++],,[6)(6111111111i i i i i i i i i i i i i i i i i i i ix x x f h y y h y y h h d h h h h h h λμ则Mi 满足如下n-1个方程:1,...2,1,211-==+++-n i d M M M i i i i i i λμ 常用的边界条件有如下几类:(1) 给定区间两端点的斜率m 0,m n ,即n n n m y x S m y x S ='='='=')(,)(000 (2) 给定区间两端点的二阶导数M0,Mn,即n n n M y x S M y x S =''=''=''='')(,)(000 (3) 假设y=f(x)是以b-a 为周期的周期函数,则要求三次样条插值函数S (x )也为周期函数,对S (x )加上周期条件2,1,0),0()0()(0)(=-=+p x S x S n p p对于第一类边界条件有⎪⎪⎩⎪⎪⎨⎧--=+--=+--)(62)(6211001110n n n n n n i h y y mn h M M m h y y h M M对于第二类边界条件有⎩⎨⎧=+=+-n n n n d M M d M M 221100μλ其中n n n n nnn M u x x f m h d M m x x f h d )1(2]),[(6)1(2)],[(6100001010-+-=-+-=-μλλ那么解就可以为⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛----n n n n n n n d d d d d M M M M M 1210121011...2...............2............................1..2.1......0..2μλμλμλ 对于第三类边界条件,)0()0(,,000-=+==n n n x S x S M M y y ,由此推得0010012d M M M n =-++μλ,其中]),1[],[(6,,101010110n n nn n n x x f x x f h h d h h h h h h --+=+=+=μλ,那么解就可以为: ⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛-------1221012101221100...2.............2..............................2..,,.......,..22n n n n n n n d d d d d M M M M M n μλλμλμμλ 程序代码: 1拉格朗日插值函数Lang.mfunction f=lang(X,Y,xi) %X 为已知数据的横坐标 %Y 为已知数据的纵坐标 %xi 插值点处的横坐标%f 求得的拉格朗日插值多项式的值 n=length(X); f=0; for i=1:n l=1; for j=1:i-1l=l.*(xi-X(j))/(X(i)-X(j)); end ; for j=i+1:nl=l.*(xi-X(j))/(X(i)-X(j)); end ;%拉格朗日基函数 f=f+l*Y(i); endfprintf('%d\n',f) return2 牛顿插值函数newton.mfunction f=newton(X,Y,xi) %X 为已知数据的横坐标 %Y 为已知数据的纵坐标 %xi 插值点处的横坐标%f 求得的拉格朗日插值多项式的值 n=length(X);newt=[X',Y'];%计算差商表for j=2:nfor i=n:-1:1if i>=jY(i)=(Y(i)-Y(i-1))/(X(i)-X(i-j+1));else Y(i)=0;endendnewt=[newt,Y'];end%计算牛顿插值f=newt(1,2);for i=2:nz=1;for k=1:i-1z=(xi-X(k))*z;endf=f+newt(i-1,i)*z;endfprintf('%d\n',f)return3三次样条插值第一类边界条件Threch.mfunction S=Threch1(X,Y,dy0,dyn,xi)% X为已知数据的横坐标%Y为已知数据的纵坐标%xi插值点处的横坐标%S求得的三次样条插值函数的值%dy0左端点处的一阶导数% dyn右端点处的一阶导数n=length(X)-1;d=zeros(n+1,1);h=zeros(1,n-1);f1=zeros(1,n-1);f2=zeros(1,n-2);for i=1:n%求函数的一阶差商h(i)=X(i+1)-X(i);f1(i)=(Y(i+1)-Y(i))/h(i);endfor i=2:n%求函数的二阶差商f2(i)=(f1(i)-f1(i-1))/(X(i+1)-X(i-1));d(i)=6*f2(i);endd(1)=6*(f1(1)-dy0)/h(1);d(n+1)=6*(dyn-f1(n-1))/h(n-1);%¸赋初值A=zeros(n+1,n+1);B=zeros(1,n-1);C=zeros(1,n-1);for i=1:n-1B(i)=h(i)/(h(i)+h(i+1));C(i)=1-B(i);endA(1,2)=1;A(n+1,n)=1;for i=1:n+1A(i,i)=2;endfor i=2:nA(i,i-1)=B(i-1);A(i,i+1)=C(i-1);endM=A\d;syms x;for i=1:nSx(i)=collect(Y(i)+(f1(i)-(M(i)/3+M(i+1)/6)*h(i))*(x-X(i))...+M(i)/2*(x-X(i))^2+(M(i+1)-M(i))/(6*h(i))*(x-X(i))^3);digits(4);Sx(i)=vpa(Sx(i));%三样条插值函数表达式endfor i=1:ndisp('S(x)=');fprintf('%s (%d,%d)\n',char(Sx(i)),X(i),X(i+1));endfor i=1:nif xi>=X(i)&&xi<=X(i+1)S=Y(i)+(f1(i)-(M(i)/3+M(i+1)/6)*h(i))*(xi-X(i))+M(i)/2*(xi-X(i))^2+(M (i+1)-M(i))/(6*h(i))*(xi-X(i))^3;endenddisp('xi S');fprintf('%d,%d\n',xi,S);return4 三次样条插值第二类边界条件Threch2.mfunction [Sx]=Threch2(X,Y,d2y0,d2yn,xi)X为已知数据的横坐标%Y为已知数据的纵坐标%xi插值点处的横坐标%S求得的三次样条插值函数的值%d2y0左端点处的二阶导数% d2yn右端点处的二阶导数n=length(X)-1;d=zeros(n+1,1);h=zeros(1,n-1);f1=zeros(1,n-1);f2=zeros(1,n-2);for i=1:n%求一阶差商h(i)=X(i+1)-X(i);f1(i)=(Y(i+1)-Y(i))/h(i);endfor i=2:n%求二阶差商f2(i)=(f1(i)-f1(i-1))/(X(i+1)-X(i-1));d(i)=6*f2(i);endd(1)=2*d2y0;d(n+1)=2*d2yn;%赋初值A=zeros(n+1,n+1);B=zeros(1,n-1);C=zeros(1,n-1);for i=1:n-1B(i)=h(i)/(h(i)+h(i+1));C(i)=1-B(i);endA(1,2)=0;A(n+1,n)=0;for i=1:n+1A(i,i)=2;endfor i=2:nA(i,i-1)=B(i-1);A(i,i+1)=C(i-1);endM=A\d;syms x;for i=1:nSx(i)=collect(Y(i)+(f1(i)-(M(i)/3+M(i+1)/6)*h(i))*(x-X(i))... +M(i)/2*(x-X(i))^2+(M(i+1)-M(i))/(6*h(i))*(x-X(i))^3);digits(4);Sx(i)=vpa(Sx(i));endfor i=1:ndisp('S(x)=');fprintf('%s (%d,%d)\n',char(Sx(i)),X(i),X(i+1));endfor i=1:nif xi>=X(i)&&xi<=X(i+1)S(i)=Y(i)+(f1(i)-(M(i)/3+M(i+1)/6)*h(i))*(xi-X(i))+M(i)/2*(xi-X(i))^2 +(M(i+1)-M(i))/(6*h(i))*(xi-X(i))^3;endenddisp('xi S');fprintf('%d,%d\n',xi,S);return5插值节点处的插值结果main3.mclearclcX=[0.0,0.1,0.2,0.3,0.4];Y=[0.5000,0.5398,0.5793,0.6179,0.7554];xi=0.13;%xi=0.36;disp('xi=0.13');%disp('xi=0.36');disp('拉格朗日插值结果');lang(X,Y,xi);disp('牛顿插值结果');newton(X,Y,xi);disp('三次样条第一类边界条件插值结果');Threch1(X,Y,0.40,0.36,xi);%0.4,0.36分别为两端点处的一阶导数disp('三次样条第二类边界条件插值结果');Threch2(X,Y,0,-0.136,xi);%0,-0.136分别为两端点处的二阶导数6将多种插值函数即原函数图像画在同一张图上main2.mclearclcX=[0.0,0.1,0.2,0.3,0.4];Y=[0.5000,0.5398,0.5793,0.6179,0.7554];a=linspace(0,0.4,21);NUM=21;L=zeros(1,NUM);N=zeros(1,NUM);S=zeros(1,NUM);B=zeros(1,NUM);for i=1:NUMxi=a(i);L(i)=lang(X,Y,xi);% 拉格朗日插值N(i)=newton(X,Y,xi);%牛顿插值B(i)=normcdf(xi,0,1);%原函数S(i)=Threch1(X,Y,0.4,0.36,xi);%三次样条函数第一类边界条件endplot(a,B,'--r');hold on;plot(a,L,'b');hold on;plot(a,N,'r');hold on;plot(a,S,'r+');hold on;legend('原函数','拉格朗日插值','牛顿插值','三次样条插值',2);hold off7增加插值节点观察误差变化main4.mclear;clc;N=5;%4.5第一问Ini=zeros(1,1001);a=linspace(-1,1,1001);Ini=1./(1+25*a.^2);for i=1:3 %节点数量变化次数N=2*N;t=linspace(-1,1,N+1);%插值节点ft=1./(1+25*t.^2);%插值节点函数值val=linspace(-1,1,101);for j=1:101L(j)=lang(t,ft,val(j));S(j)=Threch1(t,ft,0.074,-0.074,val(j));%三样条第一类边界条件插值endplot(a,Ini,'k')%原函数图象hold onplot(val,L,'r')%拉格朗日插值函数图像hold onplot(val,S,'b')%三次样条插值函数图像str=sprintf('插值节点为%d时的插值效果',N);title(str);legend('原函数','拉格朗日插值','三次样条插值');%显示图例hold offfigureend8车门曲线main5.mclearclcX=[0,1,2,3,4,5,6,7,8,9,10];Y=[0.0,0.79,1.53,2.19,2.71,3.03,3.27,2.89,3.06,3.19,3.29]; dy0=0.8;dyn=0.2;n=length(X)-1;d=zeros(n+1,1);h=zeros(1,n-1);f1=zeros(1,n-1);f2=zeros(1,n-2);for i=1:nh(i)=X(i+1)-X(i);f1(i)=(Y(i+1)-Y(i))/h(i);endfor i=2:nf2(i)=(f1(i)-f1(i-1))/(X(i+1)-X(i-1));d(i)=6*f2(i);endd(1)=6*(f1(1)-dy0)/h(1);d(n+1)=6*(dyn-f1(n-1))/h(n-1); A=zeros(n+1,n+1);B=zeros(1,n-1);C=zeros(1,n-1);for i=1:n-1B(i)=h(i)/(h(i)+h(i+1));C(i)=1-B(i);endA(1,2)=1;A(n+1,n)=1;for i=1:n+1A(i,i)=2;endfor i=2:nA(i,i-1)=B(i-1);A(i,i+1)=C(i-1);endM=A\d;x=zeros(1,n);S=zeros(1,n);for i=1:nx(i)=X(i)+0.5;S(i)=Y(i)+(f1(i)-(M(i)/3+M(i+1)/6)*h(i))*(x(i)-X(i))+M(i)/2*(x(i)-X(i ))^2+(M(i+1)-M(i))/(6*h(i))*(x(i)-X(i))^3;endplot(X,Y,'k'); hold on;plot(x,S,'o');title('三次样条插值效果图');legend('已知插值节点','三次样条插值');hold off实验结果:4.31计算插值节点处的函数值xi=0.13时Xi=0.36时2将多种插值函数即原函数图像画在同一张图上4.5.1增加插值节点观察误差变化从上面三张图可以看出增加插值节点并不能改善差之效果4.5.2 车门曲线。

三次样条插值ppt

三次样条插值ppt
f [x, x0, xn1] f [x0, x1, xn ] f [x, x0, x1, xn ](x xn )
把以上各式由后向前代入,可得
Nn (x) f (x0) f [x0, x1](x x0) f [x0, x1, xn](x x0) (x xn1)
Rn (x) f (x) Nn (x) f [x, x0, x1, xn ](x x0) (x xn)
yi
n1 ( x) ( x xi )n' 1 ( xi )
(2)插值误差估计
定理2 设 f (n) (x) 在[a,b] 上连续,f (n1) (x)在 (a,b) 内存在, 节点 a x0 x1 xn b,Pn (x) 是拉格朗日插值多项 式,则对任意 x [a,b] , 插值余项
x4 f ( x4 ) f [x3, x4 ] f [x2 , x3 , x4 ] f [x1, x2, x3, x4 ] f [x0, x1, x2, x3, x4 ]
(2) Newton插值公式
由差约定义 x [a,b]
f (x) f (x0 ) f [x, x0 ](x x0 )
f [x, x0 ] f [x0, x1] f [x, x0, x1](x x1)
xn1] f [x1, x2 , x0 xn
xn ] n 阶差商
差商表
xk
f
(xk )
一阶 差商
二阶差商
三阶差商 四阶差商
x0 f (x0 )
x1 f (x1) f [x0, x1]
x2 f (x2 ) f [x1, x2 ] f [x0 , x1, x2 ]
x3 f (x3 ) f [x2, x3] f [x1, x2 , x3 ] f [x0, x1, x2, x3]

数学数值分析三次样条插值PPT课件

数学数值分析三次样条插值PPT课件
第2页/共40页
2.8.1 三次样条函数
定义 给定区间[a,b]的一个划分 a=x0<x1<…<xn=b, yi=f (xi) (i=0,1,…,n),如果函数S(x)满足: (1) S(xi )=yi (i=0,1,…,n); (2) 在每个小区间[xi, xi+1] (i=0,1,...,n-1)上是次数不超
S上且( xS与)(x相)的(邻x表节达x点j式的1 )为2两[hh个jj3转2角( x有关x j,)]故y j称为三h转j=x角j+方1-x程j 。
(
x
x
j
)2[hj 2( hj3
x
x j1 )] y j1
(x
x j1 )2 ( x h2j
xj)
mj
(x
x j )2( x h2j
x j1 )
m j1
则方程组化为:
2 1 2 2 2
m1 g1 1 f0
m2
g2
n2 2 n2 mn2 gn2
n1 2 mn1 gn1 n1 fn
第10页/共40页
2、已知 S( x0 ) f0, S( xn ) fn
2m0
m1
3
f
[x0 ,
x1 ]
h0 2
f0
第18页/共40页
S(
x)
M
j
(
x j1 6hj
x)3
M
j1
(x
x 6hj
j
)3
(
y
j
M jh2j 6
)
x
j1 hj
x
(
y
j1
M
j1h2j 6
)
x
x hj

上海交大数值分析课件数值分析2-6(三次样条插值)

上海交大数值分析课件数值分析2-6(三次样条插值)
1°已知两端的一阶导数值,即:
S ( x ) f , S ( x ) f 0 0 n n
2°已知两端的二阶导数值,即:
S ( x ) f , S ( x ) f 0 0 n n
3°当 f(x) 是以 xn-x0 为周期的周期函数时,则要 求S(x)也是周期函数,即
2

3
... ... ... ... ...

... 0 0
1
2 ... 0 0 g g g
n 2 n 1 2 3 1

n 2

n 2
0

n 1
2

m m m m n m n
1 2 3
2 1
~ H ( x ) H ( x ) 3 2 3 2
求解过程具体如下:
1.条件 设在[a,b]上给出插值条件:
xj
f(xj)
f (xj )m j
x0
f0
m
0
x1
f1
m
1
x2
f2
m
2


xn
fn
m
n
求三次样条插值函数 S(x)
设法求出
2.求解 mj 的思路
由内部节点上的二阶导数连续求出 考虑S(x)在[xj , xj+1]上的表达式
1.三次样条的定义
若函数 S(x)∈C2[a,b], 且在每个小区间 [xj,xj+1]上是三次多项式,其中
a =x0<x1 <… <xn=b
是 给 定 节 点 , 则 称 S(x) 是 节 点 x0 , x1, … ,xn上的三次样条函数。 即: a.S(x)∈C2[a,b] b.S(x)在[xj,xj+1]上是三次多项式

数值分析——样条函数及三次样条插值

数值分析——样条函数及三次样条插值

S k ( x )是[ xk , xk + 1 ]上的(两点)三次样条插值多项式, 满足

Sk ( x j ) = y j
x → xk
k = 0,1,2, ⋯ , n − 1; j = k , k + 1
lim S k ( x ) = lim S k − 1 ( x ) + −
一、三次样条插值函数
定义1. 定义
a ≤ x0 , x1 ,⋯ , xn ≤ b为区间[ a , b ]的一个分割
如果函数S ( x )在区间[ a , b ]上满足条件 :
( 1) S ( x ), S ′( x ), S ′′( x )都在区间[ a , b ]上连续 ,即 S ( x ) ∈ C 2 [ a , b ]
f ( x j ) = y j , j = 0 ,1,⋯ , n 如果S ( x )是f ( x )的三次样条插值函数, 则其必满足
S ( x j ) = y j , j = 0 ,1,⋯ , n lim S ( x ) = S ( x j ) = y j , j = 1,⋯ , n − 1 x→ x xlim S ′( x ) = S ′( x j ) = m j , j = 1,⋯ , n − 1 →x lim S ′′( x ) = S ′′( x j ), j = 1 ,⋯ , n − 1
+ x → xk
Sk ( x j ) = y j
k
k = 0,1, ⋯ , n − 1; j = k , k + 1
− x → xk
k −1
k = 1 , 2 ,⋯ , n − 1 k = 1,2 ,⋯ , n − 1 ------(8) k = 1, 2 ,⋯ , n − 1

数值分析三次样条插值

数值分析三次样条插值

若取等距节点 hi = h, i = 1,…, n –1
i

h h
h

1 2
i
1 i

1 2
di

6 2h
yi 1
2 yi h

yi 1


3 h3
( yi1
2 yi

yi1 )
i 1, 2,, n
例1. 对于给定的节点及函数值
k 0123 xk 1 2 4 5 f (xk ) 1 3 4 2 求满足自然边界条件S(x0 ) S(xn ) 0的三次样条 插值函数S(x),并求f (3)的近似值
Mi1
( x xi )2 2hi 1

yi1 hi 1
yi

hi 1 6
( M i 1

Mi )
于是
Si( xi )

hi 3
Mi

yi
yi1 hi

hi 6
M i 1
Si1( xi )
hi 1 3
Mi

yi1 hi 1
yi

hi 1 6
M i 1
解: 由M关系式
k

hk
hk hk 1
k

hk 1 hk hk 1
1 k
1

2 3
1

1 3
2

1 3
2

2 3
di

6

yi1 hi1
yi

yi
yi hi
1

hi hi1 6 f [ xi1, xi , xi1]
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
S ( x0 0) S ( xn 0) S ( x 0 0 ) S ( x n 0 ) S ( x 0 0 ) S ( x n 0 )
周期样条
三、 求解方法之一:三转角方程
1.条件 设在[a,b]上给出插值条件:
xj
f (xj )m j
x0
f0
xj
x0
f0
x1
f1
1
x2
f2
2


xn
fn
n
f(xj)
f (xj )m j
m
0
m
H 3(x)
m
H 3(x)
m
~ H 3 ( x)
共n-1个等式
x1处: x2处:
H ( x ) H ( x ) 3 1 3 1
得到与m0,m1,m2有关的等式 得到与m1,m2,m3有关的等式
1.三次样条的定义
若函数 S(x)∈C2[a,b], 且在每个小区间 [xj,xj+1]上是三次多项式,其中
a =x0<x1 <… <xn=b
是 给 定 节 点 , 则 称 S(x) 是 节 点 x0 , x1, … ,xn上的三次样条函数。 即: a.S(x)∈C2[a,b] b.S(x)在[xj,xj+1]上是三次多项式
同理可得S(x)在区间[xj-1 , xj]上的二阶导数:
S ( x ) 6 x 2 x h
j1 2 j1
4 x
j
m
j1

6 x 4 x h 6( x
j1
j1 2 j1
2 x
j
m
j

x h
3 j1
j
2 x )
( y
j
y
j1
)
2 4 6 于是S ( x 0 ) m m ( y y ) j j 1 j j j 1 2 h j 1 h j 1 h j 1
s( x ) ( x x
j1
) [h h
2
j 3 j
2 ( x x
j
)]
y )]
j

( x x
j
) [h
2
j
2 ( x h
3 j
x
j1
y
j1

( x x
j1
) h
2 2 j
( x x
j
)
m
j

( x x
j
)
2
( x x
2 j
j1
)
h
m
j1
hj=xj+1-xj
x xk1 2 k ( x) ( x xk )( ) xk xk1 x xk 2 k1 ( x) ( x xk1 )( ) xk1 xk
一、 三次样条的产生和背景
1.问题的产生
实际中有许多计算问题对插值函数的 光滑性有较高的要求,例如飞机机翼 外形、发动机进、排气口都要求有连 续的二阶导数。 显然我们前面介绍的方法 已不能解决这个问题。
结论:
H (x )y (x )y (x ) 3 k k k 1 k 1 (x y )y (x ) k k k 1 k 1
其中
x xk x xk1 2 k (x) (1 2 )( ) xk1 xk xk xk1 x xk1 x xk 2 k1(x) (1 2 )( ) xk xk1 xk1 xk
2.三次样条插值函数的定义
三次样条函数 +
S(xi) = yi
3. 求解三次样条插值函数的已知条件数和 未知条件数 未知参数个数
已知条件个数
4n
插值条件: n+1 S(x)∈C2[a,b] :3(n-1) 共 计: 4n-2
缺少条件,通常在插值区间的端点给出,称 为边界条件。
4.常用的三种边界条件
由条件
S ( x 0 ) S ( x 0 ) ( j 1 ,..., n 1 ) j j
m
0
x1
f1
x2
f2


xn
fn
m
n
f(xj)
求三次样条插值函数 S(x)
思路: (1)首先要补条件:每个区间上构造三次多项式需要四 个条件,但现在最多有三个,故要补充条件,形成四个; (2)补什么条件:或函数值,或一阶导数值,或二阶导数值。 这里选一阶导数较合适;
(3)如何补?若随意给,则只能保证构造出的插值函数的函 数值和一阶导数值连续,但不一定能保证二阶导数值连续, 故只能选那组使二阶导数连续的一阶导数值。
1°已知两端的一阶导数值,即:
S ( x ) f , S ( x ) f 0 0 n n
2°已知两端的二阶导数值,即:
S ( x ) f , S ( x ) f 0 0 n n
3°当 f(x) 是以 xn-x0 为周期的周期函数时,则要 求S(x)也是周期函数,即
对S()求二阶导数得:
S ( x ) 6 x 2 x h
j 2 j j 2 j
4 x
j 1
m
j

6 x 4 x h 6( x
j
2 x
j 1
m
j 1

x h
j 1 3 j
2 x )
( y
j 1
y
j
)
4 2 6 于是 S ( x 0 ) m m 2 ( y y ) j j j 1 j 1 j h j h j h j
~ H ( x ) H ( x ) 3 2 3 2
求解过程具体如下:
1.条件 设在[a,b]上给出插值条件:
xj
f(xj)
f (xj )m j
x0
f0
m
0
x1
f1
m
1
x2
f2
m
2


xn
fn
m
n
求三次样条插值函数 S(x)
设法求出
2.求解 mj 的思路
由内部节点上的二阶导数连续求出 考虑S(x)在[xj , xj+1]上的表达式
2.样条的概念(Spline)
样条是工程设计中使用的一种绘图工具, 它是富有弹性的细木条或细金属条。绘 图员利用它把一些已知的点连接成一条 光滑曲线称为样条曲线,样条曲线在连 接点处有连续的曲率(即连续的二阶导 数),它实际上是分段三次曲线拼接而 成,在连接点上要求二阶导数连续。
二、 三次样条函数的定义
第二章 插值法 §5 三次样条插值
一、三次样条的产生和背景 二、三次样条函数的定义 三、三转角方程 四、三弯矩方程
预备知识
Hermite插值: 已知:4个条件
xi yi = f(xi)
f y (x ) i i
xk yk
yk
xk+1 yk+1
1 yk
求:一个次数不超过3的多项式H3(x)
相关文档
最新文档