[問題] 數值超過正負300多次方解決辦法?

作者: r1000000 (狗屁昭)   2016-08-08 20:41:23
大家好,目前我使用的是XE2013 with VS2012
目前碰到了一個問題是使用imsl計算bessel function
當回傳數值大於320次方時程式直接shut down
舉例來說
MA(I,J)=DBSI0(LN1(I)*RSD)/(LN1(I)*DBSI1(LN1(I)*RSD))
其中DBSI0與DBSI1是imsl的double precision 的 bessel function指令
當LN1(I)*RSD的值大於700時,會導致DBSI0與DBSI1回傳的值分別都大於320次方
實際上在數學運算時MA(I,J)算出來差不多10的-2到-3之間,但卻會因為分母與分子回傳
的值大於320次方而導致程式終止
有沒有先進能提供方法讓數值超過320次方依然能運算?
或是有甚麼解決方法,先謝謝各位
作者: sexyrickysky (花心只是掩飾內心的空虛)   2016-08-09 00:54:00
為什麼不先取對數......
作者: noonee (我和烤肉間只差一撮孜然)   2016-08-09 11:14:00
找一個函數先做mapping啊 例如一樓說的
作者: kerwinhui (kezza)   2016-08-24 14:23:00
判斷LN1(I)*RSD太大時用asymptotic series算啊
作者: ottoli (世界的盡頭)   2016-08-31 17:57:00
試試這個? http://myweb.lmu.edu/dmsmith/FMLIB.html這個函式庫可以算很大的數值.不知道可否滿足你的需要

Links booklink

Contact Us: admin [ a t ] ucptt.com