(* Programm zur Darstellung von Funktionen f(x) *) (* Copyright (c) 2002 by Klaus Bergmann, Locomotion & Co. Software *) (* Geschrieben in TurboPascal 6 *) {$N+} uses Graph, Crt; Function Power (Base, Exponent : Extended) : Extended; Var p : Extended; Begin p := Exp(Exponent * ln(Abs(Base))); If (Base < 0) And (Int(Exponent / 2) <> Exponent / 2) Then If (Int(Exponent) <> Exponent) Then RunError (207) { Invalid floating point operation } { Wurzel aus -x ist in R nicht def. } Else Power :=-p Else Power := p; End; Function tan (x : Extended) : Extended; Begin tan := sin(x) / cos(x); End; Function f (z : Byte; x : Extended) : Extended; { Hier kommen die Funktionen rein } Begin Case z Of 1: f := exp(x - sin(power(x, 4))); 2: f := 3*sin(0.03*tan(Power(3, x))); 3: f := 5*power(abs(x), -exp(x/2.5)); Else f := 0; End; End; var grDriver : Integer; grMode : Integer; x, y, i : Extended; a : Integer; Step : Word; MaxFkt : Byte; { Wenn mehr als eine Fkt dargestellt werden sollen } { Funktionscharen o.„. } z : Byte; begin grDriver := Detect; InitGraph(grDriver, grMode, 'c:\tp6\bgi'); { ggf. Pfad „ndern } MaxFkt := 3; { Hier die Anzahl der dar- } { zustellenden Fkts. eintragen } i := 20; Step := 30; { Skalierung (Zoom) } SetColor (07); Line (0, GetMaxY DIV 2, GetMaxX, GetMaxY DIV 2); Line (GetMaxX DIV 2, 0, GetMaxX DIV 2, GetMaxY); a := Trunc(GetMaxX DIV 2 - i * Step); While a <= Trunc(GetMaxX DIV 2 + i * Step) Do Begin Line (a, GetMaxY DIV 2 - 2, a, GetMaxY DIV 2 + 2); Inc (a, Step); End; a := Trunc(GetMaxY DIV 2 - GetMaxY DIV 2 * Step); While a <= GetMaxY Do Begin Line (GetMaxX DIV 2 - 2, a, GetMaxX DIV 2 + 2, a); Inc (a, Step); End; For z := 1 To MaxFkt Do Begin x := -i; y := f(z, x); If y * Step < -MaxInt Then y := (-MaxInt + GetMaxY DIV 2) / Step; MoveTo (Round(GetMaxX DIV 2 + x * Step), Round(GetMaxY DIV 2 - y * Step)); SetColor (z); Repeat y := f(z, x); If y * Step < -MaxInt Then y := (-MaxInt + GetMaxY DIV 2) / Step; If y * Step > MaxInt Then y := MaxInt / Step; LineTo (Round(GetMaxX DIV 2 + x * Step), Round(GetMaxY DIV 2 - y * Step)); x := x + 1 / Step; Until x >= i; End; ReadKey; CloseGraph; end.