作者a5170040 (Piggy)
看板C_and_CPP
标题[问题] 跑模拟大跑到一个值开始出现怪怪的
时间Sat Mar 14 23:16:32 2009
小的我在跑模拟
我有两个相似的回圈
当模拟次数为1000000的时候第一个回圈会出现怪怪的
可是神奇的是第二个回圈竟然出现正常的值
不知道到底哪里出了问题
以下节录部分程式码
unsigned int i,j,n=nn;
double S0=s,K=k,r=rr,d=dd,sigma=vv,T=tt;
double sum1=0.0,sum2=0.0,mc1,mc2,var1,var2,sum12,sum22;
double U1,U2,Z1,Z2,S1,S2,V1,V2;
for(i=0;i<n;i++)
{
Z1 = Normal();
S1 = S0*exp((r-d-0.5*sigma*sigma)*T + sqrt(T)*sigma*Z1);
V1 = exp(-r*T)*Max(S1-K,0);
sum1 = sum1 + V1; //就是这边出现问题,加到某个程度之後开始出现
sum12 = sum12 + V1*V1;
}
for(i=0;i<n;i++)
{
Z2 = Normal();
S2 = S0*exp((r-d-0.5*sigma*sigma)*T + sqrt(T)*sigma*Z2);
V2 = exp(-r*T)*Max(K-S2,0);
sum2 = sum2 + V2; //可是这边没有问题@@
sum22 = sum22 + V2*V2;
}
其它地方我都检查过了,就是sum1 = sum1 + V1出现问题
实在不晓得为什麽会这样
模拟次数100000的时候它也跑得好好的说
谢谢帮忙解惑了
谢谢
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.114.164
1F:→ LPH66:我怀疑是舍去误差... 03/15 03:50
2F:→ a5170040:谢谢回答....可是我下面的回圈跑了很多次没这问题耶? 03/15 12:23
3F:推 Alexboo:先看v1的值对不对啊.... 03/16 16:24