求帮忙看一下这个求常微分方程的matlab程序哪里出了问题 5
程序如下:functiony=Euler(a,b,N,af);f=y+y.^2;h=(b-a)/N;x(1)=a;y(1)=af;ym(1)=af;yh(1)=af;yr...
程序如下:
function y=Euler(a,b,N,af);
f=y+y.^2;
h=(b-a)/N;
x(1)=a;
y(1)=af;
ym(1)=af;
yh(1)=af;
yr(1)=af;
jqj(1)=af;
for i=2:N+1
y(i)=y(i-1)+h*f(x(i-1),y(i-1));%Euler法
yh(i)=yh(i-1)+(h/4)*(f(x(i-1),yh(i-1))+3*f(x(i-1)+2*h/3,yh(i-1)+2*h*f(x(i-1),yh(i-1))/3));%Heun法
ym(i)=ym(i-1)+h*(f(x(i-1)+h/2,ym(i-1)+(h/2)*f(x(i-1),ym(i-1))));%Midpoint法
x(i)=a+(i-1)*h;
k1=h*f(x(i-1),yr(i-1));
k2=h*f(x(i-1)+h/2,yr(i-1)+k1/2);
k3=h*f(x(i-1)+h/2,yr(i-1)+k2/2);
k4=h*f(x(i),yr(i-1)+k3);
yr(i)=yr(i-1)+(k1+2*k2+2*k3+k4)/6;%RungeKutta法
jqj(i)=exp(t)./(16-exp(t));
end
[x',y',ym',yh',jqj']
er=sum((y-jqj).^2)%Euler法误差
erg=sum((ym-jqj).^2)%改进Euler法误差
erh=sum((yh-jqj).^2)%Heun法误差
err=sum((yr-jqj).^2)%RungeKutta法
plot(x,y,'r',x,ym','b',x,yh','k',x,yr,'y',x,jqj,'g');
legend('Euler法','Midpoint法','Heun法','RungeKutta法','精确解'); 展开
function y=Euler(a,b,N,af);
f=y+y.^2;
h=(b-a)/N;
x(1)=a;
y(1)=af;
ym(1)=af;
yh(1)=af;
yr(1)=af;
jqj(1)=af;
for i=2:N+1
y(i)=y(i-1)+h*f(x(i-1),y(i-1));%Euler法
yh(i)=yh(i-1)+(h/4)*(f(x(i-1),yh(i-1))+3*f(x(i-1)+2*h/3,yh(i-1)+2*h*f(x(i-1),yh(i-1))/3));%Heun法
ym(i)=ym(i-1)+h*(f(x(i-1)+h/2,ym(i-1)+(h/2)*f(x(i-1),ym(i-1))));%Midpoint法
x(i)=a+(i-1)*h;
k1=h*f(x(i-1),yr(i-1));
k2=h*f(x(i-1)+h/2,yr(i-1)+k1/2);
k3=h*f(x(i-1)+h/2,yr(i-1)+k2/2);
k4=h*f(x(i),yr(i-1)+k3);
yr(i)=yr(i-1)+(k1+2*k2+2*k3+k4)/6;%RungeKutta法
jqj(i)=exp(t)./(16-exp(t));
end
[x',y',ym',yh',jqj']
er=sum((y-jqj).^2)%Euler法误差
erg=sum((ym-jqj).^2)%改进Euler法误差
erh=sum((yh-jqj).^2)%Heun法误差
err=sum((yr-jqj).^2)%RungeKutta法
plot(x,y,'r',x,ym','b',x,yh','k',x,yr,'y',x,jqj,'g');
legend('Euler法','Midpoint法','Heun法','RungeKutta法','精确解'); 展开
1个回答
展开全部
第一句
f=@(x,y) y+y.^2;
f=@(x,y) y+y.^2;
追问
改了之后报错是“找不到 'Euler' 的完全匹配项”。这是什么意思
追答
你这个是函数m文件,运行要输入参数 a,b ,N,af
你按照下面,直接将其改为脚本m文件来运行
前面加几句定义 a ,b,N和af
clear,clc;
a=0;
b=1;
N=10;
af=1/15;
f=@(x,y) y+y.^2;
h=(b-a)/N;
x(1)=a;
y(1)=af;
ym(1)=af;
yh(1)=af;
yr(1)=af;
jqj(1)=af;
for i=2:N+1
y(i)=y(i-1)+h*f(x(i-1),y(i-1));%Euler法
yh(i)=yh(i-1)+(h/4)*(f(x(i-1),yh(i-1))+3*f(x(i-1)+2*h/3,yh(i-1)+2*h*f(x(i-1),yh(i-1))/3));%Heun法
ym(i)=ym(i-1)+h*(f(x(i-1)+h/2,ym(i-1)+(h/2)*f(x(i-1),ym(i-1))));%Midpoint法
x(i)=a+(i-1)*h;
k1=h*f(x(i-1),yr(i-1));
k2=h*f(x(i-1)+h/2,yr(i-1)+k1/2);
k3=h*f(x(i-1)+h/2,yr(i-1)+k2/2);
k4=h*f(x(i),yr(i-1)+k3);
yr(i)=yr(i-1)+(k1+2*k2+2*k3+k4)/6;%RungeKutta法
jqj(i)=exp(x(i))./(16-exp(x(i)));
end
er=sum((y-jqj).^2)%Euler法误差
erg=sum((ym-jqj).^2)%改进Euler法误差
erh=sum((yh-jqj).^2)%Heun法误差
err=sum((yr-jqj).^2)%RungeKutta法
plot(x,y,'r',x,ym,'b',x,yh,'k',x,yr,'y',x,jqj,'g');
legend('Euler法','Midpoint法','Heun法','RungeKutta法','精确解');
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询