[问题] 数值超过正负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