用matlb实现计算
方法步骤
1:建立m脚本,其代码如下:
function [f,f0] = Hermite(x,y,y_1,x0)
%输入x,y,y_1,x0,4个参数
%求已知数据点的埃尔米特插值多项式
%已知数据点的x坐标向量:x
%已知数据点的x坐标向量:y
%已知数据点的x坐标向量:y_1
%插值点的x坐标:x0
%求得的埃尔米特插值多项式:f
%x0处的插值:f0
syms t;%定义符号变量t
f = 0.0;
if(length(x) == length(y))
if(length(y) == length(y_1))
n = length(x);
else
disp('y和y的导数的维数不相等!');
return; %提起终止程序运行
end
else
disp('x和y的维数不相等!');
return;
end %检错
for i=1:n %赋初值
h = 1.0;
a = 0.0;
for j=1:n
if( j ~= i)
h = h*(t-x(j))^2/((x(i)-x(j))^2);
a = a + 1/(x(i)-x(j));
end
end
f = f + h*((x(i)-t)*(2*a*y(i)-y_1(i))+y(i));%计算插值多项式
end
f0=subs(f,'t',x0); %计算插值点的函数值2:输入对应数据求解可得答案。
方法步骤
1:建立m脚本,其代码如下:
function [f,f0] = Hermite(x,y,y_1,x0)
%输入x,y,y_1,x0,4个参数
%求已知数据点的埃尔米特插值多项式
%已知数据点的x坐标向量:x
%已知数据点的x坐标向量:y
%已知数据点的x坐标向量:y_1
%插值点的x坐标:x0
%求得的埃尔米特插值多项式:f
%x0处的插值:f0
syms t;%定义符号变量t
f = 0.0;
if(length(x) == length(y))
if(length(y) == length(y_1))
n = length(x);
else
disp('y和y的导数的维数不相等!');
return; %提起终止程序运行
end
else
disp('x和y的维数不相等!');
return;
end %检错
for i=1:n %赋初值
h = 1.0;
a = 0.0;
for j=1:n
if( j ~= i)
h = h*(t-x(j))^2/((x(i)-x(j))^2);
a = a + 1/(x(i)-x(j));
end
end
f = f + h*((x(i)-t)*(2*a*y(i)-y_1(i))+y(i));%计算插值多项式
end
f0=subs(f,'t',x0); %计算插值点的函数值
2:输入对应数据求解可得答案。