簡體   English   中英

如何使用numpy / scipy在方程式中使用已知函數求解x?

[英]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或更高版本,可以使用新的功能, minimizeminimize_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM