Saturday, October 30, 2010

【Fortran】 Intel MKL Nonlinear Least Squares Problem with Bounded Linear Constraint

 非線形連立方程式を解くためにアルゴリズムを探している。

 いくつかあるだろうけど、ここではIntel Compilerに同梱されているMath Kernel Library (MKL)を使う方法を考える。

 MKLの中では、線形制約下の最小二乗法のルーチンを使うことになる。このルーチンはTrust Region Methodを使っている。Trust Region Methodについては、こちらのレジュメがわかりやすい。

(追記)
 この非線形最小二乗のアルゴリズムは使い物にならないかもしれない。というのも、内部でJacobianを求めるときに引数として用意すべき外部サブルーチンの形式への規制が強すぎるから。具体的には、外部サブルーチンが sub(M,N,X,F) (Mは連立方程式の数、Nは変数の数、Xは変数、Fは関数の値)の形でなければならず、連立方程式に登場するパラメータを引数として定義することができなくなっている。もちろん、サブルーチンの中でテキストファイルから読み込むというアプローチも考えられるけど、I/O時間が余計に掛かってしまって計算が遅くなると思われる。

(追記2)
 上記の(追記)は間違い。グローバル変数を使えば大丈夫。具体的には、moduleファイルを使う。

No comments:

Post a Comment