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