algorithms for 'invert', was: program works with maxima 5.29.1 but freezes with maxima 5.30.0



On 2013-04-16, Dmitry Shkirmanov <piminusmeson at bk.ru> wrote:

> Hello, list. I have wxmaxima program that takes a few seconds to run 
> with maxima 5.29.1. But  in maxima 5.30.0 it freezes.  Is there any way 
> to make it work with maxima 5.30?

Well, it turns out the problem is very simple. The previous version of
the function 'invert' used the adjoint method, while the current version
uses the LU decomposition. (Yes, it was yours truly who made the change,
after some discussion on the mailing list.) For the matrices in the
program given, the results are substantially different -- the ones
produced by the adjoint method are "simpler". 

Not sure where to go from here. I remember from working on the code that
the adjoint method often produces 'simpler' results, but it is practical
only for small matrices. Maybe use the adjoint method for small matrices
and punt to LU otherwise? Just guessing.

In the case at hand, I think all you have to do is load(invert) before
loading the temp3.wxm script -- share/matrix/invert.mac is an
implementation of the adjoint method (in fact the previous 'invert'
function was a Lisp version of that code).

best

Robert Dodier