当前位置:  开发笔记 > 编程语言 > 正文

Python的逆矩阵

如何解决《Python的逆矩阵》经验,为你挑选了5个好方法。

如何在python中得到矩阵的逆?我自己实现了它,但它是纯粹的python,我怀疑有更快的模块可以做到这一点.



1> Mapad..:

如果你进行矩阵操作,你应该看看numpy.这是一个主要用C语言编写的模块,它比纯Python中的编程要快得多.这是一个如何反转矩阵,并进行其他矩阵操作的示例.

from numpy import matrix
from numpy import linalg
A = matrix( [[1,2,3],[11,12,13],[21,22,23]]) # Creates a matrix.
x = matrix( [[1],[2],[3]] )                  # Creates a matrix (like a column vector).
y = matrix( [[1,2,3]] )                      # Creates a matrix (like a row vector).
print A.T                                    # Transpose of A.
print A*x                                    # Matrix multiplication of A and x.
print A.I                                    # Inverse of A.
print linalg.solve(A, x)     # Solve the linear equation system.

您还可以查看数组模块,当您只需处理一种数据类型时,这是一种更有效的列表实现.


另请注意,根据John D. Cook的回答,没有发生反转,系统直接解决.

2> John D. Cook..:

确保你真的需要反转矩阵.这通常是不必要的,并且可能在数值上不稳定.当大多数人问如何反转矩阵时,他们真的想知道如何解决Ax = b,其中A是矩阵,x和b是向量.使用直接求解方程Ax = b的代码比计算A逆然后将倒数乘以B更有效,更准确.即使你需要为很多b值求解Ax = b,这也不是一个好主意反转A.如果必须为多个b值求解系统,请保存A的Cholesky分解,但不要反转它.

请参阅不要反转该矩阵.



3> 小智..:

遗憾的是,所选择的矩阵在这里再次重复,要么是单一的,要么是严重的条件:

A = matrix( [[1,2,3],[11,12,13],[21,22,23]])

根据定义,当乘以矩阵A本身时A的倒数必须给出单位矩阵.在备受赞誉的解释中选择的A不会那样做.事实上,仅仅查看逆向就可以得出反演无法正常工作的线索.看一下单个术语的大小 - 与原始A矩阵的术语相比,它们非常非常大...

值得注意的是,人们在选择矩阵的例子时经常会选择一个奇异的矩阵!

我确实遇到了解决方案的问题,因此请进一步研究.在ubuntu-kubuntu平台上,debian包numpy没有矩阵和linalg子包,所以除了导入numpy之外,还需要导入scipy.

如果A的对角线项乘以足够大的因子,比如说2,则矩阵很可能不再是单数或接近单数.所以

A = matrix( [[2,2,3],[11,24,13],[21,22,46]])

变得既不是单数也不是单数,并且这个例子给出了有意义的结果......当处理浮点数时,必须注意不可避免的舍入误差的影响.

谢谢你的贡献,

OldAl.



4> 小智..:

您可以计算矩阵的行列式,它是递归的,然后形成相邻的矩阵

这是一个简短的教程

我认为这只适用于方形矩阵

计算这些的另一种方法涉及克 - 施密特正交化,然后转置矩阵,正交矩阵的转置是它的逆!



5> Colonel Pani..:

Numpy适合大多数人,但你也可以在Sympy中做矩阵

尝试在http://live.sympy.org/上运行这些命令

M = Matrix([[1, 3], [-2, 3]])
M
M**-1

为了好玩,试试吧 M**(1/2)

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有