Successive-Over-Relaxation (SOR) Methods(有偿!!!)

怎么用基本的python语言写出来吗?不能用numpy之类的library

def sor_method(A, b, omega, epsilon, max_iterations):
    """
    SOR方法求解线性方程组 Ax = b

    参数:
    A: 方程组的系数矩阵 (n x n)
    b: 方程组的右侧常数向量 (n x 1)
    omega: 超松弛因子 (0 < omega < 2)
    epsilon: 迭代收敛的误差界限
    max_iterations: 最大迭代次数

    返回:
    x: 方程组的解向量 (n x 1),如果迭代未收敛则返回None
    """

    n = len(b)
    x = [0] * n  # 初始化解向量

    for iteration in range(max_iterations):
        x_new = x.copy()  # 复制上一次的解向量

        for i in range(n):
            sigma = 0
            for j in range(n):
                if j != i:
                    sigma += A[i][j] * x_new[j]

            x_new[i] = (1 - omega) * x[i] + (omega / A[i][i]) * (b[i] - sigma)

        # 计算误差
        error = max(abs(x_new[i] - x[i]) for i in range(n))

        # 更新解向量
        x = x_new

        # 判断是否收敛
        if error < epsilon:
            return x

    # 迭代未收敛
    return None

A = [[4, -1, 0],
     [-1, 4, -1],
     [0, -1, 4]]
b = [5, 5, 10]

# 超松弛因子和收敛误差界限
omega = 1.5
epsilon = 1e-6

# 最大迭代次数
max_iterations = 1000

# 调用SOR方法求解方程组
solution = sor_method(A, b, omega, epsilon, max_iterations)

if solution is not None:
    print("方程组的解:", solution)
else:
    print("SOR方法未收敛")

这个示例中的系数矩阵A和右侧常数向量b是用列表表示的。你可以根据需要修改这些值,但请确保它们的维度匹配。