Annotation of OpenXM_contrib/PHC/Ada/Continuation/standard_root_refiners.ads, Revision 1.1
1.1 ! maekawa 1: with text_io; use text_io;
! 2: with Standard_Floating_Numbers; use Standard_Floating_Numbers;
! 3: with Standard_Complex_Poly_Systems; use Standard_Complex_Poly_Systems;
! 4: with Standard_Complex_Poly_SysFun; use Standard_Complex_Poly_SysFun;
! 5: with Standard_Complex_Jaco_Matrices; use Standard_Complex_Jaco_Matrices;
! 6: with Standard_Complex_Solutions; use Standard_Complex_Solutions;
! 7:
! 8: package Standard_Root_Refiners is
! 9:
! 10: -- DESCRIPTION:
! 11: -- The aim of this package is to provide some routines to
! 12: -- perform root refining, to validate the approximate solutions.
! 13: -- It can be used as a postprocessor to check the computed roots,
! 14: -- or, as preprocessor, to find some suitable starting values for
! 15: -- the continuation procedure.
! 16:
! 17: -- The basic root refiner is Newton's method. There are four versions:
! 18: -- + reporting/silent : with/without intermediate output
! 19: -- + standard/function evaluator.
! 20:
! 21: -- NEWTON'S METHOD :
! 22:
! 23: procedure Silent_Newton
! 24: ( p_eval : in Eval_Poly_Sys; j_eval : in Eval_Jaco_Mat;
! 25: zero : in out Solution; epsxa,epsfa : in double_float;
! 26: numit : in out natural; max : in natural; fail : out boolean );
! 27:
! 28: procedure Silent_Newton
! 29: ( p_eval : in Standard_Complex_Poly_SysFun.Evaluator;
! 30: j_eval : in Standard_Complex_Jaco_Matrices.Evaluator;
! 31: zero : in out Solution; epsxa,epsfa : in double_float;
! 32: numit : in out natural; max : in natural; fail : out boolean );
! 33:
! 34: procedure Reporting_Newton
! 35: ( file : in file_type;
! 36: p_eval : in Eval_Poly_Sys; j_eval : in Eval_Jaco_Mat;
! 37: zero : in out Solution; epsxa,epsfa : in double_float;
! 38: numit : in out natural; max : in natural; fail : out boolean );
! 39:
! 40: procedure Reporting_Newton
! 41: ( file : in file_type;
! 42: p_eval : in Standard_Complex_Poly_SysFun.Evaluator;
! 43: j_eval : in Standard_Complex_Jaco_Matrices.Evaluator;
! 44: zero : in out Solution; epsxa,epsfa : in double_float;
! 45: numit : in out natural; max : in natural; fail : out boolean );
! 46:
! 47: -- DESCRIPTION :
! 48: -- Newton's method is applied to refine the approximation of a root.
! 49: -- The stopping criteria are:
! 50: -- * numit > max (maximum number of iterations is exceeded);
! 51: -- * zero.err < epsxa (accuracy for x is reached);
! 52: -- * zero.res < epsfa (tolerance for residual is reached).
! 53: -- When one of these conditions is fulfilled, the procedure stops.
! 54:
! 55: -- ON ENTRY :
! 56: -- file to write intermediate results on;
! 57: -- p_eval evaluable form of the polynomial system;
! 58: -- j_eval evaluable form of the Jacobian matrix;
! 59: -- zero starting value;
! 60: -- epsxa maximum absolute error on the zero;
! 61: -- epsfa maximum absolute value of the residue;
! 62: -- numit number of iterations, to be initialized with zero;
! 63: -- max maximum number of iterations.
! 64:
! 65: -- ON RETURN :
! 66: -- zero refined root;
! 67: -- numit number of iterations performed;
! 68: -- fail is true when the desired precision is not reached.
! 69:
! 70: -- APPLICATION of Newton's Method on a list of solutions.
! 71: -- The silent versions simply perform the calculations.
! 72: -- The reporting root refiners allow the output of intermediate results and
! 73: -- produce a summary of the calculations.
! 74: -- With each version, an additional output parameter can be supplied to
! 75: -- contain only those solutions that satisfy the accuracy requirements.
! 76:
! 77: procedure Silent_Root_Refiner
! 78: ( p : in Poly_Sys; sols : in out Solution_List;
! 79: epsxa,epsfa,tolsing : in double_float;
! 80: numit : in out natural; max : in natural );
! 81:
! 82: procedure Silent_Root_Refiner
! 83: ( p : in Standard_Complex_Poly_SysFun.Evaluator;
! 84: j : in Standard_Complex_Jaco_Matrices.Evaluator;
! 85: sols : in out Solution_List;
! 86: epsxa,epsfa,tolsing : in double_float;
! 87: numit : in out natural; max : in natural );
! 88:
! 89: procedure Silent_Root_Refiner
! 90: ( p : in Poly_Sys; sols,refsols : in out Solution_List;
! 91: epsxa,epsfa,tolsing : in double_float;
! 92: numit : in out natural; max : in natural );
! 93:
! 94: procedure Silent_Root_Refiner
! 95: ( p : in Standard_Complex_Poly_SysFun.Evaluator;
! 96: j : in Standard_Complex_Jaco_Matrices.Evaluator;
! 97: sols,refsols : in out Solution_List;
! 98: epsxa,epsfa,tolsing : in double_float;
! 99: numit : in out natural; max : in natural );
! 100:
! 101: procedure Reporting_Root_Refiner
! 102: ( file : in file_type;
! 103: p : in Poly_Sys; sols : in out Solution_List;
! 104: epsxa,epsfa,tolsing : in double_float;
! 105: numit : in out natural; max : in natural; wout : in boolean );
! 106:
! 107: procedure Reporting_Root_Refiner
! 108: ( file : in file_type;
! 109: p : in Standard_Complex_Poly_SysFun.Evaluator;
! 110: j : in Standard_Complex_Jaco_Matrices.Evaluator;
! 111: sols : in out Solution_List;
! 112: epsxa,epsfa,tolsing : in double_float;
! 113: numit : in out natural; max : in natural; wout : in boolean );
! 114:
! 115: procedure Reporting_Root_Refiner
! 116: ( file : in file_type;
! 117: p : in Poly_Sys; sols,refsols : in out Solution_List;
! 118: epsxa,epsfa,tolsing : in double_float;
! 119: numit : in out natural; max : in natural; wout : in boolean );
! 120:
! 121: procedure Reporting_Root_Refiner
! 122: ( file : in file_type;
! 123: p : in Standard_Complex_Poly_SysFun.Evaluator;
! 124: j : in Standard_Complex_Jaco_Matrices.Evaluator;
! 125: sols,refsols : in out Solution_List;
! 126: epsxa,epsfa,tolsing : in double_float;
! 127: numit : in out natural; max : in natural; wout : in boolean );
! 128:
! 129: -- DESCRIPTION :
! 130: -- The list of solutions sols is refined w.r.t. the system p.
! 131: -- The multiplicity of each solution in sols is determined as follows:
! 132: -- m = 0 : if the solution is singular and probably non isolated
! 133: -- or if the solution lies at infinity ( in fact no solution );
! 134: -- m = 1 : if the solution is regular;
! 135: -- m > 1 : a multiple solution with multiplicity m.
! 136:
! 137: -- ON ENTRY :
! 138: -- file file for writing diagnostics on;
! 139: -- p a polynomial system;
! 140: -- j Jacobian matrix of p;
! 141: -- sols the start solutions;
! 142: -- epsxa maximum absolute error on the zero;
! 143: -- epsfa maximum absolute value for the residue;
! 144: -- tolsing tolerance on inverse condition number for singular solution;
! 145: -- numit the number of iterations, to be initialized with zero;
! 146: -- max maximum number of iterations per zero;
! 147: -- wout has to be true when intermediate output is wanted.
! 148:
! 149: -- ON RETURN :
! 150: -- sols a list of computed solutions;
! 151: -- refsols only those solutions which satisfy the given accuracy;
! 152: -- numit the number of iterations.
! 153:
! 154: end Standard_Root_Refiners;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>