This commit is contained in:
lwj
2025-06-14 13:26:03 +08:00
parent a7213b61d4
commit 7cb8285891
3 changed files with 10 additions and 9 deletions

View File

@@ -32,7 +32,7 @@ def SOR(A,b,x,w,err,N):
if count > N:
return None,count, 0
#把矩阵改成题干的矩阵b改成题干结果err精度要求修改##########################
if __name__ == "__main__":
A = [
[4,-1,0,-1,0,0],
@@ -46,7 +46,7 @@ if __name__ == "__main__":
x = [0,0, 0, 0, 0, 0]
err = 1e-5
#w换成题干要求的值###########################
w = 1
x1,k,sta = SOR(A, b, x, w, err, 100)
print(f"w = {w}, 解为: {x1}, 迭代次数: {k}, 状态: {'收敛' if sta == 1 else '未收敛'}")

View File

@@ -33,7 +33,7 @@ def Inverse(A):
minor = [row[:j] + row[j+1:] for row in (A[:i] + A[i+1:])]
B[j][i] = ((-1) ** (i + j)) * sum(minor[k][l] * (-1) ** (k + l) for k in range(n - 1) for l in range(n - 1))
det = Det(A)
print(det)
print("det(A):",det)
if det == 0:
print("矩阵不可逆")
return None
@@ -45,17 +45,18 @@ def Cond(A,v):
print(inv_A,Norm(A, v), Norm(inv_A, v))
return Norm(A, v) * Norm(inv_A, v)
#把矩阵换成题干的矩阵#########################
if __name__ == "__main__":
A = [
[1,2],
[1.001,2.001]
]
#把范数的种类数换成题干的要求inf是无穷范数#########################
print(f"矩阵A的条件数为: {Cond(A, float('inf')):.5f}")
#把矩阵换成题干的矩阵#########################
A = [
[1,2],
[3,4]
]
#把范数的种类数换成题干的要求inf是无穷范数########################
print(f"矩阵A的条件数为: {Cond(A, float('inf')):.5f}")

View File

@@ -71,14 +71,14 @@ def IterativeMethod(A, b, err, N):
A_c = [[A[i][j] for j in range(len(A[0]))] for i in range(len(A))]
d1 = SovleRowMain(A_c, r1,4)[3]
x0 = [x0[i] + d1[i] for i in range(len(x0))]
print(f"{count+1}次迭代, x{count+2} = {x0}, r{count+1} = {r1}, d{count+1} = {d1}")
print(f"{count+1}次迭代, r{count+1} = {r1}, d{count+1} = {d1}, x{count+2} = {x0}")
err_now = max(abs(r1[i]) for i in range(len(r1)))
count += 1
if err_now < err:
break
return x0,count
#把矩阵换成题干的矩阵b换成题干结果err精度要求修改##########################
if __name__ == "__main__":
A = [
[51,82],
@@ -91,5 +91,5 @@ if __name__ == "__main__":
x = IterativeMethod(A, b, err, N)[0]
print(f"解为: {x}")
#先用15题的代码求范数与逆矩阵