数値解析 において 、 クレンショウアルゴリズム( クレンショウ和 とも呼ばれる)は 、 チェビシェフ多項式 の線形結合を評価する 再帰的な 手法である。 [1] [2]この手法は、1955年に チャールズ・ウィリアム・クレンショウ によって発表された。これは、 単項式 の線形結合を評価する ホーナー法 の一般化である 。
これはチェビシェフ多項式だけに一般化できるものではなく、3項 再帰関係 によって定義できるあらゆる関数のクラスに適用されます。 [3]
クレンショーアルゴリズム
完全に一般化すると、Clenshaw アルゴリズムは関数の有限級数の加重和を計算します 。
ここで、は
係数 とが事前にわかっている 線形再帰関係を満たす関数のシーケンスです
。
ϕ
け
(
x
)
{\displaystyle \phi _{k}(x)}
S
(
x
)
=
∑
け
=
0
ん
1つの
け
ϕ
け
(
x
)
{\displaystyle S(x)=\sum _{k=0}^{n}a_{k}\phi _{k}(x)}
ϕ
け
、
け
=
0
、
1
、
…
{\displaystyle \phi _{k},\;k=0,1,\ldots }
ϕ
け
+
1
(
x
)
=
α
け
(
x
)
ϕ
け
(
x
)
+
β
け
(
x
)
ϕ
け
−
1
(
x
)
、
{\displaystyle \phi _{k+1}(x)=\alpha _{k}(x)\,\phi _{k}(x)+\beta _{k}(x)\,\phi _ {k-1}(x),}
α
け
(
x
)
{\displaystyle \alpha _{k}(x)}
β
け
(
x
)
{\displaystyle \beta _{k}(x)}
このアルゴリズムは、 が直接計算するには複雑な関数であるが、 と は特に単純な 場合に最も役立ちます 。最も一般的なアプリケーションでは、 は に依存せず 、は に も にも 依存しない定数です 。
ϕ
け
(
x
)
{\displaystyle \phi _{k}(x)}
α
け
(
x
)
{\displaystyle \alpha _{k}(x)}
β
け
(
x
)
{\displaystyle \beta _{k}(x)}
α
(
x
)
{\displaystyle \alpha (x)}
け
{\displaystyle k}
β
{\displaystyle \beta }
x
{\displaystyle x}
k
{\displaystyle k}
与えられた係数の系列の合計を実行するには、 「逆」再帰式によって
値を計算します。
a
0
,
…
,
a
n
{\displaystyle a_{0},\ldots ,a_{n}}
b
k
(
x
)
{\displaystyle b_{k}(x)}
b
n
+
1
(
x
)
=
b
n
+
2
(
x
)
=
0
,
b
k
(
x
)
=
a
k
+
α
k
(
x
)
b
k
+
1
(
x
)
+
β
k
+
1
(
x
)
b
k
+
2
(
x
)
.
{\displaystyle {\begin{aligned}b_{n+1}(x)&=b_{n+2}(x)=0,\\b_{k}(x)&=a_{k}+\alpha _{k}(x)\,b_{k+1}(x)+\beta _{k+1}(x)\,b_{k+2}(x).\end{aligned}}}
この計算では
関数を直接参照していないことに注意してください 。 とを計算した後 、目的の合計はそれらと最も単純な関数 および で表すことができます 。
ϕ
k
(
x
)
{\displaystyle \phi _{k}(x)}
b
2
(
x
)
{\displaystyle b_{2}(x)}
b
1
(
x
)
{\displaystyle b_{1}(x)}
ϕ
0
(
x
)
{\displaystyle \phi _{0}(x)}
ϕ
1
(
x
)
{\displaystyle \phi _{1}(x)}
S
(
x
)
=
ϕ
0
(
x
)
a
0
+
ϕ
1
(
x
)
b
1
(
x
)
+
β
1
(
x
)
ϕ
0
(
x
)
b
2
(
x
)
.
{\displaystyle S(x)=\phi _{0}(x)\,a_{0}+\phi _{1}(x)\,b_{1}(x)+\beta _{1}(x)\,\phi _{0}(x)\,b_{2}(x).}
より詳しい情報と安定性の分析については
FoxとParker [4]を参照してください。
例
クレンショーの特別なケースとしてのホーナー
特に単純なケースは、形式の多項式を評価するときに発生します
。
関数は単純に
、再帰係数 とによって生成されます 。
S
(
x
)
=
∑
k
=
0
n
a
k
x
k
.
{\displaystyle S(x)=\sum _{k=0}^{n}a_{k}x^{k}.}
ϕ
0
(
x
)
=
1
,
ϕ
k
(
x
)
=
x
k
=
x
ϕ
k
−
1
(
x
)
{\displaystyle {\begin{aligned}\phi _{0}(x)&=1,\\\phi _{k}(x)&=x^{k}=x\phi _{k-1}(x)\end{aligned}}}
α
(
x
)
=
x
{\displaystyle \alpha (x)=x}
β
=
0
{\displaystyle \beta =0}
この場合、合計を計算するための漸化式は であり
、この場合の合計は単純に であり
、これはまさに通常の ホーナー法 です。
b
k
(
x
)
=
a
k
+
x
b
k
+
1
(
x
)
{\displaystyle b_{k}(x)=a_{k}+xb_{k+1}(x)}
S
(
x
)
=
a
0
+
x
b
1
(
x
)
=
b
0
(
x
)
,
{\displaystyle S(x)=a_{0}+xb_{1}(x)=b_{0}(x),}
チェビシェフ級数の特殊なケース
切断されたチェビシェフ級数 を考える
p
n
(
x
)
=
a
0
+
a
1
T
1
(
x
)
+
a
2
T
2
(
x
)
+
⋯
+
a
n
T
n
(
x
)
.
{\displaystyle p_{n}(x)=a_{0}+a_{1}T_{1}(x)+a_{2}T_{2}(x)+\cdots +a_{n}T_{n}(x).}
チェビシェフ多項式 の再帰関係の係数は
初期条件
が
α
(
x
)
=
2
x
,
β
=
−
1
,
{\displaystyle \alpha (x)=2x,\quad \beta =-1,}
T
0
(
x
)
=
1
,
T
1
(
x
)
=
x
.
{\displaystyle T_{0}(x)=1,\quad T_{1}(x)=x.}
したがって、再帰式は
、そして最終的な合計は、
b
k
(
x
)
=
a
k
+
2
x
b
k
+
1
(
x
)
−
b
k
+
2
(
x
)
{\displaystyle b_{k}(x)=a_{k}+2xb_{k+1}(x)-b_{k+2}(x)}
p
n
(
x
)
=
a
0
+
x
b
1
(
x
)
−
b
2
(
x
)
.
{\displaystyle p_{n}(x)=a_{0}+xb_{1}(x)-b_{2}(x).}
これを評価する一つの方法は、再帰をもう1ステップ続けて計算することである
(係数 a 0 が2倍になっていることに注意)。
b
0
(
x
)
=
a
0
+
2
x
b
1
(
x
)
−
b
2
(
x
)
,
{\displaystyle b_{0}(x)=a_{0}+2xb_{1}(x)-b_{2}(x),}
p
n
(
x
)
=
1
2
[
a
0
+
b
0
(
x
)
−
b
2
(
x
)
]
.
{\displaystyle p_{n}(x)={\tfrac {1}{2}}\left[a_{0}+b_{0}(x)-b_{2}(x)\right].}
楕円体上の子午線弧の長さ
クレンショウ和は 測地学の 分野で広く使われている。 [2] 簡単な応用としては、三角級数を足して楕円体の表面上の 子午線弧 距離を計算するというものがある。これらは次の形式を持つ。
m
(
θ
)
=
C
0
θ
+
C
1
sin
θ
+
C
2
sin
2
θ
+
⋯
+
C
n
sin
n
θ
.
{\displaystyle m(\theta )=C_{0}\,\theta +C_{1}\sin \theta +C_{2}\sin 2\theta +\cdots +C_{n}\sin n\theta .}
最初の 項を除けば、残りは適切な形式の合計です。 であるため、先頭の項はありません 。
C
0
θ
{\displaystyle C_{0}\,\theta }
ϕ
0
(
θ
)
=
sin
0
θ
=
sin
0
=
0
{\displaystyle \phi _{0}(\theta )=\sin 0\theta =\sin 0=0}
に対する再帰関係は、
sin
k
θ
{\displaystyle \sin k\theta }
再帰
関係の係数を作成し
、
級数の計算は次のように与えられます。
最後のステップは、 であるため特に簡単になり 、再帰の終わりは単に となり 、 項は別途追加されます。
sin
(
k
+
1
)
θ
=
2
cos
θ
sin
k
θ
−
sin
(
k
−
1
)
θ
,
{\displaystyle \sin(k+1)\theta =2\cos \theta \sin k\theta -\sin(k-1)\theta ,}
α
k
(
θ
)
=
2
cos
θ
,
β
k
=
−
1.
{\displaystyle \alpha _{k}(\theta )=2\cos \theta ,\quad \beta _{k}=-1.}
b
n
+
1
(
θ
)
=
b
n
+
2
(
θ
)
=
0
,
b
k
(
θ
)
=
C
k
+
2
cos
θ
b
k
+
1
(
θ
)
−
b
k
+
2
(
θ
)
,
f
o
r
n
≥
k
≥
1.
{\displaystyle {\begin{aligned}b_{n+1}(\theta )&=b_{n+2}(\theta )=0,\\b_{k}(\theta )&=C_{k}+2\cos \theta \,b_{k+1}(\theta )-b_{k+2}(\theta ),\quad \mathrm {for\ } n\geq k\geq 1.\end{aligned}}}
ϕ
0
(
θ
)
=
sin
0
=
0
{\displaystyle \phi _{0}(\theta )=\sin 0=0}
b
1
(
θ
)
sin
(
θ
)
{\displaystyle b_{1}(\theta )\sin(\theta )}
C
0
θ
{\displaystyle C_{0}\,\theta }
m
(
θ
)
=
C
0
θ
+
b
1
(
θ
)
sin
θ
.
{\displaystyle m(\theta )=C_{0}\,\theta +b_{1}(\theta )\sin \theta .}
このアルゴリズムでは、2 つの三角関数の量と の評価のみが必要であることに注意してください 。
cos
θ
{\displaystyle \cos \theta }
sin
θ
{\displaystyle \sin \theta }
子午線弧の長さの違い
ときには、2 つの子午線弧の差を、高い相対精度を維持しながら計算することが必要になる場合があります。これは、三角恒等式を使用して と書くことで実現されます。
この場合、クレンショウ和を適用できます [5]。
ただし、 と を同時に計算し
て行列和を実行する必要があります。
の最初の要素は の平均値で 、2 番目の要素は平均傾斜です。
は
、 の再帰関係を満たします
。
が
の再帰関係で に
置き換わり、 となります 。これで、標準のクレンショウアルゴリズムを適用して を得ることができます。
は 2×2 行列です。最終的に
、 が得られます。この手法は、 と の 極限 でと の 導関数 を同時に計算するために
使用できます 。ただし、 と を評価する際に を取る必要があります 。
m
(
θ
1
)
−
m
(
θ
2
)
=
C
0
(
θ
1
−
θ
2
)
+
∑
k
=
1
n
2
C
k
sin
(
1
2
k
(
θ
1
−
θ
2
)
)
cos
(
1
2
k
(
θ
1
+
θ
2
)
)
.
{\displaystyle m(\theta _{1})-m(\theta _{2})=C_{0}(\theta _{1}-\theta _{2})+\sum _{k=1}^{n}2C_{k}\sin {\bigl (}{\textstyle {\frac {1}{2}}}k(\theta _{1}-\theta _{2}){\bigr )}\cos {\bigl (}{\textstyle {\frac {1}{2}}}k(\theta _{1}+\theta _{2}){\bigr )}.}
m
(
θ
1
)
+
m
(
θ
2
)
{\displaystyle m(\theta _{1})+m(\theta _{2})}
M
(
θ
1
,
θ
2
)
=
[
(
m
(
θ
1
)
+
m
(
θ
2
)
)
/
2
(
m
(
θ
1
)
−
m
(
θ
2
)
)
/
(
θ
1
−
θ
2
)
]
=
C
0
[
μ
1
]
+
∑
k
=
1
n
C
k
F
k
(
θ
1
,
θ
2
)
,
{\displaystyle {\mathsf {M}}(\theta _{1},\theta _{2})={\begin{bmatrix}(m(\theta _{1})+m(\theta _{2}))/2\\(m(\theta _{1})-m(\theta _{2}))/(\theta _{1}-\theta _{2})\end{bmatrix}}=C_{0}{\begin{bmatrix}\mu \\1\end{bmatrix}}+\sum _{k=1}^{n}C_{k}{\mathsf {F}}_{k}(\theta _{1},\theta _{2}),}
δ
=
1
2
(
θ
1
−
θ
2
)
,
μ
=
1
2
(
θ
1
+
θ
2
)
,
F
k
(
θ
1
,
θ
2
)
=
[
cos
k
δ
sin
k
μ
sin
k
δ
δ
cos
k
μ
]
.
{\displaystyle {\begin{aligned}\delta &={\tfrac {1}{2}}(\theta _{1}-\theta _{2}),\\[1ex]\mu &={\tfrac {1}{2}}(\theta _{1}+\theta _{2}),\\[1ex]{\mathsf {F}}_{k}(\theta _{1},\theta _{2})&={\begin{bmatrix}\cos k\delta \sin k\mu \\{\dfrac {\sin k\delta }{\delta }}\cos k\mu \end{bmatrix}}.\end{aligned}}}
M
(
θ
1
,
θ
2
)
{\displaystyle {\mathsf {M}}(\theta _{1},\theta _{2})}
m
{\displaystyle m}
F
k
(
θ
1
,
θ
2
)
{\displaystyle {\mathsf {F}}_{k}(\theta _{1},\theta _{2})}
F
k
+
1
(
θ
1
,
θ
2
)
=
A
(
θ
1
,
θ
2
)
F
k
(
θ
1
,
θ
2
)
−
F
k
−
1
(
θ
1
,
θ
2
)
,
{\displaystyle {\mathsf {F}}_{k+1}(\theta _{1},\theta _{2})={\mathsf {A}}(\theta _{1},\theta _{2}){\mathsf {F}}_{k}(\theta _{1},\theta _{2})-{\mathsf {F}}_{k-1}(\theta _{1},\theta _{2}),}
A
(
θ
1
,
θ
2
)
=
2
[
cos
δ
cos
μ
−
δ
sin
δ
sin
μ
−
sin
δ
δ
sin
μ
cos
δ
cos
μ
]
{\displaystyle {\mathsf {A}}(\theta _{1},\theta _{2})=2{\begin{bmatrix}\cos \delta \cos \mu &-\delta \sin \delta \sin \mu \\-\displaystyle {\frac {\sin \delta }{\delta }}\sin \mu &\cos \delta \cos \mu \end{bmatrix}}}
α
{\displaystyle \alpha }
β
=
−
1
{\displaystyle \beta =-1}
B
n
+
1
=
B
n
+
2
=
0
,
B
k
=
C
k
I
+
A
B
k
+
1
−
B
k
+
2
,
f
o
r
n
≥
k
≥
1
,
M
(
θ
1
,
θ
2
)
=
C
0
[
μ
1
]
+
B
1
F
1
(
θ
1
,
θ
2
)
,
{\displaystyle {\begin{aligned}{\mathsf {B}}_{n+1}&={\mathsf {B}}_{n+2}={\mathsf {0}},\\[1ex]{\mathsf {B}}_{k}&=C_{k}{\mathsf {I}}+{\mathsf {A}}{\mathsf {B}}_{k+1}-{\mathsf {B}}_{k+2},\qquad \mathrm {for\ } n\geq k\geq 1,\\[1ex]{\mathsf {M}}(\theta _{1},\theta _{2})&=C_{0}{\begin{bmatrix}\mu \\1\end{bmatrix}}+{\mathsf {B}}_{1}{\mathsf {F}}_{1}(\theta _{1},\theta _{2}),\end{aligned}}}
B
k
{\displaystyle {\mathsf {B}}_{k}}
m
(
θ
1
)
−
m
(
θ
2
)
θ
1
−
θ
2
=
M
2
(
θ
1
,
θ
2
)
.
{\displaystyle {\frac {m(\theta _{1})-m(\theta _{2})}{\theta _{1}-\theta _{2}}}={\mathsf {M}}_{2}(\theta _{1},\theta _{2}).}
θ
2
=
θ
1
=
μ
{\displaystyle \theta _{2}=\theta _{1}=\mu }
δ
=
0
{\displaystyle \delta =0}
m
(
μ
)
{\displaystyle m(\mu )}
d
m
(
μ
)
/
d
μ
{\displaystyle dm(\mu )/d\mu }
F
1
{\displaystyle {\mathsf {F}}_{1}}
A
{\displaystyle {\mathsf {A}}}
lim
δ
→
0
(
sin
k
δ
)
/
δ
=
k
{\displaystyle \lim _{\delta \to 0}(\sin k\delta )/\delta =k}
参照
参考文献
^ Clenshaw, CW (1955 年 7 月). 「チェビシェフ級数の和に関する注記」. 数学表とその他の計算補助 . 9 (51): 118. doi : 10.1090/S0025-5718-1955-0071856-0 . ISSN 0025-5718. この論文は第一種 シフト チェビシェフ多項式 に基づいて書かれていることに注意してください 。
T
n
∗
(
x
)
=
T
n
(
2
x
−
1
)
{\displaystyle T_{n}^{*}(x)=T_{n}(2x-1)}
^ ab Tscherning, CC; Poder, K. (1982)、「Clenshaw 総和の測地学的応用」 (PDF) 、 Bolletino di Geodesia e Scienze Affini 、 41 (4): 349–375、2007-06-12に オリジナル (PDF)からアーカイブ 、 2012-08-02に取得
^ Press, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007)、「セクション 5.4.2. Clenshaw の漸化式」、 Numerical Recipes: The Art of Scientific Computing (第 3 版)、ニューヨーク: Cambridge University Press、 ISBN 978-0-521-88068-8
^ フォックス、レスリー、パーカー、イアン B. (1968)、 数値解析におけるチェビシェフ多項式 、オックスフォード大学出版局、 ISBN 0-19-859614-6
^ Karney, CFF (2024). 「方眼多角形の面積」 Stud . Geophys. Geod . 68. doi : 10.1007/s11200-024-0709-z 付録 B {{cite journal}}: CS1 maint: postscript (link)