题目
![题目](https://i-blog.csdnimg.cn/blog_migrate/4451f8f171d5e691faf45bf72ca3abde.png)
代码
import numpy as np
m = int(input("请输入系数矩阵A的行数:"))
n = int(input("请输入系数矩阵A的列数:"))
a = np.empty([m, n])
print("请输入系数矩阵A:")
for i in range(m):
a[i] = np.array(list(map(float, input().split())))
b = np.empty([m, 1])
print("请输入系数矩阵B:")
for i in range(m):
b[i] = np.array(list(map(float, input().split())))
max_N = int(input("请输入最大迭代次数:"))
print("请输入初始向量:")
x0 = np.empty([m, 1])
for i in range(m):
x0[i] = np.array(list(map(float, input().split())))
e = float(input("请输入误差限:"))
d_l = np.tril(a)
d_l_1 = np.linalg.inv(d_l)
u = np.triu(a, 1)
last_x = x0
current_N = 1
while True:
if current_N > max_N:
print("超出迭代次数!")
break
xk1 = np.dot(d_l_1, b) - np.dot(np.dot(d_l_1, u), last_x)
if abs(xk1 - last_x).max() < e:
print("解向量为:" + str(xk1))
break
last_x = xk1
current_N += 1
运行结果
![运行结果](https://i-blog.csdnimg.cn/blog_migrate/99ca51350d4f99500838c86ca0326513.png)