[問題] 跑模擬大跑到一個值開始出現怪怪的

看板C_and_CPP作者 (Piggy)時間15年前 (2009/03/14 23:16), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串1/1
小的我在跑模擬 我有兩個相似的迴圈 當模擬次數為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

03/15 03:50, , 1F
我懷疑是捨去誤差...
03/15 03:50, 1F

03/15 12:23, , 2F
謝謝回答....可是我下面的迴圈跑了很多次沒這問題耶?
03/15 12:23, 2F

03/16 16:24, , 3F
先看v1的值對不對啊....
03/16 16:24, 3F
文章代碼(AID): #19kyfItz (C_and_CPP)