6
$\begingroup$

I have to use an iterative method (Newton-Raphson, modified Newton and Broyden) to solve a system of nonlinear equations $f(x)=0$. Every unknown $x_i$ is bounded between $l_i$ and $u_i$, i.e., $l_i<x_i<u_i$, and evaluating $f$ if any of the unknowns goes out of its bounds would give an error.

Which is the best technique to avoid this during the iteration? Currently, I am using a damping parameter $t\leq 1$ so that, in Newton-Raphson, for example,

$$ x^{(n+1)} = x^{(n)} - t \, J^{(n)}\backslash f^{(n)}$$

is always inside the corresponding hypercube. However, this is an ad hoc, nonrigorous solution, and I have found papers about reflective techniques (although they were only applied for optimization problems).

Is the above solution a good one or should I try something different?

$\endgroup$
1
  • $\begingroup$ Please don't sign your posts. $\endgroup$
    – nicoguaro
    Apr 10, 2017 at 22:37

1 Answer 1

1
$\begingroup$

You should put "mirrors" to bracket your domain.

For example, in a one-dimensional case:

If I know that my unknown $x$ is bounded between $0$ and $a$. At each iteration of my method, i will check if $0 < x < a$. If not, while $x < 0$ or $x > a$, if $x < 0$ I will change $x$ to $-x$, else if $x > a$ I will change $x$ to $a-(x-a)$.

Another method that might be more complex to program depending what language you use but that is often more successful is to modify your Jacobian by dividing the step by 2 while you are not in your domain of interest.

$\endgroup$
2
  • 1
    $\begingroup$ @Aurreac I have tried the reflective technique and it seems to work fine. However, I have not seen it explained in any paper or book, nor I have found any papers about convergence criteria and convergence speed. Do you know any paper where I could find this technique explained? $\endgroup$
    – Manu
    Jul 28, 2017 at 9:10
  • 5
    $\begingroup$ this mirroring method does not look sensible at all. So some explanation would be fine. $\endgroup$
    – miracle173
    Jul 29, 2017 at 21:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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