Breaking Down a Symbolic 15 x 15 Matrix

4 views (last 30 days)
david
david on 11 Nov 2012
Hello everyone, new user here. I recently began doing some RAM intensive computations with Matlab 2011b that consist of symbolic matrices. My system was able to handle a symbolic determinant of a 10x10 matrix (a11 a12 a21 a22 etc). Ended up with 25 thousand pages worth of terms with the use of "diary" haha. My system is maxed out at this point and it can't handle a 15x15. I know it's rather massive. So I was wondering could I possibly break down the 15x15 by matrix into say a 10x10 and a 5x5 or any other format that way I can do seperate computations and still arrive at the determinant the 15x15 would have given me by combining the two? Thank you. Came across this "If your program generates very large amounts of data, consider writing the data to disk periodically. After saving that portion of the data, clear the variable from memory and continue with the data generation." How would I go about this? Will this create lets say the first 1k terms allow you to save them then discard from memory and continue from where it left off?

Answers (1)

Jonathan Epperl
Jonathan Epperl on 11 Nov 2012
If there is no structure to your matrix, then I don't think there is much to be done by breaking the matrix into smaller pieces, except of course you can expand any N x N determinant into a sum of N (N-1) x (N-1) determinants and keep on doing that: http://en.wikipedia.org/wiki/Laplace_expansion
How much sense it makes to have a gigantic symbolic expression I don't know...
  2 Comments
david
david on 12 Nov 2012
So if I use this method using the first row I would get a11 x (14x14 matrix) a12 x (14x14) matrix etc. the matrix is still rather big and will have a ram intensive determinant. Is it "legal" to continue breaking down the resulting matrix into something like a11 x a22 x (13x13 matrix)? a11 being the first term of the initial matrix and a22 the first term of the resulting 14x14 matrix due to the expansion and continue doing this by hand until I reach a 10x10 matrix for each term in the first row and then input that final matrix into matlab which should have something like A x B x C x D x E x (10x10 matrix) where the letters represent the first term of the resulting matrices after A and then find the determinant of the resulting matrix. Or am I just wrong and the laplace expansion would have to be done for the resulting first row of each new matrix.
Jonathan Epperl
Jonathan Epperl on 12 Nov 2012
Edited: Jonathan Epperl on 12 Nov 2012
You're "just wrong" in that the Laplace expansion would have to be done for any row or column of the resulting matrices.
Ideally, you would pick a row or column ( det(A)==det(A') ) with the most zeros in it at every step. But in the worst case, you will get a sum of 15 (14 x 14) determinants, in the next step you will have a sum of 15*14 (13 x 13) determinants and so on, so eventually you will have a sum of 360360 (10 x 10) determinants (15*14*13*12*11=360360).
That's why I'm saying that some structure to your matrix would be very helpful, many zeros being one sort of structure. Maybe you can look through here http://en.wikipedia.org/wiki/List_of_matrices and find something useful.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!