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

◆ cg1()

void cg1 ( char  uplo,
int  n,
const double  val[],
const int  rowptr[],
const int  colind[],
const double  b[],
double  x[],
double  tol,
int  maxiter,
int *  iter,
double *  res,
int  lwork,
double  work[],
int *  info 
)

共役勾配(CG)法による連立一次方程式 Ax = b の解 (正定値対称行列) (シンプルドライバ)

目的
共役勾配(CG)法により正定値対称な係数行列の連立一次方程式 Ax = b の解を求める. 行列 A は CSR 形式で表される.
引数
[in]uplo対称行列 A の上または下三角部分のどちらを格納するか指定する.
= 'U': 上三角部分を格納.
= 'L': 下三角部分を格納.
= 'F': 全体(上および下三角部分両方)を格納.
[in]n行列の次数. (n >= 0) (n = 0 の場合, 処理を行わずに戻る)
[in]val[]配列 val[lval] (lval >= nnz)
行列 A の非ゼロ要素の値. (nnz は非ゼロ要素数)
[in]rowptr[]配列 rowptr[lrowptr] (lrowptr >= n + 1)
行列 A の行ポインタ.
[in]colind[]配列 colind[lcolind] (lcolind >= nnz)
行列 A の列インデクス. (nnz は非ゼロ要素数)
[in]b[]配列 b[lb] (lb >= n)
右辺ベクトル b.
[in,out]x[]配列 x[lx] (lx >= n)
[in] 解の初期推定値.
[out] 求められた近似解.
[in]tol収束判定基準値.
norm(b - A*x) <= tol*norm(b) であれば収束とみなす.
Tol < eps (マシン精度) であれば Tol = eps とみなす.
[in]maxiter最大反復回数. (maxiter > 0)
[out]iter最終的な反復回数.
[out]res最終的な残差ノルム norm(b - A*x).
[in]lwork配列 work[]のサイズ. (lwork >= 5*n)
[out]work[]配列 work[lwork]
作業領域.
[out]info= 0: 正常終了.
< 0: (-info)番目の入力パラメータの誤り.
= 1: (警告) 行列 A が正定値でない(計算は続行する).
= 2: (警告) 前処理行列 M が正定値でない(計算は続行する).
= 11: 最大反復回数を超えた.
= 12: 行列 A が特異である.