用python实现雅可比矩阵

在向量微积分中,雅可比矩阵是一阶偏导数以一定方式排列成的矩阵,其行列式称为雅可比行列式。还有,在代数几何中,代数曲线的雅可比量表示雅可比簇:伴随该曲线的一个群簇,曲线可以嵌入其中。它们全部都以数学家雅可比命名;英文雅可比量"Jacobian"。

雅可比矩阵的重要性在于它体现了一个可微方程与给出点的最优线性逼近。因此,雅可比矩阵类似于多元函数的导数。雅可比矩阵定义为向量对向量的微分矩阵。

 用python实现雅可比矩阵,具体代码如下:

import numpy as np
# 主函数
def Jacobi(A, B, x0, x, eps, k):
    """雅可比迭代法
        Args:
            A:为方程组的系数矩阵
            B:为方程组右端的列向量
            x:为迭代初值构成的列向量
            x:迭代向量
            eps :精度误差
            k:最大迭代次数
        Returns:
            times:迭代次数
            x:Array数组,方程的解
        Raises:
    """
    n, m = A.shape
    if n != m:
        print("invalid data!")
        return None
    times = 0
    while times < k:
        for i in range(n):
            temp = 0
            for j in range(n):
                if i != j:
                    temp += x0[j] * A[i][j]
            x[i] = ((B[i] - temp) / A[i][i])
        error = max(abs(x - x0))
        times += 1
        if error < eps:
            print("精确度等于", eps, "时,需要迭代", times, "次收敛")
            return (x, times)
        else:
            x0 = x.copy()
    print("在最大迭代次数内不收敛", "最大迭代次数后的结果为", x)
    return None
 
 
if __name__ == '__main__':
    a = np.array([[4., -3, 2], [4, 22., -1], [6, 3, 12]])
    b = np.array([20., 33, 36])
    x = np.array([0., 0, 0])   # 迭代初始值
 
    x0 = x.copy()
    g = 1e-6
    Jacobi(a, b, x0, x, g, 100)
    print(x)

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值