python:更改符号变量并分配数值

时间:2016-11-15 11:52:00

标签: python variables symbols sympy

为了计算衍生物和其他表达式,我使用了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 )

感谢您的帮助

1 个答案:

答案 0 :(得分:4)

我根据这篇文章找到了解决方案:

How to substitute multiple symbols in an expression in sympy?

使用“subs”:

>>> from sympy import Symbol
>>> x, y = Symbol('x y')
>>> f = x + y
>>> f.subs({x:10, y: 20})
>>> f
    30

这里还有更多这样的事情:http://docs.sympy.org/latest/tutorial/basic_operations.html

编辑:更快的方法是使用@Bjoern Dahlgren建议的“lamdify”