3X3c语言子函数行列式,3x3矩阵行列式功能 - 使其更快

我正在编写一个更大的程序,尽可能快地获得3x3矩阵的决定因素对于它的正常运行非常重要。我读过我可以使用numPy来做到这一点,但我认为编写自己的代码会更具教育性,因为我在CompSci的第三学期。

所以我写了两个函数,我使用time.clock()(我在win7机器上)来计算每个函数返回一个值需要多长时间。

这是第一个功能:

def dete(a):

x = (a[0][0] * a[1][1] * a[2][2]) + (a[1][0] * a[2][1] * a[3][2]) + (a[2][0] * a[3][1] * a[4][2])

y = (a[0][2] * a[1][1] * a[2][0]) + (a[1][2] * a[2][1] * a[3][0]) + (a[2][2] * a[3][1] * a[4][0])

return x - y这是第二个功能:

def det(a):

a.append(a[0]); a.append(a[1]);

x = 0

for i in range(0, len(a)-2):

y=1;

for j in range(0, len(a)-2):

y *= a[i+j][j]

x += y

p = 0

for i in range(0, len(a)-2):

y=1;

z = 0;

for j in range(2, -1, -1):

y *= a[i+z][j]

z+=1

z += 1

p += y

return x - p他们都给出了正确的答案,但是第一个看起来稍微快一点,这让我认为由于for循环使用更优雅,通常速度更快,所以我做错了一些事情 - 我让循环太慢而且肥胖。我试着修剪它,但似乎* =和+ =操作花费了太多时间,其中太多了。

我还没有检查numPy处理这个问题的速度有多快,但是我想在编写高效的代码方面做得更好。

任何想法如何使这些循环更快?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值