spline插值.docx_第1页
spline插值.docx_第2页
spline插值.docx_第3页
spline插值.docx_第4页
spline插值.docx_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

例5.6.1 给定以下数据, 求出三次样条函数,并计算函数分别在-0.15,-0.05,0.05,0.18,0.25处的近似值,并作图。x0.10.20.150-0.20.3y0.950.840.861.060.500.72解:编程如下:clearx=0.1,0.2,0.15,0,-0.2,0.3;y=0.95,0.84,0.86,1.06,1.50,0.72;pp=spline(x,y); pp.coefsxx=-0.15,-0.05,0.05,0.18,0.25;yy=ppval(pp,xx) %or:yy=spline(x,y,xx)fnplt(pp,k)hold on plot(x,y,o)hold on plot(xx,yy,r*)运行结果:ans = -36.3850 21.8592 -5.1164 1.5000 -36.3850 0.0282 -0.7390 1.0600 227.6995 -10.8873 -1.8249 0.9500 -143.0047 23.2676 -1.2059 0.8600 -143.0047 1.8169 0.0484 0.8400yy = 1.2943 1.1016 1.0186 0.8409 0.8291写出三次样条函数为:练习: 给定函数,节点,用三次样条插值求及在某些点处的近似值.MATLAB实现:yi=interp1(x,y,xi) %根据数据(x,y)给出分段线性插值函数的xi的值yi.yi=interp1(x,y,xi,spline) %使用三次样条插值.yi=interp1(x,y,xi,cubic) %使用分段三次插值.Yi=spline(x,y,xi) %同yi=interp1(x,y,xi,spline) pp=spline(x,y) %返回三次样条插值的分段多项式(pp)形式结构(使用“非扭结”端点条件).MATLAB中的spline函数可以对数据点进行三次插值,默认的边界条件强制使得插值第一段的三次项系数与第二段的三次项系数相同,最后一段与倒数第二段的多项式系数相同,这就所谓的非扭结(not-a-knot)条件.1一维插值函数Interp1()命令格式:yi=interp1(x,y,xi,method)x为插值节点构成的向量,y为插值节点函数值构成的向量,yi是被插值点xi的插值结果,method是采用的插值方法,缺省时表示分线段性插值,nearest为最邻近插值;linear为分线段性插值;spline为三次样条插值;pchip为分段Hermite插值;cubic为分段Hermite插值例子:画出y=sin(x)在区间010的曲线,并在曲线上插值节点xk=k,k=0,110及函数值,画出分段线性插值折线图x=0:10;y=sin(x);xi=0:0.25:10;yi1=interp1(x,y,xi,nearest);yi2=interp1(x,y,xi,linear);yi3=interp1(x,y,xi,spline);yi4=interp1(x,y,xi,pchip);yi5=interp1(x,y,xi,cubic);subplot(1,5,1)plot(x,y,o,xi,yi1,k-,xi,sin(xi),k:);title(bfNearest);subplot(1,5,2)plot(x,y,o,xi,yi2,k-,xi,sin(xi),k:);title(bfLinear);subplot(1,5,3)plot(x,y,o,xi,yi3,k-,xi,sin(xi),k:);title(bfSpline);subplot(1,5,4)plot(x,y,o,xi,yi4,k-,xi,sin(xi),k:);title(bfPchip);subplot(1,5,1)plot(x,y,o,xi,yi5,k-,xi,sin(xi),k:);title(bfCubic);spline()为三次样条函数命令格式1:yi=spline(x,y,xi),意义等同于yi=interp1(x,y,xi,spline)命令格式2:pp=spline(x,y),输出三次样条函数分段表示的结构pchip()命令格式与spline()完全相同csape()为可输入边界条件的三次样条函数命令格式:pp=csape(x,y,conds,valconds),x为插值节点构成的向量,y为插值节点函数值构成的向量;conds为边界类型,缺省为非扭结边界条件;valconds表示边界值。边界类型:complete为给定边界条件的一阶导数;not-a-knot为非扭结;periodic为周期边界条件;second为给定边界条件的二阶导数;variational为自由边界例子:(1)已知y=f(x)的函数表及端点条件S(x1)=S(x4)=0X1245F(x)1342求三次样条插值函数S(x),并计算f(3),f(4.5)的近似值clear;clc;x=1245;y=1342;s=csape(x,y,variation)value=fnval(s,34.5)再输入s.coefs可以得到三次样条插值分段表示的系数注释:V=FNVAL(F,X)orFNVAL(X,F)providesthevalueatthepointsinXofthefunctiondescribedbyF.(1)已知函数y=1/(25x2+1)在01上的值如下表X00.250.50.751Y10.39030.13790.06640.0385求三次样条插值函数S(x),使满足S(0)=0,S(1)=-0.074x=0:0.25:1;y=1./(1+25*x.2);s=csape(x,y,complete,0-0.074)fnplt(s,r)s.coefs题目如下:清华大学出版社的数值分析(第5版)P49,20题。x=0.25 0.3 0.39 0.45 0.53;y= 0.5 0.5477 0.6245 0.6708 0.7280 pp=csape(x,y,second,0,0.0);disp(pp.coefs);其中COEFS的含义是在Xi-Xi+1区间上的多项式是,例如COEFS数组第一行的意思是在X=0.25到X=0.3的区间上时表达式是-6.2652*(X-0.25)3+0.9697*(X-0.25)1+0.5;-6.26520.00000.96970.50001.8813-0.93980.92270.5477-0.4600-0.43180.79920.62452.1442-0.51460.74240.6708csape,是计算在各种边界条件下的三次样条插值。pp = csape(x,y,conds)其中conds主要有以下的选项variational(自然边界条件,首末点二阶导数均为0),second(指定首末点的二阶导数),periodic(周期性边界条件,首末点的02阶导数相等),complete(给定导数情况,默认)function pp = csape(x,y,conds,valconds)%pp=csape(x,y,变界类型,边界值),生成各种边界条件的三次样条插值. 其中,(x,y)为数据向量%边界类型可为:complete,给定边界一阶导数.%not-a-knot,非扭结条件,不用给边界值.%periodic,周期性边界条件,不用给边界值.%second,给定边界二阶导数.%variational,自然样条(边界二阶导数为0)% .%例 考虑数据%x | 1 2 4 5%-|-%y | 1 3 4 2%边界条件S(1)=2.5,S(5)=-3,%x=1 2 4 5;y=1 3 4 2;%pp=csape(x,y,second,2.5,-3);pp.coefs%xi=1:0.1:5;yi=ppval(pp,xi);%plot(x,y,o,xi,yi);matlab中的插值问题(转自mop)matlab中的插值问题今天写数值分析作业,仔细的研究了一下matlab中的插值问题,现总结如下:interp1 , 是一维数据的插值函数,基本使用方法如下yi = interp1(x,Y,xi,method)注意,这里常用的method有linear,spline。其中linear(线性)是默认的方法。spline应该和使用spline是一样的。spline,三次样条插值。注意它默认使用的是not-a-knot边界条件,也就是第一个点的三次导数和第二点的三次导数一样;最后一个点的三次导数和倒数第一个点一样。当y=df1,y,df2时,表示第一点和第二个点的一阶导数分别为df1,df2。x = -4:4;y = 0 .15 1.12 2.36 2.36 1.46 .49 .06 0;cs = spline(x,0 y 0);xx = linspace(-4,4,101);plot(x,y,o,xx,ppval(cs,xx),-);x = pi*0:.5:2;y = 0 1 0 -1 0 1 0;1 0 1 0 -1 0 1;pp = spline(x,y);yy = ppval(pp, linspace(0,2*pi,101);(以上例子参考matlab的help)上例中pp是一种多项式的表达方式,通过ppval就能求解出相应的值。csape,是计算在各种边界条件下的三次样条插值。pp = csape(x,y,conds)其中conds主要有以下的选项variational(自然边界条件,首末点二阶导数均为0),second(指定首末点的二阶导数),periodic(周期性边界条件,首末点的02阶导数相等),complete(给定导数情况,默认)function pp = csape(x,y,conds,valconds)%pp=csape(x,y,变界类型,边界值),生成各种边界条件的三次样条插值. 其中,(x,y)为数据向量%边界类型可为:complete,给定边界一阶导数.% not-a-knot,非扭结条件,不用给边界值.% periodic,周期性边界条件,不用给边界值.% second,给定边界二阶导数.% variational,自然样条(边界二阶导数为0)% .%例 考虑数据% x | 1 2 4 5% -|-% y | 1 3 4 2%边界条件S(1)=2.5,S(5)=-3,% x=1 2 4 5;y=1 3 4 2;% pp=csape(x,y,second,2.5,-3);pp.coefs% xi=1:0.1:5;yi=ppval(pp,xi);% plot(x,y,o,xi,yi);pp0 = csape(x,1,zeros(1,length(y),0,1,0);pp = csape( x, 1 sin(x) 0, 1 2 ) 左边的点一阶导数为1,右边的点二阶导数为0splinetool是一个图形化的插值工具lagrange插值,由于lagrange

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论