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):
AddM
Subtraktion von Matrizen (elementweise):
SubM
Multiplikation von Matrizen (elementweise):
TimesM
Division von Matrizen (elementweise):
RDivideM
Multiplikation einer Matrix mit einem Skalar:
MultMS
Multiplikation von Matrizen:
MultM
Transponieren einer Matrix:
TransposeM
Außerdem gibt es einige Hilfsfunktionen, um Matrizen zu initialisieren, zu kopieren und auf Elemente zuzugreifen:
Initialisierung durch
ARRAY
von Werten:InitMatrix
Kopieren von Elementen aus einem
ARRAY
:CopyElems
Kopieren von Matrizen gleicher Dimension:
CopyMatrix
Initialisierung zur Einheitsmatrix:
IdentityMatrix
Initialisierung zur Nullmatrix:
ZeroMatrix
Elemente lesen und schreiben:
Elem
,SetElem
Zusätzlich gibt es noch einige komplexere Funktionen:
Lösung eines linearen Gleichungssystems
A * X = B
:SolveLU
Invertierung einer quadratischen Matrix:
InvertLU
Berechnung der Determinante einer quadratischen Matrix:
DeterminantLU
Bestimmung 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.