-
Forum: Programmieren allgemein
by Medium,
11. Jul 2009
HEUREKA!
Ich hab zwar noch immer nicht kapiert was du im 2. Absatz meintest, aber mit Operatoren für M<T> * M<M<T>> und umgekehrt funktionniert es! :party:
Und dass diese schon ausreichen sollten um tiefere Verschachtelungen abzuhandeln leuchtet auch ein, zumindest so lange die beiden Multiplikanden sich nur um eine Verschachtelungstiefe unterscheiden. Und so arg wird's schon nicht mehr...
-
Forum: Programmieren allgemein
by Medium,
11. Jul 2009
Nicht die schlechteste Idee. hat lediglich den Beigeschmack, dass man neue Operatoren für jede neue Verschachtelungstiefe bräuchte, ich erwarte aber dass es nicht schlimmer als Matrix<Matrix<>> wird. Das wäre auch schon ein Monster-Konstrukt dann :D
Das werd ich gleich mal probieren!
Den versteh ich nun nicht. Sind sie doch :gruebel:
-
Forum: Programmieren allgemein
by Medium,
11. Jul 2009
C ist ein Matrix<double> und Q ist ein Matrix<Matrix<double>>. Heraus kommt dabei von Hand ein Matrix<Matrix<double>> mit Dimensionen 1x4, und inneren Matrizen der Dimension 1x2. Das Problem ist, dass der Compiler nicht C*Q, sondern C*Q versucht, was knallen muss da die Matrizen Q die Dimension 1x2 haben (und auch wenn es 4x1 wäre, immernoch zum falschen Ergebnis führen würde).
Edit: Halt...
-
Forum: Programmieren allgemein
by Medium,
11. Jul 2009
Ich versuche mal eine Formel die ich hier habe mit meinen ASCII Art Künsten *hust* hier zu präsentieren:
/ 1 \T / 1 0 0 0 \ / (0,0) (1,0) (0,0) (1,0) \ / 1 0 0 0 \T / 1 \
| v | | 0 0 1 0 | | (0,1) (1,1) (0,1) (1,1) | | 0 0 1 0 | | u |
| v^2 | * | -3 3 -2 -1 | * | (0,0) (1,0) (0,0) (0,0) | * | -3 3 -2 -1 | * | u^2 | = (x, y)
\ v^3 / \ -2 2 1 1 /...
-
Forum: Programmieren allgemein
by Medium,
11. Jul 2009
Tatsache, das klingt sinnvoll. Ich fummel da mal was.
Edit: Hm, dafür müsste ich aber schon zum Zeitpunkt der Erzeugung der Matrizen wissen, welchen Typ ein späterer Multiplikationspartner haben wird oder? Das weiss ich nämlich leider nicht.
Edit2: Ausserdem fällt mit mit einem 2. Typ die Klamotte mit den Delegates wie ein Kartenhaus zusammen, zumindest wenn ich es nicht völlig missverstanden...
-
Forum: Programmieren allgemein
by Medium,
11. Jul 2009
Fies.
Folgende Konstruktion:
Matrix<double> k1;
Matrix<Matrix<double>> Q, k2;
k2 = k1 * Q;
Hier ergibt sich eine nicht eindeutige Situation:
-
Forum: Programmieren allgemein
by Medium,
11. Jul 2009
Ich multipliziere jedoch eine Matrix<T> mit einer Matrix<Matrix<T>>, was wiederum eine Matrix<Matrix<T>> zurück liefern sollte. Glaub ich =)
Aber was Dax sagte kam mir vor 1min auch in den Sinn. Ich hab zwar die Matrizen mit welchem Inhalt auch immer abgedeckt, jeoch nicht den Fall Inhalt*Matrix bzw. umgekehrt, was ja am Ende dieser Kette ansteht. Das dürfte es gewesen sein, mal testen. Merci...
-
Forum: Programmieren allgemein
by Medium,
11. Jul 2009
Sooo, ich bin auf dem Wege, stoße aber gerade an.
Ich hab den Combiner um die Multiplikation erweitert:
public class Combiner<T>
{
public Func<T, T, T> Add {
get;
private set;
}
-
Forum: Programmieren allgemein
by Medium,
11. Jul 2009
Um ehrlich zu sein, gefällt mir das sogar garnicht schlecht! Und ich erwäge ernsthaft meine jetzt bereits bestehende 2-Klassen Lösung dafür zu opfern. Ich muss nur noch austüfteln wie ich da nun die Multiplikation mit umsetze, wobei ich, glaube ich, schon eine grobe Vorstellung hab. Phoenix' Bedenken waren nicht ungerechtfertigt - aber ich schein grad ne helle Minute zu haben :) Goßen Dank!
-
Forum: Programmieren allgemein
by Medium,
10. Jul 2009
:freak: Ooookay, klingt toll, aber bis ich das verstanden und umgesetzt habe dürfte es .NET 10 geben ;). Das ärgerliche ist für mich grad, dass das der aller erste Schritt von zig anderen nicht minder komplexen Dingen - ganz im Gegenteil - ist die vor mir liegen, und dass nur um mal was auszuprobieren. Ich dachte mir halt: Okay, fängste mit was einfachem an, ne Matrixklasse ist ja fix...
-
Forum: Programmieren allgemein
by Medium,
10. Jul 2009
Beide Varianten führen letztlich leider nicht zu dem, was ich mir so vorgestellt hatte. Mir ist es am wichtigsten, dass die Anwendung von Operatoren auf die Klasse Matrix am Ende so simpel ist wie auf primitive Datentypen. Der Grund ist, dass die Formeln die diese Matrizen enthalten an und für sich schon komplex genug sind, so dass formales "Rumgehampel" hier zu totaler Unübersichtlichkeit führen...
-
Forum: Programmieren allgemein
by Medium,
10. Jul 2009
Verdammt, ich bin auch gerade auf diverse Seiten gestoßen wo sich groß darüber ausgelassen wird, dass das ein riesen Leck in C# ist. Seit Jahren schon, und trotz vieler vorgeschlagener Wege das zu umgehen, ist keiner davon für mich wirklich geeignet (bzw. die die es wären, sind teils vollständige Parser mit 1000+ Zeilen... zu langsam, zu komplex - Sitchwort LINQ).
Warum zum Geier stoße ich bei...
-
Forum: Programmieren allgemein
by Medium,
10. Jul 2009
Moinmoin!
Ich implementiere gerade eine Matrix-Klasse in C#, und brauche diese mit generischem Typ. Hintergrund ist, dass eine Matrix wiederum Matrizen als Elemente beinhalten können muss, dies aber nicht zwangsweise tut. Es kommen also auch normale Typen wie Double oder Integer vor.
Das Problem hier ist nun, dass der Compiler (zurecht) meckert, dass die Operatoren die ich da überlade nicht...