39 lines
851 B
Python
39 lines
851 B
Python
|
|
# 追赶法求解
|
|
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
|
|
|
|
#把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)) |