用matlab求微分方程 y’=-y2+x, y(0)=1的数值解,怎么做啊。。。。
1个回答
展开全部
function [x,y]=Classical_RK4(odefun,xspan,y0,h,varargin)
x=xspan(1):h:xspan(2);
y(1)=y0;
for k=1:length(x)-1
K1=feval(odefun,x(k),y(k),varargin{:});
K2=feval(odefun,x(k)+h/2,y(k)+h/2*K1,varargin{:});
K3=feval(odefun,x(k)+h/2,y(k)+h/2*K2,varargin{:});
K4=feval(odefun,x(k)+h,y(k)+h*K3,varargin{:});
y(k+1)=y(k)+h/6*(K1+K2+K3+K4);
end
x=x';y=y';
采用经典4阶龙格库塔方法计算,编写function函数,调用如下:
f=@(x,y)-y^2+x;
[x,y]=Classical_RK4(f,[0,5],1,0.1);
plot(x,y,'--*')
x=xspan(1):h:xspan(2);
y(1)=y0;
for k=1:length(x)-1
K1=feval(odefun,x(k),y(k),varargin{:});
K2=feval(odefun,x(k)+h/2,y(k)+h/2*K1,varargin{:});
K3=feval(odefun,x(k)+h/2,y(k)+h/2*K2,varargin{:});
K4=feval(odefun,x(k)+h,y(k)+h*K3,varargin{:});
y(k+1)=y(k)+h/6*(K1+K2+K3+K4);
end
x=x';y=y';
采用经典4阶龙格库塔方法计算,编写function函数,调用如下:
f=@(x,y)-y^2+x;
[x,y]=Classical_RK4(f,[0,5],1,0.1);
plot(x,y,'--*')
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询