2017-02-06 66 views
-1

我有4個變量x,v,eta(e),beta(b)的方程。我想用各種值代替x和v,並通過乘以所有得到的項來創建一個方程式。 Image of Code in sympy使用SYMPY求解MLE(最大似然估計)方程

使用SYMPY,如何求解在兩個變量(e和b)獲得的方程取對數e和然後b? 我正在考慮'ln',以便乘法項被簡化爲加性項,因此指數項得到消除。但是,這並沒有發生。它只是寫了字的日誌在前面,但使用屬性LN(MN)= LN(M)+ LN(N)

以下不擴大在控制檯輸出:

Output in console when I run code shown in previous image

+0

請以可複製粘貼的格式提供您的代碼。與此同時,嘗試調用'sp.expand_log'選項'force = True' – Stelios

+0

@Stelios,我仍然無法消除expand_log中的force = true後的指數項從sympy.solvers中刪除PFB代碼: .pde進口pdsolve 從sympy導入功能,DIFF,等式 從sympy.abc進口X,Y,Z,v 從sympy進口* 從sympy進口IndexedBase#,IDX,符號,OO 進口sympy如藻 # import numpy #from mpmath import * #from sympy.tensor.array import Array e,b,a = sp.symbols('eb a') 續... –

+0

x = sp.IndexedBase('x') v = sp.IndexedBase('v') i,j = sp.symbols('ij',cls = Idx) def f(x,v,e ,b): y =(((x + v)/ e)**(b-1))*(sp.exp((v/e)** b - ((x + v)/ e) ** b)) 返回是 # # n = 0的 對於i在範圍(0,6): X = X [I] .subs(X [I]中,(2,3,4, 5,1,1)) v = v [i] .subs(v [i],(1,2,3,4,5,6)) o = sp.ln(f(x [i ],v [i],e,b)) n + = o pri NT(N) DEF米(E,B): 米= sp.expand_log(sp.ln(n))的 返回米 打印(M(E,B)) 等式=(sp.diff( N,E),sp.diff(N,b)) 打印(等式) 打印(sp.solve(等式)) –

回答

0

您可能需要將各種符號設置爲正值,如x = symbols('x', positive=True)。一般來說,像log(x*y) == log(x) + log(y)log(exp(x)) == x這樣的標識是不正確的,但當變量爲正值時,它們是正確的。