収束させる

  • 勾配に沿って、収束値を得る方法は、y=f(x)のような1関数でも用いられるが、連立式でも。
  • こちらで、そのアルゴリズムの例が紹介されている
  • エッセンスは「繰り返しているうちに行きつきたいところに行きつけること」→反復処理化→共役勾配法(Wiki)
  • どうして反復処理でやりたくなるか
    • 簡単な「到達問題」は直接法で(コレスキー分解とか)
    • 直接法には苦手な問題がある(大きすぎる式、疎な式。→偏微分方程式とかで登場)
    • 直接法がだめなら「間接法〜反復法」
    • 反復法なら適用範囲を「線形」から「非線形」に拡張できる
  • 非線形共役勾配法(Wiki,PDF)
  • ちなみに反復法がワークする行列の条件(こちら)
  • 関係しそうなRのパッケージ
    • FME
      • rootSolve()にも依存
      • 適用:パッケージ説明文書から抜粋
"Although it was created to be used with models consisting of ordinary differential equations (ODE),
partial differential equations (PDE) or differential algebraic equations (DAE), it can work with other
models."
Depends R (>= 2.6), deSolve, rootSolve, minpack.lm, MASS, coda
    • そこで使っているのはopitim()関数
      • optim()関数は、手法として以下を実装。"CG"が"conjugate-Gradient"(?)
method = c("Nelder-Mead", "BFGS", "CG", "L-BFGS-B", "SANN")