矩阵乘法Ax = 1或Ax = 0

时间:2016-10-27 18:19:12

标签: excel python-2.7 numpy matrix

所有,我看了下面的答案,一切看起来都不错。 Matrix multiplication, solve Ax = b solve for x 我必须做错事,但如果我手工解决问题,我会得到一个不同的解决方案。

方法1:

A = [[0,1,0],
     [0,0,1],
     [.5,.5,0]]
b = [1,1,1]
x = numpy.linalg.lstsq(A,b)
x

产量

(array([ 1.,  1.,  1.]),
 array([], dtype=float64),
 3,
 array([ 1.14412281,  1.        ,  0.43701602]))

方法2(正如凯文所建议的那样,我转换了矩阵):

A = [[0,0,.5],[1,0,.5],[0,1,0]]
b = [1,1,1]
x = numpy.linalg.lstsq(A,b)
x

产量

(array([ 0.,  1.,  2.]),
 array([], dtype=float64),
 3,
 array([ 1.14412281,  1.        ,  0.43701602]))

如果我用手计算Ax = b,我得到x = 1/5 * [1,2,2]。请注意,我正在通过以下链接运行示例11.19:
https://www.probabilitycourse.com/chapter11/11_3_2_stationary_and_limiting_distributions.php

我错过了什么?

如果我按照此链接上的示例操作:https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.solve.html

3x+y=9
x+2y=8
[x,y]=[2,3]

如果我使用python或手工操作,我会得到正确的解决方案。有什么指针吗?我必须在这里找到一些非常简单的东西

1 个答案:

答案 0 :(得分:1)

我认为,当您手动执行此操作时,您会混合行和列。

A = [0, 1, 0]
    [0, 0, 1]
    [.5, .5, 0] 

产生x = [1,1,1]。然而,

A = [0, 0, .5]
    [1, 0, .5]
    [0, 1, 0] 
当你手工完成时,

得到x = 1/2 [1,2,2]。