我正在尝试集成一个func在我的代码中定义的函数,其中包含一个累积分布函数:
from scipy.stats import norm
from scipy.integrate import quad
import math
import numpy as np
def func(v, r):
return (1 - norm.cdf(r / math.sqrt(v)))
print(quad(lambda x: func(x, 1) , 0, np.inf))
我得到这个警告:
IntegrationWarning:算法不收敛。在外推表中检测到舍入误差。假设无法达到要求的容差,并且返回的结果(如果 full_output = 1)是可以获得的最佳结果。
结果是:
(1465037253.745132, 2713580385.6787577)
我认为这个结果是错误的,但我不知道在我的代码中要更改什么。我试图排除点 0,但这没有帮助。
我还尝试更改限制以尝试不是从 0 开始,而是从 r 开始(所以在附加示例中从 1 开始)(这些是我需要检查的不同结果)并且有不同的错误:
积分警告:积分可能是发散的,或缓慢收敛的。
而且我认为获得的结果是错误的。你有什么建议吗?
编辑:
我试图计算这个:
其中 G(x) 是累积分布函数。