GMRES在matlab中的描述

参考文献:MATLAB函数库查询辞典 徐东艳 孟晓刚编著

[函数描述]

X=gmres(A,b)

视图求解线性方程组A*x=b的解x。nXn的稀疏矩阵A必须是方程且应是大型稀疏矩阵。列向量b的长度必须为n。参数A可以是一个函数afun以使得afun(x)返回A*x,对于这一语法格式,gmres并不重新启动,迭代的最大次数为min(n,10)。

    如果gmres收敛,则显示这一结果的信息。如果gmres在最大迭代步后没有收敛或者由于某种原因而停止,则打印警告信息,显示相对残差范数norm(b-A*x)/norm(b)并且显示该方法停止或者失效时的迭代步数。

 

Gmres(A,b,restart)

在每一次重新开始内部迭代时才重新开始方法。外部迭代的最大数目为min(n/restart,10),总迭代的最大步数为restart*min(n/restart,10).如果restart为n或者[],则gmres并不重新开始,则总迭代的最大数目为min(n,10)

Gmres(A,b,restart,tol)

指定方法的误差。如果tol为[],则函数gmres将使用默认值1e-6.

Gmres(A,b,restart,tol,maxit)

指定外部迭代的最大次数,也就是说,迭代的总次数不超过restart*matrix。如果参数maxit为[],则矩阵gmres使用默认值min(n/restart,10);如果参数restart为n或者[],则总迭代的最大次数为maxit(而非restart*matxit)。

Gmres(A,b,restart,tol,maxit,M)和 Gmres(A,b,restart,tol,maxit,M1,M2)

使用预处理矩阵M或者M=M1*M2有效地求解方程组inv(M)*A*x=inv(M)*b.如果M为[],则函数gmres不适应预处理矩阵,M可以是一个函数,它返回M\x

Gmres(A,b,restart,tol,maxit,M1,M2,x0)

指定初始的猜测值。如果x0为[],则函数gmres将使用默认值,一个全为零的向量。

Gmres(afun,b,restart,tol,maxit,m1fun,m2fun,x0,p1,p2,…)

将参数传递到函数afun(x,p1,p2,…),m1fun(x,p1,p2,…)和m2fun(x,p1,p2,…)中。

[x,flag]=gmres(A,b,…)

返回一个收敛标志符:

Flag=0

函数gmres在maxit外部迭代步数之内收敛到期望的误差

Flag=1

函数gmres迭代maxit次但没有收敛

Flag=2

预处理矩阵M为病态条件阵

Flag=3

函数gmres停滞(两个连续迭代步的结果相同)

 

当flag的值不为0时,返回的解x是在所有迭代过程中得到的具有最小范数残差的结果。如果指定输出flag,则不显示任何消息。

[x,flag,relres]=gmres(A,b,…)

返回相当残差范数norm(b-A*x)/norm(b),如果flag的值为0,则relres<=tol,

[x,flag,relres,iter]=gmres(A,b,…)

返回计算x时外部和内部迭代次数,其中0<=iter(1)<=maxit且0<=iter(2)<=restart.

[x,flag,relres,iter,resvec]=gmres(A,b,…)

返回每一个内部迭代时的残差范数向量,包含norm(b-A*x0).

 

 

 

posted @ 2012-12-11 16:40  liang_l  阅读(11226)  评论(0编辑  收藏  举报