Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
寻找行缩减矩阵python的解决方案_Python_Numpy_Matrix_Scipy_Linear Algebra - Fatal编程技术网

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

寻找行缩减矩阵python的解决方案,python,numpy,matrix,scipy,linear-algebra,Python,Numpy,Matrix,Scipy,Linear Algebra,假设我有一个简化矩阵,形式如下: 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以进行求解,但它需要格

假设我有一个简化矩阵,形式如下:

   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
由二维数组的前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. ]

进一步阅读:

  • (维基)
注意:

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

“解决方案”的确切含义是什么?请参见编辑。我想要返回x,y,z在这种情况下,以数组的形式,它是一个
nxn
矩阵。如果我使用
init_数组[0:n-1,:-1]
@GregPeckory否,您可以使用列表理解来创建
A
b
。例如,
A=[sub[:3]For sub in coeff[:-1]]
对不起,对列表的理解让我有点困惑,你能解释一下我如何为
nxn
矩阵创建一个通用的案例吗?很抱歉,太麻烦了。请将它们转换成
numpy.array
然后进行切片,或者将我的切片替换为
n
用于
nxn
矩阵。那么
A=[sub[:n]用于init_数组中的sub[:-1]
那么
b
呢?