Numerical Recipes in C [日本語版] 初版

Slides:



Advertisements
Similar presentations
1 高速フーリエ変換 (fast Fourier transform). 2 高速フーリエ変換とは? – 簡単に言うとフーリエ変換を効率よく計算 する方法 – アルゴリズムの設計技法は分割統治法に基 づいている 今回の目的は? – 多項式の積を求める問題を取り上げ、高速 フーリエ変換のアルゴリズムを用いた解法.
Advertisements

Absolute Orientation. Absolute Orientation の問題 二つの座標系の間における剛体 (rigid body) 変換を復元す る問題である。 例えば: 2 台のステレオカメラから得られた3次元情報の間の関 係を推定する問題。 2 台のステレオカメラから得られた3次元情報の間の関.
計測工学 10 データの補間 スプライン補間 1. . 復習 階差 近似多項式の次数 の決定法 等間隔階差 – 関数 y=f(x) で、 x の値 が等間隔の場合 等間隔: x 0, x 0 +h, x 0 +2h ・・・ y の値: y 0, y 1, y 2 ・・・ これらの階差は – 第1階差:
1 線形代数学. 2 履修にあたって 電子情報システム学科 必修 2005 年度1セメスタ開講 担当 草苅良至 (電子情報システム学科) 教官室: G I 511 内線: 2095 質問等は上記のいずれかに行なうこと。 注意計算用のノートを準備すること。
2. 数値微分法. 数値微分が必要になる場合として、次の 2 つが考えられる。 関数が与えられていて、その微分を近似的に計算する。 (数値微分の精度が十分で、かつ、計算速度が数値微分の方が 早い場合など。) 離散的な点の上で離散的なデータしかわかっていない関数の微 分を近似的に計算する。(偏微分方程式の数値解を求めたい時.
1. 補間多項式 n 次の多項式 とは、単項式 の 線形結合の事である。 Definitions: ( 区間, 連続関数, abscissas (データ点、格子点、差分点), 多項 式 ) Theorem. (補間多項式の存在と一意性) 各 i = 0, …, n について、 をみたす、次数が高々 n.
0章 数学基礎.
到着時刻と燃料消費量を同時に最適化する船速・航路計画
有限差分法による 時間発展問題の解法の基礎
連続系アルゴリズム演習第3回 DE変換を用いた数値積分法.
多変量解析 -重回帰分析- 発表者:時田 陽一 発表日:11月20日.
近似アルゴリズム 第10章 終了時刻最小化スケジューリング
ウェーブレットによる 信号処理と画像処理 宮崎大輔 2004年11月24日(水) PBVセミナー.
プログラミング論 I 補間
4.3 連立1次方程式   Ax = b   (23) と書くことができる。
数個、数十個のデータ点から その特徴をつかむ
スペクトル法による数値計算の原理 -一次元線形・非線形移流問題の場合-
Extremal Combinatorics 14.1 ~ 14.2
原子動力工学特論 課題 3、4 交通電子機械工学専攻   齋藤 泰治.
AllReduce アルゴリズムによる QR 分解の精度について
重力3体問題の数値積分Integration of 3-body encounter.
上坂吉則 尾関和彦 文一総合出版 宮崎大輔2003年6月28日(土)
情報科学 第7回 数値解析(2).
IT入門B2 ー 連立一次方程式 ー.
線形代数学 4.行列式 吉村 裕一.
確率・統計輪講資料 6-5 適合度と独立性の検定 6-6 最小2乗法と相関係数の推定・検定 M1 西澤.
非線形方程式の近似解 (2分法,はさみうち法,Newton-Raphson法)
2008年6月12日 非線形方程式の近似解 Newton-Raphson法
(ラプラス変換の復習) 教科書には相当する章はない
電気回路Ⅱ 演習 特別編(数学) 三角関数 オイラーの公式 微分積分 微分方程式 付録 三角関数関連の公式
10. 積分 積分・・確率モデルと動学モデルで使われる この章は計算方法の紹介 積分の定義から
第6章 カーネル法 修士2年 藤井 敬士.
情報科学 第7回 数値解析(2).
数学 ---> 抽象化、一般化 より複雑な関係ー>解析学 一次関数 y=ax+b より多くの要素ー>線形代数 x y f(x) y1 x1
スペクトル法の一部の基礎の初歩への はじめの一歩
数値積分.
プログラミング演習I 行列計算と線形方程式の求解
LU分解を用いた連立一次方程式.
独立成分分析 5 アルゴリズムの安定性と効率 2007/10/24   名雪 勲.
6. ラプラス変換.
「R入門」  5.7 行列に対する諸機能  10月23日 (木) 発表者 大城亜里沙.
ルンゲクッタ法 となる微分方程式の解を数値的に解く方法.
知能システム論I(13) 行列の演算と応用(Matrix) 2008.7.8.
電気回路学Ⅱ コミュニケーションネットワークコース 5セメ 山田 博仁.
A First Course in Combinatorial Optimization Chapter
変換されても変換されない頑固ベクトル どうしたら頑固になれるか 頑固なベクトルは何に使える?
パターン認識特論 担当:和田 俊和 部屋 A513 主成分分析
CVPR2003サーベイ 宮崎大輔 CVLセミナー 2003年7月2日(水)
4. システムの安定性.
「データ学習アルゴリズム」 第3章 複雑な学習モデル 報告者 佐々木 稔 2003年6月25日 3.1 関数近似モデル
わかりやすいパターン認識 第7章:部分空間法  7.1 部分空間法の基本  7.2 CLAFIC法                  6月13日(金)                  大城 亜里沙.
データ解析 静岡大学工学部 安藤和敏
サポートベクターマシン Support Vector Machine SVM
行列式 方程式の解 Cramerの公式 余因数展開.
情報科学 第6回 数値解析(1).
ガウス分布における ベーテ近似の理論解析 東京工業大学総合理工学研究科 知能システム科学専攻 渡辺研究室    西山 悠, 渡辺澄夫.
電気回路学Ⅱ 通信工学コース 5セメ 山田 博仁.
数値解析 第6章.
行列 一次変換,とくに直交変換.
13.ニュートン法.
2008年6月5日 非線形方程式の近似解 2分法,はさみうち法,Newton-Raphson法)
パターン認識特論 カーネル主成分分析 和田俊和.
Cプログラミング演習 ニュートン法による方程式の求解.
How shall we do “Numerical Simulation”?
コンピュータの高速化により, 即座に計算できるようになってきたが, 手法的にはコンピュータ出現以前に考え出された 方法が数多く使われている。
2008年 7月17日 応用数理工学特論 期末発表 鈴木綾華,程飛
グラフの帯域幅連続多重彩色 を求めるアルゴリズム (Bandwidth Consective Multicolorings of Graphs) 西関研究室 西川和秀.
空間図形の取り扱いについて.
8.2 数値積分 (1)どんなときに数値積分を行うのか?
8.数値微分・積分・微分方程式 工学的問題においては 解析的に微分値や積分値を求めたり, 微分方程式を解くことが難しいケースも多い。
Presentation transcript:

Numerical Recipes in C [日本語版] 初版 宮崎大輔 2003年10月30日(木) PBVセミナー

Solution of linear algebraic equations 第2章 連立1次方程式の解法 Solution of linear algebraic equations

連立方程式 N=Mならば方程式の数と未知数の数が等しい→解が一意に定まる可能性がある M<N(またはM=Nでも方程式が特異(singular))なら未知数の数より方程式の数の方が少ない→解は存在しないか無数の解が存在 M>N、未知数の数より方程式の数の方が多い→解は存在しない→最小2乗問題ととらえ解を求める

Gauss-Jordan(ガウス・ジョルダン)法 (Gauss-Jordan elimination) 複数の右辺ベクトルbについて方程式の解を求め、同時に逆行列A-1も求める Aの2行と対応するb、1の行を入れ替えても、xとYの解は変わらない Aの行を、その行と別の行の線形結合で置き換え、対応するb、1の行も線形結合で置き換えれば、解は変わらない Aの2列と対応するx、Yの行を入れ替えれば、解の行の順序が入れ替わる 上記3操作を組み合わせAを単位行列にすると右辺に解が得られる ピボット選択(pivoting): 0で割るのを防ぐ

Gaussの消去法(Gaussian elimination)と 後退代入(backsubstitution) 簡単に解ける(後退代入) 一般的には

LU分解 LU分解はCrout(クラウト)のアルゴリズム(Crout’s algorithm)を使う Ax=bを解くのが簡単になる

連立方程式の解の反復改良(iterated improvement) このxを求めたい 未知の誤差δxを含む解x+δxが得られたとする δxを求めれば得られた解x+δxから引いて真の解xが求まる ① ② ③ ①を②に代入 ②を③に代入 ④

3重対角(tridiagonal)な連立1次方程式 メモリO(N)、計算時間O(N) 通常は計算時間O(N3) アルゴリズムの詳細は省略

Vandermonde(バンデルモンド)行列(Vandermonde matrices) N個の点(xj,yj)に多項式を当てはめ、その多項式の係数ciを求める方程式 N個の点xiと値qjが与えられ、未知の重みwiを求め、N個のモーメントをqjに一致させる問題 計算時間はO(N2) 通常はO(N3) アルゴリズムの詳細は省略

Toeplitz(テープリッツ)行列(Toeplitz matrices) 計算時間はO(N2) 通常はO(N3) アルゴリズムの詳細は省略

特異値分解 (singular value decomposition, SVD) M×N行列A M×Nの列直交行列U N×Nの対角行列W(対角成分は非負) N×Nの直交行列V U,Vは正規直交行列 Uの列、Wの要素、Vの列(つまりVTの行)を入れ替えただけ、は同じ分解とみなす もしWのいくつかの要素がたまたま等しければ、 それに対応するU,Vの列をその線形結合で置き換えたものは同じ分解とみなす

SVDによる逆行列と連立方程式の解 Aが正方行列(N×N)のとき また、 の解は ただし、wj=0のときは1/wj=0とする

零空間(nullspace)と値域(range) (a) Aが非特異 Aが特異のとき [階数(rank)がN未満] 解は無数にある SVD解は0に最も近い解を吐き出す SVD解に零空間を足したものが解空間になる 零空間とは Ax=0の解空間 wj=0に対応するVの列の任意の線形結合 (b) Aが特異

SVDの良さ Aが特異でなくてもwjが小さいときはwjを0にしてSVD解を求めたほうが精度がいい 未知数より方程式が少ない場合は、足りない行に0を入れてN×N行列に対してSVD解を求める 未知数より方程式が多いときは、SVD解は最小2乗解となる

Sherman-Morrison(シャーマン・モリソン)公式 (Sherman-Morrison formula) 正方行列Aの逆行列A-1が求まったとする Aに小さな変更をしたとき、A-1を簡単に計算したい その変更が ならOK (u,vは何らかのベクトル) 例 uが基本単位ベクトルei→vをi行に加える vが基本単位ベクトルej→uをj列に加える u,vが基本単位ベクトルei,ejに比例→aijが加わる 計算方法:

Woodbury(ウッドベリ)の公式 (Woodbury formula) 修正すべき箇所が多い場合はSherman-Morrisonの公式を何回も計算する必要がある その場合はWoodburyの公式を使う ここで、AはN×N行列 U,VはN×P行列(P<N,通常P≪N) 逆行列の計算はP×P行列だけで済む

Interpolation and extrapolation 第3章 補間と補外 Interpolation and extrapolation

補間:低次の多項式か高次の多項式か

Lagrange(ラグランジュ)の公式 N個の点 を通る次数N-1の補間多項式は この公式を効率的に計算するNevilleのアルゴリズムというものがあるが、詳細は省略

有理関数による補間 多項式ではうまく近似できない関数でも有理関数でうまく近似できることがある m+1個の点 を通る以下の関数を求める Bulirsch-Stoer(ブリルシュ-ストア)アルゴリズムを使えばよいが、詳細は省略

3次スプライン補間 入力 を上の3次多項式で関数を近似する 以下の式と2つの条件からyi’’が求まる 入力 を上の3次多項式で関数を近似する 以下の式と2つの条件からyi’’が求まる 端点(y1’’,yN’’)の片方または両方を0と置く 端点の片方または両方の1階導関数を与えてやる この連立方程式は3重対角行列になるのでO(N)で解ける

双1次補間(bilinear interpolation) 2次元以上の補間(ここでは2次元の場合を説明するが、3次元以上でも同様)

双3次補間(bicubic interpolation) 滑らかさを上げる高次補間 各格子点で関数 以外に 勾配 クロス導関数 を人間が与え、それを元に補間する

双3次スプライン(bicubic spline) 滑らかさを上げる高次補間 双3次補間に似てるが、格子点での導関数の値を計算してしまう まず行ごとにスプライン補間し その新しい列についてスプライン補間する

Integration of functions 第4章 関数の積分 Integration of functions

閉じた公式と開いた公式

閉じたNewton-Cotes(ニュートン・コーツ)公式 (Newton-Cotes formulas) 台形則 Simpson則 Simpsonの3/8則 Bode則

一つの区間についての補外型公式

(閉じた)拡張公式 拡張台形則 1/N3次の拡張公式 拡張Simpson則 (extended Simpson’s rule) もう一つの拡張Simpson則(alternative extended Simpson’s rule)

(開いた)拡張公式

別のタイプの拡張公式 拡張中点則(extended midpoint rule) 半分開いた公式(semi-open formula)

拡張台形則によるアルゴリズム さきほどの拡張台形則 ループの数Nが増えるごとに点が2倍になる それに応じて合計する点の数が増え、精度が高くなる 誤差が十分小さくなったらループ終了、という使い方ができる

B2kはBernoulli(ベルヌーイ)数(Bernoulli number) Euler-Maclaurin(オイラー・マクローリン)総和公式 (Euler-Maclaurin Summation Formula)によるアルゴリズム B2kはBernoulli(ベルヌーイ)数(Bernoulli number) 今、N個の刻みでSNを得、続いて2N個の刻みでS2Nを得たとする で、最初の誤差項が相殺される 残った誤差は1/N4の大きさ=Simpson則 であることに注意すると は1/N2の大きさの誤差項であることが分かる 誤差の級数にはhの偶数ベキの項しかあらわれていないので、その次の項は1/N4の大きさの誤差項である 刻み幅Nを2倍にすると、hは1/2になり、 は1/4になる

Romberg積分 さきほどは、刻み幅をNと2Nの値のみを使った Rombergの方法では、刻み幅を細かくしながらk回拡張台形則を実行した結果をもとに、誤差級数を根こそぎ取り除く Romberg積分の実装にはNevilleのアルゴリズム(Neville’s algorithm)が使えるが、詳細は省略 このように、パラメータhをいろいろな値にしてアルゴリズムを実行し、その結果からh=0での極限の値を求めるという一般的なアイディアをRichardsonの極限遅延接近(Richardson’s deferred approach to the limit)という

変格積分 以下のいずれかが成り立つ場合、その積分は「変格」であるという x=0でのsin(x)/xのように、正しく計算できない x=0でのx-1/2のように特異点がある 上限が∞か下限が-∞ 第2Euler-Maclaurin総和公式(Second Euler-Maclaurin summation formula) をもとにRomberg積分をするとうまくいく

Gauss(ガウス)の求積法 (Gaussian quadratures) Nを与えたとき、多項式f(x)の積分を求めたい が厳密になるように重みwiと分点xiを探すことが目的:等間隔でなくてもいいし、13/12みたいな重みではない W(x)は既知関数:これをかけることによってf(x)の特異点をなくすことができる W(x) Gauss-(ガウス) 1 Legendre(ルジャンドル) (1-x2)-1/2 Chebyshev(チェビシェフ) xce-x Laguerre(ラゲール) e-x2 Hermite(エルミート)

Gauss-Legendre(ガウス・ルジャンドル)積分 (Gauss-Legendre integration) W(x)=1 分点xiと重みwiが求まれば、f(x)の積分が求まる でPNを求める PN=0となるような分点xiを求める 重みwiを により求める

多次元積分 多次元積分の場合は下図のように計算すればよい

Evaluation of functions 第5章 関数の計算 Evaluation of functions

級数と収束性 任意の関数はある点x0の近傍でベキ級数展開できる Aitken(エイトケン)のデルタ2乗過程(Aitken’s δ2-process)は、級数の収束を加速する Sn-1,Sn,Sn+1という三つの連続する部分和があったら次のように改良できる 交代級数(alternating series)(各項の符号が順々に入れ替わっているもの)はEuler(オイラー)変換(Euler’s transformation)が有効 ここでΔは前進差分演算子(forward difference operator)

連分数の計算 連分数 は以下の漸化式を計算すると求まる

多項式 多項式の値を求めるとき、次のようにする人はいまい c0+c1×x+c2×x×x+c3×x×x×x+c4×x×x×x×x 次のように計算すると効率的 c0+x×(c1+x×(c2+x×(c3+x×c4)))

Clenshaw(クレンショー)の漸化公式 (Clenshaw’s recurrence formula) のような和を求めたいとする(ckは係数) このFkがある関数α(n,x)とβ(n,x)に対して以下の漸化式に従うものとする ここでyk(k=N,N-1,…,1)を次の漸化式によって定義する この式を最初の式に代入してckを消すと 残るのは

2次方程式 2次方程式 の解は 上の2通りのうち、片方だけを使うと解が不正確になることがある 次のように計算すべき

3次方程式 3次方程式 の解の求め方 Q3-R2≧0のとき R2-Q3>0のとき

Chebyshev近似 Chebyshev(チェビシェフ)多項式(Chebyshev polynomial)

Daisuke Miyazaki 2003 Creative Commons Attribbution 4 Daisuke Miyazaki 2003 Creative Commons Attribbution 4.0 International License. http://www.cvl.iis.u-tokyo.ac.jp/