假设我有一个形式为的约化矩阵
x y z =
[[2.0, 4.0, 4.0, 4.0],
[0.0, 2.0, 1.0, 2.0],
[0.0, 0.0, 1.0, 1.0],
[0.0, 0.0, 0.0, 0.0]]
我想要一个包含解决方案的数组。
在这种情况下,我想退回
z y x
[1.0, 0.5, -1.0]
我们可以假设它是一个没有自由变量的完美三角形。
我正在寻找scipy.linalg.solve
来解决,但它需要形式Ax=B
,我不确定如何转换为这种形式。
您已经拥有使用numpy.linalg.solve
所需的所有信息。A
由2d数组的前3列表示,b
是最后一列。因此,如果将数组分别划分为这些元素,则可以调用.solve
。请注意,我将最后一行划掉,这样您的系统就可以很好地确定,因为numpy.linalg.solve
需要一个确定良好的系统:
init_array = numpy.array(
[[2.0, 4.0, 4.0, 4.0],
[0.0, 2.0, 1.0, 2.0],
[0.0, 0.0, 1.0, 1.0],
[0.0, 0.0, 0.0, 0.0]])
A = init_array[0:3,:-1]
b = init_array[0:3, -1]
x = numpy.linalg.solve(A, b)
print(x)
输出:
[-1. 0.5 1. ]
进一步阅读:
- 方程组的一般形式(Wiki)
备注:
[2.0, 4.0, 4.0, 4.0] x 0
[0.0, 2.0, 1.0, 2.0] y = 0
[0.0, 0.0, 1.0, 1.0] z 0
[0.0, 0.0, 0.0,-1.0] t 1
具有相同的解决方案,其中t=-1。
设I=np.eye(4)
和b=I[3]
。然后给出的解决方案是:
In [2]: solve(A-I*b,b)[:-1]
Out[2]: array([-1. , 0.5, 1. ])