XLPack 7.0
XLPack 数値計算ライブラリ (C API) リファレンスマニュアル
読み取り中…
検索中…
一致する文字列を見つけられません

◆ hybrd1()

void hybrd1 ( void(*)(int, double *, double *, int *)  fcn,
int  n,
double  x[],
double  fvec[],
double  xtol,
double  work[],
int  lwork,
int *  info 
)

非線形連立方程式 (ハイブリッド法) (ヤコビ行列計算不要) (シンプルドライバ)

目的
hybrd1はn本のn変数非線形方程式よりなる連立方程式
fi(x1, x2, ..., xn) = 0 (i = 1 〜 n)
の解をパウエルのハイブリッド法により求める.

関数値を計算するユーザールーチンが必要である. ヤコビ行列はルーチン内で前進差分により計算されるため, ユーザーがヤコビ行列を求める必要はない.

hybrd1は標準的な使用のためのシンプルドライバで, デフォルトパラメータを用いてhybrdを呼び出す.
引数
[in]fcn関数fi(x)の値を求めるユーザーサブルーチンで, 次のように定義すること.
void fcn(int n, double x[], double fvec[], int *iflag)
{
iflag = 1 あるいは iflag = 2 の場合:
与えられたx[]から関数値fi(x)を求めfvec[i]に設定する(i = 0〜n-1). それ以外の変数を変更してはならない.
}
iflagの値は実行を強制終了させたい場合以外は変更してはならない. 実行を終了させたい場合には負の値に設定して戻る.
[in]n未知数および方程式の数. (n > 0)
[in,out]x[]配列 x[lx] (lx >= n)
[in] 初期近似解.
[out] 求められた解ベクトル.
[out]fvec[]配列 fvec[lfvec] (lfvec >= n)
求められた解ベクトルx[]における関数値.
[in]xtol目標精度. 続く2回の反復間の相対誤差がxtolより小さくなったら終了する. (xtol >= 0)
[out]work[]配列 work[lwork]
作業領域.
[in]lwork配列 work[]のサイズ. (lwork >= n*(3*n + 17)/2)
[out]info= 0: 正常終了 (連続した反復間の相対誤差がxtol以下になった)
= -2: 入力パラメータ n の誤り (n < 1)
= -5: 入力パラメータ xtol の誤り (xtol < 0)
= -7: 入力パラメータ lwork の誤り (lworkが小さすぎる)
= 1: iflag = 1または2によるfcnの呼び出し回数が上限(200*(n + 1))に達した
= 2: xtolが小さすぎる. 解xを改善することができなくなった
= 3: 直近5回のヤコビ行列の評価において解が改善されなかった
= 4: 直近10回の反復において解が改善されなかった
= 5: ユーザーによる強制終了 (iflag < 0でfcnから戻った)
出典
netlib/minpack