平衡
矩阵缩放改善条件
描述
例子
改善条件调节的平衡矩阵
利用迭代求解器平衡具有较大条件数的矩阵,提高线性系统求解的效率和稳定性巨磁电阻
.
加载west0479
矩阵,这是一个实值479 × 479的稀疏矩阵。使用气孔导度
计算矩阵的估计条件数。
负载west0479A = west0479;c = condest(A)
C1 = 1.4244e+12
试着解线性方程组
使用巨磁电阻
迭代450次,公差为1 e-11
.指定五个输出,以便巨磁电阻
在每次迭代中返回解决方案的剩余规范(使用~
抑制不需要的输出)。在半对数图中绘制剩余规范。图表显示巨磁电阻
是否能够达到合理的残差范数,因此计算解为
不可靠。
b = ones(size(A,1),1);Tol = 1e-11;Maxit = 450;[x,flx,~,~,rvx] = gmres(A,b,[],tol,maxit);semilogy (rvx)标题(“每次迭代的剩余范数”)
使用平衡
调整排列和重新调整一个
.创建一个新矩阵B = r * p * a * c
,它有更好的条件数,对角线项只有1和-1。
[P,R,C] =平衡(A);B = r * p * a * c;c2 = condest(B)
C2 = 5.1036e+04
使用返回的输出平衡
,你可以重新阐述这个问题
成
,在那里
而且
.在这种形式下,您可以将解决方案恢复到原始系统
.然而,恢复的解决方案可能没有原始系统所需的残余误差。看到求解线性系统的尺度变换获取详细信息。
使用巨磁电阻
来解决
为
,然后在每次迭代中重新绘制剩余范数。该图表明,平衡矩阵提高了问题的稳定性,与巨磁电阻
收敛到的期望公差1 e-11
在不到200次迭代中。
d = R*P*b;[y,fly,~,~,rvy] = gmres(B,d,[],tol,maxit);持有在semilogy (rvy)传说(“原始”,“均衡”,“位置”,“东南”)标题(“相对残差规范(无前置条件)”)举行从
用预处理剂改善溶液
在你得到矩阵之后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预处理的相对残差范数(平衡))举行从
指定输出格式
创建一个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
使用矩阵因子P
,R
,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
使用矢量输出p
,r
,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
输入参数
一个
- - - - - -输入矩阵
方阵
输出参数
P
-排列信息
矩阵(默认)|向量
排列信息,以矩阵或向量形式返回。P *
(或一个(P,:)
与“向量”
选项)是的排列一个
使对角线元素乘积的绝对值最大化。
R
-行缩放
对角矩阵(默认)|向量
行缩放,作为对角线矩阵或向量返回。非零元素R
而且C
都是真实而积极的。
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。
扩展功能
线程环境
使用MATLAB®在后台运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.
这个函数完全支持基于线程的环境。金宝app有关更多信息,请参见在线程环境中运行MATLAB函数.
版本历史
在R2019a中引入R2022a:指定输出格式
指定outputForm
作为“向量”
或“矩阵”
控制是否平衡
以向量或矩阵的形式返回输出参数。对于较大的因子分解,将输出作为向量返回可以节省内存并提高效率。
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。