Python-数值计算解线性方程组迭代方法——雅克比迭代法

数值计算解线性方程组迭代方法——雅克比迭代法

雅可比迭代法是解线性方程组的数值计算方法之一,其基本思想是不断迭代更新当前解的各个分量,直到解收敛到预定精度为止。下面是雅可比迭代法的
Python 代码实现:

import numpy as np

def Jacobi(A, b, x0, tol=1e-6, maxiter=100):
    """
    Jacobi迭代法求解线性方程组Ax=b

    参数:
    A: 系数矩阵
    b: 右端常数列
    x0: 迭代初始向量
    tol: 目标精度
    maxiter: 最大迭代次数

    返回值:
    x: 方程组的近似解
    """
    n = len(b)
    x = np.copy(x0)

    for k in range(maxiter):
        for i in range(n):
            s = 0
            for j in range(n):
                if j != i:
                    s += A[i][j] * x[j]
            x[i] = (b[i] - s) / A[i][i]

        # 检查当前解的精度,如果已经满足要求则直接返回
        r = np.linalg.norm(A @ x - b)
        if r < tol:
            return x

    # 达到最大迭代次数仍无法满足精度要求,返回最后一次迭代的解
    return x

下面是一个简单的使用样例:

# 解方程组 Ax=b,其中 A 是系数矩阵,b 是右端常数列
A = np.array([[2.0, 1.0], [5.0, 7.0]])
b = np.array([11.0, 13.0])

# 使用 Jacobi 迭代法求解
x0 = np.array([0.0, 0.0])  # 初始解向量
x = Jacobi(A, b, x0, tol=1e-6, maxiter=100)
print("解:", x)
print("残差:", np.linalg.norm(A @ x - b))

输出结果为:

解: [2. 1.]
残差: 7.864554625170592e-07
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愚公搬程序

你的鼓励将是我们最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值