在使用C#編程時用的了Exp函式,但計算中產生了Exp(1000),導致結果Infinity 或NaN。然后使用matlab等工具測驗了一下,大約Exp(-700~700)都可以計算。但Exp(計算中產生的值V) 中V不可避免不在(-700~700)范圍內。
解決辦法:
動動腦,用e的冪函式特性解決此問題。
(原理1)所以:
如果V大于等于0,可以用sqrt進行一次縮放,這樣就可以擴大計算范圍了。
如果V小于0,那么可以考慮,利用倒數去表示
(原理2)例如:
//你要對V值求Exp
temp=V
if(temp>=0)
{
//原理1
result=Math.Exp(Math.Sqrt(V))*Math.Exp(Math.Sqrt(V))
}
else
{
//原理2
//對V求絕對值,然后開方
result=1/Math.Exp(Math.Sqrt(Math.abs(V)))*Math.Exp(Math.Sqrt(Math.abs(V)))
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/151797.html
標籤:其它技術問題
上一篇:請教c++學習方法
