You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sympy提取三角函数系数时coeff返回0、as_coefficient返回None如何解决

问题原因

  • coeff方法需要先将表达式展开为显式的多子项相加结构,未展开的分式结构会导致Sympy无法识别cos项的从属关系,因此返回0
  • as_coefficient仅当整个表达式是「目标项 × 常数」的结构时才会返回对应系数,你的表达式同时包含sin和cos两个独立项,所以返回None

正确提取方法

你可以选择以下任意一种方案实现:

方案1:先展开表达式再调用coeff

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
# 先对表达式做完全展开
f_expanded = f.expand()
c1 = f_expanded.coeff(sy.cos(sy.pi * x1 / (2 * L)))
display(c1) # 输出 B/L²

方案2:用collect方法按目标项聚合后提取

# 按三角函数项归类合并表达式
collected = sy.collect(f, [sy.sin(sy.pi * x1/(2*L)), sy.cos(sy.pi * x1/(2*L))])
c1 = collected.coeff(sy.cos(sy.pi * x1/(2*L)))
display(c1) # 输出 B/L²

方案3:用模式匹配提取

# 定义通配符和匹配模式
a,b = sy.symbols('a b', cls=sy.Wild)
pattern = a * sy.sin(sy.pi * x1/(2*L)) + b * sy.cos(sy.pi * x1/(2*L))
match_res = f.expand().match(pattern)
c1 = match_res[b]
display(c1) # 输出 B/L²

内容的提问来源于stack exchange,提问作者Salil S. Kulkarni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 00:24:03