背景资料:
考虑Psedocode:
问题:
我正在尝试在C ++中实现上述内容,但我真的不明白如何正确实现它。注意,ZZ
是伪代码中的Z_ij
。我们有S[0] = 50
。这是我的代码:
for(int j = 1; j <= N; j++){
for(int i = 1; i <= n; i++){
S[i] = S[i-1]*exp((mu - sigma/2)*(t[i] - t[i-1]) + sqrt(sigma)*sqrt(t[i] - t[i-1])*ZZ[i]);
}
}
大N = 10000
和n = 10
。我知道我的外部循环除了加热我的cpu之外什么也没做,但是我不确定如何使用上面Pseudocode的外部循环。非常感谢任何建议。
这是我创建的时间向量,我们使用10个时间步长t_0 = 0,t_1 = \ Delta t,t_2 = 2 \ Delta t,...,t_10 = 10 \ Delta t = T.注意T = 1这是代码:
double t[n+1];
for(int i = 0; i <= n; i++){
t[i] = (double)i*T/(n-1);
}
答案 0 :(得分:1)
'Z_i,j'取决于两个循环,即。索引I和j。你也错过了函数M(Phi_i(j))。这个函数使得依赖于两个索引。
答案 1 :(得分:0)
你需要改变t数组(我想是时候了)。
for(int j = 1; j < N; j++){
for(int i = 1; i < n; i++){
t[i] = t[i-1] + deltat;
S[i] = S[i-1]*exp((mu - sigma/2)*(t[i] - t[i-1]) + sqrt(sigma)*sqrt(t[i] - t[i-1])*ZZ[i]);
} }