所以我正在写一个评估泰勒系列的脚本 . 但是,我希望它能够评估所有类型的功能 . 所以我试过,例如,使用函数 acot(x)
.
x = sy.Symbol('x')
f = acot(x)
...
func = taylor(f,0,3)
taylor_lambda = sy.lambdify(x, func, 'numpy')
以上运行没有例外(例如,如果我使用 acsch
,它不会运行) .
但是当它达到这条线时:
plt.plot(x1,taylor_lambda(x1),label='taylor approximation')
我明白了:
NameError: name 'acot' is not defined
我试图在lambdify调用中用 sympy
替换 numpy
,但这似乎是象征性的评估 . 这种情况发生在一些(更罕见的功能)但不适用于其他功能 . 谢谢!
我的进口如下:
import sympy as sy
import numpy as np
from sympy.functions import *
from sympy import pi, E,acot
import matplotlib.pyplot as plt
import math
2 回答
我之前确实遇到过类似的问题,并设法解决了这些问题 . 你的行
看起来很好 . 我给了一个我的旧代码,工作正常,你可以比较 .
这里的主要问题是
lambdify
函数使用modules
参数来定义所提供函数的可用模块 . 似乎acot
在numpy
名称空间内不可用 .让我们简化为简单的事情:
由于
numpy
未在numpy
命名空间中定义,因此会引发NameError
. 注意模块参数 . 如果我们将可用模块扩展到sympy
,我们将不再获得NameError
:如果您在使用奇数函数时遇到问题,您还可以将单独的函数作为
func_name
:function
对的字典添加到lambdify模块参数中:至于使用matplotlib绘图,矢量化方程,然后为我绘制作品: