在某个点评估 sympy.core.add.Add

时间:2021-03-22 18:47:55

标签: python python-3.x sympy

我使用 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)

<块引用>

类型错误:“添加”对象不可调用

简而言之,问题是:我如何评估给定点的 sympy.core.add.Add

1 个答案:

答案 0 :(得分:1)

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

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
相关问题