很长的标题,但我认为最好是非常翔实的。。。
我有很长的表达式,使用符号,如%I、%e、log、z1和z2,夹在双引号之间,例如,
"(4*z1*z2*%e^(z2^2+z1^2)*((%e^z1^2-%e^z2^2)^2*(96*%e^(13*(((-(202907687053026635*%i*sqrt(1037*sqrt(23)*%i+1463)*(log(9)*sqrt(2)*sqrt(7)*sqrt(1037*sqrt(23)*%i+....."X
(在十六进制编辑器中查看文件时,最后一个X不是X,而是十六进制0A-不管是什么-不要认为在ascii图表上查找它会对它有很大帮助)
我想试试python/sympy/numpy/scipy/。。。合并取代了其他支持CAS的软件,但我不知道如何做到这一点,至少是从一个一致的“包”中。我看到了scipy教程中的片段,或者numpy中的片段,等等。
我想取上面这样一个表达式的Laurent级数-它是没有浮点数的精确表达式。
希望这是一个容易理解的请求,
最美好的祝福。
编辑-将Python更新为3.6-仍然是AttributeError
因此,我在将符号exp等转换为可接受的字符串时看到了一些错误。这似乎效果更好
但是
“ex”仍然没有被视为
(py3_kernel) sbh@sbh-MacBookPro ~ $ ipython
Python 3.6.3 (default, Oct 6 2017, 08:44:35)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import sympy as s
In [2]: import numpy as np
In [3]: from numpy import *
In [4]: from sympy import *
In [5]: from sympy.utilities.lambdify import lambdify, implemented_function, lambdastr
In [6]: with open('c.txt', 'r') as myfile:
...: d=myfile.read().replace('\n', '').replace('%i','I').replace('%e','exp').replace('^','**
...: ').replace('exp**','exp')
...:
In [7]: d
Out[7]: '"(4*z1*z2*exp(z2**2+z1**2)*sqrt(1037*sqrt(23)*I+1463))+log(1/2)+(sqrt(-I)*z1)/(sqrt(3)*23**(1/4))"'
In [8]: z1,z2 = s.symbols('z1,z2', real=True)
In [9]: ex = s.sympify(d)
In [10]: ex
Out[10]: '(4*z1*z2*exp(z2**2+z1**2)*sqrt(1037*sqrt(23)*I+1463))+log(1/2)+(sqrt(-I)*z1)/(sqrt(3)*23**(1/4))'
In [11]: type(ex)
Out[11]: str
In [12]: ex.subs({z1:0, z2:1})
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-12-63eab202c7b1> in <module>()
----> 1 ex.subs({z1:0, z2:1})
AttributeError: 'str' object has no attribute 'subs'