首页 > 编程知识 正文

行列式的值,矩阵行列式的计算方法

时间:2023-05-04 06:42:55 阅读:154822 作者:3452

我正在写更大的程序。 尽快得到3x3矩阵的行列式对其正常工作非常重要。 我在numPy上读过这件事,但是我觉得写我自己的代码可能比CompSci的第三学期更有教育意义。

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

这是第一个功能。 defdete(a ) :

x=[ a [0] [0] * a [1] [1] * a [2] [ a [1] [0] * a [2] [1] * a [3] [2] ] [ a [2] [0] * a ]

y=[ a [0] [2] * a [1] [1] * a [2] [0] ] [ a [1] [2] * a [2] [1] * a [3] [0] ] ] [ a [2]

return x - y

这是第二个功能。 defdet(a ) :

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

x=0

forIinrange(0,Len ) a )-2 ) :

y=1;

forjinrange(0,Len ) a )-2 ) :

y *=a[i j][j]

x =y

p=0

forIinrange(0,Len ) a )-2 ) :

y=1;

z=0;

forjinrange(2,-1,-1) :

y *=a[i z][j]

z=1

z =1

p =y

return x - p

他们给出了正确的答案,但最初似乎更快。 这是因为for循环更优雅,通常使用更快,所以我做错了什么——我觉得循环太慢了,太胖了。 我试着剪了一下,*=和=操作花了太多时间,它们好像太多了。

我还没有检查numPy处理这个问题的速度,但是我想编写更有效率的代码。

有办法让这些循环更快吗?

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。