如何应用matlab求解微分方程组的特解
2个回答
展开全部
数值求解法:先建立个函数文件里面写上方程组,如:
function
f=weifen(t,x)
a=3.5;d=3;b=0;f=0;
c=-0.7;e=-0.5;
f=[(a+b*x(1)+c*x(2)),(d+e*x(1)+f*x(2))]';
这里的f表示方程组dx/dt=a+bx+cy;dy/dt=d+ex+fy
然后用ode45函数求数值解即可代入初值
[t,x]=ode45('weifen',[0,6],[20,19]);
这里的[0,6],[20,19]表示求解区间为(0,6),初值x(0)=20,y(0)=19
通过画图来调用结果
plot(t,[x(:,1),x(:,2)]);legend('A','B');
x(:,1),x(:,2)分别表示x和y的一连串数值
解析解法:用dsolve函数解出,如:
s=dsolve('Dx=y','Dy=-x','y(0)=1','x(0)=0')
D表示d/dt,该函数前两个变量是方程,后两个变量是定解条件
function
f=weifen(t,x)
a=3.5;d=3;b=0;f=0;
c=-0.7;e=-0.5;
f=[(a+b*x(1)+c*x(2)),(d+e*x(1)+f*x(2))]';
这里的f表示方程组dx/dt=a+bx+cy;dy/dt=d+ex+fy
然后用ode45函数求数值解即可代入初值
[t,x]=ode45('weifen',[0,6],[20,19]);
这里的[0,6],[20,19]表示求解区间为(0,6),初值x(0)=20,y(0)=19
通过画图来调用结果
plot(t,[x(:,1),x(:,2)]);legend('A','B');
x(:,1),x(:,2)分别表示x和y的一连串数值
解析解法:用dsolve函数解出,如:
s=dsolve('Dx=y','Dy=-x','y(0)=1','x(0)=0')
D表示d/dt,该函数前两个变量是方程,后两个变量是定解条件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ode方程组可以通过matlab的ode系列命令进行求解(ode23,ode45,ode15s,ode113,......),不同的算法代表不同的积分方法,具有不同的精度,适用于不同的场合,具体可参考有关simulink求解器的选择方法,对于本题,若以ode45命令为例进行求解:
①
新建函数文件:f.m
function
dx=f(t,x)
%
x=[
x
]
%
[
y
];
dx=[
7.3*10^5*(x(1)/x(2))-1.88*10^4*(x(1)^2/x(2));
7.3*10^5-1.88*10^4*x(1)+10.69*x(1)*sqrt(2.1*10^6-x(2))
];
保存。
②
在命令行运行以下命令:
[t,x]=ode45(@f,[0
10],[206.5
0.099])
(由于题设未给出,这里假定仿真10s,对应第二项
[0
10],即从0s至10s)
③
绘图:
plot(t,x(:,1))
%绘制x(t)图像
plot(t,x(:,2))
%绘制y(t)图像
补充:1)本题函数的刚性较大,求解时可能出现复数,请校核函数表达式和初值,并选择恰当的积分方法;2)其它ode命令的使用方法类同,具体请参见help
①
新建函数文件:f.m
function
dx=f(t,x)
%
x=[
x
]
%
[
y
];
dx=[
7.3*10^5*(x(1)/x(2))-1.88*10^4*(x(1)^2/x(2));
7.3*10^5-1.88*10^4*x(1)+10.69*x(1)*sqrt(2.1*10^6-x(2))
];
保存。
②
在命令行运行以下命令:
[t,x]=ode45(@f,[0
10],[206.5
0.099])
(由于题设未给出,这里假定仿真10s,对应第二项
[0
10],即从0s至10s)
③
绘图:
plot(t,x(:,1))
%绘制x(t)图像
plot(t,x(:,2))
%绘制y(t)图像
补充:1)本题函数的刚性较大,求解时可能出现复数,请校核函数表达式和初值,并选择恰当的积分方法;2)其它ode命令的使用方法类同,具体请参见help
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询