From 89ad8d0f1f1a9a05df5e70db25bb323394847028 Mon Sep 17 00:00:00 2001 From: 123 <629825095@qq.com> Date: Tue, 10 Jun 2025 14:27:18 +0800 Subject: [PATCH] 111 --- 1.py | 0 160-11.py | 1 + 160-12.py | 1 + 227-3.py | 21 ++++++++++++--------- 227-4.py | 11 ++++++----- 227-7.py | 22 +++++++++++----------- 227-8.py | 4 ++-- 228-12.py | 3 ++- 228-13.py | 3 ++- 228-15.py | 9 +++++---- 228-17.py | 3 ++- 279-3.py | 2 +- 12 files changed, 45 insertions(+), 35 deletions(-) create mode 100644 1.py diff --git a/1.py b/1.py new file mode 100644 index 0000000..e69de29 diff --git a/160-11.py b/160-11.py index 5a06fe6..9e8d44c 100644 --- a/160-11.py +++ b/160-11.py @@ -1,3 +1,4 @@ +#正割法计算方程 def SecantSolve(fx, x0, x1, err=1e-10, N0=100): count = 0 print(f"k={count}: x{count}={x0}, f(x{count})={fx(x0)}") diff --git a/160-12.py b/160-12.py index 06666a7..50335c5 100644 --- a/160-12.py +++ b/160-12.py @@ -1,3 +1,4 @@ +#抛物线法解方程(主) def MullerSolve(fx,x0,x1,x2,err1,err2,N): count = 0 f0 = fx(x0) diff --git a/227-3.py b/227-3.py index 9f18459..c56f62c 100644 --- a/227-3.py +++ b/227-3.py @@ -1,10 +1,3 @@ -A = [ - [0, 3, 4], - [1, -1, 1], - [2, 1, 2] -] - -b = [1, 2, 3] # 列主元高斯消元法 def SovleRowMain(A,b): @@ -61,7 +54,7 @@ def SovleRowMain(A,b): P[i][p[i]] = 1 return P,L,U,b - +#打印矩阵 def prettyPrintMatrix(matrix): for row in matrix: print(row) @@ -70,6 +63,15 @@ def prettyPrintMatrix(matrix): if __name__ == "__main__": # A = np.array(A, dtype=float) # b = np.array(b, dtype=float) + + A = [ + [0, 3, 4], + [1, -1, 1], + [2, 1, 2] + ] + + b = [1, 2, 3] + P,L,U,x = SovleRowMain(A, b) print("P:") prettyPrintMatrix(P) @@ -79,4 +81,5 @@ if __name__ == "__main__": prettyPrintMatrix(U) print("x:") print(x) - \ No newline at end of file + + \ No newline at end of file diff --git a/227-4.py b/227-4.py index 94390e1..115fa58 100644 --- a/227-4.py +++ b/227-4.py @@ -1,8 +1,3 @@ -# 储存下三角矩阵 a11, a21, a22, a31, a32, a33 ... -A = [4,2,2,-2,-3,14] - - -b = [10,5,4] #列 行 def getIndexFromDownMatrix(col, row): @@ -41,5 +36,11 @@ def SqrtSolve(A,b): if __name__ == "__main__": + # 储存下三角矩阵 a11, a21, a22, a31, a32, a33 ... + A = [4,2,2,-2,-3,14] + + + b = [10,5,4] + print("x:") print(SqrtSolve(A,b)) diff --git a/227-7.py b/227-7.py index a28d919..05e1cd2 100644 --- a/227-7.py +++ b/227-7.py @@ -1,14 +1,3 @@ -# 储存追赶法A矩阵 -A = [ - [0,4,-1], - [-1,4,-1], - [-1,4,-1], - [-1,4,-1], - [-1,4,0] -] - - -b = [100,200,200,200,100] # 追赶法求解 def ZGsolve(A,b): @@ -33,5 +22,16 @@ def ZGsolve(A,b): if __name__ == "__main__": + # 储存追赶法A矩阵 + A = [ + [0,4,-1], + [-1,4,-1], + [-1,4,-1], + [-1,4,-1], + [-1,4,0] + ] + + + b = [100,200,200,200,100] print("x:") print(ZGsolve(A,b)) \ No newline at end of file diff --git a/227-8.py b/227-8.py index f72283b..e31aa58 100644 --- a/227-8.py +++ b/227-8.py @@ -1,4 +1,4 @@ - +#模 范数 def Norm(x,v): if len(x[0]) == 1: if v == 1: @@ -13,7 +13,7 @@ def Norm(x,v): elif v == float("inf"): return max([sum([abs(i) for i in x[j]]) for j in range(len(x))]) return None - +# 计算矩阵的点积 def Dot(A,B): if len(A[0]) != len(B): return None diff --git a/228-12.py b/228-12.py index d09e170..dde776c 100644 --- a/228-12.py +++ b/228-12.py @@ -1,3 +1,4 @@ +#抛物线法解方程 def MullerSolve(fx,x0,x1,x2,err1,err2,N): count = 0 f0 = fx(x0) @@ -40,7 +41,7 @@ def MullerSolve(fx,x0,x1,x2,err1,err2,N): f1 = f2 f2 = f3 q = h1 - +#计算矩阵的行列式 def Det(A): if len(A) == 2: return A[0][0] * A[1][1] - A[0][1] * A[1][0] diff --git a/228-13.py b/228-13.py index 9e458b6..a6e2525 100644 --- a/228-13.py +++ b/228-13.py @@ -1,3 +1,4 @@ +#模 范数 def Norm(x,v): if len(x[0]) == 1: if v == 1: @@ -12,7 +13,7 @@ def Norm(x,v): elif v == float("inf"): return max([sum([abs(i) for i in x[j]]) for j in range(len(x))]) return None - +#SOR方法 逐次超松弛迭代 def SOR(A,b,x,w,err,N): count = 0 n = len(A) diff --git a/228-15.py b/228-15.py index 1693e0a..2590a04 100644 --- a/228-15.py +++ b/228-15.py @@ -1,4 +1,5 @@ -def Norm(x,v): +#模 范数 +def Norm(x,v): if len(x[0]) == 1: if v == 1: return sum([abs(i[0]) for i in x]) @@ -13,7 +14,7 @@ def Norm(x,v): return max([sum([abs(i) for i in x[j]]) for j in range(len(x))]) return None - +# 计算矩阵的行列式 def Det(A): if len(A) == 2: return A[0][0] * A[1][1] - A[0][1] * A[1][0] @@ -22,7 +23,7 @@ def Det(A): sub_matrix = [row[:c] + row[c+1:] for row in A[1:]] det += ((-1) ** c) * A[0][c] * Det(sub_matrix) return det - +# 计算矩阵的逆矩阵 def Inverse(A): n = len(A) # 计算代数余子式矩阵 @@ -38,7 +39,7 @@ 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 Cond(A,v): inv_A = Inverse(A) print(inv_A,Norm(A, v), Norm(inv_A, v)) diff --git a/228-17.py b/228-17.py index 9399933..9b80816 100644 --- a/228-17.py +++ b/228-17.py @@ -1,3 +1,4 @@ +#列主元高斯消元法 def SovleRowMain(A,b,round_num=15): ks = 0.00000001 n = len(A) @@ -56,7 +57,7 @@ def SovleRowMain(A,b,round_num=15): P[i][p[i]] = 1 return P,L,U,b - +#迭代改善法 def IterativeMethod(A, b, err, N): b_c = [b[i] for i in range(len(b))] A_c = [[A[i][j] for j in range(len(A[0]))] for i in range(len(A))] diff --git a/279-3.py b/279-3.py index 20b49b1..9c81095 100644 --- a/279-3.py +++ b/279-3.py @@ -1,4 +1,4 @@ -# +#经典R-K,龙格-库塔法 def ClassicRK(x0,y0,h,xk,fxy): k1=k2=k3=k4=0 result = [(x0,y0)]