python - 取未知变量阶乘的西格玛(使用 sympy?)

标签 python sum sympy factorial

美好的一天,

我正在尝试为以下方程编写一个函数:

Eurlang B

给定 B 和 N,我正在求解 A。

我正在阅读,似乎 sympy 是正确的选择,所以我开始声明已知变量,但是当涉及到阶乘的 sigma 表示法时,我不知道如何处理它,因为 A 是未知。

这是我的想法:

from sympy import Eq, var, solve
from math import *

A = var('A')
channels = raw_input("Enter the number of channels: ")
#GOS = raw_input("Enter GOS: ")

Sigma = A
for i in range(0,channels+1):
  Sigma += (A**i / factorial(i))

# equation = Eq((A**channels / factorial(channels)) / Sigma) 
# print solve(equation)

这给了我错误TypeError:无法连接'str'和'int'对象

这对我来说是有道理的,但我对 sympy 缺乏了解,使我无法弄清楚如何解决它。

编辑:再看看,我将代码编辑为:

  from sympy import *

  A = symbols('A')
  channels = raw_input("Enter the number of channels: ")
  GOS = raw_input("Enter GOS: ")

  Sigma = summation(A**i / factorial(i), (i, 0,channels))
  print Sigma



  # equation = Eq((A**channels / factorial(channels)) / Sigma) 

现在我得到NameError:名称'i'未定义

提前致谢。

最佳答案

首先,错误(名称'i'未定义)是因为你还没有定义它。所以你需要给 i 一个初始值。

其次,我已经尝试让你的程序运行。使用此代码得到了一个无错误的解决方案:

from sympy import *

A = symbols('A')
channels = raw_input("Enter the number of channels: ")
GOS = raw_input("Enter GOS: ")

# note that I convert the string 'channel' to an int
# convert to float if channel could also be a floating number
channels = int(channels) 
Sigma = A
for i in range(0,channels+1):
    Sigma += (A**i / factorial(i))
print Sigma

结果

输入: channel = 3,GOS = 1

输出:A**3/6 + A**2/2 + 2*A + 1

编辑:出于兴趣,我开始进一步研究您的问题(也因为我意识到这个问题不会仅仅因为数据类型问题而停止)。 Solve 函数有 2 个输入:方程和要计算的符号。 它求解方程 == 0。因此必须从方程中减去变量 B。 (我假设输入GOS是函数中的B变量)

equation = (A**channels / factorial(channels)) / Sigma
print(solve(equation-int(GOS), A))

使用上面的行运行代码(将它们添加到代码下)给出以下输出:

A**3/6 + A**2/2 + 2*A + 1
[-2 - sqrt(2), -2 + sqrt(2)]

我必须注意到,如果 GOS 不与函数相交,它会通过附加参数 I(大写 i,可能表示虚数 i)给出较大结果。 我希望这有助于解决您的问题。

关于python - 取未知变量阶乘的西格玛(使用 sympy?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41938201/

相关文章:

MYSQL SUM() 在一个表中并与其他 2 个表 JOIN

python - mysql sum 只产生 1

python - SymPy 无法求解重写积分

python - 为什么我的 Sympy 中的 Rician 与 Scipy 中的 Rician 不匹配?

Python - Selenium 不会返回到上一页

python - 避免Python中的冗余循环

python - 从列表中提取特定字符后的单词

mysql - 两个值的除法总和,分组,最高的三个

python - sympy.simplify 不适用于 "tanh^2(x-y) + sech^2(x-y)"

python - 使用正则表达式 re.search 和 re.compile 的问题