MATLAB Function Reference | ![]() ![]() |
表示
x = minres(A,b) minres(A,b,tol) minres(A,b,tol,maxit) minres(A,b,tol.maxit,M) minres(A,b,tol,maxit,M1,M2) minres(A,b,tol,maxit,M1,M2,x0) minres(afun,b,tol,maxit,mifun,m2fun,x0,p1,p2,...) [x,flag] = minres(A,b,...) [x,flag,relres] = minres(A,b,...) [x,flag,relres,iter] = minres(A,b,...) [x,flag,relres,iter,resvec] = minres(A,b,...) [x,flag,relres,iter,resvec,resveccg] = minres(A,b,...)
詳細
x = minres(A,b)
は、線形方程式 A*x=b
のシステムに関する最小ノルム残差解 x
を求めようとします。n
行 n
列の係数行列 A
は、対称でなければなりませんが、正定である必要はありません。列ベクトル b
は、長さ n
です。A
は、afun(x)
が、A*x
を出力するような関数 afun
です。
minres
が収束する場合、その影響を示すメッセージが表示されます。minres
が、設定した最大繰り返し回数に達しても、または、何らかの理由で、収束に失敗した場合、ワーニングメッセージが表示され、相対残差 norm(b-A*x)/norm(b)
と この手法が停止した繰り返し回数を表示します。
minres(A,b,tol)
は、この方法のトレランスを指定します。tol
が[]
の場合、minres
は、デフォルト 1e-6
を使用します。
minres(A,b,tol,maxit)
は、繰り返し最大回数を設定します。maxit
が、 []
の場合、minres
はデフォルト min(n,20)
を使います。
minres(A,b,tol,maxit,M) and minres(A,b,tol,maxit,M1,M2)
は、対称正定前置条件 M
、または、M = M1*M2
を使って、システム inv(sqrt(M))*A*inv(sqrt(M))*y = inv(sqrt(M))*b
を、y
について効率良く解き、x = inv(sqrt(M))*y
を戻します。M
が、[]
の場合、minres
は、前置条件を適用しません。M
は、M\x
を戻す関数です。
minres(A,b,tol,maxit,M1,M2,x0)
は、初期推定を指定します。x0
が []
の場合、
minres
は、デフォルト、すべてゼロのベクトルを使います。
minres(afun,b,tol,maxit,m1fun,m2fun,x0,p1,p2,...)
は、パラメータ p1,p2,...
を関数 afun(x,p1,p2,...)
, m1fun(x,p1,p2,...)
, m2fun(x,p1,p2,...)
に渡します。
[x,flag] = minres(A,b,...)
は、収束に関するフラグも出力します。
フラグ |
収束 |
0 |
minres は、希望するトレランス tol に、繰り返し回数 maxit で収束します。 |
1 |
minres は、繰り返し回数が、maxit に達したけれど、収束しませんでした。 |
2 |
前置条件 M の条件数が良くありません。 |
3 |
minres からの出力の変化がありません(2回の連続する計算で、両者に違いが生じません)。 |
4 |
flag
が、0
でない場合は、常に、出力される解 x
は、すべての繰り返しで計算された最小ノルム残差をもっています。flag
出力が、指定された場合、メッセージは表示されません。
[x,flag,relres] = minres(A,b,...)
は、相対残差 norm(b-A*x)/norm(b)
も出力します。flag
が、0
の場合、relres <= tol
になります。
[x,flag,relres,iter] = minres(A,b,...)
は、x
が計算された繰り返し回数も出力します。ここで、0 <= iter <= maxit
です。
[x,flag,relres,iter,resvec] = minres(A,b,...)
は、各繰り返しで、norm(b-A*x0)
を含む minres
残差ノルムの推定ベクトルも出力します。
[x,flag,relres,iter,resvec,resveccg] = minres(A,b,...)
は、各繰り返しで、共役勾配残差ノルムの推定ベクトルも出力します。
例題
n = 100; on = ones(n,1); A = spdiags([-2*on 4*on -2*on],-1:1,n,n); b = sum(A,2); tol = 1e-10; maxit = 50; M1 = spdiags(4*on,0,n,n); x = minres(A,b,tol,maxit,M1,[],[]); minres converged at iteration 49 to a solution with relative residual 4.7e-014
function y = afun(x,n) y = 4 * x; y(2:n) = y(2:n) - 2 * x(1:n-1); y(1:n-1) = y(1:n-1) - 2 * x(2:n);
x1 = minres(@afun,b,tol,maxit,M1,[],n);
pcg
と共に、失敗した対称不定行列を使います。
A = diag([20:-1:1, -1:-1:-20]);
b = sum(A,2); % 真の解は、すべての要素が1のベクトル
x = pcg(A,b); % 最初の計算で、エラーを検出
pcg stopped at iteration 1 without converging to the desired
tolerance 1e-006 because a scalar quantity became too small or too
large to continue computing.
The iterate returned (number 0) has relative residual 1
しかし、minres
は、不定行列 A
を取り扱うこともできます。
x = minres(A,b,1e-6,40); minres converged at iteration 39 to a solution with relative residual 1.3e-007
参考
bicg
, bicgstab
, cgs
, cholinc
, gmres
, lsqr
, pcg
, qmr
, symmlq
参考文献
Barrett, R., M. Berry, T. F. Chan, et al., Templates for the Solution of Linear Systems: Building Blocks for Iterative Methods, SIAM, Philadelphia, 1994.
Paige, C. C. and M. A., "Solution of Sparse Indefinite Systems of Linear Equations." SIAM J. Numer. Anal., Vol.12, 1975, pp. 617-629.
![]() | min | mislocked | ![]() |