问题
using symbolic calculation in Python I have
import sympy
from cmath import *
from mpmath import arg, cplot
z = sympy.symbols('z')
fhandle='z**2'
g = lambda w: sympy.sympify(fhandle).evalf(subs={z: w})
g(1+2j)
# Returns: -3.0 + 4.0*I
# hence the next command fails, because I is expected to be 1j
cplot(g, [-3,3], [-3,3])
Crawling the web I only found this which will fix the matter for the print
command, but will not work with cplot.
Any suggestions?
回答1:
One option is to wrap the result by calling complex
:
>>> def g(w):
... return complex(sympy.sympify(fhandle).evalf(subs={z: w}))
...
>>> g(1+2j)
(-3+4j)
After which mpmath.cplot(g, [-3, 3], [-3, 3])
produces
Note that I've used a named function here. There's not much point to using a lambda
if you're going to immediately give it a name anyhow.
来源:https://stackoverflow.com/questions/16716786/complex-numbers-convert-sympy-to-numeric-i-to-1j