I had a similar problem for a 24X24 symbolic matrix. Mathematica could not do it and I ended up using FermatsFermats "Redrowech[]". It took only 30 seconds.
The problem is, Fermat's interface is far from optimal and the coding in it is, lets say cumbersome. Here is how I approached it:
- Create Fermat input with Mathematica (define the array and the variables)
- Append the created file to "ferstart.txt"
- Call the "gate to fermat" interface from Mathematica to Fermat (Link to Fermat FLINK)
- Run from Mathematica
FEval["Redrowech[yourMatrix]"]
and save the result
The routine I used is tailored towards my particular matrices and I am therefore reluctant to share it. But if you decide to go down that path and have troubles I might be able to help (e.g. the Makefile of gatetofermat needed some editing for my machine).
For Daniel Lichtblau:
The link to the coefficient matrix as a .m file. The defined matrix is $(A,b)$ for the linear system $A x=b$. The link to the edited ferstart.txt file, which needs to be placed in the installation directory of fermat (for me: ~/ferl6/BACKWARD/). Please note, that you might have to adjust the first number depending on your ram.
The evaluation is done with Mathematica with the following commands:
$Fermat = "PathTofer64";
$FLink = "PathToFLink64";
link = Install[$FLink];
FInit[$Fermat, ""]
FEval["Redrowech([matrix])"];
matSolString = FEval["[matrix]"];
Export["fermatSol.txt", matSolString]
FClose[]
Exit[]
The changes to the Makefile of FLink for my version of Mathematica were mostly including certain libraries and link according to:
ifeq ($(SYSID), Linux-x86-64)
BIT := 64
# libs_for_mathlink = -lML64i3 -lm -lpthread -lrt -lstdc++
static_libs_for_mathlink = -Wl,-Bstatic -lML64i4 -lstdc++
dynamic_libs_for_mathlink = -Wl,-Bdynamic -lm -lrt -luuid -lpthread -ldl
Notice that you need a Linux machine for FLink to work. Please let me know if the filesharing works. You also edit the path to fermat in gatetofermat.h.
Everything should work without FLink for Windows by directly writing Redrowech[matrix]; in the fermatstart.txt. But I was not able to figure out how to save directly from Fermat without a major headache...