CODESYS Math Libraries
Einleitung
CODESYS Math Libraries enthält die Bibliothek Matrix und die interne Bibliothek FloatingPointUtils. Die Bibliothek Matrix kann für die Darstellung von Matrizen beliebiger Dimension sowie für grundlegende mathematische Operationen auf Matrizen verwendet werden. Folgende Operationen werden dabei unterstützt: Addition, Multiplikation, Lösung von linearen Gleichungssytemen, Invertieren und Berechnung der Determinante.
Produktbeschreibung
Die Bibliothek Matrix bietet einen Datentypen für Matrizen beliebiger Dimension sowie grundlegende Operationen auf Matrizen.
Datentypen und Funktionen
Matrizen werden durch den Datentypen mtx.Matrix abgebildet. Der Datentyp mtx.Matrix speichert eine Matrix als ARRAY von LREAL-Werten. Die Werte sind zeilenweise abgelegt.
Grundlegende arithmetische Operationen werden als Funktionen angeboten, die 3 Matrizen als VAR_IN_OUT-Argumente haben: Ergebnis, Quelle, Ziel. Die Funktion zum Addieren von Matrizen hat beispielsweise folgende Schnittstelle:
(* Adds two matrices : C := A + B. * A, B, and C must have identical dimensions. * Note: A, B, and C may all be the same matrix. *) FUNCTION AddM : ResultCode VAR_IN_OUT C : Matrix ; (* The result *) A : Matrix ; (* The first summand *) B : Matrix ; (* The second summand *) END_VAR
Folgende arithmetische Operationen sind enthalten:
Addition von Matrizen (elementweise):
AddMSubtraktion von Matrizen (elementweise):
SubMMultiplikation von Matrizen (elementweise):
TimesMDivision von Matrizen (elementweise):
RDivideMMultiplikation einer Matrix mit einem Skalar:
MultMSMultiplikation von Matrizen:
MultMTransponieren einer Matrix:
TransposeM
Außerdem gibt es einige Hilfsfunktionen, um Matrizen zu initialisieren, zu kopieren und auf Elemente zuzugreifen:
Initialisierung durch
ARRAYvon Werten:InitMatrixKopieren von Elementen aus einem
ARRAY:CopyElemsKopieren von Matrizen gleicher Dimension:
CopyMatrixInitialisierung zur Einheitsmatrix:
IdentityMatrixInitialisierung zur Nullmatrix:
ZeroMatrixElemente lesen und schreiben:
Elem,SetElem
Zusätzlich gibt es noch einige komplexere Funktionen:
Lösung eines linearen Gleichungssystems
A * X = B:SolveLUInvertierung einer quadratischen Matrix:
InvertLUBerechnung der Determinante einer quadratischen Matrix:
DeterminantLUBestimmung einer
LU-Zerlegung (diese Zerlegung dient als Basis für die obigen drei Funktionen):DecomposeLU
Speicherverwaltung
Die Speicherverwaltung wird dem Nutzer der Bibliothek überlassen. Matrizen werden durch Übergabe eines Zeigers auf den Speicher (über die Funktion InitMatrix) initialisiert. Je nach Anwendung kann der Anwender den Speicher passend bereitstellen. Darüber hinaus gibt es noch die Hilfsbausteine MatrixS, ColVectorS und RowVectorS, die Matrizen über ARRAYs konstanter Größe initialisieren. Sie implementieren die Schnittstelle IMatrixAllocator, die auch dem Anwender offen steht.