CODESYS Math Libraries
Introduzione
CODESYS Math Libraries include Matrice libreria e interno FloatingPointUtils libreria. Matrix
la libreria supporta matrici di dimensioni arbitrarie e operazioni matematiche di base su di esse. Sono supportate le seguenti operazioni: addizione, moltiplicazione, risoluzione di equazioni lineari, inversione
Descrizione del prodotto
Le Matrix
la libreria fornisce un tipo di dati per definire matrici di dimensioni arbitrarie e funzioni per eseguire operazioni di base sulle matrici.
Tipi di dati e funzioni
Le matrici sono definite tramite mtx.Matrix
tipo di dati. mtx.Matrix
il tipo di dati salva una matrice come ARRAY
di LREAL
. L'array è in forma di riga principale
Le operazioni matematiche di base sono fornite come funzioni che hanno 3 matrici come VAR_IN_OUT
argomento: risultato, origine, destinazione. Ad esempio, la funzione per l'aggiunta di matrici ha la seguente interfaccia:
(* 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
La libreria offre le seguenti operazioni matematiche:
Addizione di matrici (per elemento):
AddM
Sottrazione di matrici (per elemento):
SubM
Moltiplicazione di matrici (per elemento):
TimesM
Divisione delle matrici (per elemento):
RDivideM
Moltiplicazione scalare di una matrice:
MultMS
Moltiplicazione di matrici:
MultM
Trasposizione di una matrice:
TransposeM
Esistono anche alcune funzioni ausiliarie per inizializzare le matrici, copiare e accedere agli elementi:
Inizializza una matrice con un
ARRAY
di valori:InitMatrix
Copia
ARRAY
elementi da inserire nella matrice:CopyElems
Copia matrici con la stessa dimensione:
CopyMatrix
Inizializza come matrice di identità:
IdentityMatrix
Inizializza come matrice zero:
ZeroMatrix
Leggere e scrivere elementi:
Elem
,SetElem
Sono previste anche operazioni più complesse:
Risolvere un'equazione lineare
A * X = B
:SolveLU
Invertire una matrice quadratica:
InvertLU
Calcola il determinante di una matrice quadratica:
DeterminantLU
Determinare un
LU
decomposizione (questa decomposizione serve come base per le tre funzioni precedenti):DecomposeLU
Gestione della memoria
L'utente è responsabile della gestione della memoria. Le matrici verranno inizializzate con un puntatore alla memoria InitMatrix
funzione). In alcuni casi, è possibile che l'utente fornisca una memoria adeguata. Inoltre, i blocchi funzionali ausiliari MatrixS
, ColVectorS
, e RowVectorS
può essere usato per inizializzare matrici con arrays di dimensioni costanti. IMatrixAllocator
interfaccia che è disponibile anche per l'utente.