在C ++中创建基本矩阵的难度

时间:2016-03-19 23:18:53

标签: c++ arrays matrix

对不起,这对你们来说是一个非常简单的问题,但是因为我没有人可以谈论它,我想我应该在这里问一下。我现在只从书中学习C ++几天,我试图通过两个循环为矩阵“Smat”定义矩阵元素,如下面的代码所示。对于每个'k'行和'j'列,我希望将值“Stemp”放入矩阵值“Smat [k] [j]”中。但是,当我运行下面的代码时,代码只使用k = 0并忽略k = 1,k = 2等(它确实设法通过所有j值)。如果有人能告诉我哪里出错了,我真的很感激。这个问题非常简单,但不幸的是,在现实生活中我无法与之交谈。提前谢谢。

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;
        }
}

1 个答案:

答案 0 :(得分:2)

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

此循环无法初始化j。在第一个外部循环中,j仍然具有初始值1,它最初被分配;但是在第二个外环上,j仍然等于M,从最后一次迭代开始,内部循环根本不会迭代。