FC_MatrixDeterminant

 

FC_MatrixDeterminant - Allgemeine Informationen

Übersicht

Typ

Funktion

Verfügbar ab:

V1.0.3.0

Versionen:

Aktuelle Version

Aufgabe

Berechnung der Determinante einer quadratischen Matrix.

Beschreibung

Liefert die Determinante einer quadratischen Matrix der Dimension i_diDim x i_diDim zurück. Der Zeiger i_plrMatrix muss auf den Beginn des Speicherbereichs zeigen, in dem die Matrix abgelegt ist.

Mit Hilfe der Determinante einer Matrix kann z. B. folgende Aussage über das zugrundeliegende Gleichungssystem getroffen werden:

oIst die Determinante der Koeffizientenmatrix ungleich null, so ist das Gleichungssystem eindeutig lösbar.

Schnittstelle

Eingang

Datentyp

Beschreibung

i_diDim

DINT

Zeilen-/Spaltenzahl der quadratischen Matrix. Muss >= 2 sein.

i_lrZeroLimit

LREAL

Numerische Nullgrenze. Matrixelemente, die betraglich kleiner als diese Zahl sind, werden als null betrachtet. Dient dazu, die Rundungsfehlerfortpflanzung zu begrenzen. Der günstigste Wert hängt von den numerischen Eigenschaften der Matrix ab. Muss > 0,0 sein. Ein gängiger Wert ist beispielsweise 1E-12.

i_plrMatrix

POINTER TO LREAL

Zeiger auf den Beginn des Speicherbereichs, in dem die Matrix abgelegt ist, deren Determinante berechnet werden soll.

Ausgang

Datentyp

Beschreibung

q_etDiag

GD.ET_Diag

Allgemeingültige, bibliotheksunabhängige Aussage zur Diagnose.

Ein Wert ungleich ET_Diag.Ok entspricht einer Diagnosemeldung.

q_etDiagExt

ET_DiagExt

POU-spezifischer, diagnosebezogener Ausgang.

q_etDiag = ET_Diag.Ok -> Statusmeldung

q_etDiag <> ET_Diag.Ok -> Diagnosemeldung

q_lrDeterminant

LREAL

Determinante der quadratischen Matrix i_plrMatrix.

Hinweise

oDieser Funktionsbaustein benötigt i_diDim * i_diDim * SIZEOF(LREAL) Bytes dynamischen Speicher. Es muss daher sichergestellt sein, dass der Parameter LMCx00C\C\Konfiguration\Programm\DynIECDataSize (gesamter zur Verfügung stehender dynamischer Speicher) auf einen hinreichend großen Wert gesetzt ist.

oDie korrekte Größe des Speicherbereichs, auf den der Zeiger i_plrMatrix verweist (mindestens i_diDim * i_diDim LREALs), muss sorgfältig geprüft werden, da der Funktions­baustein sonst einen Speicherzugriffsfehler verursacht.

oFür die Belegung von Elementen der Matrix steht die Funktion FC_SetMatrixElement() zur Verfügung.

oIst die Matrix durch ein Array gegeben, so kann diese auch direkt (ohne Benutzung der zuvor genannten Hilfsfunktion) belegt werden. Der erste Index des Arrays ist dann der Zeilenindex der Matrix, der zweite der Spaltenindex.

Diagnosemeldungen

q_etDiag

q_etDiagExt

Enumerationswert

Beschreibung

OK

Ok

0

OK

ControllerConditionInvalid

DynIecDataSizeTooSmall

75

Es ist zu wenig dynamischer Speicher reserviert.

InputParameterInvalid

DimRange

72

Dim ist außerhalb des gültigen Bereichs.

InputParameterInvalid

PointerMatrixInvalid

69

Der Zeiger Matrix ist ungültig.

InputParameterInvalid

ZeroLimitRange

74

ZeroLimit ist außerhalb des gültigen Bereichs.

UnexpectedProgramBehavior

UnexpectedFeedback

1

Es ist ein unbeabsichtigter Fehler während der Ausführung aufgetreten.

DimRange

Enumerationsname:

DimRange

Enumerationswert:

72

Beschreibung:

Dim ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang i_diDim wurde ein ungültiger Wert übergeben.

Es muss gelten: i_diDim > 1

DynIecDataSizeTooSmall

Enumerationsname:

DynIecDataSizeTooSmall

Enumerationswert:

75

Beschreibung:

Es ist zu wenig dynamischer Speicher reserviert.

Problem

Ursache

Lösung

-

Es steht kein oder nicht genügend dynamischer Speicher zu Verfügung.

Erhöhen Sie den dynamischen Speicher Controller  > Konfiguration > Programm > DynIECDataSize.

Ok

Enumerationsname:

Ok

Enumerationswert:

0

Beschreibung:

OK

Die Determinante wurde erfolgreich berechnet.

PointerMatrixInvalid

Enumerationsname:

PointerMatrixInvalid

Enumerationswert:

69

Beschreibung:

Der Zeiger Matrix ist ungültig.

Problem

Ursache

Lösung

-

Am Eingang i_plrXMatrix wurde ein Nullzeiger übergeben.

Dem Eingang i_plrXMatrix muss die Addresse des Speichers übergeben werden, in dem die Matrix liegt.

UnexpectedFeedback

Enumerationsname:

UnexpectedFeedback

Enumerationswert:

1

Beschreibung:

Es ist ein unbeabsichtigter Fehler während der Ausführung aufgetreten.

Problem

Ursache

Lösung

-

Es ist ein Fehler in der internen Abarbeitung aufgetreten.

Bitte informieren Sie das Supportteam über diesen Fehler.

ZeroLimitRange

Enumerationsname:

ZeroLimitRange

Enumerationswert:

74

Beschreibung:

ZeroLimit ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang i_lrZeroLimit wurde eine Zahl <= 0 angelegt.

i_lrZeroLimit muss größer sein als 0.