[OpenSource] SharpMath 1.14.7 - Mathematikbibliothek

    • Release
    • Open Source

    Es gibt 43 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.

      Naja, VectorUtils.IsParallel(first, second); passt ja nicht so wirklich. Das müsste ja eher 'Are' sein. Und bei first.IsParallel(second) fehlt dann das 'To' schon irgendwie. Im zweiten Fall könnte man sogar noch verzichten, aber im Ersten klingt es imo schon etwas komisch. Das war der Anreiz dafür.

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      Update auf Version 1.14.5
      • Added Canvas2D for representing functions and vectors graphically
      • Added FunctionWrapper for representing functions using Lambda-expressions
      • Added generic ISquareMatrix<T> interface for implementing type-specific ISquareMatrix-properties
      • Internal preparements for the Matrix.GetCore feature and some other functions
      • Changed the frameworks of the available test projects to .NET 4.0
      • Code improvements
      • ...
      Danke an @Nikx, der das Canvas entwickelt und dieses für SharpMath zur Verfügung gestellt hat.
      Dieses ist im Moment erst in einer Alpha-Version und noch nicht ganz fertiggestellt. Bekannte Probleme sind unter anderem, dass teils noch eine OverflowException auftreten kann. Das Ganze wird noch verbessert und behoben, grundsätzlich funktioniert aber schon mal alles und das ist eine solide Basis.

      Dazu die entsprechenden Issues:Beispiel:




      In naher Zukunft könnte auch ein dreidimensionaler Canvas für die Darstellung von Vector3 in Betracht kommen. Entsprechend könnten dafür ja die integrierten Projektionsmatrizen verwendet werden, da alles hier auf GDI+ aufbaut.
      Im Rahmen dieses Presentation-Namespaces sind auch weiterhin Analysis-Features geplant, um dann z.B. auch die Funktionen nochmal gesondert darzustellen, Ableitungen zu bilden, usw. Das wird allerdings noch dauern.

      Die Downloads und das Klassendiagramm wurden im Startpost aktualisiert.

      Viel Spaß!
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      Moin,

      ich weise in diesem Sinne auch nochmal darauf hin, dass der Canvas im jetztigen Zustand Alpha ist. Das Zooming funktioniert zwar, aber relativ abgefuckt, es kann an manchen Stellen noch zu OverflowErrors kommen, und die Farbcustomization leidet noch sehr. Sobald all das behoben ist (ich hoffe noch diese Woche), gibts den Canvas auch als Einzelcontrol. Zudem hoffe ich, noch paar Features reinzubringen, die mathematische Beziehungen darstellen können. Sobald das gemacht ist kommt der 3D-Canvas.

      Grüße
      "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

      Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
      Update auf Version 1.14.7

      • Fixed that constants (Math.E, Math.PI, ...) were not parsed correctly. Now they are handled differently to ensure that the interpretation is working properly.
      • Fixed that specific terms were not evaluated correctly. Now all kinds of combinations should evaluate correctly and deliver the right result.
      • Added specific exception throwing in Algorithms.ShuntingYard, if the terms don't satisfy formal, mathematical conditions. Expressions like e3, pi2 or sin(3)cos(3) do not evaluate any longer.

      Vorher war es entsprechend möglich, die im letzten Punkt genannten Ausdrücke zu parsen. Der Stapel wurde eben abgelaufen und am Ende das zuletzt hinzugefügte Element ausgegeben. Dieses Verhalten haben mehrere Parser, die die RPN samt ShuntingYard benutzen, wie ich festgestellt habe. Formal macht es aber natürlich keinen Sinn und das Ergebnis erst recht nicht. Daher habe ich kurzerhand einfach 'ne Exception implementiert, wenn man versucht, solche Ausdrücke zu parsen. Da sich das Ganze Zeugs über logische Verknüpfungen dann eigenständig vernetzt und andere Sachen automatisch ausschließt, macht das denke ich relativ viel Sinn. Deshalb sind es auch nur 2 Abfragen, in denen ich hoffentlich nichts vergessen habe.^^
      Zudem gab es anscheinend noch Probleme mit den Prioritäten der Operatoren. Gewisse Terme wurden daher falsch ausgewertet, was aber jetzt behoben sein sollte. Konstanten (E, PI, ...) konnten zudem in gewissen Verbindungen mit anderen Operatoren nicht geparst werden, da ich sie zunächst als Funktionen behandelt hatte, was beim Konvertieren in Postfix-Tokens zu Komplikationen in der Reihenfolge führte und somit schlug das Ablaufen des Stapels immer fehl. Daher habe ich einen neuen TokenType eingeführt, der diese repräsentiert und den von der Priorität her einfach mit den Zahlen gleichgesetzt. Und nun sollte das hinhauen.

      Bin auch gerade an 'nem kleinen Beispielprojekt für den Parser dran:




      Download befindet sich wie immer Startpost.

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: