Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Matrix Programmieren


Vitalic - Mo 24.05.10 18:28
Titel: Matrix Programmieren
Hallo alle zusammen,

ich würde gerne folgende Matrix in C# lösen.


x2-x1 y2-y1 z2-z1 | k1
x3-x1 y3-y1 z3-z1 | k2
x4-x1 y4-y1 z4-z1 | k3

Um nun x, y und z zu berechnen kann man die Werte z.B. in den Taschenrechner eingeben und man bekommt die Lösung für die x,y,z-Koordinaten heraus.

Man kann sicherlich auch die Gleichung ausrechnen, bekommt aber eine sehr große Rechnung, die mühsam abzutippen ist.

Es muss also eine Möglichkeit geben das ganze einfacher zu berechnen?

Danke für die Mühe!!!

Grüße

Vitalic


BenBE - Mo 24.05.10 18:35

Was genau, willst Du berechnen? Wie hängen die Zahlen zusemmen?

Mein Post-Compiler meint nur
E0815: Post unverständlich: Inkompatible Reihenfolge von Schreiben und Denken.


Hidden - Mo 24.05.10 18:36

Hi :)

Ich bin mir nicht ganz sicher: Den Algorithmus von Gauß und Jordan(Erweiterung des klassischen Gauß aus der Schule) kennst du?
Wenn nicht, würde ich mir einmal die Quelltexte in den Artikeln der Deutschen und Englischen Wikipedia ansehen.

Oder geht es dir um die Darstellung, also einen möglichst eleganten Datentyp für diese Matrix?

lg,


Vitalic - Mo 24.05.10 19:05

Hallo,

also ich habe folgende Gleichung.

(x2-x1)x0+(y2-y1)y0+(z2-z1)z0=k1
(x3-x1)x0+(y3-y1)y0+(z3-z1)z0=k2
(x4-x1)x0+(y4-y1)y0+(z4-z1)z0=k3

So sieht dann die Matrix aus:

x2-x1 y2-y1 z2-z1 | k1
x3-x1 y3-y1 z3-z1 | k2
x4-x1 y4-y1 z4-z1 | k3

und ich möchte nun die Lösung Programmieren, also die Werte für

x = ?
y = ?
z = ?

Wenn ich das rechnerisch mache, dann kommt eine viel zu lange Lösung raus.
Muss also auch hierfür einen einfachen Algorithmus geben.

Grüße

Vitalic


Hidden - Mo 24.05.10 19:30

Hallo :D

Dann lies einfach meinen Post - Algorithmus von Gauß und Jordan. Und eigentlich solltet ihr den Gauß in Mathe gehabt haben.
Dass im allgemeinen Fall so komplizierte Gleichungen rauskommen liegt daran, dass man beim Programmieren die konkreten Werte noch nicht kennt. Der Algo ist auch genau das, was dein Taschenrechner macht, nachdem du die Zahlen kennst und eingegeben hast.

lg,


Vitalic - Mo 24.05.10 19:34

Hallo,

es ist mir klar wie Gauß und Jordan Algorithmus geht.

Nur den anzuwenden und zu programmieren sind 2 verschiedene Sachen :D

Grüße

Vitalic


BenBE - Mo 24.05.10 20:11

Du musst dich im Wesentlichen erstmal drauf einigen, wie du deine Matrix aufbaust. Ob Du Zeilen oder Spalten im ersten Index angibst und dann schaust Du mal kurz bei der Mathe-Bibliothek deines Vertrauens [http://omorphia.svn.sourceforge.net/viewvc/omorphia/trunk/omorphia/source/library/OMathMatrix.pas?revision=705&view=markup] die Funktion SolveLES an, die zeigt es Beispielhaft, wie's geht.