谱方法

notes

This article was last updated on <span id="expire-date"></span> days ago, the information described in the article may be outdated.

以下解读几乎全部来自 ChatGPT

物理空间与谱空间

假设我们有一个函数(比如速度场):

u(x)u(x)

它在空间中随位置变化。我们可以在 物理空间(physical space) 表示它,也可以在 谱空间(spectral space) 表示它。

物理空间

在物理空间中,我们直接用速度在各个位置上的值来描述它:

u(x1),u(x2),u(x3),u(x_1), u(x_2), u(x_3), \cdots

谱空间

在谱空间中,我们将u(x)u(x)分解为一系列波的叠加(Fourier模式):

u(x)=ku^keikxu(x) = \sum_k \hat{u}_ke^{ikx}

其中,

  • kk:波数(wavenumber),表示波的空间频率;
  • u^k\hat{u}_k:该波的振幅和相位(谱系数,spectral coefficient)。

在谱空间中,一个函数不是由点的值组成,而是由一组谱系数组成:

u^={u^N,,u^0,,u^N}\hat{u} = \{\hat{u}_{-N}, \cdots, \hat{u}_0, \cdots, \hat{u}_N\}

每个谱系数对应一个空间波动分量

二者的关系

在数值计算中,物理空间和谱空间的相互转换通过 快速傅里叶变换/逆快速傅里叶变换 实现。

使用的原理公式如下:

  • 从物理空间到谱空间:u^(k)=u(x)eikxdx\hat{u}(k) = \int^{\infty}_{-\infty}u(x)e^{-ikx}dx
  • 从谱空间到物理空间:u(x)=12πu^(k)eikxdku(x)=\frac{1}{2\pi}\int^{\infty}_{-\infty}\hat{u}(k)e^{ikx}dk

为什么使用谱空间?

因为导数在谱空间中是乘法运算。

u(x)=eikxu(x)=e^{ikx}

它的导数为

dudx=ikxeikx\frac{du}{dx}=ikxe^{ikx}

推广到一般的傅里叶展开里,则为

dudx=k(ik)u^keikx\frac{du}{dx}=\sum_k(ik)\hat{u}_ke^{ikx}

求导变成了×ik\times ik

什么时候使用谱空间?

如上面所说,对于含有导数的项,通过傅里叶变换可以将物理空间中的求微分变换成谱空间中的求乘积,从而简化运算。但是对于物理空间中的乘积项,例如

w(x)=u(x)v(x)w(x)=u(x)v(x)

它在谱空间中的形式对应为

w^(k)=pu^pu^kp\hat{w}(k)=\sum_p \hat{u}_p \hat{u}_{k-p}

可以看到普通的乘积项变成了卷积项。因此普通的乘积还是在物理空间中计算更简单,另一方面,如果谱空间中出现了卷积项,也可以将其逆变换到物理空间以简化运算。

伪谱法

伪谱法本质就是利用傅里叶变换来求解偏微分方程。大致过程就是通过将含有导数的项转换到谱空间中,计算乘积后再转换回来。

Author: Syize

Permalink: https://blog.syize.cn/2025/11/07/spectral-method/

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Syizeのblog

Comments