该任务要求我生成一个包含 50 列和 50 行的矩阵,其中包含 [0,1] 范围内的随机种子库 1007092020。
import numpy as np
np.random.seed(1007092020)
A = np.random.randint(2, size=(3,3))
然后我必须用 LU 分解找到 A 的逆矩阵。不知道该怎么做。
该任务要求我生成一个包含 50 列和 50 行的矩阵,其中包含 [0,1] 范围内的随机种子库 1007092020。
import numpy as np
np.random.seed(1007092020)
A = np.random.randint(2, size=(3,3))
然后我必须用 LU 分解找到 A 的逆矩阵。不知道该怎么做。
如果您需要矩阵 A 是具有随机浮点数的 50 x 50 矩阵,则可以使用以下代码实现:
import numpy as np
np.random.seed(1007092020)
A = np.random.random((50,50))
相反,如果您想要 0,1 范围内的整数(包括 1),您可以这样做
A = np.random.randint(0,2,(50,50))
如果要使用 LU 分解计算逆,可以使用 SciPy。应该注意的是,由于您正在生成随机矩阵,因此您的矩阵可能没有逆矩阵。在那种情况下,你找不到逆。
这里有一些代码可以在 A 确实有逆向的情况下工作。
from scipy.linalg import lu
p,l,u = lu(A, permute_l = False)
现在我们有了下 (l) 和上 (u) 三角矩阵,我们可以通过以下等式找到 A 的逆矩阵:A^-1 = U^-1 L^-1
l = np.dot(p,l)
l_inv = np.linalg.inv(l)
u_inv = np.linalg.inv(u)
A_inv = np.dot(u_inv,l_inv)