Python 无法在sympy中绘制d(e^-|t |)/dt的傅里叶变换

Python 无法在sympy中绘制d(e^-|t |)/dt的傅里叶变换,python,plot,sympy,Python,Plot,Sympy,我正在使用sympy计算 -exp(-Abs(t))*sign(t) 像这样 import sympy as sp t = sp.Symbol('t', real=True) o = sp.Symbol('o', real=True) temp = sp.im(sp.fourier_transform(sp.exp(-sp.Abs(t)), t, o)) print(temp) 哪个会回来 4*pi*o/(4*pi**2*o**2 + 1) 现在我想通过调用 sp.plotting.plo

我正在使用
sympy
计算

-exp(-Abs(t))*sign(t)
像这样

import sympy as sp
t = sp.Symbol('t', real=True)
o = sp.Symbol('o', real=True)
temp = sp.im(sp.fourier_transform(sp.exp(-sp.Abs(t)), t, o))
print(temp)
哪个会回来

4*pi*o/(4*pi**2*o**2 + 1)
现在我想通过调用

sp.plotting.plot(temp, (t,1,10))
这会导致一个错误

/home/somename/miniconda3/lib/python3.6/site-packages/sympy/plotting/experimental_lambdify.py:232: UserWarning: The evaluation of the expression is problematic. We are trying a failback method that may still work. Please report this as a bug.
  warnings.warn('The evaluation of the expression is'
Traceback (most recent call last):
  File "/home/somename/miniconda3/lib/python3.6/site-packages/sympy/plotting/experimental_lambdify.py", line 194, in __call__
    result = complex(self.lambda_func(args))
  File "/home/somename/miniconda3/lib/python3.6/site-packages/sympy/core/expr.py", line 244, in __complex__
    return complex(float(re), float(im))
  File "/home/somename/miniconda3/lib/python3.6/site-packages/sympy/core/expr.py", line 239, in __float__
    raise TypeError("can't convert expression to float")
TypeError: can't convert expression to float

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "sympy_analysis.py", line 153, in <module>
    main()
  File "sympy_analysis.py", line 75, in main
    sp.plotting.plot(sp.im(sp.fourier_transform(sp.diff(EXP(1,1),t), t, o)), (t,1,10))
  File "/home/somename/miniconda3/lib/python3.6/site-packages/sympy/plotting/plot.py", line 1295, in plot
    plots.show()
  File "/home/somename/miniconda3/lib/python3.6/site-packages/sympy/plotting/plot.py", line 196, in show
    self._backend.show()
  File "/home/somename/miniconda3/lib/python3.6/site-packages/sympy/plotting/plot.py", line 1029, in show
    self.process_series()
  File "/home/somename/miniconda3/lib/python3.6/site-packages/sympy/plotting/plot.py", line 908, in process_series
    collection = self.LineCollection(s.get_segments())
  File "/home/somename/miniconda3/lib/python3.6/site-packages/sympy/plotting/plot.py", line 514, in get_segments
    f_start = f(self.start)
  File "/home/somename/miniconda3/lib/python3.6/site-packages/sympy/plotting/experimental_lambdify.py", line 235, in __call__
    if abs(result.imag) > 1e-7 * abs(result):
AttributeError: 'Mul' object has no attribute 'imag'
/home/somename/miniconda3/lib/python3.6/site packages/sympy/plotting/experimental_lambdify.py:232:UserWarning:表达式的计算有问题。我们正在尝试一种可能仍然有效的故障回复方法。请将此报告为错误。
warnings.warn('表达式的计算结果为'
回溯(最近一次呼叫最后一次):
文件“/home/somename/miniconda3/lib/python3.6/site packages/sympy/plotting/experimental_lambdify.py”,第194行,在调用中__
结果=复杂(自lambda_func(args))
文件“/home/somename/miniconda3/lib/python3.6/site-packages/sympy/core/expr.py”,第244行,在__
返回复合体(浮动(re)、浮动(im))
文件“/home/somename/miniconda3/lib/python3.6/site-packages/sympy/core/expr.py”,第239行,在浮点数中__
raise TypeError(“无法将表达式转换为浮点”)
TypeError:无法将表达式转换为浮点
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“sympy_analysis.py”,第153行,在
main()
文件“sympy_analysis.py”,第75行,主目录
sp.plotting.plot(sp.im(sp.fourier_变换(sp.diff(EXP(1,1),t),t,o)),(t,1,10))
文件“/home/somename/miniconda3/lib/python3.6/site packages/sympy/plotting/plot.py”,第1295行,在plot中
plots.show()
文件“/home/somename/miniconda3/lib/python3.6/site packages/sympy/plotting/plot.py”,第196行,在show中
self.\u backend.show()
文件“/home/somename/miniconda3/lib/python3.6/site packages/sympy/plotting/plot.py”,第1029行,在show中
self.process_系列()
文件“/home/somename/miniconda3/lib/python3.6/site packages/sympy/plotting/plot.py”,第908行,在process_系列中
collection=self.LineCollection(s.get_segments())
文件“/home/somename/miniconda3/lib/python3.6/site packages/sympy/plotting/plot.py”,第514行,在get_段中
f_start=f(自启动)
文件“/home/somename/miniconda3/lib/python3.6/site packages/sympy/plotting/experimental_lambdify.py”,第235行,在调用中__
如果abs(结果imag)>1e-7*abs(结果):
AttributeError:“Mul”对象没有属性“imag”

为什么绘图不起作用?

傅里叶变换的变量是
o
,而不是
t
。这应该是绘图范围内的变量

此外,您的代码缺少
符号(t)
。绘图命令可以作为
sp.plot
调用。两个符号都可以使用
符号同时创建

import sympy as sp
t, o = sp.symbols('t o', real=True)
temp = sp.im(sp.fourier_transform(sp.exp(-sp.Abs(t))*sp.sign(t), t, o))
sp.plot(temp, (o, 1, 10))

UserWarning:表达式的计算有问题。我们正在尝试一种可能仍然有效的故障回复方法。请将此报告为错误。
这似乎是Symphy的问题。谢谢,我在上打开了一个问题