スペクトル法

カテゴリ: 流体解析・ソルバー手法 | 2026-10-01 改稿
CAE visualization for spectral methods theory - technical simulation diagram
スペクトル法

理論:関数を波の重ね合わせで表す

概要

🙋

スペクトル法は精度がとても高いと聞きますが、差分法とどこが違うんですか?

🎓

差分法は、ある点の微分を両隣など近くの数点の値から求める。スペクトル法は、領域全体の値を波(三角関数)の重ね合わせとして表し、各波を正確に微分してから足し戻す。近くの点だけを使う差分法は、細かい波ほど速さや形を誤って表すが、スペクトル法は表せる範囲の波ならどれも正確に扱える。そのため解が滑らかなら、点数を増やすと誤差が急速に小さくなる。ただし、全体の点を使うので形状が複雑だと使いにくく、不連続があると振動が出る。

フーリエ級数による微分

$$ u(x) = \sum_{k=-N/2}^{N/2-1} \hat u_k\, e^{ikx},\qquad \frac{du}{dx} = \sum_k ik\,\hat u_k\, e^{ikx} $$

係数は高速フーリエ変換(FFT)で求めるので、N 点で N log N 程度の計算量で済む。周期的でない問題では、チェビシェフ多項式を使い、両端に点を集めて配置する。

修正波数

$$ k'h = \sin(kh)\ (\text{2nd}),\qquad k'h = \frac{8\sin(kh) - \sin(2kh)}{6}\ (\text{4th}),\qquad k'h = kh\ (\text{spectral}) $$

差分法で微分すると、波数 k の波は k′ の波として扱われる。kh が大きい(1波長あたりの点数が少ない)ほど k′ が小さくなり、波が遅く進む。スペクトル法では k′ = k。

Coffee Break よもやま話

乱流のDNSを支えた方法

1972年、オルザグとパターソンは、周期境界の箱の中の乱流をスペクトル法で直接計算した。1987年には、キム、モイン、モーザーが平行平板間の乱流をフーリエ級数とチェビシェフ多項式を組み合わせて計算し、その結果は今も乱流モデルの検証に広く使われている。スペクトル法の精度が、限られた格子点で乱流の細かい渦まで正確に表すことを可能にした。FFTの発明(1965年)がこれを実用的にした。

計算例

例1:exp(sin x) の微分の最大誤差(周期 2π)

点数スペクトル法2次中心差分4次中心差分
84.3×10⁻³3.4×10⁻¹1.4×10⁻¹
161.8×10⁻⁷9.4×10⁻²1.6×10⁻²
323.8×10⁻¹⁵2.6×10⁻²1.1×10⁻³
649.4×10⁻¹⁵6.5×10⁻³7.6×10⁻⁵

差分法は点数を2倍にすると誤差が1/4(2次)、1/16(4次)になるが、スペクトル法は32点で丸め誤差の水準に達し、それ以上は下がらない。

例2:波の速さを正しく表すのに必要な1波長あたりの点数

方法誤差1%以内誤差0.1%以内
2次中心差分25.681.1
4次中心差分8.315.0
6次中心差分5.78.6
スペクトル法2点より多ければ誤差0同左

3次元では点数が3乗で効く。誤差1%の2次差分(25.6点)と、エイリアシング対策込みで1波長3点程度のスペクトル法では、同じ波を表すのに必要な格子点数が約620倍違う。

例3:周期的でない関数(チェビシェフ法)

点数チェビシェフ法等間隔の2次差分
176.5×10⁻¹7.9×10⁻¹
335.4×10⁻²3.5×10⁻¹
651.9×10⁻⁴9.3×10⁻²

1/(1 + 25x²) の微分を区間 [−1, 1] で比べた。急に変化する関数では、点が少ないうちはスペクトル法でも誤差が大きいが、十分な点数を超えると急速に小さくなる。

🙋

点数が少ないうちは、チェビシェフ法も差分法もあまり変わらないんですね。

🎓

そうだ。スペクトル法の速い収束は、関数の一番細かい変化を表せるだけの点数があって初めて現れる。この関数は x = 0 付近の幅0.2ほどの山が細かい構造で、17点ではそれを表しきれていない。点数を4倍の65点にすると、差分法は誤差が約1/9だが、チェビシェフ法は約1/3,500になった。乱流のDNSでも同じで、最小の渦を表せる格子でないとスペクトル法の利点は出ない。逆に、衝撃波のような本当の不連続はどれだけ点を増やしても表しきれず、ギブス現象という振動が残る。

使いどころと注意点

  1. 形状が単純(周期箱・平板間・円管など)で解が滑らかな問題に使う。
  2. 非線形項は物理空間で積を計算し、3/2則などでエイリアシング誤差を除く。
  3. 周期的でない方向にはチェビシェフ多項式を使う。
  4. チェビシェフ点は両端で非常に細かくなるので、陽解法の時間刻みに注意する。
  5. 複雑な形状にはスペクトル要素法や高次の有限要素法を検討する。
Coffee Break よもやま話

「エネルギーが増え続けたDNS」

周期箱の乱流をスペクトル法で計算したところ、粘性で減っていくはずの運動エネルギーが、ある時刻から増え始めて発散した。原因は非線形項のエイリアシングで、速度の積を物理空間で計算した際に、表せない細かい波が粗い波に化けてエネルギーを持ち込んでいた。3/2則(計算時だけ点数を1.5倍にする)を入れると、エネルギーは単調に減るようになった。スペクトル法は精度が高い分、こうした誤差を数値粘性で隠すことがないので、目立って現れる。

よくある間違い

間違いと対策

間違い起きること対策
エイリアシングを除かないエネルギーが増えて発散3/2則
不連続のある流れに使うギブス振動有限体積法など
非周期方向にフーリエ境界で大きな誤差チェビシェフ
最小スケールを解像しない精度の利点が出ない格子を見直す
チェビシェフで大きな時間刻み陽解法が不安定陰解法を併用
🙋

関連する内容も知りたいです。

関連シミュレーター

この分野のインタラクティブシミュレーターで理論を体感しよう

シミュレーター一覧

関連する分野

熱解析V&V・品質保証構造解析
この記事の評価
ご回答ありがとうございます!
参考に
なった
もっと
詳しく
誤りを
報告
参考になった
0
もっと詳しく
0
誤りを報告
0