gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 15:43:45 25 4
gpt4 key购买 nike

美好的一天,

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com