0

该任务要求我生成一个包含 50 列和 50 行的矩阵,其中包含 [0,1] 范围内的随机种子库 1007092020。

import numpy as np
np.random.seed(1007092020)
A = np.random.randint(2, size=(3,3))

然后我必须用 LU 分解找到 A 的逆矩阵。不知道该怎么做。

4

1 回答 1

1

如果您需要矩阵 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)
于 2021-09-19T10:05:26.553 回答