功能:对LL分解好的压缩储存的矩阵求解(只针对对称矩阵)

格式:CompressSolveEquationLL(L,Index,B)

L:使用{CompressDecompositionLL<矩阵运算\CompressDecompositionLL>}函数分解得到的变带宽储存的矩阵变量(此矩阵变量列数为1或者行数为1),里面的元素依次储存原对称矩阵的下三角部分
Index:储存矩阵对角线元素在数组L当中的索引位置(这里索引从0开始)
B:方程组右边的项-矩阵变量.其大小与Index一致

说明:
1、本函数求解的是A*x=B这么一类问题,其中A是对称稀疏矩阵,使用本函数之前先使用{CompressDecompositionLL<矩阵运算\CompressDecompositionLL>}函数分解A得到L矩阵,然后再调用本函数即可求解得到x

2、本函数的Index与{CompressDecompositionLL<矩阵运算\CompressDecompositionLL>}函数里的Index为同一变量

3、本函数求解只支持B只有1组的情况,如果有多组,可分别对每组求解即可

原理:采用平方根法(Cholesky)进行方程组求解

注意:本算法虽然计算效率没有改进的平方根法高,但数值更稳定

参考:王能超.数值分析简明教程[M].高等教育出版社,北京,2009:185-186

例子:

A =
[ 4.0000    1.0000    0.0000    0.0000    0.0000    0.0000
  1.0000    6.0000    3.0000    2.0000    0.0000    0.0000
  0.0000    3.0000    5.0000    2.0000    3.0000    0.0000
  0.0000    2.0000    2.0000    4.0000    0.0000    1.0000
  0.0000    0.0000    3.0000    0.0000    7.0000    0.0000
  0.0000    0.0000    0.0000    1.0000    0.0000    2.0000 ]
B =
[  1
   2
   3
   4
   5
   6  ]
现在需要求解A*x=B,因为是变带宽储存,且储存下三角部分,则执行如下命令

a=[4, 1, 6,3,5,2,2,4,3,0,7,1,0,2];//变带宽存储下三角部分
c=[0,    2,  4,    7,    10,  13];//储存对角线元素在a当中的索引
b=[1,2,3,4,5,6];
l={CompressDecompositionLL<矩阵运算\CompressDecompositionLL>}(a,c);
x=CompressSolveEquationLL(l,c,b)//回车得到如下的分解结果
x =
[ 0.17557715674362    0.29769137302551   -0.10388821385176    0.17496962332928    0.75880923450789    2.91251518833536 ]
