matlab中用龙格库塔和迭代法算微分方程 答案好可加分,请高手指点一下

没有大侠帮助下吗?
2025-02-26 19:53:05
推荐回答(1个)
回答1:

编写一个名为lagrange.m的M文件:
function y=lagrange(x0,y0,x);
n=length(x0);m=length(x);
for i=1:m
z=x(i);
s=0.0;
for k=1:n
p=1.0;
for j=1:n
if j~=k
p=p*(z-x0(j))/(x0(k)-x0(j));
end
end
s=p*y0(k)+s;
end
y(i)=s;
end

%拉格朗日插值法
%x=[1 3 2]; x=[0.1 0.15 0.25 0.40 0.50 0.57 0.70 0.85 0.93 1.0];
%y=[1 2 -1];y=[0.904837 0.860708 0.778801 0.670320 0.606531 0.565525
%0.496585 0.427415 0.394554 0.367879];
%p=1.5;p=0.63
function Lagelangrichazhifa(x,y,p)
z=0;
s=1;
A=size(x);
n=A(2);
for i=2:n
s=s*(p-x(i))/(x(1)-x(i));
end
L(1)=s*y(1);
L(1);
for k=2:n
s=1;
for i=1:k-1
s=s*(p-x(i))/(x(k)-x(i));
end
s;
for i=k+1:n
s=s*(p-x(i))/(x(k)-x(i));
end
L(k)=s*y(k);
end
for i=1:n
z=z+L(i);
end
display('该处应用拉格朗日插值法得到插值为:')
z%调用函数Lagelangrichazhifa(x,y,p):x=[0.1 0.15 0.25 0.40 0.50 0.57 0.70 0.85 0.93 1.0];
y=[0.904837 0.860708 0.778801 0.670320 0.606531 0.565525 0.496585 0.427415 0.394554 0.367879];
p=0.63;
Lagelangrichazhifa(x,y,p)