gpt4 book ai didi

python - (某些功能)未使用 SymPy Lambdify 定义

转载 作者:太空宇宙 更新时间:2023-11-03 15:53:14 25 4
gpt4 key购买 nike

所以我正在编写一个计算泰勒级数的脚本。但是,我希望它能够评估所有类型的功能。因此,例如,我尝试使用函数 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

最佳答案

这里的主要问题是 lambdify 函数使用 modules 参数来为提供的函数定义可用模块。 acot 似乎在 numpy 命名空间中不可用。

让我们把它简化为一些简单的东西:

import sympy as sy
import numpy as np
from sympy.functions import *

x = sy.Symbol('x')
f = acot(x)
func_lambda = sy.lambdify(x, f, modules='numpy')
print(func_lambda(1))

这会引发 NameError,因为 acot 未在 numpy 命名空间中定义。注意模块参数。如果我们将可用模块扩展到 sympy,我们将不再得到 NameError:

func_lambda = sy.lambdify(x, f, modules=['numpy', 'sympy'])
print(func_lambda(1))
# Prints pi/4

如果您在使用奇怪的函数时遇到问题,您还可以将单个函数作为 func_name: function 对的字典添加到 lambdify 模块参数中:

func_lambda = sy.lambdify(x, f, modules=['numpy', {'acot':acot}])
print(func_lambda(1))
# Prints pi/4

就使用 matplotlib 绘图而言,矢量化方程式然后绘图对我有用:

import matplotlib.pyplot as plt
vfunc = np.vectorize(func_lambda)
x1 = np.linspace(-10, 10 , 1000)
plt.plot(x1, vfunc(x1),label='acot')
plt.show()

关于python - (某些功能)未使用 SymPy Lambdify 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45273827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com