主要内容

平衡

矩阵缩放改善条件

描述

例子

PRC=平衡(一个排列和重新缩放矩阵一个这样就得到了新的矩阵B = r * p * a * c具有大小为1的对角线项,并且其非对角线项的大小不大于1。

PRC=平衡(一个outputForm返回输出PR,C指定的格式outputForm.例如,您可以指定outputForm作为“向量”以列向量的形式返回输出。

例子

全部折叠

利用迭代求解器平衡具有较大条件数的矩阵,提高线性系统求解的效率和稳定性巨磁电阻

加载west0479矩阵,这是一个实值479 × 479的稀疏矩阵。使用气孔导度计算矩阵的估计条件数。

负载west0479A = west0479;c = condest(A)
C1 = 1.4244e+12

试着解线性方程组 斧头 b 使用巨磁电阻迭代450次,公差为1 e-11.指定五个输出,以便巨磁电阻在每次迭代中返回解决方案的剩余规范(使用抑制不需要的输出)。在半对数图中绘制剩余规范。图表显示巨磁电阻是否能够达到合理的残差范数,因此计算解为 x 不可靠。

b = ones(size(A,1),1);Tol = 1e-11;Maxit = 450;[x,flx,~,~,rvx] = gmres(A,b,[],tol,maxit);semilogy (rvx)标题(“每次迭代的剩余范数”

图中包含一个轴对象。标题为Residual Norm at Each Iteration的axes对象包含一个类型为line的对象。

使用平衡调整排列和重新调整一个.创建一个新矩阵B = r * p * a * c,它有更好的条件数,对角线项只有1和-1。

[P,R,C] =平衡(A);B = r * p * a * c;c2 = condest(B)
C2 = 5.1036e+04

使用返回的输出平衡,你可以重新阐述这个问题 斧头 b 通过 d ,在那里 B RPAC 而且 d 反应器 .在这种形式下,您可以将解决方案恢复到原始系统 x Cy .然而,恢复的解决方案可能没有原始系统所需的残余误差。看到求解线性系统的尺度变换获取详细信息。

使用巨磁电阻来解决 通过 d y ,然后在每次迭代中重新绘制剩余范数。该图表明,平衡矩阵提高了问题的稳定性,与巨磁电阻收敛到的期望公差1 e-11在不到200次迭代中。

d = R*P*b;[y,fly,~,~,rvy] = gmres(B,d,[],tol,maxit);持有semilogy (rvy)传说(“原始”“均衡”“位置”“东南”)标题(“相对残差规范(无前置条件)”)举行

图中包含一个轴对象。标题为“相对剩余规范(无前置条件)”的axis对象包含2个类型为line的对象。这些物品代表原始的、均衡的。

用预处理剂改善溶液

在你得到矩阵之后B,您可以通过计算用于的预处理条件来进一步提高问题的稳定性巨磁电阻.的数值性质B比原来的矩阵好吗一个,所以你应该用平衡矩阵来计算预调节因子。

计算两个不同的预处理条件ilu,并将这些数据用作巨磁电阻再次解决问题。将每次迭代的剩余范数绘制在与平衡范数相同的图上,以便进行比较。图中显示,用平衡矩阵计算预处理条件极大地提高了问题的稳定性巨磁电阻在少于30次迭代中实现所需的公差。

semilogy (rvy)[L1,U1] = ilu(B,struct(“类型”“ilutp”“droptol”1 e 1,“打”, 0));[yp1 flyp1, ~, ~, rvyp1] = gmr (B, d,[],托尔,麦克斯特,L1, U1);semilogy(rvyp1) [L2,U2] = ilu(B,struct(“类型”“ilutp”“droptol”1飞行,“打”, 0));[yp2 flyp2, ~, ~, rvyp2] = gmr (B, d,[],托尔,麦克斯特,L2, U2);semilogy (rvyp2)传说(“没有预调节器”“ILUTP (1 e 1)”“ILUTP(1依照)”)标题(ILU预处理的相对残差范数(平衡))举行

图中包含一个轴对象。标题为ILU预处理的相对残差规范(均衡)的坐标轴对象包含3个类型为line的对象。这些对象表示No preconditioner, ILUTP(1e-1), ILUTP(1e-2)。

创建一个6乘6的魔法方阵,然后使用平衡对矩阵进行因式分解。默认情况下,平衡以矩阵形式返回排列因子和比例因子。

A =魔术(6)
一个=6×635 16 26 19 24 3 32 7 21 23 25 31 9 2 22 27 20 8 28 33 17 10 15 30 5 34 12 14 16 4 36 29 13 18 11
[P,R,C] =平衡(A)
P =6×60 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
R =6×60.1852 0 0 0 0 0 0 0 0 0.1749 0 0 0 0 0 0 0 0 0.1909 0 0 0 0 0 0 0 0 0.1588 0 0 0 0 0 0 0 0 0.1793 0 0 0 0 0 0 0 0 0.1966
C =6×60.1799 0 0 0 0 0 0 0 0 0.1588 0 0 0 0 0 0 0 0 0 0.1588 0 0 0 0 0 0 0 0 0.2422 0 0 0 0 0 0 0 0 0 0 0.2066 0 0 0 0 0 0 0 0 0 0.2035

构造平衡矩阵Bmatrix使用矩阵因子PR,C

Bmatrix = R*P*A*C
Bmatrix =6×61.0000 0.1471 1.0000 0.5385 0.5358 0.6031 0.1259 1.0000 0.8056 0.5509 0.6506 0.3916 0.2747 0.8485 1.0000 0.7859 0.3943 0.5825 1.0000 0.0252 0.1513 1.0000 0.6233 0.7754 1.0000 0.2562 0.0569 0.9553 1.0000 0.7295 0.1061 0.9988 0.2185 1.0000 0.9341 1.0000

现在,指定“向量”选项以矢量形式返回输出。对于较大的输入矩阵,将输出作为向量返回可以节省内存并提高效率。

[p,r,c] =平衡(A,“向量”
p =6×15 6 4 1 3 2
r =6×10.1852 0.1749 0.1909 0.1588 0.1793 0.1966
c =6×10.1799 0.1588 0.1588 0.2422 0.2066 0.2035

构造平衡矩阵Bvector使用矢量输出pr,c

Bvector = r.*A(p,:).*c'
Bvector =6×61.0000 0.1471 1.0000 0.5385 0.5358 0.6031 0.1259 1.0000 0.8056 0.5509 0.6506 0.3916 0.2747 0.8485 1.0000 0.7859 0.3943 0.5825 1.0000 0.0252 0.1513 1.0000 0.6233 0.7754 1.0000 0.2562 0.0569 0.9553 1.0000 0.7295 0.1061 0.9988 0.2185 1.0000 0.9341 1.0000

比较Bvector而且Bmatrix.结果表明两者相等。

范数(Bmatrix - Bvector)
Ans = 0

输入参数

全部折叠

输入矩阵,指定为方阵。一个可以是密集的或稀疏的,但在结构上必须是非奇异的,由sprank

一个是稀疏的,输出呢PR,C也是稀疏的。

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

输出格式指定为“向量”“矩阵”.此选项允许您指定输出是否PR,C作为列向量或矩阵返回:

  • “矩阵”- - - - - -PR,C是这样的矩阵B = r * p * a * c

  • “向量”- - - - - -PR,C列向量是这样吗B = r .* a (p,:).* c '

例子:[P,R,C] =平衡(A,"矢量")返回PR,C向量。

输出参数

全部折叠

排列信息,以矩阵或向量形式返回。P *(或一个(P,:)“向量”选项)是的排列一个使对角线元素乘积的绝对值最大化。

行缩放,作为对角线矩阵或向量返回。非零元素R而且C都是真实而积极的。

列缩放,作为对角线矩阵或向量返回。非零元素R而且C都是真实而积极的。

更多关于

全部折叠

求解线性系统的尺度变换

对于线性系统解金宝搏官方网站x = A\b的条件数一个对计算的准确性和效率具有重要意义。平衡能改善的条件有多少一个通过重新缩放基向量。这有效地形成了一个新的坐标系b而且x可以表示为。

平衡最有用的秤是什么时候的b而且x原系统中的向量x = A\b是无关紧要的。然而,如果尺度的b而且x相关,然后使用平衡要重新调节一个仅对线性系统求解不建议。即使使用原始基向量表示,得到的解通常也不会产生原始系统的小残差。

参考文献

[1]达夫,i.s.和J.科斯特。《关于将大条目排列到稀疏矩阵对角线的算法》矩阵分析与应用杂志22日,没有。4(2001年1月):973-96。

扩展功能

版本历史

在R2019a中引入

全部展开