0
$\begingroup$

I am trying to numerically solve the following system of nonlinear equations

$x_1=f_1(x_2-x_1)$
$x_2=f_2(x_3-x_2)$
.
.
.
$x_{n-1}=f_{n-1}(x_n-x_{n-1})$
$x_n=f_n(x_1-x_n)$

the method that I am using is to assign an initial value to the array $[x_2-x_1,x_3-x_2,...,x_1-x_n]$, use the array to find the values of $x_1,...,x_n$ from the equation above, recalculate the array using the newly found values of $x_1,...,x_n$ , and repeat the process until it converges. However, during the iterations I come up with very large values (in the order of $10^{180}$) which disables the computer to continue. Is there a method to control the values at each iteration (such as adding normalization factor) to avoid this issue? I am sure that the solution to the system of equations exists.
Thanks.

$\endgroup$
0
$\begingroup$

If we rewrite the system using the new variables $$ z_1=x_2-x_1, z_2 = x_3-x_2, \cdots z_{n-1}=x_n-x_{n-1}, z_n = x_1-x_n $$

we get $$ \begin{cases} z_1 &= f_2(z_2)-f_1(z_1)\\ z_2 & = f_3(z_3)-f_2(z_2)\\ &\vdots\\ z_{n-1} & =f_n(z_n)-f_{n-1}(z_{n-1})\\ z_n &= f_1(z_1)-f_n(z_n) \end{cases} $$

The fixed point method amounts to start with an initial guess $z^{(0)}$ and iterate using $$ z_i^{(k+1)} = f_{i+1}(z_{i+1}^{(k)})-f_i(z_i^{(k)}), \quad i = 1, \cdots, n $$ (using the notation $f_{n+1} := f_1$ )

The convergence of this method depends heavily on the properties of $f_1, \cdots ,f_n$ and, without further information, it is not possible to help you. Normalization will not help you... If the method does not converge you need to rewrite the system and get a different iteration function.

| cite | improve this answer | |
$\endgroup$
  • $\begingroup$ The original question is more complicated than the one posted here, but let's say that each $f_i$ is a polynomial of degree 6. $\endgroup$ – Salo Sep 27 '19 at 9:40
  • $\begingroup$ @Salo The convergence of the fixed point method relies on the contractivity of the iteration function. You should, at least in a small example with two variables, check the norm of the Jacobian matrix of the iteration function, for the expected range of your variables. In order to ensure convergence, some norm of this matrix should be less than 1. $\endgroup$ – PierreCarre Sep 27 '19 at 9:54

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.