热线电话:13121318867

登录
2019-03-04 阅读量: 716
如何用参数化解决线性方程

我试图通过这种方式解决我的问题:

a = np.array([[1,2,4,1,0,2],[0,1,2,0,0,1],[0,0,0,2,2,0],[0,0,0,0,14,4],[0,0,0,0,0,-2]])

b = np.array([3,0,1,0,14])

x = np.linalg.solve(a,b)

然而,由于它们没有完全排名,所以没有一个解决方案,而是无穷无尽的解决方案。通常我会在解决这个问题时插入一个参数,比如x3 = t。然后我有一个解决方案,其中x2和x1也可以包含t。但是我怎么能告诉python这样解决呢?或者至少告诉它x3是t并继续使用它?

我知道有最少的方式,但这不是我想要的。

编辑:解决方案看起来像这样:x6 == -7 && x5 == 2 && x4 == -(3/2) && x2 == 7 - 2 x3 && x1 == 9/2- 使用Mathematica制作。只想知道如何在python中实现相同的结果。

解决办法:使用SymPy,

import numpy as np

import sympy as sym

a = np.array([[1,2,4,1,0,2],[0,1,2,0,0,1],[0,0,0,2,2,0],[0,0,0,0,14,4],[0,0,0,0,0,-2]])

b = np.array([3,0,1,0,14])

num_equations, num_variables = a.shape

x = sym.symarray('x', num_variables)

solution = sym.solve([sym.Eq(ax-b) for ax, b in zip(np.dot(a, x), b)])

print(solution)

产量

{x_5: -7, x_4: 2, x_3: -3/2, x_1: -2*x_2 + 7, x_0: 9/2}

0.0000
2
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子