df
This commit is contained in:
23
228-15.py
23
228-15.py
@@ -39,9 +39,30 @@ def Inverse(A):
|
|||||||
return None
|
return None
|
||||||
A_inv = [[B[i][j] / det for j in range(n)] for i in range(n)]
|
A_inv = [[B[i][j] / det for j in range(n)] for i in range(n)]
|
||||||
return A_inv
|
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):
|
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))
|
print(inv_A,Norm(A, v), Norm(inv_A, v))
|
||||||
return Norm(A, v) * Norm(inv_A, v)
|
return Norm(A, v) * Norm(inv_A, v)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user