以下の内容はhttps://zellij.hatenablog.com/entry/20130318/p1より取得しました。


数値計算ライブラリ

■ FADBAD++
http://www.fadbad.com/fadbad.html

C++言語のテンプレートを活用した微分計算ライブラリ。オープンソース
最適化計算では、目的関数の微分値を求める必要が生じるけど、それを自分で実装するのは手間がかかる。
FADBAD++では、目的関数を記述するだけで、その微分計算が自動でできてしまう。
微分のチェーンルール(参照)を使って、精度よく値を求められる。

例:
目的関数を次のように定義しておく

B<double> func(const B<double>& x, const B<double>& y)
{
	B<double> z=sqrt(x);
	return y*z+sin(z);
}

以下のような短い記述でxおよびyで微分した値が求まってしまう。

	B<double> x,y,f;    // Declare variables x,y,f
	x=1;                // Initialize variable x
	y=2;                // Initialize variable y
	f=func(x,y);        // Evaluate function and record DAG
	f.diff(0,1);        // Differentiate f (index 0 of 1)
	double fval=f.x();  // Value of function
	double dfdx=x.d(0); // Value of df/dx (index 0 of 1)
	double dfdy=y.d(0); // Value of df/dy (index 0 of 1)


■ Ipopt (Interior Point OPTimizer)
https://projects.coin-or.org/Ipopt

C++言語による、非線形最適化問題のソルバ。オープンソース




以上の内容はhttps://zellij.hatenablog.com/entry/20130318/p1より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14