当利用matlab解决拉格朗日插值是总是遇到这样的问题function s=Lagrange(x,y,x0)|Error:Function definitions are not permitted at the prompt or in scripts.
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/17 00:41:34
当利用matlab解决拉格朗日插值是总是遇到这样的问题function s=Lagrange(x,y,x0)|Error:Function definitions are not permitted at the prompt or in scripts.
当利用matlab解决拉格朗日插值是总是遇到这样的问题
function s=Lagrange(x,y,x0)
|
Error:Function definitions are not permitted at the prompt or in scripts.
当利用matlab解决拉格朗日插值是总是遇到这样的问题function s=Lagrange(x,y,x0)|Error:Function definitions are not permitted at the prompt or in scripts.
function main()
clear;clc;close all
x=linspace(-5,5,11);
y=1./(1+x.^2) ;x0=[0.3 0.5];
f=Language(x,y,x0);
function f = Language(x,y,x0)
%求已知数据点的拉格朗日插值多项式
%已知数据点的x坐标向量: x
%已知数据点的y坐标向量: y
%插值点的x坐标: x0
%求得的拉格朗日插值多项式或在x0处的插值: f
x=[0.0 0.4 0.8 1.2 1.6];%input x data(可替换为自己的数据)
y=[0 0.428392 0.742101 0.910314 0.970348];%input y data(可替换为自己的数据)
x0=[0.3 0.5];%input x0 data(可替换为自己的数据)
syms t l;
if(length(x) == length(y))
n = length(x);
else
disp('x和y的维数不相等!');
return; %检错
end
p=sym(0);
for (i=1:n)
l=sym(y(i));
for(k=1:i-1)
l=l*(t-x(k))/(x(i)-x(k));
end;
for(k=i+1:n)
l=l*(t-x(k))/(x(i)-x(k));
end;
p=p+l;
end
simplify(p);%简化多项式
f = subs (p,'t',x0); %计算插值点的函数值
f = vpa(f,6); %将插值多项式的值化成6位精度的小数
end