簡體   English   中英

R和C ++迭代

[英]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 absint運行,而fabs在雙打/浮點運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM