Python 涉及同向积分的函数

Python 涉及同向积分的函数,python,function,sympy,Python,Function,Sympy,我想定义一个函数f(x),然后定义另一个它是积分的函数 from sympy import * x = symbols('x') f = lambda x: x**2 我想这样做: g = lambda x: integrate(f(x),x) 问题是,如果我进去 g(2) 它失败了。这是因为它保持着g(x)的右边,直到我调用它为止。它将2传递给integrate,并尝试对2进行积分 我可以强迫正确的行为,如果我写: g = lambda x: integrate(f(s),s).subs

我想定义一个函数f(x),然后定义另一个它是积分的函数

from sympy import *
x = symbols('x')
f = lambda x: x**2
我想这样做:

g = lambda x: integrate(f(x),x)
问题是,如果我进去

g(2)
它失败了。这是因为它保持着g(x)的右边,直到我调用它为止。它将2传递给integrate,并尝试对2进行积分

我可以强迫正确的行为,如果我写:

g = lambda x: integrate(f(s),s).subs(s,x)
但这看起来真的很笨重


有没有办法用x来象征性地计算积分,然后用该结果定义函数g(x)?

使用伪变量
foo
定义你的
g
-
x
是你的实变量,不能用作lambda变量:

>>> g = lambda foo: integrate(f(x), (x, foo))
>>> g(2)
8/3

我猜你想使用
Integral
而不是
integrate
,但我不确定你想做什么。我想你可能对lambda变量
x
和符号
x
之间的区别感到困惑,因为它们不一样。@奥斯卡:是的,你可以用任何东西替换
lambda
变量
x
(因为它只是被当作局部变量处理)。我希望f(x)是符号x中的任何东西,并且定义g(x)是它相对于x的积分。所以当我输入g(foo)时,我得到f(x)wrt x的积分,在x=foo时计算<代码>积分不适用于此目的。很有趣。似乎与Python中的其他实现不一致,比如列表理解。例如,如果您定义了一个列表
x
,其中包含一组数字,那么
[x**2代表x中的x]
[foo**2代表x中的foo]
也可以做同样的事情。有足够的上下文将
[x代表x]
转换为
[uu代表x中的foo]
因为很明显您想要迭代
x
,但是对于
lambda x:x
,rhs上的
x
只能被赋予一个明确的含义:在全局上下文中传递的
x
,而不是
x
。因此,如果要在lambda中使用全局
x
,则不能将
x
用作lambda的参数。