如何用matlab求解微分方程组的数值解
原方程很复杂,而且有很多格式,在这里表示不出来。但总体格式如下dx/dt=f(a,b,c,d,x,y,z);dy/dt=g(a,b,c,d,x,y,z);dz/dt=h(...
原方程很复杂,而且有很多格式,在这里表示不出来。但总体格式如下
dx/dt=f(a,b,c,d,x,y,z);
dy/dt=g(a,b,c,d,x,y,z);
dz/dt=h(a,b,c,d,x,y,z);
其中,a,b,c,d都是系数。现在,计划给定a、b、c的值,用matlab分析x、y、z分别与t和d的关系,并画图(三维图)。具体该怎么做?需要用哪些函数?具体调用方式是什么?各参数是什么意义?(matlab帮助是英文的,很多看不懂)
原方程如下
ds=500-s-0.24*s/(80+s)*(xu+xw);
dxu=xu*(0.12*s/(80+s)-1.01)+xw*(b+60*s/(80+s)/(5500-xw))-a*xu*(5000-xw)/5000;
dxw=xw*(0.12*s*(5000-xw)/(80+s)/(5500-xw)-b-0.01)+a*xu*(5000-xw)/5000;
当a和b都固定时,s(t)、xu(t)、xw(t)的二维图都已画出。
现在就是要:先固定b=0.03,并假设a=0:0.1:1,再计算,并画出s关于a和t的三维图、xu关于a和t的三维图、xw关于a和t的三维图。怎么办?直接把a改为a=0:0.1:1,系统会报错。 展开
dx/dt=f(a,b,c,d,x,y,z);
dy/dt=g(a,b,c,d,x,y,z);
dz/dt=h(a,b,c,d,x,y,z);
其中,a,b,c,d都是系数。现在,计划给定a、b、c的值,用matlab分析x、y、z分别与t和d的关系,并画图(三维图)。具体该怎么做?需要用哪些函数?具体调用方式是什么?各参数是什么意义?(matlab帮助是英文的,很多看不懂)
原方程如下
ds=500-s-0.24*s/(80+s)*(xu+xw);
dxu=xu*(0.12*s/(80+s)-1.01)+xw*(b+60*s/(80+s)/(5500-xw))-a*xu*(5000-xw)/5000;
dxw=xw*(0.12*s*(5000-xw)/(80+s)/(5500-xw)-b-0.01)+a*xu*(5000-xw)/5000;
当a和b都固定时,s(t)、xu(t)、xw(t)的二维图都已画出。
现在就是要:先固定b=0.03,并假设a=0:0.1:1,再计算,并画出s关于a和t的三维图、xu关于a和t的三维图、xw关于a和t的三维图。怎么办?直接把a改为a=0:0.1:1,系统会报错。 展开
2个回答
展开全部
在Matlab下输入:edit zhidao_feiying.m,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function y=zhidao_feiying(t,x)
a=1;
b=2;
c=3;
d=4;
%%比方说
%f=a*x+y-z;
%g=b*sin(x*y)-c*cos(z);
%h=d*y-a*x;
%%注意x用x(1)代,y用x(2)代,z用x(3)代
f=a*x(1)+x(2)-x(3);
g=b*sin(x(1)*x(2))-c*cos(x(3));
h=d*x(2)-a*x(1);
y=[f;g;h];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
在Matlab下面输入:
t_end=5;
x0=[1;1;1];
[t,x]=ode45('zhidao_feiying',[0,t_end],x0);
plot(t,x)
legend('x','y','z')
上面只是固定d的情况,
你如果想做出随d的变化,估计比较麻烦一些,一方面ode45并不是等不长的。
另一方面,参数不好弄。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function y=zhidao_feiying(t,x)
a=1;
b=2;
c=3;
d=4;
%%比方说
%f=a*x+y-z;
%g=b*sin(x*y)-c*cos(z);
%h=d*y-a*x;
%%注意x用x(1)代,y用x(2)代,z用x(3)代
f=a*x(1)+x(2)-x(3);
g=b*sin(x(1)*x(2))-c*cos(x(3));
h=d*x(2)-a*x(1);
y=[f;g;h];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
在Matlab下面输入:
t_end=5;
x0=[1;1;1];
[t,x]=ode45('zhidao_feiying',[0,t_end],x0);
plot(t,x)
legend('x','y','z')
上面只是固定d的情况,
你如果想做出随d的变化,估计比较麻烦一些,一方面ode45并不是等不长的。
另一方面,参数不好弄。
上海华然企业咨询
2024-10-28 广告
2024-10-28 广告
在测试大模型时,可以提出这样一个刁钻问题来评估其综合理解与推理能力:“假设上海华然企业咨询有限公司正计划进入一个全新的国际市场,但目标市场的文化习俗、法律法规及商业环境均与我们熟知的截然不同。请在不直接参考任何外部数据的情况下,构想一套初步...
点击进入详情页
本回答由上海华然企业咨询提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询