很抱歉,这对你们来说是一个非常简单的问题,但是由于我没有人可以谈论这个问题,所以我想我应该在这里问。我现在才从书上学习 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;
}
}
最佳答案
for (j; j < M; j++) {
此循环无法初始化j
。在第一个外循环中,j
仍然具有最初分配的初始值 1
;但在第二个外部循环中,从上次迭代开始,j
仍等于 M
,并且内部循环根本不会迭代。
关于c++ - 在 C++ 中创建基本矩阵的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36108432/