[ 簡単な説明 ] brent の方法による1変数関数の極小値求解プログラムです。 出力例 1 ~ 4 は、極小値を囲い込む範囲を変えて、関数 f (x) = 5 + |(x-1.6)(x-10)(x+8)| の極小を求めています。 極小値求解プログラムは、与える関数の符号を変えれば、極大値求解に使用できます。 /* brent.c */ #include <stdio.h> #include <math.h> #define ITMAX 100 /* 反復回数の上限 */ #define CGOLD 0.3819660 /* 黄金分割比 */ #define ZEPS 1.0e-10 /* 極小がちょうど x=0 にあるときは相対精度 tol */ /* の代わりにこれを絶対精度とする */ #define SHFT(a,b,c,d) (a)=(b); (b)=(c); (c)=(d);