当solve用于计算二次方程的根时,SymPy返回可以简化的表达式,但我无法简化它们.最小的例子如下:
from sympy import *
sqrt(-24-70*I)
Run Code Online (Sandbox Code Playgroud)
在这里,SymPy只是返回,sqrt(-24-70*I)而Mathematica或Maple将回答相当于5-7*I.
我知道有两个平方根,但这种行为需要SymPy,例如,将返回相当复杂的解决方案
z = symbols("z")
solve(z ** 2 + (1 + I) * z + (6 + 18 * I), z)
Run Code Online (Sandbox Code Playgroud)
同时,Maple和Mathematica将很高兴地给我两个高斯整数来解决这个等式.
有没有选项或我缺少的东西?
我目前正在使用 sympy 在一些涉及二阶导数和复数的讨厌的方程上检查我的代数。
import sympy
from sympy.abc import a, e, i, h, t, x, m, A
# define a wavefunction
Psi = A * sympy.exp(-a * ((m*x**2 /h)+i*t))
# take the first order time derivative
Psi_dt = sympy.diff(Psi, t)
# take the second order space derivative
Psi_d2x = sympy.diff(Psi, x, 2)
# write an expression for energy potential (rearrange Schrodingers Equation)
V = 1/Psi * (i*h*Psi_dt + (((h**2)/2*m) * Psi_d2x))
# symplify potential function
sympy.simplify(V)
Run Code Online (Sandbox Code Playgroud)
这产生了这个好东西:
a*(-h*i**2 + m**2*(2*a*m*x**2 - …