python - SymPy 是否正确求解此 ODE?

标签 python wolfram-mathematica sympy symbolic-math differential-equations

我正在使用 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

关于python - SymPy 是否正确求解此 ODE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57678835/

相关文章:

wolfram-mathematica - 数学 : How to use a single equation with multiple parameters to calculate any parameter

eclipse - 有没有办法在 Wolfram Workbench 2.0 中输入希腊字母?

design-patterns - 在 Mathematica 中,如何找到包含规则和列表的模式?

python - SymPy:lambdified dot() with (3,n)-array

python - 如何在 Python 中使用 Selenium?

python - PyQt5 中 QAbstractTableModel 给定行号的特定表行的背景颜色

Python 处理终端和文件中的颜色

python - 如何删除字符串的日期时间部分?

python - 将字符串转换为方程并求解

Python求解一个变量的方程