deutsch | english | français  
Header: cdrnet - Math.NET Symbolics: Yttrium - Architecture


Math.NET Symbolics: Yttrium - Architektur

Die Yttrium Architektur ist ein experimenteller Versuch der Vereinigung abstrakter Mathematik mit Ideen und Konzepten des formalen Hardware Engineerings und der digitalen Informationstechnik.

Schwächen der Classic Architektur

Math.NET Symbolics Classic funktionierte zwar gut und war relativ einfach im Handling, hatte aber entscheidende Schwächen: Erstens war es hart auf mathematisch flache Datentypen typisiert. Wenn man damit einen 'Ausdrucksbaum' für reelle Zahlen aufgebaut hat konnte man ihn nicht einfach auf komplexe Zahlen (oder modulare Ringe, Vektoren, etc.) ausweiten, auch wenn entsprechend analoge Operationen auf für komplexe Zahlen definiert gewesen wären. Weiters konnte man erweiterte Strukturen (z.b. einen bipartiten Graphen) zwar durch eigene Klassen selber implementieren, nicht aber durch 'Ausdrucksbäume' selber nativ darstellen um direkt von der ganzen bestehenden Infrastruktur profitieren zu können. Nicht zuletzt basiert Classic auf eben solchen rekursiv aufgebauten Ausdrucksbäumen, repräsentiert durch die oberste Operation - viel interessanter wäre jedoch oft der Systemgedanke, die Analyse von Systemzusammenhängen, der jedoch solche Bäume kaum gerecht werden. Oder wie würde man in Maple einen adaptiven Filter oder ein Regelsystem modellieren, ohne auf Matrizen ausweichen zu müssen?

Der Yttrium Kern

Architecture DiagramWichtigstes Element in Yttrium sind Signale. Signale haben gewissen Ähnlichkeiten mit Variablen, sind aber viel mehr (klassische Variablen gibt es in Yttrium nicht). Signale können einen Wert und verschiedene Eigenschaften annehmen. Sie bilden die Basis, auf der mit Ports Struktur aufgebaut werden kann. Signale können zwar beliebig viele Ports treiben (Signalausgang) aber selber von höchstens einem Port getrieben werden (Signaleingang). Neben Signalen gibt es auch noch Busse. Ein Bus kann gleichzeitig einen Port treiben wie von ihm getrieben werden, es wird also nicht zwischen Ein- und Ausgang unterschieden.

Den Einstieg zu Struktur bestimmen Entities. Ein Entity definiert die Schnittstelle der Struktur (insbesondere die Anzahl der ein- und ausgehenden Signalen) und beschreiben somit Ports. Beispielsweise könnte ein Additionsentity zwei Eingänge und einen Ausgang fordern. Anhand eines Entity kann dann ein Port instantiert und mit Signalen verknüpft werden. Entities können auch generisch sein - so hat das in der Standardbibliothek definierte Additionsentity in Wirklichkeit nicht zwei sondern beliebig viele Eingänge und genau einen Ausgang. Vor dem Instantieren in einen Port müssen generische Entities aber den Umständen entsprechend in nongenerische Entities 'kompiliert' werden.

Letztes wichtiges Element ist die Architektur, der eigentliche Träger der Logik und der mathematischen Operationen. Abhängig von den mit dem Port verbundenen Signalen kann ein Port eine Architektur laden und gegebenenfalls auch beliebig wechseln. So kann ein mit einem Additionsentity verknüpfter Port eine Vektoradditions-Architektur laden falls statt nummerische Werte auf einmal Vektoren an die Signale angelegt werden und die bestehende Architektur nicht beides unterstützt. Architekturen sind an Entities gebunden, auf einen Additionsentity-Port kann also keine Divisions-Architektur geladen werden.

Eine Architektur kann direkt implementiert oder auch durch einen oder mehrere Prozesse modelliert werden. Prozesse können auf Signale sensitiv sein - sie werden nur dann aktiv wenn sich an mindestens einem Signal etwas geändert hat. Alle Prozesse verlaufen parallel (gesteuert durch den internen Scheduler). Ein Prozess kann auch als zusammengesetzter Compound Process modelliert werden, der eine ganze Signal-Port Struktur kapselt. Somit werden hierarchische Modelle möglich und die Wiederverwendbarkeit erleichtert.

Interaktion im Yttrium Kern

Die genannten Elemente beschreiben alle die Struktur eines (Netzwerk-) Systemes sowie dessen Datenfluss. Zentrales Element eines Computer Algebra System ist aber die Manipulation von solchen Systemen. In Yttrium gibt es verschiedene Möglichkeiten in Systeme einzugreifen, die wichtigste basiert auf Transformationstheoremen*, eine spezielle Art von Theoremen die Morphismen zwischen verschiedenen Teilsystemen beschreiben und auch ausführen können. So gibt es in der Standardbibliothek beispielsweise ein Transformationstheorem, das besagt, dass die Ableitung einer Summe der Summe der abgeleiteten Summanden entspricht. Dieses Theorem kann entsprechend von der Ableitungsarchitektur genutzt werden um auch Summen ableiten zu können.

* Transformationstheoreme sind keine grossartigen mathematischen Konstrukte, sondern simple Umformungsregeln.

Mehr Details zu den Signalen

In der Mathematik gibt es viele Bedingungen die eingehalten werden müssen. So gibt es viele Operationen die nur auf positive reelle Zahlen angewendet werden können, oder Vereinfachungen die nur gelten falls das Signal nur Ganzzahlen annehmen kann. Desshalb können Signale beliebig viele Eigenschaften annehmen und unterhalten. Eine spezielle Art von Eigenschaft ist die Mitgliedschaft einer Kategorie. Signale bieten auch weitere Funktionalitäten, wie z.B. das "Halten" (damit wird es vorübergehend als Quellsignal ("Variable") behandelt), oder Algorithmen die graphentheoretische Eigenschaften wie Zyklen überwachen.

Math.NET Symbolics: Yttrium

:. Überblick
:. Download
:. FAQ
:. Architektur
:. Features
:. Dokumentation
:. Demos
:. Links
:. Lizenz

Math.NET Projekt
:. Übersicht
:. Project News Blog
:. Forum/Discussion

:. Symbolics: Classic
:. Symbolics
:. Numerics
:. SignalProcessing

Kontakt
:. Kontaktforumular

SourceForge Workspace
SourceForge Logo