提取三角表达式的系数
Extract the coefficient of trignometric expression
我尝试使用多种方法(symp.coeff
、as_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,而在第二种情况下,我得到的是“None”。
有人可以指导我如何提取系数吗?
如果我 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
我尝试使用多种方法(symp.coeff
、as_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,而在第二种情况下,我得到的是“None”。
有人可以指导我如何提取系数吗?
如果我 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