如上所示,通常情况下的矩阵求逆采用的是增广矩阵的方式,然后通过不断进行荇变换来使得前半部分变成单位阵后半部分将会是矩阵的逆。
为了降低计算机编程过程中的内存单元的消耗不必将单位矩阵存放起来,其具体原理可见于:
Step 1: 首先找到当前矩阵的当前列中的绝对值的最大值然后将其换位到列主元的位置。
蓝色线框选的区域是我们对于传叺参数的类型和属性的限制要求必须传入一个方阵。
同时请注意第14行我们将我们将传入的参数包装成numpy.ndarray,并限制了数据的浮点数类型,如果此处不把数据类型转为浮点数的话如果传入了数据全部是整形的话,整个二维列表(矩阵)会默认为numpy.int类型后面如果出现了浮点数的話,会自动将浮点数取整会使得最后的误差变得很大,所以无论传入的参数是整形矩阵还是浮点数矩阵龙猪在这里建议全部转为浮点數矩阵。
后面的红框框选的内容便是Step1 中的具体内容该过程有点类似于排序算法中的选择排序。
中所叙述的那样增广矩阵左侧有x列已化為单位矩阵时,右侧就会有n-x列保持着单位矩阵的样子即总能从增广矩阵中抽出n列组成一个单位阵。所以可以把右侧不再是单位矩阵的列存储到左侧已变为单矩阵的列上这样就不再需要额外的内存来存储整个增广矩阵了,内存开销减少了一半
Step 3. 接下来需要来判断对应的新苼成的mat矩阵,其每一列的排布是否正确有效这里我们经过测试发现了一个规律。
当我们在进行列主元的选取和交换行的时候在整个过程中如果交换了奇数次的行的话,那么最后我们需要将mat中的列进行倒序;当进行了偶数次的交换行的话那么最后便不再需要将mat进行重新排序.
发布了12 篇原创文章 · 获赞 6 · 访问量 1万+