Numerical solutions
In order to improve the quality roots, computed by eigensolvers, one can use Newton iterations for each root, assuming the roots have mutliplicity 1. Here are some functions to analyse and improve the numerical qauality of these roots.
AlgebraicSolvers.rel_error
— FunctionVector of relative errors of P at the points X
AlgebraicSolvers.alpha_beta
— Functionalpha, beta quantities for Newton convergence to an approximate zero.
- If alpha < 0.125, then the approximate zero is within 2*beta from Xi and Newton methods converges to it from Xi quadratically.
- If alpha < 0.02, then Newton method converges from all points in the ball of center Xi and radius 2*beta.
AlgebraicSolvers.newton_improve!
— Functionnewton_improve!(Xi::Matrix, P, X=variables(P), eps::Float64=1.e-12, Nit::Int64 = 20)
Improve the roots Xi
of the system P
by Newton iteration.
Xi
matrix of n x r roots where n is the number of coordinates of the roots and r the number of rootsP
is the (square) system of polynomialsX
the array of variableseps
threshold for stoping the iteration when the relative error is smaller.Nit
is the maximal number of iterations per root.