今天把矩阵求解的相关代码抽取、封装到了独立的类中,并且基于昨天的求解算法已经基本实现了一个粗糙的矩阵求解过程。
接下来考虑的是对这个矩阵求解类进行扩充、完善,完成以下若干功能:
1、能够对已经给定的问题(矩阵)进行分块:如果能够实现分块操作,就相当于将图中不同的整体彼此分隔开了;
2、完成矩阵分割之后,相当于是一个大的线性方程组被重新切分成了多个小的线性方程组,这若干个线性方程组彼此之间没有任何关联,即便其中任何方程组是有问题的,也不会影响其他方程组的求解过程;
3、分割出来的若干小问题(小矩阵、小线性方程组),依次遍历,分别对每一个问题进行判断,检查矩阵是否是奇异矩阵。如果是奇异矩阵,就进入单元求解过程(寻找此网络中的地);
4、如果找到一个地,就将已知解带回矩阵,再次判断是否是奇异矩阵,循环这一过程;
5、直到:矩阵不再是奇异矩阵,就可以对这个小问题求解;如果最终判定为奇异矩阵,这个小问题就出现奇异网络、抛弃;
6、依次完成上述每一个小问题的求解,最终将每一个小问题的解,拼接会原始大矩阵中,最终得到整个当前网络的解。
以上问题中比较棘手的,是如何对一个矩阵进行分块。