python - 使用 lambdify 将硬积分转换为 lambda 函数

标签 python function sympy integral lambdify

我想对函数 Integral(t**t,(t,0,x)) 进行 lambdify。它有效,但我的新函数(由 lambdify 返回)不返回数字,而仅返回 sympy.integrals.integrals.Integral 类。但我不想这样,我希望它返回一个 float 。

这是我的代码:

import sympy as sp
import numpy as np
f = sp.lambdify(x,sp.integrate(t**t,(t,0,x)))
print(f(2)) #return Integral(t**t, (t, 0, 2))
#but i want 2.83387674524687

最佳答案

lambdify 不直接支持 scipy.integrate.quad yet , 但添加适当的定义并不难。只需告诉 lambdify 如何打印 Integral:

def integral_as_quad(expr, lims):
    var, a, b = lims
    return scipy.integrate.quad(lambdify(var, expr), a, b)

f = lambdify(x, Integral(t**t,(t,0,x)), modules={"Integral": integral_as_quad})

结果是

In [42]: f(2)
Out[42]: (2.8338767452468625, 2.6601787439517466e-10)

我们在这里做的是定义一个函数 integral_as_quad,它将 SymPy Integral 转换为 scipy.integrate.quad 调用,递归地对被积函数进行 lambdify(如果您有更复杂的或符号积分限制,您也需要递归地对它们进行 lambdify)。

关于python - 使用 lambdify 将硬积分转换为 lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37379291/

相关文章:

python - Python 的 C 预处理器宏等效项

python - django 访问模型需要花费很多时间

python - scrapy +couchebase : middleware or pipline?如何存储和检索数据

php - 用外行的话来说是使用 PHP 的递归函数

python - 同情因素简单的关系

python - FastICA 在真实录音中无法分离声音信号

R:通过设置其其他参数将具有多个参数的函数作为一个参数之一传递给另一个函数

r - 如何比较功能?

python - sympy : check and parse expression from string

python-3.x - 如何在python中安装sympy包