Rcpp を使用して R から C++ でループを実行する関数を作成しようとしています。
OUTの最初の行の各位置がスカラーsigma_0によって与えられるため、関数が返すはずのマトリックスOUTよりも1行短いマトリックスZがあります。
この関数は、微分方程式を実装することになっています。各反復は、マトリックス Z からの値と、以前に生成されたマトリックス OUT の値に依存します。
私が持っているのはこれです:
cppFunction('
NumericMatrix sim(NumericMatrix Z, long double sigma_0, long double delta, long double omega, long double gamma) {
int nrow = Z.nrow() + 1, ncol = Z.ncol();
NumericMatrix out(nrow, ncol);
for(int q = 0; q < ncol; q++) {
out(0, q) = sigma_0;
}
for(int i = 0; i < ncol; i++) {
for(int j = 1; j < nrow; j++) {
long double z = Z(j - 1, i);
long double sigma = out(j - 1, i);
out(j, i) = pow(abs(z * sigma) - gamma * z * sigma, delta);
}
}
return out;
}
')
残念ながら、私はそれがうまくいかないことをかなり確信しています。関数は実行されますが、計算された値が正しくありません - Excel の簡単な例と単純な R コーディングで確認しました。私は、C++ を使用した Excel と R の実装がいつ違い始めるかを確認するために、段階的に構築しようとしてメインの微分方程式を切り離しました。abs() 関数と power() 関数を使い始めたときのようですが、問題を絞り込むことはできません。どんな助けでも大歓迎です-また、RとともにC++とC++を使用するのはこれが初めてだと言うかもしれません.