**********************本文章由计算机专业的孙旭编写,复制请谨慎
function Fun()
clc;
X=[1 2];
Y=[1 9];
Z=[4 12]
x0=1.65;
Hermite(X,Y,Z);
end
%子函数
function Hermite(X,Y,Z,x0)
len_x=length(X);
len_y=length(Y);
len_z=length(Z);
if (len_x~=len_y && len_y~=len_z)
disp('你输入的维度不相等');
return;
else
syms x;
p=0;
for i=1:1:len_x
q=1;
for j=1:len_x
if j~=i
q=q*(x-X(j))/(X(i)-X(j));
end
end
f=diff(q,x);
a=(1-2*(x-X(i))*f)*q*q;
b=(x-X(i))*q*q;
p=p+Y(i)*a+Z(i)*b;
end
%化简多项式
simplify(p);
if nargin==4
disp('所求的埃尔米特插值函数的值为');
p0=subs(p,'x',x0);
vpa(p0,6),
else
disp('所求的埃尔米特插值多项式为: ');
p=collect(p);
p=vpa(p,6),
end
end
end
Matlab Hermite(2n+1)插值
最新推荐文章于 2024-08-01 14:06:10 发布