gpt4 book ai didi

python - sympy 类型错误 : can't convert expression to float

转载 作者:行者123 更新时间:2023-12-01 00:13:48 30 4
gpt4 key购买 nike

我正在尝试使用 sympy 计算积分,这是我的代码:

import sympy as sp
from scipy.integrate import quad
import math
def f(x):
return math.exp(-2.0*math.pi*sp.I*x*n)
x = sp.Symbol('x')
n = sp.Symbol('n')
res,err = quad(f,0,1)
print(res)

它给了我TypeError:无法将表达式转换为float内部f(x),我该如何解决这个问题?

尝试解决此问题:e^(-2*pi*n*I*x) 相对于 x 在 0 到 1 范围内的积分

不支持数学ajax:$$\int_0^1 e^{-2\pi inx} dx$$

如果我只写 math.exp(-2.0*math.pi*x) 它可以工作,但是如果我写 math.exp(-2.0*math.pi*sp. I)math.exp(-2.0*math.pi*n) 它没有或用于其他组合。

最佳答案

Sympy 无法使用数学导入,您需要特定的 sympy 函数。 sympy 和 scipy 也不能很好地协同工作。

纯粹的 sympy 解决方案:

import sympy as sp

def f(x):
return sp.exp(-2.0*sp.pi*sp.I*x*n)

x = sp.Symbol('x')
n = sp.Symbol('n')

res = sp.integrate(f(x), (x, 0, 1))

输出:

Piecewise((-0.5*I/(pi*n) + 0.5*I*exp(-2.0*I*pi*n)/(pi*n), (n > -oo) & (n < oo) & Ne(n, 0)), (1, True))

如果您知道 n 永远不会为零,请使用 n = sp.Symbol('n', nonzero=True),这会将输出简化为 -0.5*I/(pi*n) + 0.5*I*exp(-2.0*I*pi*n)/(pi*n)

之后就可以使用sympy的 lambdify将结果转换为 n 的普通 Python 函数。

关于python - sympy 类型错误 : can't convert expression to float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59459414/

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