授業スライドPDFファイル

2007/11/19
大体の概要
`
`
先週の授業を思い出すこと
加速とは無限遠方もしくは、ある近くの点を近似すること
`
`
近くの点の場合は補外ということが多い
目的
`
`
計算量の節約
丸め誤差を避ける
演習2
加速法
Richardson加速
収束の種類
`
指数収束
`
`
`
`
`
`
`
`
誤差の「定数」部分はわからないことが多い
`
この定数部分を推察して削除するのがRichardson加速
`
有限要素法、有限差分法、etc.
例えば、誤差はO(h^2)とはわかるが、c h^2のcが不明
指数収束より早い
どうせすぐに収束するのであまり考えなくてもいい
Richardson加速実験
片側差分法
`
`
f ' ( x) ≅
f ( x + Δx ) − f ( x )
Δx
Δx 2
Δx 3
= f ' ( x) +
f ' ' ( x) +
f ' ' ' ( x) +
f ' ' ' ' ( x) + "
Δx
2
6
24
このΔxの値を2-nとしたものをanとおく
そうすると、anは
an = f ' ( x ) +
`
数値微分や数値積分等では誤差のオーダーは解析的
`
簡単に言えば、多項式(以下)で収束するもの
anの誤差が1/nとか1/n^2とか
十分大きなnでは、nを1増やしても誤差はほとんど縮まない
Richardson加速の例
`
`
超一次収束
`
`
指数収束で用いる
誤差がすでにわかっている場合に有効
対数収束
`
`
`
それなりに扱いやすい
誤差が指数で収束していく
n
n
n
f ' ' ( x) ⎛ 1 ⎞
f ' ' ' ( x) ⎛ 1 ⎞
f ' ' ' ' ( x) ⎛ 1 ⎞
⎜ ⎟ +"
⎜ ⎟ +
⎜ ⎟ +
2 ⎝ 2⎠
6 ⎝ 4⎠
24 ⎝ 8 ⎠
これに対してRichardson加速が適用できる
1
2007/11/19
Aitken加速
`
`
`
`
`
Euler変換
指数収束で用いる
誤差の収束率がわからない場合
`
`
しかし、指数収束していることはわかっている場合
指数収束しそうな場合
`
`
`
`
`
誤差が解析的であるという仮定
`
`
2
3
4
` error = a1h + a2 h + a3 h + a4 h + "
`
`
`
`
`
an =
n個のサンプルからn-1項削除可能
`
`
どちらの場合も、誤差を自分で解析すること
`
別にむずかしくない
`
以下の二つから選択
`
Euler変換を用いて総和
(−1)
の極限
k = 0 2k + 1
n
数列 an = ∑
1 1 1 1
log 2 = 1 − + − + − "
2 3 4 5
普通にAitken加速で求められるはず
多段加速も試してみる
n
π2
1
` 数列 an = ∑ 2 →
6
k =0 k
`
`
`
多項式補外を用いてRomberg積分
1
∫ exp( x)dx
0
2n
`
f ( x + 2−n ) − f ( x − 2−n )
2 * 2 −n
課題3(Optional)
Aitken加速を用いた問題
以下の二つから選択
k
`
f ( x + 4 − n ) − f ( x)
4−n
中央差分(2次)で刻み幅を 1/2 ずつにする
an =
Romberg列 1, 1/2, 1/4, 1/8, ....
Bulirsh列 1, 1/2, 1/3, 1/4, 1/6, 1/8, 1/12, 1/16,
1/24, 1/32, 1/48, ...
Harmonic列 1, 1/2, 1/3, 1/4, 1/5, 1/6, ...
課題2
`
片側差分(1次)の刻み幅を 1/4 ずつにする
いくつかのhの選び方がある
`
n項あれば、Richardson加速はn-1回適用可能
最初の方には適用しない方がいい可能性がある
Richardson加速を用いた数値微分
2題から選択
そうすると、多項式の各項を削除することで計算可能
`
`
従ってRichardson加速を無理やり適用する
何回も適用できる
課題1
誤差が差分hの多項式で表現されていると仮定
`
指数収束の場合は意味がない
交代数列ということは、収束率=-1と考えられる
一項前のデータとの差が指数的に減っていけば指数収束と
言える
当然ながら解析的にわかる場合もある
多項式補外
`
`
指数収束はデータの推移をみると何となくわかることも
`
「対数収束」する「交代数列の和」において効果がある
このままでは求められないので、 an = ∑
k =0
1
k2
として実験をする
`
`
`
Romberg列、Bulirsh列、Harmonic列から2つ以上選択
計算量と精度などを考察すること
等間隔格子を用いた台形公式で計算する
2