DEFINITION MODULE Differ;
(*------------------------------------------------------------------------*)
(* Modul zur Berechnung von numerischen Gradienten *)
(* Module for calculation of numerical gradients *)
(*------------------------------------------------------------------------*)
(* Implementation : Michael Riedl *)
(* Licence : GNU Lesser General Public License (LGPL) *)
(*------------------------------------------------------------------------*)
(* $Id: Differ.def,v 1.2 2016/10/04 07:52:09 mriedl Exp mriedl $ *)
FROM LMathLib IMPORT Funktion1;
PROCEDURE Ableit1p5(VAR Y : ARRAY OF LONGREAL; (* ==> Funktionswerte *)
VAR dY : ARRAY OF LONGREAL; (* <== Erste Ableitung *)
dH : LONGREAL; (* Schrittweite *)
n : CARDINAL); (* Anzahl Datenpunkte *)
(*-----------------------------------------------------------------*)
(* Berechnet in dY die gen"aherte erste Ableitung einer in Y als *)
(* Werte vorgegebenen Funktion nach einer f"unf - Punkte - Formel. *)
(* Die Randwerte werden nach anderen, schlechteren Formeln be- *)
(* rechnet. Die Funktion mu\3 dabei mit der Schrittweite dH ausge- *)
(* wertet worden sein. *)
(* Die globale Variable Errors.Fehler wird auf TRUE gesetzt, wenn *)
(* (n < 3) oder (dH <= 0.0). *)
(* Lit.: Bronstein-Semendjajew, Taschenbuch der Mathematik. (768) *)
(*-----------------------------------------------------------------*)
PROCEDURE Ableit1p7(VAR Y : ARRAY OF LONGREAL; (* ==> Funktionswerte *)
VAR dY1 : ARRAY OF LONGREAL; (* <== Erste Ableitung *)
dH : LONGREAL; (* Schrittweite *)
N : CARDINAL); (* Anzahl Datenpunkte *)
(*-----------------------------------------------------------------*)
(* Berechnet in dY die gen"aherte erste Ableitung einer in Y als *)
(* Werte vorgegebenen Funktion nach einer sieben Punkte - Formel. *)
(* Die Randwerte werden nach anderen, schlechteren Formeln be- *)
(* rechnet. Die Funktion mu\3 dabei mit der Schrittweite dH ausge- *)
(* wertet worden sein. *)
(* Die globale Variable Errors.Fehler wird auf TRUE gesetzt, wenn *)
(* (n < 7) oder (dH <= 0.0). *)
(* Lit.: Bronstein-Semendjajew, Taschenbuch der Mathematik. (768) *)
(*-----------------------------------------------------------------*)
PROCEDURE Ableit2p5(VAR Y : ARRAY OF LONGREAL; (* ==> Funktionswerte *)
VAR dY1 : ARRAY OF LONGREAL; (* <== Erste Ableitung *)
dH : LONGREAL; (* Schrittweite *)
n : CARDINAL); (* Anzahl Datenpunkte *)
(*----------------------------------------------------------------*)
(* Berechnet die zweite Ableitug der in Y gespeicherten *)
(* Funktionswerte, mit Y[i]:=f(X[i]), nach einer 5-Punkte- *)
(* methode, wobei Randwerte anders ( schlechter !) berechnet *)
(* werden. *)
(* Die X_i M"USSEN equvidistant liegen ! *)
(* n > 5 notwendig, ansonsten Fehlermeldung ! *)
(* dY2 : 2. Ableitungen an den Stellen X_i *)
(*----------------------------------------------------------------*)
PROCEDURE Ableit2p7(VAR Y : ARRAY OF LONGREAL; (* ==> Funktionswerte *)
VAR dY2 : ARRAY OF LONGREAL; (* <== Zweite Ableitung *)
dH : LONGREAL; (* Schrittweite *)
n : CARDINAL); (* Anzahl Datenpunkte *)
(*----------------------------------------------------------------*)
(* Berechnet die zweite Ableitug der in Y gespeicherten *)
(* Funktionswerte, mit Y[i]:=f(X[i]), nach einer 7-Punkte- *)
(* methode, wobei Randwerte anders ( schlechter !) berechnet *)
(* werden. *)
(* Die X_i M"USSEN equvidistant liegen ! *)
(* n > 7 notwendig, ansonsten Fehlermeldung ! *)
(* dY2 : 2. Ableitungen an den Stellen X_i *)
(*----------------------------------------------------------------*)
PROCEDURE AbleitN(VAR X,Y : ARRAY OF LONGREAL;
VAR dY : ARRAY OF LONGREAL;
ndata : CARDINAL;
Grad : CARDINAL;
NAbl : CARDINAL);
(*----------------------------------------------------------------*)
(* Berechnet die n. Ableitung der in X,Y "ubergabenen Daten *)
(* *)
(* ==> X,Y : Daten. *)
(* <== dY : 1. Ableitung von Y an den Stellen X_i . *)
(* ==> ndata : Anzahl der Datenpunkte in X,Y. *)
(* ==> Grad : Anzahl der gew"unschten St"utzstellen. *)
(* ==> NAbl : Ordnung der gew"unschten Ableitung. *)
(* *)
(* Die X_i m"ussen nicht equvidistant liegen, wie es bei den *)
(* anderen Ableitungsprozeduren der Fall ist. Allerdings mu\3 *)
(* Grad mindestens NAbl + 1 und die Anzahl der Datenpunkte mu\3 *)
(* mindestens Grad + 2 betragen. *)
(*----------------------------------------------------------------*)
PROCEDURE Ableit1und2( X : LONGREAL;
H : LONGREAL;
Funk : Funktion1;
VAR Y1,Y2 : LONGREAL);
(*----------------------------------------------------------------*)
(* Berechnet die 1. und die 2. Ableitung f"ur eine Funktion Funk *)
(* nach dem Zweipunkt- bzw. Dreipunkt-Verfahren. *)
(* X : Argumentwert der Funktion F, an dem die Ableitungen *)
(* berechnet werden *)
(* H : Schrittweite *)
(* Y1 : Numerisch bestimmte 1. Ableitung von F an der Stelle X *)
(* Y2 : Numerisch bestimmte 2. Ableitung von F an der Stelle X *)
(*----------------------------------------------------------------*)
END Differ.