Sympy求解器解决欠定方程组

时间:2015-07-30 13:30:17

标签: python symbolic-math

好吧,我基本上想要解决一组欠定方程。我有大约289个变量和288个方程式。

我按照following link创建了我的求解程序,以求解未确定的方程式。

由于我有289个变量和几乎同样多的方程式,手动编写方程式是不可能的,我引入了一个循环,它将方程式和Sym变量保存在数组中并返回传递给solve()的方程式功能

代码:

def getEqn(A, B):
    for i in range(len(A)):
        A[i] = Symbol('A['+str(i)+']')

    equations = [None]*(len(predictions)-1)
    for i in range(len(equations)-1):
        equations[i] = Eq(A[i]-A[i+1], B[i])

    return equations, A
def solver(predictions):
    lenPredictions = len(predictions)
    A = [None]*lenPredictions
    for i in range(lenPredictions):
        A[i] = Symbol('A['+str(i)+']')
    equations, variables = getEqn(A, predictions)
    for i in range(lenPredictions-1):
        res = solve(equations, variables)
    return res
def main():
    res = solver(predictions)

当我尝试运行以下代码时,出现以下错误: enter image description here

注意:整个程序运行正常,没有任何错误。它只有以下这些抛出错误的功能。我对Python& Sympy也。任何指导都会非常有用,因为我无法知道我在哪里遗漏了什么。

1 个答案:

答案 0 :(得分:1)

在getEqn()中

你有......

for i in range(len(equations)-1):
    equations[i] = Eq(A[i]-A[i+1], B[i])

然后......

-1

这意味着您的最后一个等式不会获得值,但仍然是无,因为您的equations = [None]*(len(predictions)) for i in range(len(equations)): 在范围内。

我想你想......

for i in range(len(temp)):
plt.text(x[i], y[i], temp[i], va="top", family="monospace")