Re: Determinant function in Mathematica
- To: mathgroup at yoda.physics.unc.edu
- Subject: Re: Determinant function in Mathematica
- From: "Lawrence M. Seiford, IEOR, UMass, 413/545-1658." <SEIFORD at ecs.umass.edu>
- Date: Fri, 17 Apr 1992 12:51 -0500
Thought I'd compare Allan's code and System Det under 1.2 and 2.0 I'll leave the analysis (and conclusions) to the reader. larry >Here's some quicker V2.0 code (though it is still looks to less than 2/3 the >speed of Det in Version 1.2 - I don't have a copy of V1.2 to hand to check this >}. > >NewDet[M_] := >Plus@@Times@@( > Append[Transpose[Transpose[M[[#]],{1,1}]&/@#],Signature/@#]&@ > Permutations[Range[Length[M]]] > ) > >Transpose[M,{1,1}] is very quick at extracting the diagonal of M. Using Matheamtica 2.0 the timings were Mathematica 2.0 for DEC RISC Copyright 1988-91 Wolfram Research, Inc. Cannot connect to license server. Retrying. -- Terminal graphics initialized -- In[1]:= NewDet[M_] := Plus@@Times@@( Append[Transpose[Transpose[M[[#]],{1,1}]&/@#],Signature/@#]&@ Permutations[Range[Length[M]]] ) In[2]:= a[n_] := Table[ StringJoin["a",ToString[i],ToString[j]], {i,1,n}, {j,1,n}] In[3]:= Do[ Print[ First[ Timing[ NewDet[ a[t]]]]], {t,1,7}] 0.0333333 Second 0.05 Second 0.1 Second 0.2 Second 0.6 Second 3.05 Second 22.4167 Second In[4]:= Do[ Print[ First[ Timing[ Det[ a[t]]]]], {t,1,7}] 0. Second 0.05 Second 0.266667 Second 1. Second 5.85 Second 71.5833 Second 2888.48 Second ********************************** Using Mathematica 1.2 (DEC RISC) the timings were In[3]:= Do[ Print[ First[ Timing[ NewDet[ a[t]]]]], {t,1,7}] 0. 0.0166667 Second 0.0333333 Second 0.0666667 Second 0.25 Second 1.55 Second 12.3833 Second In[4]:= Do[ Print[ First[ Timing[ Det[ a[t]]]]], {t,1,7}] 0. 0.0166667 Second 0.0333333 Second 0.0666667 Second 0.216667 Second 1.33333 Second 10.2667 Second ********************************* And the winner is........