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

标签 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.49956 e-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) 并交换我所有的 sy.symbol(T) 通过迭代我在数组中创建的 10 个值。

谢谢你的帮助

最佳答案

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

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”

关于python:更改符号变量并分配数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40609184/

相关文章:

python - Conda 的包版本信息与 __version__ 不对应

python - 尝试使用 python 脚本在我的网络上发现 iOS 设备

python - python中出现错误时如何运行函数

javascript - Angular - 无法观察工厂变量

javascript - 忽略单词列表

ios - 在 iOS/iPhone SDK 中控制第三方符号的导出

javascript - 脚本或运算符

Python - Apache Beam - Flink 运行器设置 : ReadFromKafka returns error - RuntimeError: cannot encode a null byte[]

c++ - 有没有办法在 cout (C++) 中隐藏变量?

ruby-on-rails - 向 Symbol 添加 to_str 方法有什么负面影响?