home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------------------------- *)
- (* ELLIPSE.PAS *)
- (* Näherungsweise Berechnung des Ellipsenumfangs *)
- (* ------------------------------------------------------------------------- *)
-
- PROGRAM Ellipse;
-
- USES
- NumInt;
-
- CONST
- Max = 1000; (* Maximale Stützstellenzahl *)
- m = 15; (* Formatparameter für FLOAT-Ausgabe *)
- n = 11;
-
- VAR
- a, b, Kappa, eps, (* Ellipsen-Parameter *)
- Periphery, Error : FLOAT; (* Wert und Fehler für Ellipsenumfang *)
- Decimals : BYTE;
-
- {$F+}
- FUNCTION f(Theta : FLOAT) : FLOAT;
- (* die zu integrierende Funktion *)
- BEGIN
- f := 2.0 * b * Sqrt(1.0-Kappa*Sqr(Sin(Theta)))
- END;
- {$F-}
-
- BEGIN
- Write(^M^J'Halbachsen der Ellipse: a = '); Read(a);
- Write( ' b = '); Read(b);
- Write(^M^J'Genauigkeit in Dezimalstellen: '); Read(Decimals);
- Kappa := (Sqr(b)-Sqr(a))/Sqr(b);
- eps := Exp(-ABS(Decimals)*Ln(10));
- IF Successive(@Simpson, @f, 0.0, 1.0, eps, Max, Periphery, Error) THEN BEGIN
- WriteLn(^M^J'Umfang der Ellipse: U = ', Periphery:m:n);
- WriteLn( ' ±', Error :m:n);
- END ELSE
- WriteLn(^M^J'Geforderte Genauigkeit nicht erreicht !');
- WriteLn;
- END.