[英]R and C++ iteration
我正在嘗試編寫一個使用Rcpp從R運行C ++循環的函數。
我有一個矩陣Z,它比函數應該返回的矩陣OUT短一行,因為OUT的第一行的每個位置都將由標量sigma_0給出。
該函數應該實現微分方程。 每次迭代取決於來自矩陣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()函數時,但我根本無法縮小問題范圍。 任何幫助將不勝感激 - 我也許會提到這是我第一次使用C ++和C ++以及R.
我想你想要fabs
而不是abs
。 abs
在int
運行,而fabs
在雙打/浮點運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.