寻找行缩减矩阵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
呢?