首页 > 解决方案 > 提取三角表达式的系数

问题描述

我尝试使用多种方法(symp.coeffas_coefficient)提取三角表达式的系数。代码如下:

import sympy as sy

x1 = sy.symbols('x1')
A, B = sy.symbols('A,B')
L = sy.symbols('L', positive=True)

f = (A * sy.sin(sy.pi * x1 / (2 * L)) + B * sy.cos(sy.pi * x1 / (2 * L))) / L ** 2

c1 = f.coeff(sy.cos(sy.pi * x1 / (2 * L)))
# or
c1 = f.as_coefficient(sy.cos(sy.pi * x1 / (2 * L)))

display(c1)

预期的输出是B/L**2。但在第一种情况下,我得到的输出为 0,而在第二种情况下,我得到“无”。有人可以指导我如何提取系数吗?

标签: pythonsympy

解决方案


如果我是表达式,我会得到你想要expand的,所以它是一个简单的总和,而不是一个产品:

In [3]: f
Out[3]: 
     ⎛π⋅x₁⎞        ⎛π⋅x₁⎞
A⋅sin⎜────⎟ + B⋅cos⎜────⎟
     ⎝2⋅L ⎠        ⎝2⋅L ⎠
─────────────────────────
             2           
            L   

In [6]: f.expand()
Out[6]: 
     ⎛π⋅x₁⎞        ⎛π⋅x₁⎞
A⋅sin⎜────⎟   B⋅cos⎜────⎟
     ⎝2⋅L ⎠        ⎝2⋅L ⎠
─────────── + ───────────
      2             2    
     L             L     

In [7]: f1 = f.expand()

In [8]: f1.coeff(cos(pi*x1/(2*L)))
Out[8]: 
B 
──
 2
L 
     

比较类型:

In [9]: type(f)
Out[9]: sympy.core.mul.Mul

In [10]: type(f1)
Out[10]: sympy.core.add.Add

推荐阅读