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

求[-2π,2π]上分段函数的Fourier级数(SymPy实现遇阻)

解决SymPy计算分段函数傅里叶级数卡顿的替代方案

你要计算的分段函数在区间 $[-2\pi, 2\pi]$ 上等于 $\sin(t)$,尝试用SymPy自带的fourier_series()函数时出现卡顿,以下是两种可行的替代方法:

待计算函数

首先明确函数定义:

import sympy as sym
t = sym.symbols('t', real=True)

f_t = sym.Piecewise(
    (sym.sin(t), (t >= -2 * sym.pi) & (t <= 2 * sym.pi))
)

该函数的傅里叶级数周期取区间长度 $4\pi$,角频率 $\omega_0 = \frac{1}{2}$。

方法1:手动推导傅里叶系数并实现

SymPy自动计算卡顿的核心原因是符号积分的复杂度,手动推导系数后再用SymPy实现可以避免这个问题。

傅里叶级数的一般形式为:
$$f(t) = \frac{a_0}{2} + \sum_{n=1}^{\infty} \left(a_n \cos\left(\frac{n t}{2}\right) + b_n \sin\left(\frac{n t}{2}\right)\right)$$

系数推导

  1. $a_0$:$\sin(t)$是奇函数,在对称区间$[-2\pi,2\pi]$上积分结果为0,因此$a_0=0$。
  2. $a_n$:利用三角恒等式展开积分,最终得到:
    $$a_n = \frac{8n(-1)n}{\pi(n2-4)} \quad (n \neq 2)$$
    当$n=2$时,$a_2=0$。
  3. $b_n$:仅当$n=2$时,$b_2=1$,其余$n$对应的$b_n=0$。

实现代码

import sympy as sym

t = sym.symbols('t', real=True)
num_terms = 3

series = 0
# 添加a_n对应的余弦项
for n in range(1, num_terms+1):
    if n != 2:
        a_n = (8 * n * (-1)**n) / (sym.pi * (n**2 - 4))
        series += a_n * sym.cos(n * t / 2)
# 添加b_2对应的正弦项
series += sym.sin(t)

print(f"傅里叶级数({num_terms}项):")
print(sym.simplify(series))

运行后可直接得到符号化的级数结果,无卡顿问题。

方法2:数值傅里叶级数(快速近似)

如果不需要符号解,仅需数值近似,可使用SciPy的FFT工具快速计算:

import numpy as np
from scipy.fft import rfft, rfftfreq
import matplotlib.pyplot as plt

# 周期T=4π
T = 4 * np.pi
# 采样点数量
sample_count = 1000
t = np.linspace(-T/2, T/2, sample_count, endpoint=False)
# 生成原函数采样值
f_t = np.sin(t)

# 计算FFT
fft_vals = rfft(f_t)
freqs = rfftfreq(sample_count, T/sample_count)

# 取前3项构建近似级数
num_terms = 3
approx = np.zeros_like(t)
for i in range(num_terms):
    amplitude = np.abs(fft_vals[i]) / (sample_count / 2)
    phase = np.angle(fft_vals[i])
    if i == 0:
        # 直流项单独处理
        approx += amplitude / 2
    else:
        approx += amplitude * np.cos(freqs[i] * t + phase)

# 可视化对比
plt.plot(t, f_t, label='原函数')
plt.plot(t, approx, label=f'数值近似({num_terms}项)')
plt.legend()
plt.show()

这种方法计算速度快,适合需要快速验证或数值应用的场景。

内容的提问来源于stack exchange,提问作者Juan Carlos Calderón

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 12:26:19