python - 提取三角表达式的系数
问题描述
我尝试使用多种方法(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,而在第二种情况下,我得到“无”。有人可以指导我如何提取系数吗?
解决方案
如果我是表达式,我会得到你想要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
推荐阅读
- jenkins - 用户无法在 API 组中获取资源“服务” - Jenkins 管道 EKS 部署
- vue.js - 无法更改 vue-form-wizard 道具
- c# - 将测试结果文档上传到 Azure 测试计划或 TFS 2018 中的测试中心
- python - 如何在 Python 中为 wav 文件添加噪音
- amazon-web-services - AWS 安全组私有 IP 欺骗
- amazon-web-services - 如何在 aws elastic beanstalk 服务器上打开无头 Chrome
- oracle - 正则表达式解析地址最后不包括 apt 或套件
- java - 使用 JAVA 在一个 txt 文件中读取多个路径
- google-oauth - Vault OIDC with google,如何将角色限制为特定组
- flutter - 颤动的AlertDialog中的按钮未与中心对齐