2017-04-15 41 views
0

在這段代碼中,我正在計算一個ODE u'(tk)= u(tk)= uk的解的數值近似值,並存儲所有的uk和tk值,如下所示。如何使python的指數增長代碼相當於C++?

代碼:

def compute_u(u0,T,n): 
    t = linspace(0,T,n+1) 
    t[0] = 0 
    u=zeros(n+1) 
    u[0]= u0 
    dt = T/float(n) 
    for k in range(0, n, 1): 
     u[k+1] = (1+dt)*u[k] 
     t[k+1] = t[k] + dt 
    return u, t 

我現在想實現這個代碼轉換成C++和我對着沿途一些岩石。我在C++方面比較新,我想知道這個論壇裏有沒有人能指出我正確的方向,因爲python的函數C++並不像linspace或零。任何輸入都會有幫助。

+0

你的'linspace'和'zeroes'不帶原始蟒蛇。它來自你正在使用的一些軟件包。你應該發佈代碼,如果這是你自己的函數,或者在C++中找到一些等價的庫。請發佈[mcve]。 – YiFei

+0

C++中是否有等價的庫? – gokublack

+0

啊,我不知道你在Python中使用哪個庫。但是作爲你名字的簡單猜測,linspace可能是關於'線性空間'的東西。在這種情況下,請看看亞爾的建議,即'Eigen'庫,它是C++中一個好的線性代數庫。 – YiFei

回答

0

這裏有linspace:

std::vector<float> linspace(float a, float b, uint32_t n) 
{ 
    std::vector<float> result(n); 
    float step = (b - a)/(float) (n - 1); 

    for (uint32_t i = 0; i <= n - 2; i++) { 
     result[i] = a + (float) i * step; 
    } 
    result.back() = b; 

    return result; 
} 

嘗試自己零。

或者更好的解決方案:使用Eigen,它有兩個功能。