Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Prism Lösungsweg herausfinden (https://www.delphipraxis.net/84424-loesungsweg-herausfinden.html)

Admirandis 16. Jan 2007 18:56


Lösungsweg herausfinden
 
Hi an alle zusammen!

Ich habe folgendes Problem: Ich schreibe ein Programm, welches Matrizen lösen soll. Also mehrere Gleichungssysteme und damit rechnen. Nun habe ich folgendes Problem: Man muss bei meinem Algorithmus bestimmte Lösungsvariablen herausfinen, welche in jeder Zeile und Spalte jeweils nur einmal vorkommen dürfen und welche nicht Null sein dürfen.
Nun muss man also eine Art "Pfad" heraussuchen, welcher festlegt, welche Variablen benutzt werden dürfen und welche nicht.

Hierbei muss natürlich darauf geachtet werden, dass man keine Variablen benutzt, welche eine 0 als Wert haben und man muss für jede Lösungsvariable einen Wert finden.

Bis jetzt hab es einfach immer von oben nach unten durchlaufen lassen und es hat eigtl immer funktioniert... Bis jetzt...

Heute bin ich auf dieses Beispiel getroffen:

1x +0y + 0z = 3
3x -1y + 9z = 9
0x +2y + 0z = 6

Mein Programm würde jetzt mit der ersten Gleichung anfangen und sich weiter nach unten arbeiten. Bei der 3. Gleichung würde jedoch ein Problem entstehen und es würde meckern, da es nur eine Variable gibt, die ungleich 0 ist, diese Reihe aber schon von der darüberliegenen Variablen genutzt wird.

Obwohl es ja einen Weg gibt! Man muss die Variablen folgendermaßen auswählen:

+1x +0y +0z = + 3
+3x -1y +9z = +9
+0x +2y +0z = + 6

Ich suche jetzt eine Methode, wie ich diese Wege auswählen kann... Wenn irgendjemand eine Idee hat, so möge er sich bitte melden, weil ich mit meinem Latein am Ende bin...

Gruß

Admirandis

IngoD7 16. Jan 2007 19:38

Re: Lösungsweg herausfinden
 
Ich habe von diesem Matrizenzeug aber auch nicht ein Wörtchen verstanden ... :roll:
Müssen für x, y und z eigentlich später auch Ergebnisse herauskommen? Na, egal ...

Verstanden habe ich (hoffe ich jedenfalls):

a.) Dein Programm arbeitet die Gleichungen von oben nach unten ab.
b.) Dein Programm muss in jeder Gleichung eine Variable mit Wert ungleich 0 finden.
c.) Diese Variable darf aber vorher - also in den Gleichungen weiter oben - noch nicht gefunden worden sein.


Nachdem ich im ersten Ansatz ganz schönen Müll geschrieben habe :oops:, hier der nächste Versuch:
Mache es quasi rekursiv. Immer wenn du in einer Gleichung keine Variable finden kannst, die nicht schon zuvor dran war, dann springe eine Gleichung nach oben und wähle dort eine andere Variable aus.

Khabarakh 16. Jan 2007 19:53

Re: Lösungsweg herausfinden
 
@Admirandis: Ich finde deinen Text ebenfalls ein wenig unverständlich, was auch zu einem Teil an deiner Verwürfelung von "Variable" und "Koeffizient" liegt ;) . Insegesamt stellt sich mir die Frage: warum benutzt du nicht das Gaußsche Eliminationsverfahren?

PS: Matrizen kann man im Allgemeinen nicht lösen ;) .

Admirandis 16. Jan 2007 21:08

Re: Lösungsweg herausfinden
 
Hi!

Sorry, wenn ich mich unverständlich ausgedrückt habe... Ist eben ein wenig schwierig zu erklären.

Also, ich nutze das Gauß'sche Eliminationsverfahren. Genauer gesagt den Gauß-Jordan-Algorithmus. Ist aber auch nicht mehr so wichtig! Habe nämlich schon eine Lösung gefunden!

Und zwar, dass man die Gleichungen untereinander austauscht. Hab evor lauter Bäumen den Wald nicht gesehen. Falls irgendjemand nochmal genauere Informationen wünscht, dann werde ich gerne nochmal versuchen das genauer zu erklären.

Und noch was: Falls man Matrizen nicht lösen kann, dann lügt mein Mathe-LK Lehrer! Hab nämlich mit ihm das Thema besprochen (Weils meine Facharbeit ist!).

Nochmals danke an alle, die sich die Mühe gemacht haben, meinen Eintrag zu lesen und nur Bahnhof verstanden haben ^^

Grüße

Admirandis

Flare 16. Jan 2007 21:15

Re: Lösungsweg herausfinden
 
Zitat:

Zitat von Admirandis
Falls man Matrizen nicht lösen kann, dann lügt mein Mathe-LK Lehrer!

Lügen ist da so ne Sache...
Matrizen kann man umformen um so die Lösungen von einem Gleichungssystem besser ablesen zu können, das darf man aber nicht mit Matrizen lösen gleichsetzen!
Eine Matrix ist ja bloß ein Konstrukt von mehreren Zahlen in das wir umgestellte Gleichungen eingetragen haben um das lösen der Gleichungen uns zu vereinfachen.


Flare

Khabarakh 16. Jan 2007 21:25

Re: Lösungsweg herausfinden
 
Zitat:

Zitat von Admirandis
Genauer gesagt den Gauß-Jordan-Algorithmus

Ah, ok. Ich kannte nur den Grundalgorithmus. Deine Lösung ließe sich allerdings auch in der Wikipedia finden ;) :
Zitat:

Ist die oberste Zahl der gewählten Spalte eine Null, so vertauscht man die erste Zeile mit einer anderen Zeile, in der in dieser Spalte keine Null steht.
Zitat:

Und noch was: Falls man Matrizen nicht lösen kann, dann lügt mein Mathe-LK Lehrer!
Wie gesagt, im Allgemeinen kann man Matrizen genau so wenig lösen wie einen Vektor oder Skalar. Es kommt immer auf die Interpretation an, "Lösen einer Matrix" würde ich es trotzdem nie nennen.

Admirandis 16. Jan 2007 23:08

Re: Lösungsweg herausfinden
 
Ok, dann sagen wir einfach, dass man Matrizen im Allgemeinen nicht lösen kann, und dann sind alle zufrieden, ok?

Will hier ja keinen Aufstand anzetteln... ^^

Aber nochmals Danke an alle für die sehr hilfreichen Aufklärungen!

Grüße
Admirandis


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz