42 lines
1004 B
Python
42 lines
1004 B
Python
import math
|
||
|
||
# 追赶法求解
|
||
def ZGsolve(A,b):
|
||
n = len(b)
|
||
beta = [0]*n
|
||
for i in range(n):
|
||
if i == 0:
|
||
beta[i] = A[i][2] / A[i][1]
|
||
else:
|
||
beta[i] = A[i][2] / (A[i][1] - A[i][0]*beta[i-1])
|
||
print("beta:")
|
||
print(beta[:-1])
|
||
for i in range(n):
|
||
if i == 0:
|
||
b[i] = b[i] / A[i][1]
|
||
else:
|
||
b[i] = (b[i] - A[i][0]*b[i-1]) / (A[i][1] - A[i][0]*beta[i-1])
|
||
print("y:")
|
||
print(b)
|
||
for i in range(n-2,-1,-1):
|
||
b[i] = b[i] - beta[i]*b[i+1]
|
||
|
||
return b
|
||
|
||
|
||
if __name__ == "__main__":
|
||
##########################################################################
|
||
#把A,b换成题干的数值###########################################
|
||
# 储存追赶法A矩阵
|
||
A = [
|
||
[0,4,-1],
|
||
[-1,4,-1],
|
||
[-1,4,-1],
|
||
[-1,4,-1],
|
||
[-1,4,0]
|
||
]
|
||
# A第一行前面有个0,最后一行后面有个0
|
||
|
||
b = [100,200,200,200,100]
|
||
print("x:")
|
||
print(ZGsolve(A,b)) |