From: Pankaj Sejwal <pankajsejwal@gm...>  20140604 20:16:25

Recently I was working on a problem where I expected to decompose a matrix into components in such a way that I need not depend on multiplication of these components to get the original matrix, as multiplication is the operator used by all decomposition techniques to revert. I came up with slighly improvised echleon form method that I have kept here " https://drive.google.com/file/d/0B36DQjLI_hxRmVDQnoxTlFKZzg/edit?usp=sharing " I have also coded a small function to calculate it available at " https://github.com/pankajsejwal/ReverseechleonMaxima " It returns correct result. But the point to note here is that just for 4x4 it takes 1 minute, 5x5 matrix takes about 18 minutes to solve the equations constructed. In case of 6x6 its just plain Maxima out of space. Its behaviour is somewhat same as exponential growth of subgroups problem. Interesting thing to note is that on Mathematica 9, it took 3000 sec to complete the answer and return wrong results while maxima took 60 seconds for correct response !! On sage it took 3 seconds. Sage solves it like magic for bigger matrices too. The equations constructed are too long and intricate and lot in number. The advantage I see is that there is no need to prefed equations in test cases and on the fly equation can be developed of any order using a baby small piece of code.Moreover it works for square as well as rectangular matrix. There is no other test needed other than comparing the input and output matrix to check the validity of computing system. This can also be used to test simplification, reduction of equations. I think it can put quite a challenge to very efficient systems. Using the code on git, %in:: ii:map(parse_string,create_list(concat("a",i),i,1,9)); %out:: [a1,a2,a3,a4,a5,a6,a7,a8,a9] %in:: iii:listpartition(ii,3,3); %out:: [[a1,a2,a3],[a4,a5,a6],[a7,a8,a9]] %in:: mk:apply(matrix,iii); %out:: matrix([a1,a2,a3],[a4,a5,a6],[a7,a8,a9]) %in:: aaq:ech(mk); %out:: [matrix([1,a2/a1,a3/a1],[0,1,(a6(a3*a4)/a1)/(a5(a2*a4)/a1)],[0,0,a9((a6(a3*a4)/a1)*(a8(a2*a7)/a1))/(a5(a2*a4)/a1)(a3*a7)/a1]),[a4,a7,a8(a2*a7)/a1],[a1,a5(a2*a4)/a1]] %in:: revech(aaq); %out:: [[a11=a1,a12=a2,a13=a3,a14=a4,a21=a5,a22=a6,a23=a7, a24=a8,a31=a9,a32=a10,a33=a1,a34=a2,a41=a3,a42=a4,a43=a15,a44=a16]] Can it be used as a bench mark in maxima ?  Regards, Pankaj Sejwal _______________________________________________ "The more I read, the more I acquire, the more certain I am that I know nothing.”  Voltaire <http://www.goodreads.com/author/show/5754446.Voltaire>; 