首页 > 解决方案 > 如何避免指数项的数值溢出错误?

问题描述

由于溢出错误,处理具有指数项的数值计算通常会变得很痛苦。例如,假设您有一个概率密度 ,P(x)=C*exp(f(x)/k)其中 k 是非常小的数字,例如 的数量级10^(-5)

要找到C一个人的价值,必须整合P(x)。这里出现溢出错误。我知道这也取决于f(x). 但此刻让我们假设,f(x)=sin(x)

如何处理此类问题?

我们可以使用哪些技巧来避免它们?

此类问题的严重程度是否取决于语言?如果是,应该用哪种语言编写代码?

标签: pythonfortrannumerical-methodsinteger-overflowexponential

解决方案


正如我在评论中提到的,我强烈建议尽可能使用分析方法。但是,如果你想计算形式的积分

I=Integral[Exp[f(x)],{x,a,b}]

如果f(x)可能会溢出指数,那么您可能希望通过以下方式重新规范化系统:

假设f(c)是域 [a,b] 中f(x)的最大值,那么可以写成:

I=Exp[f(c)] Integral[Exp[f(x)-f(c)],{x,a,b}]

这是一个丑陋的把戏,但至少你的指数在积分中会很小。

注意:刚刚意识到这是roygvib的评论


推荐阅读