gpt4 book ai didi

python - 如何有意使具有错误打印输出的Python代码崩溃(“IntegrationWarning”)

转载 作者:行者123 更新时间:2023-12-03 08:37:56 27 4
gpt4 key购买 nike

我有一个python脚本,该脚本在某些参数空间下会输出错误:

IntegrationWarning: The occurrence of round-off error is detected, which prevents the requested tolerance from being achieved.  The error may be underestimated.
function_integral = quad(some_function, x_a, x_b, args = (some parameters))[0]
在此代码中,始终x_b> = x_a,始终some_function(x)> = 0。因此,function_integral> = 0总是。还是应该的。
该代码继续运行,但是在崩溃之后不久,我故意添加了一个错误(以捕获可能的错误),在这种情况下,该错误要求function_integral> =0。我在这里使用粗略的方法使此代码崩溃:
if function_integral < 0.:
print("some stuff about the parameters")
1/0
然后,通过ipython,我使用“debug”进入并探索问题。
当x_b = x_a + Gamma 时,似乎发生了“IntegrationWarning”错误的特定打印输出,其中,与x_b和x_a相比, Gamma 确实很小。在代码中有x_b = x_a的情况下,在此期间不需要上述积分,因为在这些情况下,有理由认为function_integral应该为零。因此,此处不使用积分功能。
舍入错误后,代码似乎在function_integral = -1e-11附近返回一个整数值,因此,基本上为零,但是,它为负数会导致问题(并且舍入错误本身会引起对精度的担忧代码(如果要继续运行)。
从理论上讲,我可以通过在x_b基本等于x_a时将function_integral设置为0来解决这个问题,这对于我的目的可能是足够的,但是,我想进一步探讨这个问题,然后看看是什么导致了该问题的发生。第一名。
出于某种原因,当我添加一个内置崩溃时,在计算积分(以及其他一些事情)并输出/返回其值的函数中,它不会在此处捕获错误。仅在代码的稍后部分,当使用function_integral定义另一个必须大于等于0的参数时,它会崩溃(我也是内置的)。
因此,问题是,当Python打印出诸如“IntegrationWarning”之类的内置错误之一时,如何崩溃代码(以对其进行调试)?
编辑:
我最终采用了一种快速且肮脏的方法,即如果x_b = x_a + Gamma ,则不调用quad(),其中, Gamma 比x_b和x_a小。对该解决方案不完全满意,但是在这种情况下,可能就足够了。听到这种情况的调试方法会非常好奇。

最佳答案

import sys

try:
if function_integral < 0.:
print("some stuff about the parameters")
except IntegrationWarning:
sys.exit(1)
出现“集成错误”时,这应该退出代码

关于python - 如何有意使具有错误打印输出的Python代码崩溃(“IntegrationWarning”),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64948854/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com