From 10ebb731fea0f9a6cb7cc88e1f643d39fa6d9161 Mon Sep 17 00:00:00 2001 From: lhye200 Date: Thu, 19 Jun 2025 09:48:44 +0800 Subject: [PATCH] df --- 228-15.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/228-15.py b/228-15.py index 351a7b7..42ffffd 100644 --- a/228-15.py +++ b/228-15.py @@ -39,9 +39,30 @@ def Inverse(A): return None A_inv = [[B[i][j] / det for j in range(n)] for i in range(n)] return A_inv + + +def FixInv(A): + n = len(A) + if n == 2: + return [[A[1][1] / Det(A), -A[0][1] / Det(A)], + [-A[1][0] / Det(A), A[0][0] / Det(A)]] + B = [[0 for i in range(n)] for j in range(n)] + for i in range(n): + for j in range(n): + t = [row[:j] + row[j+1:] for row in (A[:i] + A[i+1:])] + B[j][i] = ((-1) ** (i + j)) * Det(t) + det = Det(A) + if det == 0: + print("矩阵不可逆") + return None + A_inv = [[B[i][j] / det for j in range(n)] for i in range(n)] + return A_inv + + # 计算矩阵的条件数 def Cond(A,v): - inv_A = Inverse(A) + # inv_A = Inverse(A) + inv_A = FixInv(A) print(inv_A,Norm(A, v), Norm(inv_A, v)) return Norm(A, v) * Norm(inv_A, v)