[英]How to solve an 1-parameter equation using Python (scipy/numpy?)
希望您對我完成以下任務有一些幫助:
我寫了一些簡單的python代碼段來繪制概率密度函數。 在我的特定情況下,讓它們表示某些參數x
類條件概率。
因此,我想知道Python中是否有一個聰明的方法(例如,模塊)(也許通過NumPy或SciPy函數或方法)來解決參數x
的簡單方程式。 例如,
pdf(x, mu=10, sigma=3**0.5) / pdf(x, mu=20, sigma=2**0.5) = 1
# get x
現在,我只能采用蠻力方法,例如使用x = np.arange(0, 50, 0.000001)
並在計算比率pdf1/pdf2.
時將x值保留在矢量中,該矢量會產生最接近1的值。 pdf1/pdf2.
下面是我編寫的用於計算pdf並繪制比率的代碼:
def pdf(x, mu=0, sigma=1):
"""Calculates the normal distribution's probability density
function (PDF).
"""
term1 = 1.0 / ( math.sqrt(2*np.pi) * sigma )
term2 = np.exp( -0.5 * ( (x-mu)/sigma )**2 )
return term1 * term2
x = np.arange(0, 100, 0.05)
pdf1 = pdf(x, mu=10, sigma=3**0.5)
pdf2 = pdf(x, mu=20, sigma=2**0.5)
# ...
# ratio = pdf1 / pdf2
# plt.plot(x, ratio)
謝謝!
由於您有一個很好的封閉形式方程式,因此可以使用SymPy求解。
我插入了mu
和sigma
值,並將其輸入到Sympy Gamma中 :
solve(1.0 / ( sqrt(2*pi) *(3**0.5) ) * exp( -0.5 * ( (x-10)/(3**0.5) )**2 ) / (1.0 / ( sqrt(2*pi) *(2**0.5) ) * exp( -0.5 * ( (x-20)/(2**0.5) )**2 ))-1,x)
結果:15.4554936768195
通常,聽起來您需要標量根查找功能: http : //docs.scipy.org/doc/scipy/reference/optimize.html
但是,正如其他人指出的那樣,似乎存在一種分析解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.