zoukankan      html  css  js  c++  java
  • 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).

  • 相关阅读:
    23 情态动词+完成时
    22 情态动词否定和疑问
    青山有幸埋忠骨,白铁无辜铸佞臣。
    Modern Perl
    en_windows_10_enterprise_ltsc_2019_x64_dvd_5795bb03
    Destinos & Nuevos Destinos
    TVB <十兄弟>
    Great Udemy Courses
    assembly language reference
    Alex Jones
  • 原文地址:https://www.cnblogs.com/kmliang/p/2813208.html
Copyright © 2011-2022 走看看