关于用追赶法求解系数矩阵的三次样条插值实验报告。.doc

关于用追赶法求解系数矩阵的三次样条插值实验报告。.doc

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

数值分析实验报告 实验名称 关于用追赶法求解系数矩阵的三次样条插值实验报告。 实验目的 会使用matlab 语言编程使用追赶法和三次样条插值 结合求解线性方程组的解。 实验内容 算法如下: function?x=followup(a,b,c,d) n=length(d); a(1)=0; %“追”的过程 L(1)=b(1); y(1)=d(1)/L(1); u(1)=c(1)/L(1); for?i=2:(n-1) ????L(i)=b(i)-a(i)*u(i-1); ????y(i)=(d(i)-y(i-1)*a(i))/L(i); ????u(i)=c(i)/L(i); end L(n)=b(n)-a(n)*u(n-1); y(n)=(d(n)-y(n-1)*a(n))/L(n); %“赶”的过程 x(n)=y(n); for?i=(n-1):-1:1 ????x(i)=y(i)-u(i)*x(i+1); end用matlab编程如下: function[s,y0]=spline3?(x,y,x0) %x,y为数表x0为插值点s表示插值函数y0为x0对应的插值函数值 syms?t n=length(x); %得出n for?i=1:n-1; ????h(i)=x(i+1)-x(i); end for?i=2:n-1; ????lamda(i)=h(i)/(h(i-1)+h(i)); ????miu(i)=1-lamda(i); ????g(i)=3*(lamda(i)*((y(i)-y(i-1))/h(i-1))+miu(i)*((y(i+1)-y(i))/h(i))); end g(1)=3*((y(2)-y(1))/h(1)); g(n)=3*((y(n)-y(n-1))/h(n-1)); %前边求出lamda?miu和g从而可以确定系数矩阵 miu(1)=1; miu(4)=0; lamda(n)=1; %根据第二边界条件补充两个lamda和miu的值 for?i=1:n ????beta(i)=2; end m=followup(lamda,beta,miu,g) %解出m的值从而可确定st?st为各段的插值多项式 for?i=1:n-1 ????st(i)=(t-x(i+1))^2*(h(i)+2*(t-x(i)))*y(i)/(h(i)^3)... ????+(t-x(i))^2*(h(i)+2*(x(i+1)-t))*y(i+1)/(h(i)^3)... ????+(t-x(i))^2*(t-x(i+1))*m(i+1)/(h(i)^2)... ????+(t-x(i+1))^2*(t-x(i))*m(i)/(h(i)^2); end %得到插值的结果各段的t的表达式 %接下来要将插值点x0代入首先确定x0所在的插值区间 for?i=1:n-1 ????if?(x(i)x0)(x(i+1)x0) ????????in=i; ????end end s=st(in); s=expand(s); s=collect(s,t); y0=subs(s,t,x0) %s是插值多项式y0是插值点的函数值 实验结论 用追赶法和三次样条插值法结合能更有效的解线性方程组问题的解,它比只用追赶法解方程组问题的解更简单,运算次数和计算量也大大降低,它使得计算过程过程中不会出现中间结果数量级的巨大增长和舍入误差的严重积累,这样使得计算结果的误差大大减小,从而使得解具有很高的精确度。

文档评论(0)

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

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

1亿VIP精品文档

相关文档