python - 使用 sympy 对具有符号输出的函数求和

标签 python sum sympy

我正在尝试使用 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

i0 进行比较,然后返回 x1。由于 i == 0 的计算结果为 False,它返回 1,因此您实际上只是对 1 求和0 到 3。

summation 根本看不到 f。它只看到 1,因为 f(i) 调用在 summation 运行之前被完全评估。 求和只看到返回值。

关于python - 使用 sympy 对具有符号输出的函数求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41681842/

相关文章:

python - Pandas 版本的“如果为真,则在此处进行 VLOOKUP,如果为假,则在其他地方进行 VLOOKUP

c - 我在 x 中出现了多少次(无符号 32 位整数 C)

javascript - 我有一个包含对象的多维数组,需要使用 javascript 计算每列的总和

python - 多项式的系数列表

python - 填充数组的有效方法

python - 获取对象属性

python - 添加列并选择总和最大的列

python - 避免复数 Sympy

equation - 解方程 - 溢出错误

python - 考虑到互斥项目,如何返回洗牌列表?