python scipy.integrate逆ppf
Posted
技术标签:
【中文标题】python scipy.integrate逆ppf【英文标题】:python scipy.integrate inverse ppf 【发布时间】:2021-01-06 13:15:27 【问题描述】:您好,我想知道 x 值是多少,它会给我一个特定的数字积分。
到目前为止,我正在使用 scipy.integrate 并且工作正常,但是给定一个整数值是否有办法知道给出该结果的 x 是什么?
假设我有一个函数 f(x) = |2-x| 1
我想知道给我 0.25(第一个四分位数)的 x 值是多少。
scipy.stats 中用于正态分布的是 norm.ppf(),在这种特殊情况下,我将它用于 PDF(概率密度函数),但它可以是任何积分。
感谢和问候
【问题讨论】:
除了整数值还有什么已知的?我们需要对函数本身有所了解才能恢复整数值。功能是否以某种方式给出?符号还是数字? 你好@Arty,正如我在问题中提到的那样,我有这个函数,让我们说给定函数的初始值,比如从 1 到 ?我有结果 0.25 你的功能是如何给出的?我的意思是它是作为常规 python 函数给出的(def
或lambda
)。如果是这样,您可以使用二进制搜索来恢复积分。
我是python的初学者,我在1和3之间定义了函数f(x),我可以将其定义为方便的,以便找到使1和x之间积分的x值给结果0.25...有意义吗?
我用二分搜索发布了答案。
【参考方案1】:
我使用binary search 在logarithmic time 中找到答案(非常快)。你也可以运行code below online here。
import math, scipy.integrate, scipy.optimize
def f(x):
return math.sin(x)
a, b = 0, 10
integral_value = 0.5
res_x = scipy.optimize.bisect(
lambda x: scipy.integrate.quad(f, a, x)[0] - integral_value,
a, b
)
print(
'found point x', res_x, ', integral value at this point',
scipy.integrate.quad(f, a, res_x)[0]
)
【讨论】:
以上是关于python scipy.integrate逆ppf的主要内容,如果未能解决你的问题,请参考以下文章
路径关闭时如何让 SciPy.integrate.odeint 停止?
scipy.integrate.odeint可以计算矩阵的微分方程吗
如何使用 scipy.integrate.odeint 求解具有时间相关变量的 ODE 系统
scipy.integrate.odeint 和 scipy.integrate.ode 有啥区别?