home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 15 / numint / ellipse.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1989-05-17  |  1.4 KB  |  42 lines

  1. (* ------------------------------------------------------------------------- *)
  2. (*                                ELLIPSE.PAS                                *)
  3. (*               Näherungsweise Berechnung des Ellipsenumfangs               *)
  4. (* ------------------------------------------------------------------------- *)
  5.  
  6. PROGRAM Ellipse;
  7.  
  8. USES
  9.   NumInt;
  10.  
  11. CONST
  12.   Max = 1000;                                   (* Maximale Stützstellenzahl *)
  13.   m   =   15;                           (* Formatparameter für FLOAT-Ausgabe *)
  14.   n   =   11;
  15.  
  16. VAR
  17.   a, b, Kappa, eps,                                    (* Ellipsen-Parameter *)
  18.   Periphery, Error : FLOAT;            (* Wert und Fehler für Ellipsenumfang *)
  19.   Decimals         : BYTE;
  20.  
  21. {$F+}
  22. FUNCTION f(Theta : FLOAT) : FLOAT;
  23.   (* die zu integrierende Funktion *)
  24. BEGIN
  25.   f := 2.0 * b * Sqrt(1.0-Kappa*Sqr(Sin(Theta)))
  26. END;
  27. {$F-}
  28.  
  29. BEGIN
  30.   Write(^M^J'Halbachsen der Ellipse:  a = '); Read(a);
  31.   Write(    '                         b = '); Read(b);
  32.   Write(^M^J'Genauigkeit in Dezimalstellen: '); Read(Decimals);
  33.   Kappa := (Sqr(b)-Sqr(a))/Sqr(b);
  34.   eps := Exp(-ABS(Decimals)*Ln(10));
  35.   IF Successive(@Simpson, @f, 0.0, 1.0, eps, Max, Periphery, Error) THEN BEGIN
  36.     WriteLn(^M^J'Umfang der Ellipse:    U =  ', Periphery:m:n);
  37.     WriteLn(    '                           ±', Error    :m:n);
  38.   END ELSE
  39.     WriteLn(^M^J'Geforderte Genauigkeit nicht erreicht !');
  40.   WriteLn;
  41. END.
  42.