使用scipy.linalg实现线性代数运算: 给定方阵arr,计算其行列式; 给定方阵arr,计算方阵的逆; 给定方阵arr,计算奇异阵的逆;(若行列式为0,则该计算会引发报错) 给定方阵arr,计算其奇异值分解结果,并将结果进行组合运算还原为原始阵,使用np.allclose()函数进行鉴定。
时间: 2023-05-31 22:04:47 浏览: 119
import numpy as np
from scipy import linalg
# 给定方阵arr,计算其行列式
arr = np.array([[1, 2], [3, 4]])
det = linalg.det(arr)
print("行列式为:", det)
# 给定方阵arr,计算方阵的逆
arr = np.array([[1, 2], [3, 4]])
inv = linalg.inv(arr)
print("逆矩阵为:", inv)
# 给定方阵arr,计算奇异阵的逆
arr = np.array([[1, 2], [2, 4]])
try:
inv = linalg.inv(arr)
print("逆矩阵为:", inv)
except linalg.LinAlgError:
print("该矩阵为奇异阵,无法求逆")
# 给定方阵arr,计算其奇异值分解结果,并将结果进行组合运算还原为原始阵
arr = np.array([[1, 2], [3, 4]])
U, s, Vh = linalg.svd(arr)
S = linalg.diagsvd(s, arr.shape[0], arr.shape[1])
arr_new = U.dot(S).dot(Vh)
print("原始矩阵为:\n", arr)
print("还原后的矩阵为:\n", arr_new)
print("是否相等:", np.allclose(arr, arr_new))
阅读全文