我想检查一下我所做的是否正确。请,任何意见都表示赞赏。
问题陈述:考虑一个非奇异矩阵$ A_ {nxn} $。使用高斯消元构造一个算法来查找$ A ^ { - 1} $。提供此算法的操作计数。
我尝试的算法和操作计数:
让$ [A | I] $成为增强的$ n $ x $ 2n $矩阵。
INPUT:未知数和方程n,增广矩阵
OUTPUT:$ A ^ { - 1} $,前提是反向存在
步骤1:对于$ i = 1,\ dots,n-1 $执行STEPS 2-4
步骤2:让$ p $为$ i \ leq p \ leq n $的最小整数,使$ a_ {pi} \ neq 0 $。如果不存在整数$ p $则输出('不存在唯一解决方案'); STOP
步骤3:如果$ p \ neq i $然后执行$ E_p \ leftrightarrow E_i $
步骤4:对于$ j = i + 1,\ dots,n $执行步骤5-6
第5步:设置$ m_ {ji} = a_ {ji} / a_ {ii} $。
第6步:执行$(E_j - m_ {ji} E_i)\ rightarrow(E_j)$
步骤7:如果$ a_ {nn} = 0 $,则输出NO UNIQUE SOLUTION EXISTS并停止
步骤8:对于$ i = n-1,n-2,\ dots,1 $,
对于$ j = i + 1,i,\ dots,1 $执行步骤9和10
第9步:设置$ m_ {ij} = a_ {ij} / a_ {jj} $
步骤10:执行$(E_i - m_ {ij} E_j)\ rightarrow(E_i)$
步骤11:对于$ i = 1,\ ldots,n $,执行$ E_i / a_ {ii} \ rightarrow E_i $
步骤12:输出$ A ^ { - 1} $并停止。
我的操作计数如下:总共$(2n ^ 3 + 9n ^ 2 + n)/ 3 $乘法和除法和总计$(2n ^ 3 + 6n ^ 2-8n)/ 3 $增加和减少总计$ 4n ^ 3/3 + 5n ^ 2 - 7n / 3 $操作。 听起来不错吗?
感谢您的帮助。
答案 0 :(得分:0)
给定非奇异矩阵A.构造一个使用高斯消元法找到$ A ^ { - 1} $的算法 我有同样的问题和did it在python:
#Helper functions:
def check_zeros(A,I,row, col=0):
"""
returns recursively the next non zero matrix row A[i]
"""
if A[row, col] != 0:
return row
else:
if row+1 == len(A):
return "The Determinant is Zero"
return check_zeros(A,I,row+1, col)
def swap_rows(M,I,row,index):
"""
swaps two rows in a matrix
"""
swap = M[row].copy()
M[row], M[index] = M[index], swap
swap = I[row].copy()
I[row], I[index] = I[index], swap
# Your Matrix M
M = np.array([[0,1,5,2],[0,4,9,23],[5,4,3,5],[2,3,1,5]], dtype=float)
I = np.identity(len(M))
M_copy = M.copy()
rows = len(M)
for i in range(rows):
index =check_zeros(M,I,i,i)
while index>i:
swap_rows(M, I, i, index)
print "swaped"
index =check_zeros(M,I,i,i)
I[i]=I[i]/M[i,i]
M[i]=M[i]/M[i,i]
for j in range(rows):
if j !=i:
I[j] = I[j] - I[i]*M[j,i]
M[j] = M[j] - M[i]*M[j,i]
print M
print I #The Inverse Matrix