寻找行缩减矩阵python的解决方案



假设我有一个形式为的约化矩阵

   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. ])

相关内容

  • 没有找到相关文章

最新更新