home *** CD-ROM | disk | FTP | other *** search
- (*****************************************************************************)
- (* FUNCTION.INC *)
- (* *)
- (* Eingabe des Funktionsterms und *)
- (* Berechnung von Funktionswerten und Ableitungen *)
- (*****************************************************************************)
-
-
- Procedure ShowFunction;
- VAR i,j : INTEGER;
-
- BEGIN
- ClrScr;
- Writeln('Es ergeben sich folgende Terme fuer f(x) und deren Ableitungen :');
- Writeln('Stop mit Ctrl-S, weiter mit beliebiger Taste.');
- Writeln;
- for i := 0 to maxgrad do
- BEGIN
- Write('f');
- for j := 1 to i do Write('''');
- Write('':maxgrad-i, '(x) = ');
- CalcAos(FormProg[i],VarTable);
- Writeln;
- END
- END;
-
- Procedure GetFunction;
-
- var I : INTEGER;
-
- BEGIN
- FOR i := 0 to maxgrad do killexpression(FormProg[i]); (* keinen Muell !! *)
- ClrScr;
- Writeln;
- Writeln('Bitte die zu untersuchende Funktion eingeben :');
- REPEAT
- readstr(functerm,1,5,sizeof(calc_string)-1,'f(x) = ');
- Gotoxy(1,8);
- FuncTerm := FuncTerm + ';'; (* EOP - Marker anfuegen *)
- compileExpression(FuncTerm,VarTable,FormProg[0]);
- CalcSimplify(FormProg[0]); (* CalcProgramm vereinfachen *)
- UNTIL CalcResult;
- Gotoxy(1,18);;
- Writeln('Bitte etwas Geduld - ich differenziere !');
- For i := 1 to maxgrad do (* und Ableitungen berechnen *)
- FormProg[i] := CalcDerivation(FormProg[i-1],VarTable,'X');
- showfunction
- END;
-
-
- Function fn (x :Real; k :Integer) :Real;
-
- (* k = 0: Berechnung des Funktionswertes *)
- (* 1: - der ersten Ableitung *)
- (* 2: - der zweiten - *)
- (* maximaler Grad steht in maxgrad *)
-
- Begin
- AssignVarI(VarTable,ArgPos,x); (* Argument zuweisen *)
- fn := CalcExpression(FormProg[k],VarTable);
- End;