This commit is contained in:
lwj
2025-06-10 14:27:18 +08:00
parent 0d7b89e21d
commit 89ad8d0f1f
12 changed files with 45 additions and 35 deletions

0
1.py Normal file
View File

View File

@@ -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)}")

View File

@@ -1,3 +1,4 @@
#抛物线法解方程(主)
def MullerSolve(fx,x0,x1,x2,err1,err2,N):
count = 0
f0 = fx(x0)

View File

@@ -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)

View File

@@ -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))

View File

@@ -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))

View File

@@ -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

View File

@@ -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]

View File

@@ -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)

View File

@@ -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))

View File

@@ -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))]

View File

@@ -1,4 +1,4 @@
#
#经典R-K龙格-库塔法
def ClassicRK(x0,y0,h,xk,fxy):
k1=k2=k3=k4=0
result = [(x0,y0)]