Interval Newton's Method
Interval Newton's method extends the classical Newton method to work with intervals instead of single points.
For a system of equations $F(x) = 0$, the method works as follows:
Initialization: Start with an initial interval $X^{(0)}$ that is known to contain a solution
Iteration: For each step $k$, compute:
\[X^{(k+1)} = (m(X^{(k)}) - F(m(X^{(k)})) / F'(X^{(k)})) \cap X^{(k)}\]
where:
\[m(X^{(k)})\]
is the midpoint of the current interval\[F'(X^{(k)})\]
is the interval Jacobian matrix
The intersection with $X^{(k)}$ ensures the interval never grows, providing better convergence guarantees.
Convergence: The method continues until the interval becomes sufficiently small or other stopping criteria are met.
Available Functions
Types of input
LACE.jl supports polynomial systems with the following coefficient types:
- Rational coefficients using AbstractAlgebra or Nemo polynomials
- Interval coefficients using the
BigInterval
type from MPFI.jl with DynamicPolynomials
Variants of the algorithm
LACE provides two main variants of the interval Newton method:
Standard Interval Newton (interval_newton
): Uses intersection operations between iterations. Typically used when:
- The initial interval is known to contain the solution
Classical Interval Newton (interval_classic_newton
): Traditional implementation without intersection operations. Typically used when:
- The initial interval may not contain the solution
Standard Interval Newton Method
The standard interval Newton method is the recommended choice for applications where an interval containing a single root is already known and needs to be refined.
<!– See LACE.interval_newton
–>
Classical Interval Newton Method
The classical interval Newton method provides the traditional implementation without intersection operations. This can be useful when:
- The input polynomial system has interval coefficients and the starting point/interval is either a single point or an interval that does not contain (all) the solutions.
- The input polynomial system has rational coefficients and the starting interval does not necessarily contain the solution.
<!– LACE.interval_classic_newton
–>
Parameter Guidelines
Precision Settings
input_precision
: Is the precision of the input coefficients when converted in the internal representation. Should be less than the precision of input coefficients for meaningful results.work_precision
: Higher values give more accurate intermediate results but slower computationtarget_precision
: Controls the desired tightness of the solution intervaloutput_precision
: Should be ≤work_precision
for meaningful results
Iteration Control
max_nb_loops
: Start with 10-20 for most problemsrefine
: Use 1 for most cases, 0 only for specific heuristicsverbose
: Use 1 for debugging, 0 for quiet operation
Usage Examples
Basic Usage with AbstractAlgebra
using LACE, AbstractAlgebra, MPFI
# Define polynomial ring and variables
R, (x, y) = polynomial_ring(QQ, ["x", "y"])
# Define system of equations
f = x^2 + y^2 - 1 # Circle: x² + y² = 1
g = x - y # Line: x = y
sys = [f, g]
# Initial point (approximate solution)
initial_point = [BigFloat(0.7), BigFloat(0.7)]
input_precision = 52
target_precision = 52
work_precision = 52
output_precision = 52
max_nb_loops = 10
# Solve using interval Newton
status, solution, constants = interval_newton(sys, initial_point, input_precision, work_precision,target_precision,output_precision,max_nb_loops)
println("Status: ", status)
println("Solution: ", solution)
println("Kantorovich constants: ", constants)