python – 用带符号输出的符号输出函数求和

我正在尝试使用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并且去了

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)in

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,所以你实际上只是将0从0加到3.

总和永远不会看到f.它只看到1,因为在求和运行之前完全评估了f(i)调用.求和只能看到返回值.

上一篇:python – 准确找到最小的特征值


下一篇:在Docker镜像中安装python-sympy