使用python和numpy进行矩阵求逆:
>>> import numpy as np
>>> b = np.array([[2,3],[4,5]])
>>> np.linalg.inv(b)
array([[-2.5, 1.5],
[ 2. , -1. ]])
并非所有矩阵都可以求逆。例如,奇异矩阵不可逆:
>>> import numpy as np
>>> b = np.array([[2,3],[4,6]])
>>> np.linalg.inv(b)
LinAlgError: Singular matrix
奇异矩阵问题的解决方案:
尝试捕获奇异矩阵异常,并继续进行,直到找到符合先前条件并且也是可逆的转换为止。
为何不能总是进行矩阵求逆的直觉;像在单数矩阵中一样:
想象一下一台旧的高架电影放映机,它通过胶片将明亮的光线照到白墙上。胶片中的像素投影到墙上的像素。
如果将胶片投影停止在一个帧上,您将在墙上看到胶片的像素,请您根据看到的内容重新生成胶片。您说这很容易,只要对执行投影的矩阵求逆即可。矩阵的逆是投影的反转。
现在想象一下放映机是否损坏,我在电影的前面放了一个变形的镜头。现在,多个像素被投影到墙上的同一位置。我再次要求您“使用矩阵逆函数撤消此操作”。你说:“我不能因为你因为镜头畸变而破坏了信息,我不能回到原来的状态,因为矩阵要么是奇异的要么是退化的。”
仅当可以逆转过程而不会丢失信息时,可用于将某些数据转换为其他数据的矩阵才是可逆的。如果矩阵不能反转,则可能是使用猜测和检查方法而不是使用保证无损转换的过程定义投影。
如果您使用的是启发式算法或不尽人意的数学精度,则必须定义另一个过程来管理和隔离变形,以便可以恢复通过布朗运动进行的编程。
资源:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.inv.html#numpy.linalg.inv
np.matrix(x)
以便该.I
方法可用。