2011-11-03 10 views
0

I(通常はN> 100)マトリックスのanxn種類に取り組む必要があり、次のような例がある:R:行列演算[新しいバージョン]

mymat <- as.matrix(cbind(V1 = c(11, 12, 13, 14),V2 = c(21, 22, 23, 24), 
      V3 = c(31, 32, 33, 34), V4 = c(41, 42, 43, 44))) 
    row.names (mymat) <- c("a", "b", "c", "d") 

    V1 V2 V3 V4 
a 11 21 31 41 
b 12 22 32 42 
c 13 23 33 43 
d 14 24 34 44 

I、要素上で動作する必要があるが(行列要素を意味(2,1)および(1,2)または(3,4)及び(4,3)等:

mymat[1,2] * (mymat[1,2] + mymat[2,1]) = 12 * (12 + 21) = 396 

完全な動作である要素について、Yijを(Yijを+ Yji)を含むであろう行列の対角では、次のようになります。

mymat[2,2] * (mymat[2,2] + mymat[2,2]) = 22 * (22 + 22) = 968 

したがって、完全な操作は次のようになります。

11 * (11 + 11) + 12 * (12 + 21) + 13 * (13 + 31) + 14 * (14 + 41) + 
21 * (21 * 12) + 22 * (22 + 22) + 23 * (23 + 32) + 24 * (24 + 42) + 
31 * (13 + 31) + 32 * (23 + 32) + 33 * (33 + 33) + 34 * (34 + 43) + 
44 * (44 + 44) = 22881 
申し訳

私はあなたの助けを必要とする、把握できませんでした。

+0

これが本当の問題であり、私はそれがより明確にするために、それを書き換えることができます。私は強いマトリックス操作の知識を持っていないことを謝罪する必要があります... – jon

+0

正確には、あなたは逆数を取ろうとしていますか?私はあなたが何をしようとしているのか分かりません。あなたのサンプル入力と一緒にサンプルを出力してください。 –

+0

私の改訂版 – jon

答えて

5

これはどういう意味ですか?

myMatrix = mymat 
myProductSum = myMatrix * (myMatrix + t(myMatrix)) 
myTotal = sum(myProductSum) 

これらは、要素単位の製品に続いて、あなたが概説されてきた計算、すなわち、要素ごとの和、その後、行列全体の和を行います。何らかの理由で、あなたは対角要素のために別の何かをしたい、場合は、次のように適応させることができ

myDiag = diag(diag(mymat)) 
myMatrix = mymat - myDiag 
myProductSum = myMatrix * (myMatrix + t(myMatrix)) 
myTotal = sum(myProductSum) + sum(2 * myDiag^2) 
+0

は、混乱を避けるために削除されました。 – jon

+0

これを反映するための答えが更新されました。 :) – Iterator

+0

私は今計算が要求通りに実行されると思いますが、あなたの例にエラーがあるのだろうかと思います。 – Iterator

関連する問題