19.9 Komponente gb.gsl
Die Komponente gb.gsl zielt darauf ab, die meisten Features der <color red/white>G</color>NU <color red/white>S</color>cientific <color red/white>L</color>ibrary umzusetzen. Gegenwärtig fügt sie die Unterstützung für komplexe Zahlen, Vektoren, Matrizen und Polynome ein.
Die Koeffizienten der Vektoren, Matrizen und Polynome können reelle Zahlen oder komplexe Zahlen sein. Darüber hinaus ermöglicht die Komponente die Standard-Rechenoperatoren wie zum Beispiel +, -, *, /, ^, Abs() oder die Relationen = und <> für alle diese o.a. Objekte und bietet automatische Konvertierungen zwischen ihnen. Vektoren und Polynome werden transparent zu und in Arrays umgewandelt.
Hinweis
Beachten Sie, dass die Komponente gb.gsl nicht abgeschlossen ist und nur ein Teil der <color red/white>GSL</color>-Bibliothek implementiert wurde. Dies gilt auch für die arithmetischen Operatoren. Momentan (Stand Gambas 3.5.2.) ist z.B. Polynomdivision noch nicht implementiert, Polynomaddition hingegen schon.
Die Komponente gb.gsl enthält die folgenden Klassen:
- Complex (→ Kapitel 20.13)
- GSL
- Matrix
- Polynomial
- Vector
Beispiel für die Erzeugung einer Matrix und Anzeige der Elemente sowie der Determinante:
Public Sub btnCreateMatrix_Click() Dim hMatrix As Matrix Dim aRow As Array Dim iCount As Integer Dim vDeterminante As Variant hMatrix = Matrix.Identity(5, 5, False) ' hMatrix = New Matrix(5, 5, False) ' Alternative über Constructor hMatrix.SetRow(0, [1.2, 2.0, 3.5, -4, 5]) hMatrix.SetRow(1, [6, -7, 8, -9, 0]) hMatrix.SetRow(2, [11, -2, 23, 4, 8]) hMatrix.SetRow(3, [1.5, 2.6, 4, 6.3, -3]) hMatrix.SetRow(4, [-1, -2, -3, 4, -33]) Print hMatrix.ToString(True) ' Ausgabe mit Komma (Locale DE) For iCount = 0 To hMatrix.Height – 1 Print hMatrix.Row(icount) Next ' iCount vDeterminante = hMatrix.Det() Print "Wert der Determinante = "; vDeterminante ' Print hMatrix.Det() '' Alternative End ' btnCreateMatrix_Click()
Ausgabe in der Konsole:
[[1,2 2 3,5 -4 5][6 -7 8 -9 0][11 -2 23 4 8][1,5 2,6 4 6,3 -3][-1 -2 -3 4 -33]] [1,2 2 3,5 -4 5] [6 -7 8 -9 0] [11 -2 23 4 8] [1,5 2,6 4 6,3 -3] [-1 -2 -3 4 -33] Wert der Determinante = 21956,95
