gpt4 book ai didi

python - numpy,相同的计算不同的结果

转载 作者:太空宇宙 更新时间:2023-11-04 10:23:32 24 4
gpt4 key购买 nike

我想计算this fomula .
我认为结果是 A。
所以我用 numpy 写了一个 python 代码。
但是根据计算顺序,结果不是A。
是什么导致了这个?

import numpy as np
from numpy import *
from numpy.random import *
import decimal

#generate matrix A
A = randn(180,240)
A = np.array(A, dtype = decimal.Decimal )

#generate matrix P
h,w=A.shape
P = randn(0.9*h,h)
P = np.array(P, dtype = decimal.Decimal )

#it's OK. IA = A
PP = dot(P.T,P)
PPinv = np.linalg.inv(PP)
PPinvPP = dot(PPinv,PP)
PPinvPPinv = np.linalg.inv(PPinvPP)
I = dot(PPinvPPinv,PPinvPP)
IA = dot(I, A)

#I think IA2 must be A. but not A. Why?
PA = dot(P,A)
PPA = dot(P.T,PA)
PPinvPPA = dot(PPinv,PPA)
IA2 = dot(PPinvPPinv, PPinvPPA)

#print result
print "A;%0.2f" % A[0,0]
print "IA:%0.2f" % IA[0,0]
print "IA2:%0.2f" % IA2[0,0]

最佳答案

这里发生的事情很有趣:

一般来说,您的公式只有在 PP 是非奇异的情况下才是正确的。

那么为什么 AI == A

PP = dot(P.T,P)
PPinv = np.linalg.inv(PP)
PPinvPP = dot(PPinv,PP)
PPinvPPinv = np.linalg.inv(PPinvPP)
I = dot(PPinvPPinv,PPinvPP)
IA = dot(I, A)

这里有几点需要注意:

  • PP = dot(P.T,P) 是单数
  • => PPinv 不是真正的逆
  • 但是PPinvPP是可逆的,所以I确实是单位矩阵

注意:您只会得到 AI == A,因为您对条款的评估顺序特殊。

IA2 项的第二次计算中,您没有这种特殊的评估顺序,结果是 A

关于python - numpy,相同的计算不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30817781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com