我正在尝试使用 sympy 在 python 中对一个函数求和。我的功能是
x=symbols('x')
def f(k):
if k==0:
return x
else:
return 1
如果我问 f(0) 是什么,我得到 x,我可以很高兴地问类似的事情
integrate(f(0),(x,0,1))
如我所料,我得到了 1/2。
但是如果我写
summation(f(i),(i,0,3))
我得到 4,而不是 x+3。这看起来有点奇怪,特别是因为如果我不指定函数 f 并去 for
f=Function('f')
然后
summation(f(i),(i,0,3))
给我 f(0)+f(1)+f(2)+f(3)。那么,当 f 的定义如上时,为什么我最终得到的是 4 而不是 x+3?
稍后添加:我只是注意到我什至不需要符号 x 来表示行为不是我所期望的。例如
def f(k):
if k==0:
return 100
else:
return 1
summation(f(i),(i,0,3))
返回 4 而不是 103。
最佳答案
当你执行 f(i)
时
summation(f(i),(i,0,3))
你正在调用 f
函数:
def f(k):
if k==0:
return x
else:
return 1
将 i
与 0
进行比较,然后返回 x
或 1
。由于 i == 0
的计算结果为 False
,它返回 1
,因此您实际上只是对 1
求和0 到 3。
summation
根本看不到 f
。它只看到 1
,因为 f(i)
调用在 summation
运行之前被完全评估。 求和
只看到返回值。
关于python - 使用 sympy 对具有符号输出的函数求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41681842/