Chebyshev補間の微分

Chebyshev多項式の有限和で表される関数を本稿ではChebyshev補間という。Chebyshev補間

$$p(x)=\sum^{M-1}_{n=0}a_nT_n(x)$$

に対して、その微分

$$p'(x)=\sum_{n=0}^{M-2}b_nT_n(x),\quad {}^\prime = \frac d{dx}$$

を求める。係数 $a_n$ と $b_n$ の関係を調べる。

$$p(x)=\int p'(x)dx=\int \sum_{n=0}^{M-2}b_nT_n(x)dx $$

であるから、$T_n(x)=\cos n\theta$ $(x=\cos\theta)$ という事実から

$$ \begin{align*} \int T_n(x)dx&=\int -\cos n\theta\sin\theta d\theta \\ &=-\frac{1}{2}\int(\sin (n+1)\theta-\sin (n-1)\theta)d\theta \\ &=\frac{1}{2}\left[\frac{\cos (n+1)\theta}{n+1}-\frac{\cos (n-1)\theta}{n-1}\right]\\ &=\frac{1}{2}\left[\frac{T_{n+1}(x)}{n+1}-\frac{T_{n-1}(x)}{n-1}\right]. \end{align*} $$

よって積分による定数倍を除けば、

$$ \begin{align*} \int T_n(x)dx=\begin{cases} \frac{1}{2}\left[\frac{T_{n+1}(x)}{n+1}-\frac{T_{n-1}(x)}{n-1}\right] & (n\ge 2)\\ \frac14 T_2(x) & (n=1)\\ T_1(x) & (n=0). \end{cases} \end{align*} $$

従って、 $$ \begin{align*} p(x)=\int p(x)'dx&=C +b_0T_1(x)+\frac{1}{4}b_1T_2(x)+\sum^{M-2}_{n=2}\frac{b_n}{2}\left[\frac{T_{n+1}(x)}{n+1}-\frac{T_{n-1}(x)}{n-1}\right] \\ &=\sum^{M-1}_{n=0}a_nT_n(x). \end{align*} $$

つまり $a_n$ と $b_n$ の関係は以下の漸化式で表すことができる。

$$ \begin{align*} b_{n-1}&=b_{n+1}+2na_n,\quad(n=M-1,M-2,\dots,2),\quad b_{M+1}=b_{M}=0,\\ 2b_0&=b_2+2a_1. \end{align*} $$

 最後の $b_0$ の項は $b_0'=2b_0$ とおいて漸化式を $n=M-1,M-2,\dots,1$ として計算し、最後に $b_0=b_0'/2$ と求めても同じである(以下の実装ではそのようにしてる。

以上の操作を関数 $p$ のChebyshev係数 $a_n$ から $p'$ のChebyshev係数 $b_n$ を求めるchebdiff関数としてまとめる。

この関数を用いて、$e^{x}$ のChebyshev補間を何階か微分し、各係数を比較すると

上の係数比較から分かるように、1回微分操作を行うと最後の係数が0になる。そのため微分操作は補間の精度を低下させる操作であることに注意する。

さらに定義域が $x\in [a,b]$ であるときは、変数変換 $[a,b]\to[-1,1]$ のスケール定数がかかる。すなわち

$$ x\mapsto \xi = 2\frac{x-a}{h}-1\quad\Rightarrow\quad d\xi=\frac2h dx,\quad h = b-a $$

から

$$ p'(x) = \frac{d}{dx}\sum_{n=0}^{M-1}a_n T_n(x) = \frac{d}{d\xi}\sum_{n=0}^{M-1}a_n T_n(\xi) \frac{d\xi}{dx} = \sum_{n=0}^{M-2}b_n T_n(\xi) \frac2h = \sum_{n=0}^{M-2}\left(b_n \frac2h\right) T_n(x) $$

として、係数を計算する。

One-sided Chebyshev係数を使った微分操作

もしもChebyshev補間 $p(x)$ がOne-sided Chebyshev補間

$$ p(x) = c_0 + 2\sum_{n=1}^{M-1}c_n T_n(x),\quad\begin{cases}c_0=a_0 & (n=0)\\ c_n=\frac{a_n}2 & (n\ge 1)\end{cases} $$

で表されている場合は、上記の漸化式を $n=1$ まで計算すればよい。

$$ b_{n-1}=b_{n+1}+2nc_n,\quad(n=M-1,M-2,\dots,1),\quad b_{M+1}=b_{M}=0. $$

この操作を実装する。

微分操作の精度保証付き数値計算

上で紹介した微分操作を区間演算と組み合わせることで、Chebyshev補間の微分を精度保証付き数値計算することができる。

Clenshawのアルゴリズムで観測されたように補間の項数が多くなると区間演算を実行する回数が多くなり、区間の幅が増大する予想が考えられるが、今回は予想に反して微分操作で混入する誤差が小さくこの実装で十分である。

その他の方法

Chebyshev補間の微分は第2種Chebyshev多項式を用いると綺麗に表記できる。すなわち

$$ \frac{d}{dx}T_{n}(x) = nU_{n-1}(x) $$

という関係式から($U_n(x)$: 第2種Chebyshev多項式)

$$ p'(x)=\sum_{n=0}^{M-2}(n+1)a_{n+1} U_n(x) $$

という関数の表現ができる。第1種Chebyshev多項式に拘らなければ、こちらの方が表現が簡潔で良い。

係数だけを見ても分からないので、Clenshawのアルゴリズムを使って描画をしてみる。

一方は、chebdiff関数を使って描画した図、もう一方は、第2種Chebyshev多項式の係数を描画したもの。

見た目はほぼ一致している。さらに、各点(5000点)での関数値を比較して差をとるとほぼ同じであることがわかる。

本資料は以下のような文献・Web ページ等を参考に書いています。

参考文献

  1. J.C. Mason and D.C. Handscomb, Chebyshev Polynomials (1st ed.), Chapman and Hall/CRC, 2002.
    (2.4.5章に微分操作のアルゴリズムの説明がある。この本はチェビシェフ多項式をもの凄く詳しく説明している教科書で辞書的に調べる使い方で無敵を誇る)
近藤慎佑, 高安亮紀, 2023年2月22日