Efficiently solve this system of quadratic equations?

the problem i need to solve is to find ALL solutions of a system of quadratic equations that has the relatively simple form aijkxjxk - xi = 0, using the Einstein summation convention and with each index running from 1 to 24. The values of the coefficients aijk are known, most of them are zero, all others (about 15 per equation on average) are positive.

I have typed out the quadratic equations with all values already plugged in and left out all summands that were zero. Then I have tried using the "Solve"-command with a Working Precision of 10 and Cubics, Quartics and VerifySolutions set to False. But after about 5 days of calculation it ran out of RAM and terminated. The solutions should be real, but I did not specify that, because I feared that all the "ConditionalExpressions" generated for when a root exists would need even more memory. Is there a better way to solve my problem that uses less memory?

Posting the explicit example would help. Could provide it as a sparse array to save on space. Absent that one can only guess, and I will venture that maybe it really does need huge memory, and maybe NSolve will do better.

I then set this equal to 0 in the argument of "Solve". Initially it was a System of 31 quadratic equations in 31 variables, but I already found a way to simplify it, which I applied using "Replace", hence the indices don't run from 1 to 24, but there's 24 different values for them. Would it be more efficient to declare the functions in terms of a sparse array?

Thanks, I already found several nontrivial solutions as well. The problem is that I need to find ALL solutions, and scanning a 24-dimensional parameter space with random starting points seems impractical, given that one could never be 100% sure to not have missed a single root.

More precisely the task is to find out whether there is any zero point where all eigenvalues of the Jacobi matrix have positive real part. But checking the latter condition first without plugging in values for the x's to restrain the parameter space seems even more hopeless.

I think what I wrote right below the code sample box answers your questions pretty well.

I then set this equal to 0 in the argument of "Solve". Initially it was a System of 31 quadratic equations in 31 variables, but I already found a way to simplify it, which I applied using "Replace", hence the indices don't run from 1 to 24, but there's 24 different values for them.

So to get the system of quadratic equations the expression just needs to be set equal to 0.

Since this quite complicated system of equaitons, I suggest using Reduce on a subset of the listed equations in your problem first. For example, you will find some insights about how some variables are related to each other with equation 16 and 18 only:

Interesting suggestion! I hope I followed it correctly. I tried to apply it to a simpler system of 32 equations where i set all but 12 of the variables equal to either 0 or another variable and added the equation 0==0 to get a nice total count. Fist i generated one condition from each equation like so:

"NSolve" has been running for a few days now as well. At one point it occupied 90% of my RAM. Now it's back to 70%, but I doubt the task will be completed before running out of memory at some point. I've been looking around and I've found that the typical algorithm for finding complete sets of solutions of systems of polynomial equations is doubly exponential in complexity, making it seem entirely impossible to get there in a reasonable amount of time. I don't know which algorithms exactly are implemented in Mathematica for this problem, but the runtime for my problem is probably not that much better. Can someone confirm this?

I'm thinking I should restrict myself to finding subsets of the whole solution set. If i do find a zero point where all eigenvalues of the Jacobi matrix have positive real part, my task is completed. But if I can't get there after checking a few thousand of them I should probably give up on it. What would you say?