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

Sympy求解三角方程仅得基础解,如何获取完整周期解?

Sympy求解三角方程周期解的问题解析

问题原因

  • Sympy默认返回主值解(单个周期内的基础解),不会自动生成带整数参数的周期通解——这是因为三角方程的周期解依赖三角函数的周期性,需要显式调用支持通解生成的函数才能获取完整解。
  • 对于可因式分解的三角方程(如sin(x)=sin(x)cos(x)),Sympy直接求解时可能因化简逻辑遗漏部分解,需要通过移项因式分解或指定定义域来确保解的完整性。

完整周期解的正确语法

示例1:求解2sin(1.5x)=1

使用solveset函数并指定实数域,同时用有理数代替浮点数避免精度问题:

from sympy import symbols, sin, solveset, pi, Rational, Reals

x = symbols('x')
# 用Rational(3,2)替代1.5,避免浮点误差
solutions = solveset(2 * sin(Rational(3, 2)*x) == 1, x, domain=Reals)
print(solutions)

输出会包含带整数参数n(n∈ℤ)的通解,形式为:

Union(ImageSet(Lambda(n, 2pin/3 + pi/9), Integers), ImageSet(Lambda(n, 2pin/3 + 5*pi/9), Integers))

示例2:求解sin(x)=sin(x)cos(x)

通过移项因式分解后用solveset求解,或直接指定定义域:

from sympy import symbols, sin, cos, solveset, pi, Reals

x = symbols('x')
# 移项转化为sin(x)(1 - cos(x)) = 0
solutions = solveset(sin(x) - sin(x)*cos(x) == 0, x, domain=Reals)
print(solutions)

输出的完整解集合包含所有周期解,对应区间[0,2π)内的0和π,形式为:

Union(ImageSet(Lambda(n, 2pin), Integers), ImageSet(Lambda(n, 2pin + pi), Integers))

内容的提问来源于stack exchange,提问作者hello447

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 12:17:14