[英]How do i solve this equation for m using SciPy root function and how do i write it
[英]How do I solve for x with a known function in equation using numpy/scipy?
我有一個來自scipy的lognorm分布,其參數是已知的。
import scipy
log_norm_obj = scipy.stats.lognorm([log_mu], shape=sigma)
我需要解決滿足以下方程式的斧頭:
x = (1 - log_norm_obj.cdf(x)) / log_norm_obj.pdf(x)
我如何使用numpy / scipy做到這一點? 謝謝!
您使用scipy.optimize 。 從SciPy的0.11或更高版本,可以使用新的功能, minimize
或minimize_scalar
。 假設您的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
上面使用默認的布倫特方法 。 您也可以使用Golden方法或Brent方法的有界版本。 如果您的功能僅在給定的域中定義,或者您希望在特定的時間間隔內解決,則后者可能會很有用。 一個例子:
result = minimize_scalar(f, bounds=(0, 10.), method='bounded')
如果您的函數采用向量而不是標量,則可以使用minimize
采取類似的方法。 如果您的scipy版本低於0.11,請使用fmin
風格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.