MINRES法

求解线性方程组的系统 - 最小残余方法

描述

X= MINRES法(一个b试图解决线性方程系统A * X = B对于X使用最小残差法。如果尝试成功,MINRES法显示一个消息,以确认收敛。如果MINRES法未能迭代或暂停出于任何原因的最大数目后收敛,它显示包括所述相对残余诊断消息范数(B-A * X)/常态(b)中和迭代号,在该方法停止。

X= MINRES法(一个bTOL指定方法的耐受性。默认公差为1E-6

X= MINRES法(一个bTOL麦克斯特指定迭代使用的最大数量。MINRES法如果它不收敛内显示诊断信息麦克斯特迭代。

X= MINRES法(一个bTOL麦克斯特中号指定一个对称正定矩阵预条件中号并计算X通过有效地解决了系统 H - 1 一个 H - Ť ÿ = H - 1 b 对于ÿ,其中 ÿ = H Ť X H = 中号 1 / 2 = 中号 1 中号 2 1 / 2 。使用预条件矩阵可以改善该问题的数值性质,计算的效率。

X= MINRES法(一个bTOL麦克斯特M1M2指定预条件矩阵的因素中号这样M = M1 * M2

X= MINRES法(一个bTOL麦克斯特M1M2X0指定用于解向量的初始猜测X。默认值是零向量。

[X] = MINRES法(___返回一个标志,指定是否该算法成功收敛。什么时候标志= 0,收敛成功。您可以使用此输出语法与任何先前的输入参数的组合。当您指定输出,MINRES法不显示任何诊断消息。

[Xrelres] = MINRES法(___还返回在所计算的溶液中的剩余误差。如果0, 然后relres <= TOL

[XrelresITER] = MINRES法(___也返回迭代次数ITER在这X被计算。

[XrelresITERresvec] = MINRES法(___还在每次迭代返回剩余范数的向量,其中包括第一残余范数(B-A * X0)

[XrelresITERresvecresveccg] = MINRES法(___还返回缀合物的载体在每次迭代梯度残余规范。

例子

全部收缩

解决使用正方形线性系统MINRES法使用默认设置,然后调整在溶液方法中使用迭代的公差和数量。

创建一个稀疏三角矩阵一个作为系数矩阵。使用的行总和一个作为矢量b对于右手边 斧头 = b 使溶液 X 预计将那些的向量。

N = 400;上那些=(N,1);A = spdiags([ -  2 * 4 *上-2 *上], -  1:1,N,N);B =总和(A,2);

解决 斧头 = b 运用MINRES法。输出显示器包括相对剩余误差的值 斧头 - b b

X = MINRES法(A,B);
MINRES法停在迭代20而未收敛到所需的公差1E-06,因为达到迭代的最大数量。返回的迭代(数20)具有相对残留0.017。

默认MINRES法使用20次迭代和公差1E-6和算法无法收敛在那些20次迭代这个矩阵。由于残余是的量级1E-2,这是一个很好的指标,需要更多的迭代。您也可以减少耐受性使其更容易使算法收敛。

解决再次用宽容的系统1E-4和250次迭代。

X = MINRES法(A,B,1E-4250);
MINRES法收敛在迭代200与相对残余7E-13的溶液。

检查使用具有预条件矩阵的效果MINRES法求解线性系统。

创建对称正定的,带状系数矩阵。

A = delsq(numgrid('S',102));

确定b所以,真正的解决办法是全部为一向量。

B =总和(A,2);

设置宽容和最大迭代次数。

TOL = 1E-12;麦克斯特= 100;

MINRES法发现在所要求的公差和迭代次数的解决方案。指定六个输出返回有关求解过程的信息:

  • X0是所计算的解决方案A * X0 = B

  • FL0是指示该算法是否收敛的标志。

  • RR0是残余计算答案的X0

  • IT0是迭代次数时X0被计算。

  • RV0为残留历史的向量 斧头 - b

  • rvcg0对于共轭梯度残余历史的向量 一个 Ť 一个 X - 一个 Ť b

[X0,FL0,RR0,IT0,RV0,rvcg0] = MINRES法(A,B,TOL,麦克斯特);FL0
FL0 = 1
RR0
RR0 = 0.0013
IT0
IT0 = 100

FL0是因为1MINRES法不收敛到所需容限1E-12所请求的100次迭代内。

为了具有收敛帮助,您可以指定一个预条件矩阵。以来一个是对称的,使用ichol生成预条件 中号 = 大号 大号 Ť 。指定'ICT'选项以使用不完全Cholesky因式分解与阈滴,并指定的对角线位移值1E-6以避免非正枢转。通过指定解决所述预处理系统大号L”作为输入来MINRES法

安装=结构('类型''ICT''diagcomp',1E-6,'droptol',1E-14);L = ichol(A,设置);[X1,FL1,RR1,IT1,RV1,rvcg1] = MINRES法(A,B,TOL,麦克斯特,L,L');FL1
FL1 = 0
另外,rr
RR1 = 2.4539e-15
IT1
IT1 = 4

使用的ILU预处理器产生一个相对残余小于规定公差1E-12在第四次迭代。输出RV1(1)范数(b)中,输出RV1(端部)范数(B-A * X1)

您可以按照进度MINRES法通过在每一次迭代绘制的相对残差。绘制每个解决方案的剩余历史与指定容忍线。

semilogy(0:长度(RV0)-1,RV0 /范数(b)中,'-o')保持semilogy(0:长度(RV1)-1,RV1 /范数(b)中,'-o')YLINE(TOL,'R--');传说(“不预条件”“ICHOL预调节器”'公差''位置''东')xlabel(“迭代次数”)ylabel(“相对残存”

检查供应的影响MINRES法与溶液的初始猜测。

创建三对角稀疏矩阵。用每行的总和作为向量的右侧 斧头 = b 因此,对于期望的解决方案 X 是那些的向量。

N = 900;E =酮(N,1);A = spdiags([E 2 * E E], -  1:1,N,N);B =总和(A,2);

MINRES法解决 斧头 = b 两次:一次用默认的初始猜测,有一次与解决方案的一个很好的初始猜测。使用200次迭代两种解决方案并指定初始猜测作为矢量与所有金宝搏官方网站元素等于0.99

麦克斯特= 200;X1 = MINRES法(A,B,[],麦克斯特);
MINRES法收敛在迭代27与相对残余9.5e-07的溶液。
X0 = 0.99 *酮(尺寸(A,2),1);X2 = MINRES法(A,B,[],麦克斯特,[],[],X0);
MINRES法收敛在迭代7与相对残余6.7e-07的溶液。

在这种情况下供给的初始猜测使MINRES法收敛更快。

返回的中间结果

您也可以使用初始猜测得到通过调用中间结果MINRES法在一个for循环。在求解器每次调用执行几次迭代并将计算出的解决方案。然后,您使用的溶液,作为下一批迭代的初始向量。

例如,该代码执行100次迭代四次并存储该溶液矢量for循环每次通过后:

X0 =零(尺寸(A,2),1);TOL = 1E-8;麦克斯特= 100;对于K = 1:4 [X,旗,relres] = MINRES法(A,B,TOL,麦克斯特,[],[],X0);X(:,K)= X;R(k)的= relres;X0 = X;结束

X(:,k)的被解向量计算在迭代ķ的for循环,和R(k)的是,溶液的相对残留。

通过提供解决的线性系统MINRES法与函数处理,计算斧头代替系数矩阵的一个

一个所产生的威尔金森测试矩阵画廊是一个21通过-21三对角阵。预览矩阵。

A =画廊(“威尔克”,21)
A =21×2110 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 9 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 8 1 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 7 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 1 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 1 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 1 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 10 0 0 0 0 0 0 0 0 0⋮

威尔金森矩阵具有特殊的结构,这样你就可以显示操作斧头具有功能手柄。由于每一行一个乘中的元素X,只有少数的结果是非零的(对应于非零元素上tridiagonals)。而且,只有主对角线具有不等于1的表达的非零元素 斧头 变为:

[ 10 1 0 0 0 1 9 1 0 0 0 1 8 1 0 0 1 7 1 0 0 1 6 1 0 0 1 1 0 0 1 4 1 0 0 1 3 0 0 0 1 0 0 0 1 10 ] [ X 1 X 2 X 3 X 4 X X 21 ] = [ 10 X 1 + X 2 X 1 + 9 X 2 + X 3 X 2 + 8 X 3 + X 4 X 19 + 9 X 20 + X 21 X 20 + 10 X 21 ]

将得到的载体可被写为三个矢量的总和:

[ 0 + 10 X 1 + X 2 X 1 + 9 X 2 + X 3 X 2 + 8 X 3 + X 4 X 19 + 9 X 20 + X 21 X 20 + 10 X 21 + 0 ] = [ 0 X 1 X 20 ] + [ 10 X 1 9 X 2 10 X 21 ] + [ X 2 X 21 0 ]

在MATLAB®,编写创建这些矢量并将它们相加,由此得到的值的函数斧头

功能Y = afun(X)Y = [0;X(1:20)] +...[(10:-1:0)';(1:10)']。* X +...[X(2:21);0];结束

(此功能被保存为在实施例的端部的局部的功能。)

现在,求解线性系统 斧头 = b 通过提供MINRES法用函数处理计算斧头。使用的公差1E-12和50次迭代。

B =酮(21.1);TOL = 1E-12;麦克斯特= 50;X1 = MINRES法(@ afun,B,TOL,麦克斯特)
MINRES法收敛在迭代11与相对残余4.1E-16的溶液。
X1 =21×10.0910 0.0899 0.0999 0.1109 0.1241 0.1443 0.1544 0.2383 0.1309 0.5000⋮

检查afun(X1)产生的人的向量。

afun(X1)
ANS =21×11.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000⋮

本地函数

功能Y = afun(X)Y = [0;X(1:20)] +...[(10:-1:0)';(1:10)']。* X +...[X(2:21);0];结束

输入参数

全部收缩

系数矩阵,指定为对称矩阵或函数处理。该矩阵是线性系统的系数矩阵A * X = B。通常,一个是一个大的稀疏矩阵或函数句柄返回一个大稀疏矩阵和列向量的乘积。您可以使用issymmetric要确认一个是对称的。

指定一个作为一个功能处理

可以指定系数矩阵作为一个功能句柄代替的矩阵保存存储器中的计算。功能句柄返回的矩阵矢量乘积,而不是形成在整个系数矩阵,使得计算更加有效。下载188bet金宝搏

要使用功能手柄,使用函数签名函数y = afun(x)的参数化功能介绍了如何给函数提供额外的参数好玩儿,如果必要的。函数调用afun(x)的必须返回的值斧头

数据类型:|function_handle
复数支持:金宝app

线性方程的右手侧,指定为列向量。b必须与长度的列向量等于尺寸(A,1)

数据类型:
复数支持:金宝app

方法容忍,指定为正标量。使用此输入权衡计算精度和运行。MINRES法必须符合允许的迭代次数内的公差是成功的。值越小TOL指的答案必须更加精确的计算是成功的。

数据类型:

最大迭代次数,指定为正标量整数。增加的价值麦克斯特允许更多的迭代MINRES法满足公差TOL。一般来说,较小的值TOL意味着更多的迭代都需要成功地完成计算。

预条件子矩阵,指定为矩阵或函数处理的单独的参数。你可以指定一个预条件矩阵中号或它的矩阵因子M = M1 * M2改善线性系统的数值方面更容易MINRES法快速收敛。您可以使用不完整的矩阵分解功能ILUichol以产生预条件矩阵。您还可以使用均衡之前因式分解改善系数矩阵的条件数。有关预处理器的更多信息,请参阅迭代法线性系统

MINRES法把未指定的预条件为单位矩阵。

指定中号作为一个功能处理

您可以指定任何的中号M1, 要么M2作为函数处理,而不是矩阵保存存储器中的计算。功能句柄执行矩阵向量运算,而不是形成在整个预条件矩阵,使得计算更加有效。

要使用功能手柄,使用函数签名函数y = MFUN(x)的参数化功能介绍了如何给函数提供额外的参数MFUN,如果必要的。函数调用MFUN(x)的必须返回的值中号\ X要么M2 \(M1 \ X)

数据类型:|function_handle
复数支持:金宝app

初始猜测,指定为与长度的列向量等于尺寸(A,2)。如果您可以提供MINRES法一个更合理的初始猜测X01比0的默认矢量,那么它可以节省计算时间,并帮助该算法收敛速度更快。

数据类型:
复数支持:金宝app

输出参数

全部收缩

线性系统解决方案,返回作为载体。该输出给出了近似解的线性系统A * X = B。如果计算成功(标志= 0), 然后relres小于或等于TOL

每当计算不成功(标志〜= 0), 解决方案X通过返回MINRES法是一个具有上计算所有的迭代微小残留标准。

收敛标志,返回此表中的标值之一。收敛标志指示计算是否成功以及几种不同形式的故障之间进行区分。

标志值

收敛

0

成功 -MINRES法收敛到所需的公差TOL麦克斯特迭代。

1

失败 -MINRES法迭代麦克斯特迭代但没有收敛。

2

失败 - 预条件矩阵中号要么M = M1 * M2状态不好。

3

失败 -MINRES法停滞后,连续两次迭代是一样的。

4

故障 - 一个由计算的标量的MINRES法算法变得过小或过大,继续计算。

失败 - 预条件矩阵中号是不是对称正定。

相对残差,返回一个标量。相对残差是如何准确地返回答案的指示X是。MINRES法跟踪相对残余和共轭梯度在溶液处理每次迭代的剩余,并且该算法收敛时剩余的符合规定的公差TOL。该relres输出包含会聚的残差的值,无论是相对残余或共轭梯度残留:

  • 相对残余误差等于范数(B-A * X)/常态(b)中一般是符合公差的残留TOL什么时候MINRES法收敛。该resvec输出跟踪此残留的历史在所有迭代。

  • 所述共轭梯度残余误差等于范数(A '* A * X - A' * B)。这个残留的原因MINRES法收敛频率低于相对残留。该resveccg输出跟踪此残留的历史在所有迭代。

数据类型:

迭代次数,返回一个标量。该输出表示迭代次数,在该计算的答案X计算。

数据类型:

残差,返回作为载体。残差范数(B-A * x)的揭示了算法有多接近收敛为给定值X。元素的数量resvec等于迭代的次数。您可以检查的内容resvec来帮助决定是否改变的值TOL要么麦克斯特

数据类型:

共轭梯度残余规范,返回作为载体。元素的数量resveccg等于迭代的次数。

数据类型:

更多关于

全部收缩

最小残差法

的MINRES法和SYMMLQ方法是Lanczos法即支撑着共轭梯度方法PCG的变体。PCG一样,系数矩阵仍然需要是对称的,但MINRES法和SYMMLQ允许它是无限期的(不是所有特征值必须为正)。这通过避免隐式LU分解通常存在于Lanczos法中,当零个枢轴与不定矩阵遇到其是容易发生故障来实现。

MINRES法最小化了2范数的残余,而SYMMLQ解决了使用LQ分解投影系统和保持残余正交于所有以前的。该方法GMRES开发一概而论MINRES法对非对称问题[1]

提示

  • 的最迭代方法收敛依赖于系数矩阵的条件数,COND(A)。您可以使用均衡改善的条件数一个,并在自己的这使得它更容易为大多数迭代求解收敛。但是,使用均衡也带来更好的质量预条件矩阵,当您随后因素将平衡矩阵B = R * P *甲* C

  • 您可以使用矩阵重新排序功能,如解剖symrcm来排列所述系数矩阵的行和列,并尽量减少当系数矩阵因式分解,以产生预处理器非零元素的数量。这可以减少所需的随后的内存和时间解决预处理线性系统。

参考

[1]巴雷特,R.,M。莓果,T.F。陈等人,构建模块的迭代方法:线性系统的解决方案模板,SIAM,费城,1994年。

[2]佩奇,C. C.和M. A.桑德斯,“线性方程组的稀疏不定系统解决方案”。SIAM J. NUMER。肛门。,第12卷,1975年,第617-629。

扩展功能

R2006a前推出