How to find a point in $R^n$ satisfying a set of nonlinear inequalities? Let $f_i: \mathbf{R}^n \to \mathbf{R}$ be a smooth map and $a_i \leq b_i$ for $i=1, \dots, m$. How can one find a point $x \in \mathbf{R}^n$ satisfying $a_i \leq f_i(x) \leq b_i$ for all $i$?
My current solution is to frame it as the following non-linear optimization problem: minimize $0$ subject to $a_i \leq f_i \leq b_i \forall i$. I'm then using a optimizer to find a solution. I'm untrained in optimization however, so I would prefer a more direct approach (if it exists) to the problem of finding $x$.
If optimization is the only solution then I would like to better understand how this method works. I understand the basic method of gradient descent, but how could such a method be applied when the objective function is constant? How do optimization problems find feasible solutions in these cases?
Edit: For my specific application, each $f_i$ is of the form $f_i(x) = x_a+x_b$ or $f_i(x)=x_a/x_b$.
 A: The problem can be transformed into a LP (Linear Programming) problem:

*

*$a_i \le x_a + x_b \le b_i$ is equivalent to two linear constraints.


*$a_i \le x_a/x_b \le b_i$ is equivalent to $x_b \gt 0:  x_a - a_i x_b \ge 0, x_a - b_i x_b \le 0$, or $x_b < 0: x_a - a_i x_b \le 0, x_a - b_i x_b \ge 0$. So two branches with two linear constraints each.
To deal with the branches, you may make cases depending upon the signs of denominator variables, or transform it into $x_b (x_a - a_i x_b) \ge 0$ and $x_b (x_a - b_i x_b) \le 0$, which are quadratic constraints, although quite simple because the left hand-side is null.
To solve the system, you may use a solver that allows for quadratic constraints, or you may use a purely linear solver and have a case-based reasoning above it. If you prefer writing the program yourself, the simplex method is the easiest and one of the most efficient methods available for linear problems.
https://en.wikipedia.org/wiki/Simplex_algorithm
Note that in your problem you just want to find a feasible solution (i.e. a point that satisfies all constraints), rather than an optimal solution, as there is nothing to be optimized. And on the other hand the simplex algorithm requires a feasible solution for its initialization.
In this case there is a phase 1 which consists in finding a feasible point (and you'll stop there, as phase 2 is to optmize the objective function). Phase 1 is solved by applying the simplex algorithm to a modified version of the problem. The idea is to add slack variables, so that there is a trivial solution, and to minimize the sum of those slack variables. So for example $x_a - a_i x_b \le 0$ is transformed into $x_a - a_i x_b + u = 0$, where $u$ is a slack variable. But a solver will manage all that, slack variables and phases, for you.
