如何用matlab求解微分方程组

如题所述

使用符号运算工具。
首先定义变量符号
syms
s
x
t;
使用字符串定义公式
eq1
=
'diff(x,
t)
=
0.11*s*x/(0.06*x+s)';
eq2
=
'diff(s,
t)
=
(-1)*0.029*x-0.234*s/(0.006*x+s)-s/(30*s^2+300*s+0.03)';
接下来是求解
比如现在要求解s,下面的代码可以给出s的表达式
solution
=
solve(eq1,
eq2,
s);
接下来求值
首先给变量赋值
x
=
1;
t
=
1;
之后运行
result
=
eval(solution);
可以求出解。
我现在写出的代码可能有错误,不过思路是这样的。我没调试。详细情况可以搜索
matlab
符号运算。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-08
这说明此微分方程没有显示解,应用数值方法求解,例如ode45等函数
就一个例子(选自matlab帮助文档)
解入下微分方程组
1,建立方程组函数
function
dy
=
rigid(t,y)dy
=
zeros(3,1);
%
a
column
vectordy(1)
=
y(2)
*
y(3);dy(2)
=
-y(1)
*
y(3);dy(3)
=
-0.51
*
y(1)
*
y(2);
2,求解并绘图
[T,Y]
=
ode45(@rigid,[0
12],[0
1
1]);plot(T,Y(:,1),'-',T,Y(:,2),'-.',T,Y(:,3),'.')
结果
相似回答