首页 > 解决方案 > 评估 sympy.core.add.Add 一点

问题描述

我过去常常derive_by_array把我的 sympy 函数变成某种类型的东西array of sympy.core.add.Add。现在我想sympy.core.add.Add在某个给定点评估类型的表达式,我该怎么做?

a = Symbol('a')
b = Symbol('b')
c = Symbol('c')
f = (-b + sqrt(b**2 - 4*a*c)) / (2 * a)

g = derive_by_array(f, (a, b, c))
type(g[0])   #output: 'sympy.core.add.Add'

我试图评估sympy.core.add.Add一点:

g[0](1,1,0)

TypeError:“添加”对象不可调用

所以简而言之,问题是:我如何sympy.core.add.Add在给定的点上进行评估?

标签: pythonpython-3.xsympy

解决方案


我们可以用一个数字代替每个或所有变量:

In [21]: g[0]
Out[21]: 
                               _____________
                              ╱           2 
          c            -b + ╲╱  -4⋅a⋅c + b  
- ────────────────── - ─────────────────────
       _____________               2        
      ╱           2             2⋅a         
  a⋅╲╱  -4⋅a⋅c + b                          

In [22]: g[0].subs({a:1})
Out[22]: 
                       __________
                      ╱  2       
b         c         ╲╱  b  - 4⋅c 
─ - ───────────── - ─────────────
2      __________         2      
      ╱  2                       
    ╲╱  b  - 4⋅c                 

In [23]: g[0].subs({a:1, b:1})
Out[23]: 
                  _________    
       c        ╲╱ 1 - 4⋅c    1
- ─────────── - ─────────── + ─
    _________        2        2
  ╲╱ 1 - 4⋅c                   

In [24]: g[0].subs({a:1, b:1, c:0})
Out[24]: 0

推荐阅读