对不起,这对你们来说是一个非常简单的问题,但是因为我没有人可以谈论它,我想我应该在这里问一下。我现在只从书中学习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;
}
}
答案 0 :(得分:2)
for (j; j < M; j++) {
此循环无法初始化j
。在第一个外部循环中,j
仍然具有初始值1
,它最初被分配;但是在第二个外环上,j
仍然等于M
,从最后一次迭代开始,内部循环根本不会迭代。