You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MATLAB中求解含dx和dy的微分方程?求解遇阻求助

解决MATLAB求解微分方程$(3xy²)dx + (2x²y)dy = 0$的问题

问题根源

你的代码错误在于将dy、dx定义为独立符号变量,并用diff(y)、diff(x)赋值——当x、y是独立符号变量时,diff(y)、diff(x)会被MATLAB解析为1,代入后方程变成代数方程而非微分方程,导致dsolve报错。

正确实现方案

方法1:转为$\frac{dy}{dx}$标准形式求解

原方程可整理为一阶微分方程的标准形式:
$$\frac{dy}{dx} = -\frac{3y}{2x}$$
对应MATLAB代码:

syms y(x)
dy = diff(y, x);
eqn = dy == -3*y/(2*x);
sol = dsolve(eqn)

运行后得到通解:
$$y(x) = C_1 x^{-3/2}$$
将其整理为你给出的形式:两边平方得$y^2 = C_2 x{-3}$,即$x3 y^2 = C$,进一步开5次方后就是$C = (x^3 y2){1/5}$(常数形式可灵活转换,本质一致)。

方法2:保留全微分形式求解

如果想贴合原方程的写法,可将dy替换为diff(y,x)*dx,再两边除以dx($dx≠0$),代码如下:

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

得到的通解与方法1一致,若需整理为隐式形式,可执行:

syms C
implicit_eqn = x^3 * y(x)^2 == C;

核心注意事项

  • 必须将y定义为x的函数y(x),让MATLAB识别这是微分方程而非代数方程。
  • 原方程中的dy、dx是微分关系,并非独立符号变量,对应MATLAB中的diff(y,x)(即$\frac{dy}{dx}$)和1($\frac{dx}{dx}$)。

内容的提问来源于stack exchange,提问作者Karen Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 22:42:04