Python:更改符号变量并赋值数字值

4
为了计算导数和其他表达式,我使用了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)

感谢您的帮助


你的示例代码不是自包含的,例如你引用了像“g_T_np”这样的东西,使得帮助变得更加困难。但从我所了解的情况来看,你可能对“lambdify”感兴趣,它可以基于符号表达式创建一个回调函数以进行数值评估。 - Bjoern Dahlgren
@BjoernDahlgren:我知道,但是代码的其余部分对我的问题并不重要,可能会更加混乱。我想要的只是改变符号T并用数值替换它。但我现在正在检查lamdify,它可能非常有帮助!非常感谢。 - Shaun
1个回答

11

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接