• 大小: 1KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-12-08
  • 语言: Matlab
  • 标签:

资源简介

该程序用于实现数值分析中的三次样条算法,方便加深对算法的理解

资源截图

代码片段和文件信息

function [ mlambdamuA]=Clampedsp( XY )
% m-X的维数
% lambda-由lambda(i)(i=123…n)的坐标组成的分量
% mu-由mu(i)(i=123…n)的坐标组成的分量
% A-为系数矩阵
% s(j)-为三次样条函数
% XY-由节点(xiyi)(i=123…n)的横坐标和纵坐标组成的向量
m=length(X);
lambda(1)=1;
mu(m)=1;
h=diff(X);
df=diff(Y)./diff(X);
d(1)=6*(df(1)-1/2)/h(1);
d(m)=6*(0.5*81^-0.5-df(m-1))/h(m-1);
for j=2:m-1
    lambda(j)=h(j)/(h(j-1)+h(j));
    mu(j)=h(j-1)/(h(j-1)+h(j));
    d(j)=6*(df(j)-df(j-1))/(h(j-1)+h(j));
end
mu=mu(2:end);
u=diag(mu-1);r=diag(lambda1);a=diag(2*ones(1m));
A=u+r+a;                    %求出矩阵形式的线性方程组
M=inv(A)*d‘;                %求出M值
syms x 
for j=1:m-1
    s(j)=M(j)*(X(j+1)-x)^3/(6*h(j))+M(j+1)*((x-X(j))^3/(6*h(j)))+(Y(j)-M(j)*h(j)^2/6)*(X(j+1)-x)/h(j)+(Y(j+1)-M(j+1)*h(j)^2/6)*(x-X(j))/h(j)
end
for j=1:m-1
    S(j:)=sym2poly(s(j));  %三条样条插值函数
end
%生成三次样条插值函数图象
for j=1:m-1
    x1=X(j):0.01:X(j+1);
    y1=polyval(S(j:)x1);
    plot(x1y1XY‘o‘);
    title(‘spline 三次样条插值函数图象‘);
    xlabel(‘x‘);
    ylabel(‘y‘);
    grid on;
    hold on;
end
end








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

     文件       1172  2013-11-26 21:25  三次样条程序\Clampedsp.m

     文件        285  2013-11-27 08:33  三次样条程序\huitu.m

     目录          0  2013-11-28 10:22  三次样条程序

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

                 1457                    3


评论

共有 条评论

相关资源