Verbesserungen an der Math.NET API
Die Math.NET API wurde bisher v.a. im
Hinblick auf Flexibilität, Abtraktheit und dynamischer Term Generierung
(insbesondere via Parser) designt. Daneben sollte sie sich aber schon
seit Beginn als klassische API bewähren; dieser Aspekt wurde zugunsten
der Abstraktheit bisher allerdings stark vernachlässigt.
Ich
habe mir daher einige Anpassungen vorgenommen. Wichtigste Änderung
dürfte sein, dass die Operator Basisklassen neu Methoden für
Standardoperation wie die Addition un die Multiplikation zur Verfügung
stellen werden. Da alle entsprechenden Klassen von ihren Operator
Basisklassen erben sind diese Methoden sofort überall verfügbar.
Ausserdem harmonisieren diese Methoden bestens mit den neuen
algebraischen Schnittstellen wie IAlgebraicRing. Die Vereinfachung ist
jedoch erheblich:
Seien z.B. z1 und z2 zwei komplexe Zahlen. Wir wollen in z3 das negative Produkt dieser Zahlen.
bisher:
IComplexExpression z3 = new ComplexNegative(context,new ComplexMultiplication(context,z1,z2));
neu:
IComplexExpression z3 = z1.Multiply(z2).Negate();
Im
Hintergrund werden die neuen Methoden natürlich dasselbe machen wie
bisher. Auch werden nur eine kleine Auswahl an Operationen als Methoden
zur Verfügung gestellt werden, speziellere Operationen wie Sinus oder
die Exponentialfunktion werden weiterhin wie bisher angewandt werden.
Das ganze wird voraussichtlich in die nächste Release (0.18) verfügbar
sein.
Comments