python计算大矩阵的逆的精度问题?
前提是不使用numpy等库,自己编写求矩阵的逆,当求一个比较小的矩阵时,结果是正确的,但当矩阵一大(60*60),便出现与用numpy算出来结果不一样了,不知道是不是精度问题,该如何改进?
# 本函数求矩阵的逆
def matrix_ni(matrix):
extend_matrix = copy.deepcopy(matrix)
l = len(matrix)
for i in range(0, l): #在矩阵右边补充一个单位矩阵,使用初等变换求逆矩阵
extend_matrix[i].extend([0]*i)
extend_matrix[i].extend([1])
extend_matrix[i].extend([0]*(l-i-1))
for i in range(0, len(extend_matrix)): #判断矩阵对角线上是否有0,有0则置换,如置换不了,则没有逆矩阵
if extend_matrix[i][i] == 0:
for j in range(i, len(extend_matrix)):
if extend_matrix[j][i] != 0:
extend_matrix[i], extend_matrix[j] = extend_matrix[j], extend_matrix[i]
break
if j >= len(extend_matrix):
print '没有逆矩阵'
return 0
break
for i in range(0, len(extend_matrix)): #开始计算逆矩阵
f = extend_matrix[i][i]
for j in range(0, len(extend_matrix[i])): #先把行换为0
extend_matrix[i][j] /= f
for m in range(0, len(extend_matrix)):
if m == i:
continue
b = extend_matrix[m][i]
for n in range(0, len(extend_matrix[i])): #在把列换为0
extend_matrix[m][n] -= extend_matrix[i][n] * b
for i in range(0, len(extend_matrix)):
extend_matrix[i] = extend_matrix[i][l:]
return extend_matrix
相关阅读:
微信公众号里播放音频
使用ssh框架开发遇到的空指针问题
ubuntu12.04安装idea15社区版报错
UDP 和 TCP 相比,为什么前者会更快一些?
apache和django之间如何调用
ditu.amap.com 如何输入坐标?
关于php argv解析的问题
python 批量导入文本文件到mysql数据库
微信浏览器 和 android 自带浏览器有多少不同?
MySQL中SELECT *的一个问题
请问Typecho Mysql 数据库和Sqlite数据库我该如何选择。
table不规则表格?
安装 Ant Design of React 时,报错 找不到 git
前端进行API调用时,如何使用apikey。
怎么样点击通知能跳转到应用程序的指定页面?
C# 中使用Redis
如何使用fullpage.js实现锤子手机的首屏和尾屏的效果?
升级XCode7后SystemConfiguration报错
tomcat 正常启动,但是总是不知道什么时候就关闭了。
vim编辑器配置css,html 和js自动补全