看板 C_and_CPP 關於我們 聯絡資訊
小的我在跑模擬 我有兩個相似的迴圈 當模擬次數為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
LPH66:我懷疑是捨去誤差... 03/15 03:50
a5170040:謝謝回答....可是我下面的迴圈跑了很多次沒這問題耶? 03/15 12:23
Alexboo:先看v1的值對不對啊.... 03/16 16:24