| 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 | ![]() |