python - 如何避免指数项的数值溢出错误?
问题描述
由于溢出错误,处理具有指数项的数值计算通常会变得很痛苦。例如,假设您有一个概率密度 ,P(x)=C*exp(f(x)/k)
其中 k 是非常小的数字,例如 的数量级10^(-5)
。
要找到C
一个人的价值,必须整合P(x)
。这里出现溢出错误。我知道这也取决于f(x)
. 但此刻让我们假设,f(x)=sin(x)
。
如何处理此类问题?
我们可以使用哪些技巧来避免它们?
此类问题的严重程度是否取决于语言?如果是,应该用哪种语言编写代码?
解决方案
正如我在评论中提到的,我强烈建议尽可能使用分析方法。但是,如果你想计算形式的积分
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的评论
推荐阅读
- spring - SpringBoot 创建框架启动库
- r - R - 帮助从 0 构建时间列?
- php - 对特定分类有问题循环
- mysql - 数据库架构:当记录具有不同数量的属性(列)
- python - beautifulsoup select 方法返回回溯
- android - 是什么导致 Google Play 开发者控制台中出现此警告:“我们检测到您的应用正在使用旧版本的 Google Play 开发者 API”
- php - 为什么添加标题后无法获取 POSTFIELDS?
- react-native - 如何在本机反应中跨组件全局调用一种方法
- c# - 类型列表参数的正确命名约定
- c# - 将委托转换为 lambda?