Solving large non-linear system of equations
Show older comments
I have N equations, with N variables x_1, x_2, ... x_N that I want to solve for. Additionally there are a total of N^2 symbolic variables/coefficients b_11,b_12...b_NN.
Each equation consists of N^2 terms, (where every term has the the structure: x_i * x_j * (b_ik * b_jk + b_im * b_jm). (k,m are pairs of indices, specific for every equation.)
The problem is that already with N = 4, I get 4 equations, each with 16 mixed terms which (I believe) makes for a rather complex system to solve.
I tried solving it (for N = 4) with solve(eqns, vars) which ended up running out of memory. I also tried to reduce the system to a grobner basis with gbasis(eqns, vars), but had to cancel that after still running after an hour.
Both solve and gbasis work well for smaller systems with relatively few terms but in my case (especially for higher N) they become quite useless.
Any suggestions for a different method to solve this kind of non-linear system of equations?
2 Comments
Walter Roberson
on 12 May 2020
It sounds to me to be hopeless for N=5 or larger. We can easily predict with that structure that for N=5 or higher you would be trying to solve equations of degree 5 or higher, which is not going to have any closed form solutions.
N=4 is the largest that is likely to have a closed form solution, and those solutions sound like they would be really large.
x_i * x_j * (b_ik * b_jk + b_im * b_jm)
Since the b_* are intended to stand in for constants (in particular are independent of the x to be solved for), then it sounds to me as if you could rewrite those like
x_i * x_j * Bijkm
where Bijkm is a symbolic array NxNxNxN that, given the symbol, you examine the indices to compute the corresponding (b_ik * b_jk + b_im * b_jm) value (even better if you can reduce it to fewer dimensions.) Doing this would remove the strain of having to deal with sums and products of (b_ik * b_jk + b_im * b_jm) terms, replacing them with sums and products of Bijkm symbols. That should make it more feasible to compute the form of the solutions, after which you would subs() in the corresponding b_ik * b_jk + b_im * b_jm values to flesh out the solutions, if desired.
mingyang
on 29 Nov 2022
Hello, brother. Did you solve this problem?----" sloving large non-linear system of equations",I have the same problem and would like to ask you for advice.
Answers (0)
Categories
Find more on Systems of Nonlinear Equations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!