111
This commit is contained in:
@@ -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)}")
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#抛物线法解方程(主)
|
||||
def MullerSolve(fx,x0,x1,x2,err1,err2,N):
|
||||
count = 0
|
||||
f0 = fx(x0)
|
||||
|
||||
21
227-3.py
21
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)
|
||||
|
||||
|
||||
|
||||
11
227-4.py
11
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))
|
||||
|
||||
22
227-7.py
22
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))
|
||||
4
227-8.py
4
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
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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))]
|
||||
|
||||
Reference in New Issue
Block a user