自動微分
出典: フリー百科事典『ウィキペディア(Wikipedia)』
自動微分(じどうびぶん、アルゴリズム的微分とも)とは、プログラムで定義された関数を解析し、偏導関数の値を計算するプログラムを導出する技術である。したがって
- 数式微分 (Symbolic differentiation, 原関数を表す数式から数式処理により導関数を導出する)
- 数値微分 (Numerical differentiation, 原関数の値から近似的に微分係数を算出する)
のいずれとも異なる。
英語では Automatic differentiation (あるいは単に AD) と呼ばれる。
目次 |
導出 [編集]
その導出方法には大きく分けて2 種あり、それらは、ボトムアップ型自動微分(狭義の自動微分)、トップダウン型自動微分(高速自動微分) という.
ボトムアップ型自動微分は、フォーワード型自動微分と呼ばれ、トップダウン型自動微分は、バックワード型自動微分(後退型自動微分)、リバース型自動微分とも呼ばれる。
実装 [編集]
自動微分の実装方法には大きく分けて2種類あり、関数の値を計算するプログラムを読み込み、導関数の値を計算するプログラムを出力する、ソースコードの変換を行う方法と、オペレータオーバーローディングを用いる方法がある。
ソフトウェア [編集]
- C/C++
-
Package License Approach Brief Info ADC Version 4.0 nonfree オペレータオーバローディング ADIC free for noncommercial ソースコードの変換 forward mode AD Model Builder BSD オペレータオーバローディング ADOL-C CPL 1.0 or GPL 2.0 オペレータオーバローディング now a part of Coin-OR project FADBAD++ free for
noncommercialオペレータオーバローディング CppAD CPL 1.0 or GPL 2.0 オペレータオーバローディング a part of Coin-OR project OpenAD depends on components ソースコードの変換 Sacado GPL オペレータオーバローディング A part of the Trilinos collection, forward/reverse modes. TAPENADE Free for noncommercial ソースコードの変換
- Fortran
-
Package License Approach Brief Info ADF Version 4.0 nonfree オペレータオーバローディング ADIFOR >>>
(free for non-commercial)ソースコードの変換 OpenAD depends on components ソースコードの変換 TAPENADE Free for noncommercial ソースコードの変換
- Matlab
- MAD (nonfree, オペレータオーバローディング)
- Python
-
Package License Approach Brief Info FuncDesigner BSD オペレータオーバローディング you can perform numerical optimizations of systems coded in FuncDesigner by OpenOpt ScientificPython CeCILL オペレータオーバローディング see modules Scientific.Functions.FirstDerivatives and Scientific.Functions.Derivatives pycppad BSD オペレータオーバローディング wrapper for CppAD, second order forward/reverse pyadolc BSD オペレータオーバローディング wrapper for ADOL-C, arbitrary order forward/reverse
参考文献 [編集]
- 光一, 久保田; 正夫, 伊理 (1998). アルゴリズムの自動微分と応用. 現代非線形科学シリーズ. 3. コロナ社. ISBN 978-4339026023.
- (1993), 伊理 正夫, "高速自動微分法", 応用数理 3(1), 58-66, 19930315, http://ci.nii.ac.jp/naid/110007390406/, 日本応用数理学会.
- (1991), 伊理 正夫, 久保田,光一, "高速自動微分法(I)", 応用数理 1(1), 17-35, 19910315, 日本応用数理学会.