Richard Bowles wrote:
> Thanks Daniel and David for taking the time to reply.
>
> I have added a more complete sample of the code, with a simplified
> version of the matrix (10x10), that takes the 4th power of the
> matrix. This runs in a few mins. It will produce a couple of 1/0
> division errors, but these disappear with increasing matrix size.
>
> A couple of additional points might also be of help.
>
> 1. The matrix is algebraic, so I was expecting memory problems with
> the MatrixPower operation, but this is actually completed for the full
> problem. The out of memory occurs once it has entered the loop for
> extracting the coefficients and exponents. The error occurs after a
> number of cycles has been completed. I plotted out MemoryInUse[] as a
> function of the number of inner loop cycles and see a linear increase
> in the memory consumed with one large jump in memory use part way
> through. This suggest me that it might be possible to release the
> memory consumed at each step but I have been unable to figure out how.
> However, there is an Expand[] operation in the loop over all the
> elements of the matrix, and this polynomial becomes extremely large
> with increasing power and it might be this point that ultimately does
> me in rather than the incremental memory consumption of the inner loop.
>
> 2. The configuration of the machine is correct, but I dont know how
> much of this memory Mathematica has access to.
>
> cheers
> Richard
>
Your code runs in a few seconds (probably mainly notebook I/O time) on
my machine - so I think there is something different compared with your
machine. My machine is 32-bit, 2GHz, with 1G of main memory! If I print
out MemoryInUse[] in the inner loop, it never rises above ~10 MB!
BTW, your output streams were a bit tangled up.
My guess is one of the following:
1) There is a missing assignment to some variable which makes the
algebraic expressions on your side much larger.
2) You auto-execute some other code that accidentally gives a value
to something before the code starts to work.
NB: You can apply ByteCount to expressions to see how expensive they are.
David Bailey
http://www.dbaileyconsultancy.co.uk