私は生物学的集団のダイナミクスをシミュレートする関数が行列内に含まれている数学的モデルを使って作業しています。これは通常、関数を呼び出して行列を更新し、行列の乗算を実行してシステムのダイナミクスを次の時間ステップに投影することを必要とします。私は、可能な場合、マトリックス内に直接関数を埋め込み、明示的に行列要素を更新することをスキップすることができますか?In R関数を含む行列に対して行列演算を行うことは可能ですか?
モデルは次のようになります。 システムの状態が行列X1であり、例えば
X <- c(0,10)
システムが変わる要素NAが関数である
A <- matrix(data = c(0, NA,0.75,0.75),nrow =2,byrow = T)
[,1] [,2]
[1,] 0.00 NA
[2,] 0.75 0.75
をマトリクスに応じてX1の要素2の、このように
f.A.12 <- function(X.2){1 + (1 - X.2/1000)}
E本: 更新マリックスA更新されたマトリックスとX
A[1,2] <- f.A.12(X[2])
反復モデルの状態に基づいて:
A%*%X
[,1]
[1,] 19.9
[2,] 7.5
これは、各乗算
本物の前にAを更新し、1000倍を繰り返しますモデルは、複数の関数を含むはるかに大きな行列を使用します。 は私がそのような
A.with.fx <- matrix(data = c(0, f.A.12,
0.75, 0.75), nrow =2,byrow = T)
として、マトリックス内で直接機能を埋め込むためにそして定期的な行列演算を実行することを可能にするRパッケージは、明示的に割り当てることがなくても、例えば
A.with.fx%*%X
、あります各反復でXの関数であるAの値? これは、独自の必要なルックアップを行う変更された%*%
操作である関数が必要になると思います。
すべての要素がなければなりません同じ種類。つまり、関数の行列を持つことはできますが、数値型の行列に関数を埋め込むことはできません。 –