再见
我试图为下面的等式写一个函数:
其中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: cannot concatenate 'str' and 'int' objects
这对我来说是有道理的,但我对sympy缺乏了解,使我无法想出如何解决它。
编辑:再看看周围,我把代码编辑成这样:
^{pr2}$现在我得到NameError: name 'i' is not defined
提前谢谢。
首先,错误(名称'i'未定义)是因为您没有定义它。所以你需要给i一个初始值
第二,我试着让你的程序运行。使用以下代码获得无错误解决方案:
结果
输入:通道=3,GOS=1
输出:
A**3/6 + A**2/2 + 2*A + 1
编辑:出于兴趣,我开始进一步研究您的问题(也因为我意识到这个问题不会仅仅因为数据类型问题而停止)。 求解函数有2个输入,方程和符号要计算。 它解出方程==0。所以必须从方程中减去变量B。(我假设输入的GOS是函数中的B变量)
^{pr2}$运行上面的代码行(将它们添加到代码下)得到以下输出:
我必须注意的是,如果GOS不与函数相交,它会给出带有附加参数I(大写I,可能表示假想I)的大结果。 我希望这有助于解决你的问题。在
也可以使用
summation
函数在SymPy中执行求和另一个注意事项:您从}(您可以在@Petrus1904的答案的输出中看到})。如果要使用循环计算求和,则应将变量初始化为0。在
Sigma = A
开始,这意味着您的最终结果是A + ΣA^i/i!
,而不是{2*A
而不是{相关问题 更多 >
编程相关推荐