矩阵Julia中乘法函数的应用
假设交换矩阵J的特征向量给出了基的变化。现在假设我生成一个随机矩阵,使得H=H^T。例如,我的H是:矩阵Julia中乘法函数的应用,julia,Julia,假设交换矩阵J的特征向量给出了基的变化。现在假设我生成一个随机矩阵,使得H=H^T。例如,我的H是: [-4.339231145150657 -1.9513538676596298 0.022375597517700463 0.0 -1.9513538676596298 -1.292344753373925 1.3152010547965873 0.022375597517700463 0.022375597517700463 1.3152010547965873 -1.109645984220
[-4.339231145150657 -1.9513538676596298 0.022375597517700463 0.0
-1.9513538676596298 -1.292344753373925 1.3152010547965873 0.022375597517700463
0.022375597517700463 1.3152010547965873 -1.1096459842204194 4.229348916735498
0.0 0.022375597517700463 4.229348916735498 -3.79113483769014]
然后,如果我想换成“J”基,我必须做线性变换:evecJ^T*H*evecJ(evecJ是J的向量矩阵)。所以逆变换应该把我带回到H的原始值。但是,如果我这样做的话,情况就不是这样了
*(evecJ',H,evecJ)
*(evecJ,H,evecJ')
如果我有
evecJT = evecJ'
*(evecJT,H,evecJ)
*(evecJ,H,evecJT)
为什么这是两种不同的方法?没有更多的信息很难知道,但我猜这是两个因素的组合:
A'*B
形式的运算:它将尝试用Ac_mul_B
等函数替换这些函数,以调用适当的BLAS函数,避免中间分配。然而,如果转置发生在其他地方,它就不能做到这一点。换句话说,J'*H
和JT=J';JT*H
实际上会在内部调用不同的函数你能发布更多的代码来说明如何生成
evecJ
?Julia识别了一些语法,例如X*Y'
,并将它们直接降低到BLAS原语,这些原语在乘法过程中有效地进行了转置(实际上没有重新排列矩阵)。在第二个版本中不会发生这种情况,但它应该有相同的结果。张贴evecJ
的值会很有帮助。是的,首先我构建了de 0,1矩阵,然后我只做了eigvalsJ,evecJ=eig(J)
。