📄 复件 lagrange.m
字号:
function [y,yy]=lagrange(a,b)%the proms doesn't work steady,no reason found yet
%拉格朗日插值
[m,n]=size(a);
[m1,n1]=size(b);
if m==m1 && n==n1
x=sym('x');
s=cell(1,n);
for i=1:n
s{1,i}=1;
end
%构造L(x)
for i=1:n
for j=1:n
if (i>j)||(i<j)
c=x-a(1,j);
s{1,i}=s{1,i}.*c./(a(1,i)-a(1,j));
end
end
l(1,i)=b(1,i).*s{1,i};
end
y=simplify(sum(l));
else
error('dimension of matrix mismatch');
end
%画图
alpha=min(a)-abs(min(a)).*0.5;
beta=max(a)+abs(max(a)).*0.5;
xx=alpha:(beta-alpha)./50:beta;
yy=(subs(y,x,xx));
plot(b,a,'marker','o','color','r');
hold on;
plot(xx,yy,'linestyle',':','color','blue');
axis square
%是曲线尽可能以适当比例显示
%xalpha=alpha-abs(alpha).*0.5;
%xbeta=beta+abs(beta).*0.5;
%yalpha=min(yy);
%ybeta=max(yy);
%r=ybeta./xbeta;
%ybetaa=ybeta./r;
%set(gca,'dataaspectratio',[1,1,1],'xlim',[xalpha,xbeta],'ylim',[-ybetaa,ybetaa]);
%怎样使syms x中的变量x可以赋值给矩阵
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -