Python 如何使用numpy/scipy求解方程中已知函数的x?

Python 如何使用numpy/scipy求解方程中已知函数的x?,python,numpy,statistics,scipy,Python,Numpy,Statistics,Scipy,我有一个来自scipy的对数范数分布,它的参数是已知的 import scipy log_norm_obj = scipy.stats.lognorm([log_mu], shape=sigma) 我需要解出一个满足以下等式的x: x = (1 - log_norm_obj.cdf(x)) / log_norm_obj.pdf(x) 我如何使用numpy/scipy实现这一点?谢谢 您可以使用。在scipy 0.11及更高版本中,您可以使用新函数或。假设您的x是标量,下面是一些关于如何执行

我有一个来自scipy的对数范数分布,它的参数是已知的

import scipy

log_norm_obj = scipy.stats.lognorm([log_mu], shape=sigma)
我需要解出一个满足以下等式的x:

x = (1 - log_norm_obj.cdf(x)) / log_norm_obj.pdf(x)
我如何使用numpy/scipy实现这一点?谢谢

您可以使用。在scipy 0.11及更高版本中,您可以使用新函数或。假设您的x是标量,下面是一些关于如何执行此操作的示例代码:

from scipy.optimize import minimize_scalar

def f(x):
    return (1 - log_norm_obj.cdf(x)) / log_norm_obj.pdf(x) - x

result = minimize_scalar(f)        
print result.x 
# this would print your result
以上使用默认值。您还可以使用,或Brent方法的有界版本。如果您的函数仅在给定域中定义,或者您希望在特定时间间隔内获得解决方案,则后者可能非常有用。例如:

result = minimize_scalar(f, bounds=(0, 10.), method='bounded')
如果函数采用向量而不是标量,则可以使用
minimize
采用类似的方法。如果您的scipy版本早于0.11版,只需使用您使用的。

即可。在scipy 0.11及更高版本中,您可以使用新函数或。假设您的x是标量,下面是一些关于如何执行此操作的示例代码:

from scipy.optimize import minimize_scalar

def f(x):
    return (1 - log_norm_obj.cdf(x)) / log_norm_obj.pdf(x) - x

result = minimize_scalar(f)        
print result.x 
# this would print your result
以上使用默认值。您还可以使用,或Brent方法的有界版本。如果您的函数仅在给定域中定义,或者您希望在特定时间间隔内获得解决方案,则后者可能非常有用。例如:

result = minimize_scalar(f, bounds=(0, 10.), method='bounded')
如果函数采用向量而不是标量,则可以使用
minimize
采用类似的方法。如果您的scipy版本早于0.11,只需使用