2016-11-15 37 views
0

爲了計算衍生物和其它表達式我用sympy包,並表示T = sy.Symbol('T')現在我已經計算出了正確的表達:蟒:改變符號變量並分配數值

E= -T**2*F_deriv_T(T,rho) 

其中

def F_deriv_rho(T,rho): 
    ret = 0 
    for n in range(5): 
     for m in range(4): 
      inner= c[n,m]*g_rho_deriv_rho_np*g_T_np 
     ret += inner 
    return ret 

,看起來像這樣:

F_deriv_rho: [0.0 7.76971e-5*T 0.0001553942*T**2*rho T*(-5.14488e-5*log(rho) - 5.14488e-5)*log(T) + T*(1.22574e-5*log(rho)+1.22574e-5)*log(T) + T*(1.89488e-5*log(rho) + 1.89488e-5)*log(T) + T(2.29441e-5*log(rho) + 2.29441e-5)*log(T) + T*(7.49956e-5*log(rho) + 7.49956e-5)*log(T) T**2*(-0.0001028976*rho*log(rho) - 5.14488e-5*rho)*log(T) + T**2*(2.45148e-5*rho*log(rho) + 1.22574e-5*rho)*log(T) + T**2*(3.78976e-5*rho*log(rho) + 1.89488e-5*rho)*log(T) + T**2*(4.58882e-5*rho*log(rho) + 2.29441e-5*rho)*log(T) + T**2*(0.0001499912*rho*log(rho) + 7.49956e 5*rho)*log(T)]

與python我想將T(和rho)作爲符號更改爲值。我怎麼能這樣做?

所以,我想創建10個數字,如T_def = np.arange(2000, 10000, 800),並通過迭代我在數組中創建的10個值來交換我所有的sy.symbol( T )

感謝您的幫助

+0

您的示例代碼不是自包含的,例如,你引用諸如''g_T_np''之類的東西使得它很難提供幫助。但是從我收集的內容來看,您可能會對「lambdify」感興趣,它會根據符號表達式爲數值評估創建一個回調。 –

+0

@BjoernDahlgren:我知道,但其餘的代碼對我的問題並不重要,可能會更混亂。我想要的只是改變符號T並將其替換爲數字值。但我現在正在檢查lamdify,它可能會非常有幫助!非常感謝你 – Shaun

回答