Algorithm 仅计算第二个表达式的快速方法
给定一个Algorithm 仅计算第二个表达式的快速方法,algorithm,performance,matrix,optimization,time-complexity,Algorithm,Performance,Matrix,Optimization,Time Complexity,给定一个n×n矩阵X,三个n×n对角矩阵D1,D2,D3,以及三个n×1向量v1,v2,v3,我的目标是设计一种高效的方法来尽可能快地计算下列表达式: (Exp1)=X·v1+X·X·v2+X·X·X·v3 (Exp2)=D1·X·v1+D2·X·X·v2+D3·X·X·v3 为了有效地评估(Exp1),我有以下想法: 我可以重写(Exp1),如下所示: y1=X·v3+v2 y2=X·y1+v1 (Exp1)=X·y2 (Exp1)=X·v1+X·X·v2+X·X·X·v3=X·(X·(X·
n×n
矩阵X
,三个n×n
对角矩阵D1
,D2
,D3
,以及三个n×1
向量v1
,v2
,v3
,我的目标是设计一种高效的方法来尽可能快地计算下列表达式:
(Exp1)=X·v1+X·X·v2+X·X·X·v3
(Exp2)=D1·X·v1+D2·X·X·v2+D3·X·X·v3
为了有效地评估(Exp1)
,我有以下想法:
我可以重写(Exp1)
,如下所示:
y1=X·v3+v2
y2=X·y1+v1
(Exp1)=X·y2
(Exp1)=X·v1+X·X·v2+X·X·X·v3=X·(X·(X·v3+v2)+v1)
因此,我可以通过仅使用三个矩阵向量乘法来计算(Exp1)
,如下所示:
y1=X·v3+v2
y2=X·y1+v1
(Exp1)=X·y2
然而,仅为了有效地评估
(Exp2)
,我不知道。任何建议或提示都是非常受欢迎的。我认为没有比分别计算向量X.v1
、X.X.v2
和X.X.v3
(6个矩阵/向量倍数)并将它们组合到Exp1
和Exp2
更好的方法了。谢谢您的回答。Exp1和Exp2是两个独立的问题。仅用于评估Exp2,有没有更快的方法?@JohnSmith:恐怕没有,因为Dk
和vk
是不相关的。X
有任何属性吗?