已知一阶二元微分方程组dx/dt=ax-bxy;dy/dt=cx+dxy;并且已知多组t,x,y数据;如何用matlab求出参数a,b,c,d 70
2个回答
展开全部
经过上面的处理后,利用matlab的ode45来求解常微分方程
建立导函数文件fun.m,内容为:
function dzdt=fun(t,z)
a=1;b=-2;c=3;d=-4;m=5;%这些参数我随意设的,根据需要自己修改
dzdt=[a*z(1)*(1-z(1)/m)+b*z(1)*z(2);
c*z(2)+d*z(1)*z(2)];
设定积分区间
TSpan=[0,10]';%自己确定
设定初值
Z0 = [1,-1]';%自定
用ode45求解
[T,Z]=ode45(@fun,TSpan,Z0);
作图
plot(T,Z(:,1),T,Z(:,2))
蓝色的是x(t),绿色的是y(t)
建立导函数文件fun.m,内容为:
function dzdt=fun(t,z)
a=1;b=-2;c=3;d=-4;m=5;%这些参数我随意设的,根据需要自己修改
dzdt=[a*z(1)*(1-z(1)/m)+b*z(1)*z(2);
c*z(2)+d*z(1)*z(2)];
设定积分区间
TSpan=[0,10]';%自己确定
设定初值
Z0 = [1,-1]';%自定
用ode45求解
[T,Z]=ode45(@fun,TSpan,Z0);
作图
plot(T,Z(:,1),T,Z(:,2))
蓝色的是x(t),绿色的是y(t)
追问
不行的。。。
追答
经过上面的处理后,利用matlab的ode45来求解常微分方程
建立导函数文件fun.m,内容为:
function dzdt=fun(t,z)
a=1;b=-2;c=3;d=-4;m=5;%这些参数我随意设的,根据需要自己修改
dzdt=[a*z(1)*(1-z(1)/m)+b*z(1)*z(2);
c*z(2)+d*z(1)*z(2)];
设定积分区间
TSpan=[0,10]';%自己确定
设定初值
Z0 = [1,-1]';%自定
用ode45求解
[T,Z]=ode45(@fun,TSpan,Z0);
作图
plot(T,Z(:,1),T,Z(:,2))
蓝色的是x(t),绿色的是y(t)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |