为什么将逆矩阵乘以向量会得到不正确的结果?

Why am I getting an incorrect result from multiplying an inverted matrix by a vector?

我正在努力学习 Python 以进行线性代数的基础学习。我 运行 用一个简单的线性方程组解决了以下问题:

import scipy.linalg as la
import numpy as np

A = np.array([[186/450, 54/21, 30/60],
              [12/450,  6/21 ,  3/60],
              [9/450,   6/21 , 15/60]])
l = np.array([18/450, 12/21, 30/36])
b = np.array([2, 0, 1/6])
y = np.array([180, 0, 30])
x = la.inv(np.eye(3) - A) @ y

lam = np.transpose(l) @ la.inv(np.eye(3) - A)

这个returns

array([0.21212121, 2.12121212, 1.39393939])

这是不正确的。在 Julia 中执行相同的操作,

A = [186/450 54/21 30/60;
     12/450 6/21 3/60;
     9/450 6/21 15/60]
l = [18/450, 12/21, 30/60]
b = [2, 0, 1/6]
y = [180, 0, 30]
 
λ = l' * inv(I - A)

产生正确的结果,即

1×3 adjoint(::Vector{Float64}) with eltype Float64:
 0.181818  1.81818  0.909091

我在这里错过了什么?我想我可能在不透明的 numpy 数组语法中遗漏了一些东西。

您的 python 代码中的 'l' 实例化有错字。 (30/36 应该是 30/60)。

修正了拼写错误的这段代码产生的结果与 Julia 中的结果相同。

import scipy.linalg as la
import numpy as np

A = np.array([[186/450, 54/21, 30/60],
              [12/450,  6/21 ,  3/60],
              [9/450,   6/21 , 15/60]])
l = np.array([18/450, 12/21, 30/60]) #typo fixed here
b = np.array([2, 0, 1/6])
y = np.array([180, 0, 30])
x = la.inv(np.eye(3) - A) @ y

lam = np.transpose(l) @ la.inv(np.eye(3) - A)

给予:

array([0.18181818, 1.81818182, 0.90909091])