【发布时间】:2021-02-09 13:53:27
【问题描述】:
我需要在 Python 中计算序列的总和 但我不能使用内置函数进行求幂。
这意味着我不能使用** 和pow()。我必须为此创建自己的函数。
所以我创建了求幂函数,但它只适用于数字。我需要将我的公式计算到第 n 个。
我的求幂函数:
def exponentiation(a,b):
result = 1
for index in range(b):
result = result * a
return result
对于数字,它有效。但是当我想这样做到第 n 个(我将 'n' 定义为符号)时,我得到:
'Symbol' object cannot be interpreted as an integer
所以我不知道如何解决这个问题。
如果我想计算序列的总和,我使用它并且它有效:
sy.summation((-1/2)**n, (n,1, oo))
但正如我之前所说,我需要将** 更改为我自己的求幂函数,但它仍然表明“符号”对象不能解释为整数。
sy.summation(exponentiation((-1/2),n), (n,1, oo))
你有什么建议吗?
【问题讨论】:
-
用符号取幂的结果究竟是什么?
-
@eugenhu 是的,我使用 sympy
-
这意味着我不能使用
**和pow()。 - 为什么? -
所以你可以使用 SymPy 但不能使用 **, pow() ?这似乎是一个 XY 问题。您似乎想计算函数 (-1/2)**n for n in 0 ... infinity 的石灰。 - 你不能用循环“计算”无限的东西,你的代码永远不会完成,你需要一些中断条件,或者需要找到一个封闭的解决方案。
-
没有任何意义,因为在这种情况下**不是python内置,而是SymPy实现的函数(pow)。跨度>
标签: python python-3.x sum sympy exponentiation