I Number of Solutions of a Nonlinear System

AI Thread Summary
A program was developed to solve a nonlinear system using successive approximations, yielding one solution: x1 = 0.93377 and x2 = 0.88417. The discussion explores methods to determine if additional solutions exist, referencing Bezout’s theorem, which suggests a maximum of six solutions due to the degrees of the equations involved. A cubic equation derived from the system indicates that while real solutions can be found, complex solutions may not be easily determined numerically. Techniques like Newton-Raphson's method and polynomial root-finding algorithms, such as Bairstow’s method, are suggested for finding both real and complex roots. The conversation emphasizes the complexity and potential for multiple solutions in nonlinear systems.
Wledig
Messages
69
Reaction score
1
TL;DR Summary
How can one determine the number of solutions of a nonlinear system?
I developed a program to solve the nonlinear system below through the method of successive approximations and was only able to find one solution, namely ##x_1 = 0.93377## and ##x_2 =0.88417##, even though I tried many different starting points. I was wondering if there's a way to determine if there are other solutions to this system, and if so, how many more there would be.

\begin{cases} 3x_1^2 + x_2 = \frac{7}{2} \\ x_1 + x_2^3 = \frac{13}{8} \end{cases}
 
Last edited:
Mathematics news on Phys.org
Wledig said:
Summary: How can one determine the number of solutions of a nonlinear system?

I developed a program to solve the nonlinear system below through the method of successive approximations and was only able to find one solution, namely ##x_1 = 0.93377## and ##x_2 =0.88417##, even though I tried many different starting points. I was wondering if there's a way to determine if there are other solutions to this system, and if so, how many more there would be.

\begin{cases} 3x_1 + x_2 = \frac{7}{2} \\ x_1 + x_2^3 = \frac{13}{8} \end{cases}

if you use elimination, you can subtract 1/3 of the first equation from the second to get

##x_2^3 - \frac{1}{3}x_2 = \frac{13}{8} - \frac{7}{6}##
or
##x_2^3 - \frac{1}{3}x_2 - \frac{11}{24} = 0##

it's a cubic, so you can solve exactly (the other two roots are complex). the solution for ##x_2## is a bit different than what you've stated, though
 
Oops, my bad. The first term in the first equation is actually ##x_1^2##, I corrected it now.
 
According to Wikipedia there is a thing called Bezout’s theorem, which states that the number of intersection points of two plane curves is at most the product of the degrees, with equality when counting complex points and points at infinity, weighted by multiplicity.

So basically, you can expect at most 6 solutions, since you have a quadratic and a cubic.
 
  • Like
Likes Wledig
I see. There's probably no way to determine the complex solutions numerically though, I believe. Thanks for the insight.
 
Wledig said:
Summary: How can one determine the number of solutions of a nonlinear system?...

\begin{cases} 3x_1^2 + x_2 = \frac{7}{2} \\ x_1 + x_2^3 = \frac{13}{8} \end{cases}

using this updated equation, you can do substitution:
\begin{cases} 3x_1^2 + x_2 = \frac{7}{2} \\ x_1 = \frac{13}{8}- x_2^3 \end{cases}
and substitute in the top line. Degree 6 polynomial in ##x_2##. Easy numeric solutions.
 
  • Like
Likes Wledig and suremarc
StoneTemplePython said:
Degree 6 polynomial in x2x2x_2. Easy numeric solutions.
Are they? I could use Newton-Raphson's method for instance to determine the real roots, but what about the complex ones? I'm not aware of any method for finding those numerically.
 
Wledig said:
Are they? I could use Newton-Raphson's method for instance to determine the real roots, but what about the complex ones? I'm not aware of any method for finding those numerically.
There's different schools of thought on this but one of the big ones is:

some the most heavily optimized numerical algorithms out there are for eigenvalues (QR Algorithm and various other flavors).

Numpy and Matlab and many other languages will give you eigenvalues (roots of a monic single variable polynomial) if you input them in a vector. In fact, my understanding is that if you ask Matlab to give you polynomial roots, it will input the polynomial into a companion matrix and run an eigenvalue routine on it. Numpy does the same thing with this routine:

https://docs.scipy.org/doc/numpy/reference/generated/numpy.roots.html
 
  • Like
Likes Wledig
I would find it hard to believe that no algorithm exists for finding roots of real polynomials numerically. In fact, I have just learned from a Google search about Bairstow’s method, which computes both real and complex roots for polynomials with real coefficients.
 
  • Like
Likes Wledig

Similar threads

Back
Top