home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
sonderh1
/
integral.inc
< prev
next >
Wrap
Text File
|
1988-02-02
|
2KB
|
51 lines
(*****************************************************************************)
(* INTEGRAL.INC *)
(* *)
(* Berechnung eines bestimmten Integrals von f *)
(*****************************************************************************)
Procedure Integrate;
Var a,b,g,err,I,LastI :Real;
k :Integer;
Function Simpson (a,b :Real; k :Integer) :Real;
Var h,S :Real;
i :Integer;
Begin
h := (b-a)/(k+k);
S := fn(a,0) + fn(b,0);
For i:=0 to k-1 do
S := S + 4*fn(a+(i+i+1)*h,0);
For i:=1 to k-1 do
S := S + 2*fn(a+2*i*h,0);
Simpson := S * h/3;
End;
Begin
ClrScr;
WriteLn ('Berechnung des Integrals von f(x)'); WriteLn;
Write ('von a='); Read (a);
Write (' bis b='); Read (b);
Write (' mit relativer Genauigkeit g='); ReadLn (g); WriteLn; WriteLn;
k := 4;
LastI := Simpson (a, b, 2);
Repeat
I := Simpson (a, b, k); (* Simpson-Näherung *)
err := abs ((I-LastI)/I); (* relativer Fehler *)
LastI := I;
k := k * 2 (* Stützstellen verdoppeln *)
until (err <= g) or (k > MaxIter);
If k <= MaxIter then
Begin
WriteLn ('Integral: I = ', I:m:n); WriteLn;
WriteLn ('absoluter Fehler: dI = ', err:m:n); WriteLn;
End
else
WriteLn ('Maximale Anzahl von Iterationen überschritten!')
End;