I have a system of 80 nonlinear equations with 64 variables to solve in Mathematica but it takes a lot of time (about two hours) and then it return "no more memory available" knowing that I have 8GB Ram on Windows 8 64 bits. The system is


Variables are var=Flatten[Table[a[i,j,k],{i,1,4},{j,1,4},{k,1,4}]]

First I used Solve[sys,var] which did not work and also NSolve did not work (as described above). How can I make it work ? or at least find the number of unknowns that equal zero (that what I'm interested in).

  • $\begingroup$ There are no equations here... $\endgroup$ Nov 18 '14 at 12:19
  • $\begingroup$ @MariusLadegårdMeyer : It has been corrected now. $\endgroup$
    – aziiri
    Nov 18 '14 at 12:31
  • $\begingroup$ What do you mean by "...NSolve did not work"? $\endgroup$
    – Dimitris
    Nov 18 '14 at 15:42
  • 1
    $\begingroup$ Probably just to large for GroebnerBasis to have any hope. $\endgroup$ Nov 18 '14 at 18:37
  • 1
    $\begingroup$ FYI this has a trivial solution where all a[_,_,_] are equal.. I posed it as a least squares problem, FindMinimum readily returns {a[1, 1, 1] -> 1., a[1, 1, 2] -> 1., a[1, 1, 3] -> 1., a[1, 1, 4] -> 1. ... $\endgroup$
    – george2079
    Nov 18 '14 at 21:16

This is really more of a comment, but it's too long. I would try to solve this starting with a smaller analogous problem. For instance, the n=2 version of this readily gives an answer:

n = 2; 
sys = Flatten[Table[Table[Table[Table[
    Sum[a[i, j, k] a[k, l, h] - a[j, k, l] a[i, l, h], {l, 1, n}] ==  0, 
        {h, 1, n}], {k, j, n}], {j, i, n}], {i, 1, n}]];
var = Flatten[Table[a[i, j, k], {i, 1, n}, {j, 1, n}, {k, 1, n}]];
Solve[sys, var]

But if you look at this answer, the solution contains terms like: a[1, 1, 2] -> 0 while at the same time containing a[2, 2, 2] -> a[1, 2, 2]^2/a[1, 1, 2]. So even in the n=2 case, this is quite suspicious. The n=3 case takes longer to run than I have patience for. Using Reduce instead of Solve might also shed some more light on the issue.

  • $\begingroup$ This does not help much, What if set $m$ values of a[i,j,k] to be zero and test whether the system is verified (I'm searching for the largest value of such $m<64$) but it seems too complicated, do you have an idea ? $\endgroup$
    – aziiri
    Dec 1 '14 at 10:40
  • $\begingroup$ The only other thing I can think of would be to try and rewrite the system in matrix/tensor form. Maybe something would pop out. Here again, it might be worth looking at smaller versions first. $\endgroup$
    – bill s
    Dec 1 '14 at 13:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.