为什么将逆矩阵乘以向量会得到不正确的结果?
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])
我正在努力学习 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])