资源简介
该程序用于实现数值分析中的三次样条算法,方便加深对算法的理解
代码片段和文件信息
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
评论
共有 条评论