は実係数の任意N X N行列を考えると、我々は、双一次形式Bを定義することができ:RN X RN→双線形&二次形式の評価をベクトル化する方法は?
B(X、Y)= XTAyの、
と二次形式QでR:RN&#x2192。 RQ(X)= B(X、X)= XT
によってアックス。
(二次形式の最も一般的な用途のためQ 、マトリックスは、対称、又は正定も対称である、そうであれば、これらのいずれかが事実であると仮定して自由に感じますそれはあなたの答えのために重要。)
も(、FWIW、B IとQ I(I)はN X N恒等行列であり、それぞれ、標準内積であり、R N、即ち上L ノルムの二乗XTYとXT X。)
は今、2つのN X メートル行列、XとY、及びがあるとnxnマトリックス。私は、Bの両方の計算を最適化したい(X 、I、Y 、I)とQ(X 、I)(x、iおよびy 、i)は、それぞれXとYのI列目を示し、Iは、少なくともnumpyの、R、またはMatlabのようないくつかの環境では、これはベクトルのいくつかのフォームを含むであろう、と推測します。寸法MN X メートル、MN X メートルと私が考えることができる唯一の解決策は、対角ブロック行列を生成する必要
[X]、[Y]及び[]、それぞれMN X MN、および(ブロック)対角要素X と、I、y 、、およびAである。次いで、所望の計算は、行列乗算[X] T [A] [Y]および[X] T [] [X]であろう。この戦略は、まったく間違いありませんが、時間と空間の両面で効率的な方法があれば、私はそれを見ていきたいと思います。 (これらのブロック行列のまばらさを利用していないその実装は運命づけられないことは言うまでもない)
もっと良いアプローチがありますか?
これを行う私の好みはnumpyですが、RやMatlabのような効率的な行列計算をサポートする他のシステムの回答もOKです(私はそれらをnumpy)。
ありがとうございます!製品X T所望B(X 、I、Yを計算するであろう AYとX T AXを計算もちろん
、 、i)およびq(X 、I)無関係O(メートル )と一緒に、(得メートル X メートル行列の対角要素として)B(X 、I、Y 、J)とB(X 、I、X 、J)、(I&#x2260のために、 j)、これは非スターターです。
ありがとう:あなたはこれを試みることができます!あなたは(np.matrix(X).T * np.matrix(A))を意味しましたか?* ** np.matrix(Y)** .T.A).sum(1)? – kjo
X、A、Yを行列として格納すると、((X.T * A).A * Y.T.A).sum(1)の方が短くなります。私は主に行列の乗算と要素ごとの乗算を明確にするためにnp.matrix呼び出しを含めていました。 –
または配列を貼り付けるだけです:(np.dot(X.T、A)* Y.T).sum(1) – user333700