看板 Fortran 關於我們 聯絡資訊
小弟開始在做以線性分析逼近非線性(真實)分析結果的練習 (就是有點像有限元素法,切越細越精準 我是將力分段給予,讓每次的變形越小越準) 可是我跑出來的結果,與我按計算機有點小誤差 最誇張的是當我切超過10010次後(也就是code裡的n大於10010) 結果比切10010次的誤差值還大...... 請精通matlab的同學幫我跑同樣的計算式子就沒有此問題 連一開始分段次數少的結果都與我按計算機無誤 不知道是不是我沒有設定精度的問題呢? 以下是我的code: do j=1,10 !decide how many times to loading read(5,*) n pi=acos(-1.) !the angle between BA and AC line b= pi/2 !the length of BC line c=4*(2**(1/2.)) do i=1,n !the angle between BC and AC line ai=(pi-b)/2 !strength on BC line F= (5000./n)*sin(pi-(2*ai))/sin(ai) !variation of BC line s= F/12000 !total length after loading c=c+s !final angle between BA and AC line after loading b=acos((32-c*c)/32) end do !chang b's variation from rad to degree q=(b*180/pi)-90 !Error value z=(14.25-q)/14.25*100 write (7,*) n,q,c,z end do 還請知道的大大幫忙解惑一下 感謝~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.125.133
target8917:你可以更換精確度以後測試看看 我覺得蠻有可能的 12/29 21:53
ilovenets:囧 真的是耶 我想說小數點後面應該沒差的說>< 12/30 01:23
target8917:浮點數運算次數多的時候特別要注意精確度問題 12/30 01:33
target8917:應該說......你的N大於10010時,浮點數的無效位可能出Y 12/30 01:37
target8917:現了 所以會越算越不準 12/30 01:38
ilovenets:可是我n=5的值就開始有問題了 所以我才會懷疑是否精度 12/30 08:38
ilovenets:精度造成的誤差 12/30 08:38
YCTzeng:很有可能是精確度問題。 12/30 14:02