我正在手工从雅可比矩阵计算 pcov,并理解其中的大部分内容,但很难理解 .dot 函数如何在 python 中的 numpy 中工作。我查看了手册并尝试手动解决它,但它与 python 的输出不匹配
这是原始雅可比矩阵:
Jacobian: [[ 1. 1. 1. ]
[ 4. 2. 0.99999998]
[ 9.00000004 3. 1.00000004]
[ 16. 4. 1.00000004]
[ 25.00000004 5.00000011 0.99999998]]
在这行代码之后:
precov = jacobian.T.dot(jacobian)
这是输出:
precov = [[979.00000266 225.00000313 55.00000039]
[225.00000313 55.00000113 15.00000023]
[ 55.00000039 15.00000023 5.00000007]]
根据我的理解,我期望上面的矩阵是原始矩阵和转置矩阵的点积,但是当我手动计算时,我得到:
[[3 7 13]
[7 21 43]
[13 43 101]]
有人对我遗漏或不理解的内容有任何见解吗?谢谢你!
为了近似,这是您的原始矩阵。
import numpy as np
A = np.arange(1, 6)[:, np.newaxis] ** np.arange(3)[::-1]
A
# array([[ 1, 1, 1],
# [ 4, 2, 1],
# [ 9, 3, 1],
# [16, 4, 1],
# [25, 5, 1]])
当你手工计算时,你必须做这样的事情:
A[:3, :3].dot(A[:3, :3].T)
# array([[ 3, 7, 13],
# [ 7, 21, 43],
# [13, 43, 91]])
NumPy 正在执行您告诉它执行的操作。