第一型三次样条插值mlb程序.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第一型三次样条插值mlb程序

第一型三次样条插值问题求解 一:解题过程 根据书上关于三次样条的步骤,列出相关的矩阵。 编写追赶法的求解函数,求解矩阵 得到 根据求解结果得到分段函数,画图表示,并求解 利用MATLAB内置三次样条函数求解问题 二:结果以及结果对比 1. (因显示问题,把表格中的精度变小了) 自编程序所得的 中间值 MATLAB内置三次样条 中间值 2.样条图像 自编程序所得的图像 MATLAB内置三次样条 图像 可得,自编程序解得的结果与MATLAB解的结果完全一致。 三:程序通用性分析 程序对于输入点的顺序进行优化,自变量X不需要从小到大进行排序,随机输入以后,程序会自动排序。数据的输入不限点数,自变量之间的间隔也不限。输入数据相对比较自由。 四:程序使用演示、通用性演示 运行文件 yzy.m,即可得到中间值以及三次样条图像 (里面内置了需要输入的数据) 1.按书上数据输入 得到图像 2.颠倒书上数据输入 得到同样的图像 在原有数据上多输入三组数据 根据上面三张图,可以发现,数据量不同、数据顺序不同、数据自变量X间隔不同,都可以得出结果,可以说明程序具有很好的通用性。 附录 yzy.m A=[10,1,2,3,4,5,6,7,8,9,0,11,13,15;5.8,3.3,4.04,4.7,5.22,5.54,5.78,5.4,5.57,5.7,2.51,6,8,10.3]; A=A; %转置排序 A=sortrows(A); nn=size(A,1); A=A; f1=0.8;f2=0.2; n=size(A,2); M=eye(n); M=M*2; N=zeros(n,1); for i=2:n-1 M(i,i-1)=(A(1,i)-A(1,i-1))/(A(1,i+1)-A(1,i-1)); M(i,i+1)=1-M(i,i-1); N(i)=6*(((A(2,i+1)-A(2,i))/(A(1,i+1)-A(1,i))-((A(2,i)-A(2,i-1)))/(A(1,i)-A(1,i-1)))/(A(1,i+1)-A(1,i-1))); end M(1,2)=1; M(n,n-1)=1; %M为三次样条 的 矩阵 N(1)=6*(((A(2,2)-A(2,1))/(A(1,2)-A(1,1))-f1)); N(n)=6*(f2-((A(2,n)-A(2,n-1))/(A(1,n)-A(1,n-1)))); NE=zeros(n,n+1); %追赶法 NE(1,1)=M(1,1); NE(1,n+1)=N(1); for i=2:n l=M(i,i-1)/NE(i-1,i-1); NE(i,i)=M(i,i)-l*M(i-1,i); NE(i,n+1)=N(i)-l*NE(i-1,n+1); end AN=zeros(n,1); AN(n)=NE(n,n+1)/NE(n,n); for i=1:n-1 j=n-i; AN(j)=(NE(j,n+1)-M(j,j+1)*AN(j+1))/NE(j,j); end M=AN; %追赶法 结束 S=zeros(n-1,5); for i=1:n-1; S(i,1)=A(2,i); S(i,2)=(A(2,i+1)-A(2,i))/(A(1,i+1)-A(1,i))-(1/3*M(i)+1/6*M(i+1))*(A(1,i+1)-A(1,i)); S(i,3)=1/2*M(i); S(i,4)=(M(i+1)-M(i))/(6*(A(1,i+1)-A(1,i))); S(i,5)=S(i,1)+S(i,2)*((A(1,i+1)-A(1,i))/2)+S(i,3)*((A(1,i+1)-A(1,i))/2).^2+S(i,4)*((A(1,i+1)-A(1,i))/2).^3; % 三次样条函数 系数 end n=size(S,1); title(三次样条图像); hold on; for i=1:n x=A(1,i):(A(1,i+1)-A(1,i))/100:A(1,i+1); y=S(i,1)+S(i,2)*(x-A(1,i))+S(i,3)*(x-A(1,i)).^2+S(i,4)*(x-A(1,i)).^3; plot(x,y); plot(A(1,i),A(2,i),o); end plot(A(1,n+1),A(2,n+1),o); hold off; disp(?D

文档评论(0)

aena45 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档