[BACK]Return to multprec_root_refiners.ads CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Continuation

Annotation of OpenXM_contrib/PHC/Ada/Continuation/multprec_root_refiners.ads, Revision 1.1

1.1     ! maekawa     1: with text_io;                            use text_io;
        !             2: with Multprec_Floating_Numbers;          use Multprec_Floating_Numbers;
        !             3: with Multprec_Complex_Poly_Systems;      use Multprec_Complex_Poly_Systems;
        !             4: with Multprec_Complex_Poly_SysFun;       use Multprec_Complex_Poly_SysFun;
        !             5: with Multprec_Complex_Jaco_Matrices;     use Multprec_Complex_Jaco_Matrices;
        !             6: with Multprec_Complex_Solutions;         use Multprec_Complex_Solutions;
        !             7:
        !             8: package Multprec_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 two versions
        !            18: --   provided : a silent and a reporting version.  The reporting version puts
        !            19: --   intermediate results on file during the iterations, while the silent
        !            20: --   version simply returns the refined solutions.
        !            21:
        !            22: -- NEWTON'S METHOD :
        !            23:
        !            24:   procedure Silent_Newton
        !            25:                ( p_eval : in Eval_Poly_Sys; j_eval : in Eval_Jaco_Mat;
        !            26:                  zero : in out Solution; epsxa,epsfa : in Floating_Number;
        !            27:                  numit : in out natural; max : in natural; fail : out boolean );
        !            28:
        !            29:   procedure Reporting_Newton
        !            30:                ( file : in file_type;
        !            31:                  p_eval : in Eval_Poly_Sys; j_eval : in Eval_Jaco_Mat;
        !            32:                  zero : in out Solution; epsxa,epsfa : in Floating_Number;
        !            33:                  numit : in out natural; max : in natural; fail : out boolean );
        !            34:
        !            35:   -- DESCRIPTION :
        !            36:   --   Newton's method is applied to refine the approximation of a root.
        !            37:   --   The stopping criteria are:
        !            38:   --     * numit > max   (maximum number of iterations is exceeded);
        !            39:   --     * zero.err < epsxa (accuracy for x is reached);
        !            40:   --     * zero.res < epsfa (tolerance for residual is reached).
        !            41:   --   When one of these conditions is fulfilled, the procedure stops.
        !            42:
        !            43:   -- ON ENTRY :
        !            44:   --   file      to write intermediate results on;
        !            45:   --   p_eval    evaluable form of the polynomial system;
        !            46:   --   j_eval    evaluable form of the Jacobian matrix;
        !            47:   --   zero      starting value;
        !            48:   --   epsxa     maximum absolute error on the zero;
        !            49:   --   epsfa     maximum absolute value of the residue;
        !            50:   --   numit     number of iterations, to be initialized with zero;
        !            51:   --   max       maximum number of iterations.
        !            52:
        !            53:   -- ON RETURN :
        !            54:   --   zero      refined root;
        !            55:   --   numit     number of iterations performed;
        !            56:   --   fail      is true when the desired precision is not reached.
        !            57:
        !            58: -- APPLICATION of Newton's Method on a list of solutions.
        !            59: --   The silent versions simply perform the calculations.
        !            60: --   The reporting root refiners allow the output of intermediate results and
        !            61: --   produce a summary of the calculations.
        !            62: --   With each version, an additional output parameter can be supplied to
        !            63: --   contain only those solutions that satisfy the accuracy requirements.
        !            64:
        !            65:   procedure Silent_Root_Refiner
        !            66:                ( p : in Poly_Sys; sols : in out Solution_List;
        !            67:                  epsxa,epsfa,tolsing : in Floating_Number;
        !            68:                  numit : in out natural; max : in natural );
        !            69:
        !            70:   procedure Silent_Root_Refiner
        !            71:                ( p : in Poly_Sys; sols,refsols : in out Solution_List;
        !            72:                  epsxa,epsfa,tolsing : in Floating_Number;
        !            73:                  numit : in out natural; max : in natural );
        !            74:
        !            75:   procedure Reporting_Root_Refiner
        !            76:                ( file : in file_type;
        !            77:                  p : in Poly_Sys; sols : in out Solution_List;
        !            78:                  epsxa,epsfa,tolsing : in Floating_Number;
        !            79:                  numit : in out natural; max : in natural; wout : in boolean );
        !            80:
        !            81:   procedure Reporting_Root_Refiner
        !            82:                ( file : in file_type;
        !            83:                  p : in Poly_Sys; sols,refsols : in out Solution_List;
        !            84:                  epsxa,epsfa,tolsing : in Floating_Number;
        !            85:                  numit : in out natural; max : in natural; wout : in boolean );
        !            86:
        !            87:   -- DESCRIPTION :
        !            88:   --   The list of solutions sols is refined w.r.t. the system p.
        !            89:   --   The multiplicity of each solution in sols is determined as follows:
        !            90:   --     m = 0 : if the solution is singular and probably non isolated
        !            91:   --             or if the solution lies at infinity ( in fact no solution );
        !            92:   --     m = 1 : if the solution is regular;
        !            93:   --     m > 1 : a multiple solution with multiplicity m.
        !            94:
        !            95:   -- ON ENTRY :
        !            96:   --   file      file for writing diagnostics on;
        !            97:   --   p         a polynomial system;
        !            98:   --   sols      the start solutions;
        !            99:   --   epsxa     maximum absolute error on the zero;
        !           100:   --   epsfa     maximum absolute value for the residue;
        !           101:   --   tolsing   tolerance on inverse condition number for singular solution;
        !           102:   --   numit     the number of iterations, to be initialized with zero;
        !           103:   --   max       maximum number of iterations per zero;
        !           104:   --   wout      has to be true when intermediate output is wanted.
        !           105:
        !           106:   -- ON RETURN :
        !           107:   --   sols      a list of computed solutions;
        !           108:   --   refsols   only those solutions which satisfy the given accuracy;
        !           109:   --   numit     the number of iterations.
        !           110:
        !           111: end Multprec_Root_Refiners;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>