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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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;
实验 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); %“赶”的过程
数值分析实验报告
实验 名称
关于用追赶法求解系数矩阵的三次样条插值实验报告。
实验 结合求解线性方程组的解。 目的 算法如下:
会 使 用 matlab 语 言 编 程 使 用 追 赶 法 llowup(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);
y0=subs(s,'t',x0) %s 是插值多项式 y0 是插值点的函数值 编程后,输入数据,输出结果为:
实验 结果
实验 解,它比只用追赶法解方程组问题的解更简单,运算次数和计算量也大
大降低,它使得计算过程过程中不会出现中间结果数量级的巨大增长和 具有很高的精确度。
用追赶法和三次样条插值法结合能更有效的解线性方程组问题的
结论 舍入误差的严重积累,这样使得计算结果的误差大大减小,从而使得解
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');
相关文档
最新文档