• 大小: 1KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-07-10
  • 语言: 其他
  • 标签: 三弯矩  matlab  

资源简介

三弯矩方法的三次样条插值,可以直接运行,移植性强,改成自己的数据就行,学习数值分析这门课的时候自己一行一行写的,注释详细,与内置函数有对比,结果一致。

资源截图

代码片段和文件信息

function [S] = swanju( xff1af1b )
% swanju  第一种边界条件的三弯矩方法:
%   此处显示详细说明
% x 为自变量x
% f 为x对应的函数值f(xi)
% f1a为f在左端点的一阶导数值
% f1b为f在右端点的一阶导数值
syms X;
n = length(x);
h = diff(x);
ff = diff(f)./h;    %ff表示三弯矩方法中的f(x(i),x(i+1));
mu(11:n-2) = h(11:n-2)./(h(11:n-2)+h(12:n-1));
lambda(12:n-1) = 1-mu(11:n-2);
mu(1n-1) = 1;        %μ最后一位为1 
lambda(11) = 1;    %λ第一位为1
d = 6./(h(11:n-2)+h(12:n-1)).*(ff(12:n-1)-ff(11:n-2));
d0 = 6/h(1)*(ff(1)-f1a);      %计算d0
dn = 6/h(n-1)*(f1b-ff(n-1));    %计算dn
d = [d0ddn];
r(1) = 2;
z(1) = d(1);
for i=2:n                 %追
    l(i) = mu(i-1)/r(i-1);
    r(i) = 2-l(i)*lambda(i-1);
    z(i) = d(i)-l(i)*z(i-1);   
end
m(n)=z(n)/r(n);
for j=n-1:-1:1          %赶
    m(j) = (z(j)-lambda(j)*m(j+1))/r(i);
end
for j=2:1:n        %讲求得的m带入书80页式4.7.2,求得S(x)
    S(j-1)=vpa(((x(j)-X).^3)*m(j-1)/6/h(j-1)+((X-x(j-1)).^3)*m(j)/6/h(j-1)+(f(j-1)-m(j-1)*(h(j-1).^2)/6)*(x(j)-X)/h(j-1)+(f(j)-m(j)*(h(j-1).^2)/6)*(X-x(j-1))/h(j-1)2);
    fprintf(‘s(%d)=%1.2f‘j-1);
    pretty(collect(S(j-1))) %输出方程形式
end
    
end


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1194  2019-12-11 09:07  三弯矩方法的三次样条插值\swanju.m

     文件        382  2019-12-11 09:43  三弯矩方法的三次样条插值\useswanju.m

     目录          0  2019-12-12 21:27  三弯矩方法的三次样条插值

----------- ---------  ---------- -----  ----

                 1576                    3


评论

共有 条评论