python - SymPy 是否正确解决了这个 ODE?
问题描述
我正在使用 Anaconda 包中的 SymPy 1.4 来评估该工具。我有以下ODE要解决:
使用 SymPy 时,我有以下代码和结果:
import sympy as sp
x=sp.Symbol('x')
y=sp.Function('y')(x)
diffeq=sp.Eq(sp.diff(y,x), (5*x**2-x*y+y**2)/x**2)
sp.dsolve(diffeq,y)
如果我在线使用 WolframAlpha,我会得到:
这是软件中的错误吗?如果是这样,我在哪里可以报告?
解决方案
我认为这些只是不同的形式,但代表了同一组解决方案(尽管可能针对积分常数的不同值)。checkodesol
您可以使用以下函数验证 SymPy 中 ODE 的解决方案:
In [9]: import sympy as sp
...: x=sp.Symbol('x')
...: y=sp.Function('y')(x)
...: diffeq=sp.Eq(sp.diff(y,x), (5*x**2-x*y+y**2)/x**2)
...: sol = sp.dsolve(diffeq,y)
In [10]: sol
Out[10]:
5⋅x
y(x) = ───────────────────────
⎛ ⎛ 2⎞⎞
2⋅tan⎝C₁ - log⎝x ⎠⎠ + 1
In [11]: checkodesol(diffeq, sol)
Out[11]: (True, 0)
您也可以使用不同的方法来求解 ODE,例如,此方法给出与 Wolfram 相同的形式:
In [12]: dsolve(diffeq, hint='separable_reduced')
Out[12]: y(x) = x⋅(2⋅tan(C₁ + 2⋅log(x)) + 1)
您可以使用以下命令查看可能的方法列表classify_ode
:
In [5]: classify_ode(diffeq)
Out[5]:
('1st_homogeneous_coeff_best',
'1st_homogeneous_coeff_subs_indep_div_dep',
'1st_homogeneous_coeff_subs_dep_div_indep',
'separable_reduced',
'lie_group',
'1st_homogeneous_coeff_subs_indep_div_dep_Integral',
'1st_homogeneous_coeff_subs_dep_div_indep_Integral',
'separable_reduced_Integral')
如果您确实想报告 SymPy 中的错误,您会在 GitHub 上打开一个问题,尽管我不认为这是一个错误: https ://github.com/sympy/sympy/issues
推荐阅读
- ios - WebKit webview (WKwebview) 无法加载应用目录之外的资源
- sql - 将列连接到 Apache Spark DataFrame 中的列列表
- stm32 - STM32 SPI DMA 在外部中断处传输
- ios - UserDefaults.standard.object(key) 始终为零
- documentation - 如何 semver 版本控制文档更新?
- sql - SQL Server 在条件中使用文本文件
- sql - SQLite - 对选择中的案例表达式中的值求和
- python - 使用父目录步骤创建相对路径
- java - 尝试导入新证书时,Keytool 别名不存在,但表示存在现有条目
- html - 组件的角度设置宽度作为输入