本例展示通过调整稀疏矩阵行列顺序,优化计算速度与存储空间的方法。
1、 稀疏矩阵图形化展示
2、 间谍图展示矩阵中非零元素的分布。
3、 该间谍图呈现哈韦尔波恩测试矩阵West0749的子集,为稀疏对称正定矩阵,反映化工厂中衍射柱模型的连接结构。
4、 输入命令行指令
5、 按下回车键确认操作。
6、 一所示
7、 计算乔尔斯基因子数值。
8、 现计算乔尔斯基因子L,满足S等于L乘以其转置。
9、 由于Cholesky分解过程中产生大量填充元素,L中的非零项远多于原始矩阵S中的非零项。
10、 这降低了算法效率,提高了存储开销。
11、 tic
12、 按下回车键确认操作。
13、 见图2所示
14、 调整顺序提升计算效率
15、 调整矩阵行列顺序可降低分解过程中的填充元素,有效节省计算时间和存储空间。
16、 正在使用MATLAB进行三种不同排序方法的尝试。
17、 逆向切希尔-麦基法
18、 列计数
19、 最低限度
20、 采用反向切希尔-麦基方法
21、 SYMRCM命令采用反向Cuthill-McKee算法对矩阵进行重排序,使非零元素更靠近主对角线,有效减小矩阵带宽,提升计算效率。
22、 输入命令行:
23、 按下回车键确认操作。
24、 见图3所示
25、 因Cholesky分解的填充被限制在带宽内,经重排序后的矩阵分解更高效,耗时更短且占用存储更少。
26、 输入命令行指令
27、 tic
28、 按下回车键确认操作。
29、 4所示。
30、 采用列数统计
31、 COLPERM命令通过列计数重排算法,将含非零元素较多的行列移至矩阵末尾。
32、 输入命令行指令
33、 按下回车键即可。
34、 见图5所示
35、 此例中,列计数顺序恰好缩短了Cholesky分解的时间与存储需求,但这类效果通常难以事先预知。
36、 tic
37、 按下回车键即可。
38、 六所示
39、 采用最低阶数。
40、 SYMAMD命令利用近似最小度算法,在矩阵中高效构造出大块零元素,提升计算性能。
41、 在命令行中输入:
42、 按下回车键即可。
43、 七所示
44、 最小度算法生成的零块在Cholesky分解中得以保留。
45、 大幅降低时间与存储开销。
46、 tic
47、 按下回车键确认操作。
48、 8所示。
49、 汇总成果。
50、 输入命令行指令
51、 按下回车键确认操作。
52、 九所示
