所有,我看了下面的答案,一切看起来都不错。
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或手工操作,我会得到正确的解决方案。有什么指针吗?我必须在这里找到一些非常简单的东西
答案 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]。