线性系统的求解是数值分析中的一个基本问题。
线性系统的求解在电路分析中典型的应用就是用基尔霍夫电压定律和基尔霍夫电流定律求解电路。
下面的五个方程组是对一个典型的电路系统的描述:5I1+5I2=V;I3-I4-I5=0;2I4-3I5=0;I1-I2-I3=0;5I2-7I3-2I4=0;当系统确定以后I1, I2,I3,I4,I5前面的系数就确定了。
I1,I2,I3,I4,I5的具体数值将随输入电压值V5的变化而改变。
求解线性系统解(也就是求解矩阵的解)常用的方法有Gaussian Elimination with Backward Substitution 法,LU Factorization法,LDL T Factorization 法和Choleski 法。
其中Gaussian Elimination with Backward Substitution 法最为简单直接,它的思路就是将系数矩阵化简为一个上三角矩阵或者化简为一个下三角矩阵。
但是它消耗的资源最多,以一个可描述为5*5矩阵的系统而言它需要5*5*5/3次乘法运算,即大约42次乘法运算。
但系统大到100*100时这种方法的计算量非常可观。
这种方法不适合处理很大的矩阵。
作为Gaussian Elimination with Backward Substitution 法的改进LU Factorization(也叫LU分解法)法的思路是将系统矩阵分解成为一个上三角矩阵和一个下三角矩阵进行运算。
这样的话极为方便求解迭代。
假设系统为n*n的系统,那么LU分解的方法将计算量由n*n*n/3降低到2*n*n。
对于一个100*100的系统LU分解法的计算量仅仅是Elimination with Backward Substitution 法的3%。
尽管在决定L矩阵和U矩阵时依然需要n*n*n/3次运算但是系统一旦定下来后是不会有大的改动的,往往是外部条件改变也就是说5I1+5I2=V;I3-I4-I5=0;2I4-3I5=0;I1-I2-I3=0;5I2-7I3-2I4=0;这个系统的系数是不会经常变的,常变的只是外部条件V。
LU分解法适应的范围极宽,他对系统没有特殊的要求。
当描述系统的矩阵大于6*6时选用LU分解法会更为节省资源,当系统小于6*6时Elimination with Backward Substitution法效率会更高些。
LDL T Factorization 法和Choleski 法和LU分解法很像似,基本思路也是将系统矩阵分解成上三角矩阵和下三角矩阵。
但是这两种方法要求系统的矩阵必须是正定的,也就是说系统的任意阶行列式必需为正。
这样对系统的要求就严格一些。
LDL T Factorization 法需要n*n*n/6+n*n-7*n/6次乘法和n*n*n/6-n/6次加减法。
Choleski 法则仅仅需要n*n*n/6+n*n/2-2*n/3次乘法和n*n*n/6-n/6次加减法。
当系统较大时不失为两种很好的选择。