home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 04 / quellen / function.inc < prev    next >
Encoding:
Text File  |  1979-12-31  |  2.0 KB  |  62 lines

  1. (*****************************************************************************)
  2. (*                              FUNCTION.INC                                 *)
  3. (*                                                                           *)
  4. (*                      Eingabe des Funktionsterms und                       *)
  5. (*               Berechnung von Funktionswerten und Ableitungen              *)
  6. (*****************************************************************************)
  7.  
  8.  
  9. Procedure ShowFunction;
  10. VAR i,j : INTEGER;
  11.  
  12. BEGIN
  13.   ClrScr;
  14.   Writeln('Es ergeben sich folgende Terme fuer f(x) und deren Ableitungen :');
  15.   Writeln('Stop mit Ctrl-S, weiter mit beliebiger Taste.');
  16.   Writeln;
  17.   for i := 0 to maxgrad do
  18.   BEGIN
  19.     Write('f');
  20.     for j := 1 to i do Write('''');
  21.     Write('':maxgrad-i, '(x) = ');
  22.     CalcAos(FormProg[i],VarTable);
  23.     Writeln;
  24.   END
  25. END;
  26.  
  27. Procedure GetFunction;
  28.  
  29. var I : INTEGER;
  30.  
  31. BEGIN
  32.   FOR i := 0 to maxgrad do killexpression(FormProg[i]);  (* keinen Muell !! *)
  33.   ClrScr;
  34.   Writeln;
  35.   Writeln('Bitte die zu untersuchende Funktion eingeben :');
  36.   REPEAT
  37.     readstr(functerm,1,5,sizeof(calc_string)-1,'f(x) = ');
  38.     Gotoxy(1,8);
  39.     FuncTerm := FuncTerm + ';';            (* EOP - Marker anfuegen *)
  40.     compileExpression(FuncTerm,VarTable,FormProg[0]);
  41.     CalcSimplify(FormProg[0]);  (* CalcProgramm vereinfachen *)
  42.   UNTIL CalcResult;
  43.   Gotoxy(1,18);;
  44.   Writeln('Bitte etwas Geduld - ich differenziere !');
  45.   For i := 1 to maxgrad do          (* und Ableitungen berechnen *)
  46.     FormProg[i] := CalcDerivation(FormProg[i-1],VarTable,'X');
  47.  showfunction
  48. END;
  49.  
  50.  
  51. Function fn (x :Real; k :Integer) :Real;
  52.  
  53.    (*  k = 0: Berechnung des Funktionswertes   *)
  54.    (*      1:     -      der ersten Ableitung  *)
  55.    (*      2:     -      der zweiten    -      *)
  56.    (*  maximaler Grad steht in maxgrad         *)
  57.  
  58.    Begin
  59.      AssignVarI(VarTable,ArgPos,x);        (* Argument zuweisen *)
  60.      fn := CalcExpression(FormProg[k],VarTable);
  61.    End;
  62.