2016-03-19 10 views
2

これはあなたには非常に簡単な質問ですが、私はそれについて話すことができる誰もいないので、ここでそれを尋ねるべきだと思っています。私は数日の間、本から学んでいるだけですが、以下のコードで与えられているように、行列 "Smat"の2つのループを通して行列要素を定義しようとしています。それぞれの 'k'行と 'j'列に対して、値 "Stemp"を行列値 "Smat [k] [j]"に入れたい。しかし、コードを実行すると、コードはk = 0だけ使用され、k = 1、k = 2などは無視されます(すべてのjの値をうまくいくように管理します)。誰かが私がどこに間違っているか教えてくれたら、本当に感謝しています。この質問は非常に些細なものですが、残念ながら私は実際の生活でそれについて話すことはできません。前もって感謝します。C++で基本的な行列を作成するのが難しい

unsigned long int j = 1; 
unsigned long double M = pow(2, 8); 
double T = 1; 
double dW; 
double dt = T/M; 
double Smat[100][256]; // Define rows/cols of Smat 
double sigma; 
double c = -2; 
double mu = 2; 
double Stemp = S_0; 
double theta = 0.01; 

for (int k = 0; k < 100; k++) { 
    Stemp = S_0; 
    Smat[k][0] = Stemp; // All first rows of Smat start with S_0 value 

    for (j = 1; j < M; j++) { 
     double nrv = normaldist(); 
     dW = sqrt(dt)*nrv; 
     sigma = sigatm + c /(max(sqrt(T), theta))* log(Stemp/S_0); 
     Stemp = Stemp + Stemp*mu*dt + Stemp*sigma*dW; 
     Smat[k][j] = Stemp; 
     } 
} 

答えて

2
for (j; j < M; j++) { 

このループはjの初期化に失敗しました。最初の外部ループでは、jの初期値はまだ1で、最初に割り当てられています。 2番目の外側のループでは、jは最後の反復からまだMに等しくなり、内側のループはまったく反復しません。

+0

私は最初にコードを誤解しましたが、これはまだ問題であるため、説明を更新しました。 –

+0

ありがとう、私は今それを変更しました。そしてコードは機能します!ありがとう! – ThePlowKing

関連する問題