ETHZ_Logo RAMSES_Logo_Right   RAMSES   RAMSES_Logo_Left Systems Ecology  
Start    search button      Modules:   A-Z   Function   Layer        QuickRefs:   DM   AuxLib   AuxLibE   SciLib   EasyMW   MW   ISIS   RMSLib

DEFINITION MODULE PolyLib;

  (*******************************************************************

    Module  PolyLib     (Version 0.5)

      Copyright (c) 1986-2006 by Alex Itten and ETH Zurich.

    Purpose   Types and procedures to form polynomials
              and to find their complex roots.

    Remarks   --


    Programming

      o Design
        Alex Itten                25/11/1986

      o Implementation
        Alex Itten                25/11/1986


    ETH Zurich
    Systems Ecology
    CHN E 35.1
    Universitaetstrasse 16
    8092 Zurich
    SWITZERLAND

    URLs:
        <mailto:RAMSES@env.ethz.ch>
        <http://www.sysecol.ethz.ch>
        <http://www.sysecol.ethz.ch/SimSoftware/RAMSES>


    Last revision of definition:  25/11/1986  AI

  *******************************************************************)


  FROM ComplexLib IMPORT Complex;


  CONST maxPolySize = 8;         (* Max Order of polynoms *)

  TYPE  NamenString     = ARRAY[0..32] OF CHAR;
        Polynom         = RECORD
                            name     : NamenString;
                            curOrder : CARDINAL;
                            koef     : ARRAY[0..maxPolySize] OF Complex;
                          END;

  PROCEDURE InitPolynom(VAR P:Polynom; Name: NamenString; n: CARDINAL);
   (* gives the polynom P the given Name and the current order n and sets
      all coefficents to zero *)

  PROCEDURE SetPolynom(VAR p: Polynom; coef: ARRAY OF Complex);
   (* sets the coefficients of the polynom p to the values specified by
      the parameter coef. If there are more than maxPolySize coefficients,
      the extra coefficients are ignored. If there are less than maxPolySize
      coeficients, then the current order of the polynom will be set to the
      correct value. *)

  PROCEDURE FormPolynom(VAR p: Polynom; roots: ARRAY OF Complex);
   (* This procedure forms a polynom from its given roots.If there are more
      than maxPolySize roots, the extra roots are ignored. If there are less
      than maxPolySize roots, then the current order of the polynom will be
      set to the correct value. *)

  PROCEDURE FindRoots(P:Polynom;
                      VAR roots: ARRAY OF Complex;
                      zInit: Complex;
                      maxError: REAL;
                      maxIteration : CARDINAL;
                      VAR found: CARDINAL;
                      VAR done: BOOLEAN);

   (* finds all roots of the polynom P. zInit is the initial value for the
      iteration. If done is TRUE, then all roots are found.
      The varaible found returns the number of roots, which are found. maxError defines
      the maximum tolerated absolute error and maxIteration the maximum number
      of iterations. Uses a Newton-Horner algorithm.*)

END PolyLib.


  Contact RAMSES@env.ethz.ch Last updated: 25-Jul-2011 [Top of page]