如何在matlab中用dx和dy求解微分方程

cu6pst1q  于 11个月前  发布在  Matlab
关注(0)|答案(2)|浏览(172)

我在试着解这个方程:(3xy^2)dx +(2x^2y)dy = 0在matlab中,但我不能让它工作。你能帮帮我吗这是我目前为止的代码。
dx和dy在matlab中不显示,因为ML认为它们是1。然后dsolve返回一个错误。
下面是我的代码:

syms dy dx y x

dy = diff(y)
dx = diff(x)

eqn = 3*x*y^2*dx + 2*x^2*y*dy == 0

dsolve(eqn)

字符串
我试着使用dsolve。
编辑:答案是C =(x^3y^2)^(1/5)

ie3xauqp

ie3xauqp1#

假设dxdy实际上表示xy相对于自变量(如时间)的导数,则您需要定义您相对于out所依赖的自变量的导数。这可以是沙丘使用abstract symbolic function

syms x(t) y(t);

字符串
然后sym/diff将隐式地理解相对于以下方面的差异:

dx = diff(x); % equivalent to diff(x(t), t)
dy = diff(y); % equivalent to diff(y(t), t)


最后,你可以像以前一样使用你的原始微分方程dsolve

eqn = 3*x*y^2*dx + 2*x^2*y*dy == 0;
dsolve(eqn)


这将返回两个解,0C1/x(t)^(3/2)(常量C1是因为您没有定义任何初始条件)。
另一方面,如果y实际上是自变量x而不是时间的函数,则需要执行类似于@duffymo建议的操作:

syms y(x);
dydx = diff(y);
eqn = 3*x*y^2 + 2*x^2*y*dydx == 0;
dsolve(eqn)

vtwuwzda

vtwuwzda2#

将其重新排列为如下所示:

y' = 3xy^2/2x^2y

字符串
这是一个可分离的、非线性的、一阶常微分方程。
Here是Wolfram Alpha的解决方案。

相关问题