diff --git a/228-13.py b/228-13.py index a6e2525..ef34512 100644 --- a/228-13.py +++ b/228-13.py @@ -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 '未收敛'}") diff --git a/228-15.py b/228-15.py index 2590a04..351a7b7 100644 --- a/228-15.py +++ b/228-15.py @@ -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}") diff --git a/228-17.py b/228-17.py index 9b80816..3b2952a 100644 --- a/228-17.py +++ b/228-17.py @@ -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题的代码求范数与逆矩阵