Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

17.07.2015, 13:27

Meh. Hab nochmal über die Aufgabe nachgedacht. Ich dachte die ganze Zeit, man müsste irgendeinen Trick anwenden, dabei ist die Aufgabenstellung viel einfacher, als ich dachte. Die Lösung ist dadurch natürlich immer noch nicht einfacher. Dein §\left(\lambda_{1}-\lambda\right)^{n_{1}}\ldots\left(\lambda_{k}-\lambda\right)^{n_{k}}§ ist ja einfach nur das charakteristische Polynom in Linearfaktoren zerlegt. Und um die zu bekommen muss man halt die Nullstellen bestimmen (und bestimmen, wie häufig die Nullstellen vorkommen, das sind dann deine Exponenten). In diesem Sinne ist dein ganzes Problem also äquivalent zur Nullstellensuche bei Polynomen. Und die ist schwierig. Du wirst also natürlich bei allen Determinantenregeln auf irgendwelche Summen kommen, die du so erstmal nicht umformen kannst. Wäre es anders, d.h. gäbe es für dein Problem eine einfache Lösung, könnte man damit wohl auch Nullstellen von Polynomen leicht finden.

Wie kann man die Aufgabe jetzt also lösen?
Für kleine Matrizen, gibt es direkte Formeln. Zu finden in den jeweiligen Wikipedia-Artikeln:
Grad 2: https://de.wikipedia.org/wiki/Quadratische_Gleichung
Grad 3: https://de.wikipedia.org/wiki/Kubische_Gleichung
Grad 4: https://de.wikipedia.org/wiki/Quartische_Gleichung
Für alles was größer ist, gibt es keine direkte Formel (und wird sie auch niemals geben, das ist bewiesen). Was 'ganz gut' geht, ist Nullstellen raten und dann Polynomdivision durchzuführen. Sehr hilfreich dabei kann wohl der Satz über rationale Nullstellen sein. In typischen Mathe-Aufgaben hat man ja meist schöne Zahlen, und kommt damit vermutlich schnell auf eine Lösung. Das tut man dann so lange, bis das Polynom einen Grad erreicht hat, den man direkt lösen kann.

Ansonsten hast du hier halt eigentlich ein Eigenwert-Problem. Und dafür gibt es auch viele Algorithmen, aber halt nur numerische (die Analytischen laufen halt alle auf das lösen von Polynomen heraus und das haben wir oben besprochen). Die will man vermutlich nicht per Hand ausrechnen, weil man gegebenenfalls viele Iterationen benötigt. Eine Liste an Möglichkeiten gibt es hier: https://de.wikipedia.org/wiki/Eigenwertproblem#Numerische_Berechnung


Fazit: Dein Problem ist schwer und es gibt keine direkte Lösung.
Lieber dumm fragen, als dumm bleiben!

birdfreeyahoo

Alter Hase

  • »birdfreeyahoo« ist der Autor dieses Themas

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

12

18.07.2015, 02:34

Also die Nullstellen habe ich ja jetzt durch Zerlegung des x^0 Koeffizienten ausmachen können. Dass wir die Polynomdivision brauchen glaube ich nicht, weil wir das nicht gelernt haben, aber die Aufgabe war auch aus einem anderen Skript.

Danke für die Antworten

PS: Deine Links gehen nicht ;)

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

13

20.07.2015, 09:02

Ich bin ja immernoch der Auffassung, dass die Nullstellen einfach abgelesen werden können, wenn man die Matrix vorher diagonalisiert, oder habe ich da einen gedanklichen Fehler gemacht?
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

14

20.07.2015, 10:36

Natürlich können die Nullstellen nach dem diagonalisieren abgelesen werden. Das Problem ist, dass man sie schon zum diagonalisieren selbst braucht.
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

birdfreeyahoo

Alter Hase

  • »birdfreeyahoo« ist der Autor dieses Themas

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

15

20.07.2015, 16:37

Ne braucht man nicht, das kann ich einfach durch Gauß-Umformungen machen. Ich hab das aber schonmal angefangen und da kommen in den einzelnen Zellen die übelsten Terme raus.
Aber ich kanns einmal komplett versuchen.

16

20.07.2015, 17:28

Ne braucht man nicht, das kann ich einfach durch Gauß-Umformungen machen.

Das würde ich sehr gerne mal sehen. Damit hättest du nämlich eine Möglichkeit gefunden, Nullstellen von Polynomen beliebigen Grades zu finden.
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

17

20.07.2015, 18:21

Vermutlich wird hier diagonale Matrix einmal als "alles außer der Diagonale gleich 0" und einmal als "alles unter der Diagonale gleich 0" verstanden.

Wie schon gesagt, es gibt keine direkte Lösung für große Matrizen, nur Annäherungsverfahren (abgesehen von leichteren Spezialfällen).
Lieber dumm fragen, als dumm bleiben!

birdfreeyahoo

Alter Hase

  • »birdfreeyahoo« ist der Autor dieses Themas

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

18

20.07.2015, 19:20

Ich kann die Matrix per Gaußumformung in eine obere Dreiecksmatrix umwandeln. Dann ergibt sich die Determinante doch aus dem Produkt der Diagonale.

19

20.07.2015, 19:20

Vermutlich wird hier diagonale Matrix einmal als "alles außer der Diagonale gleich 0" und einmal als "alles unter der Diagonale gleich 0" verstanden.

Das eine ist eine Diagonalmatrix, das andere eine obere Dreiecksmatrix. In beiden Fällen ist die Determinante einfach das ausmultiplizieren der Diagonaleinträge. Mit der Leibniz-Formel sieht man das am einfachsten. Aber natürlich beißt sich die Ratte in den Schwanz, wenn man die Matrix erst diagonalisieren möchte, um die EW abzulesen. Zumal nicht jede Matrix diagonalisierbar ist. (Eine obere Dreickecksmatrix bekommt man hingegen schon hin).

Edit:
Ich kann die Matrix per Gaußumformung in eine obere Dreiecksmatrix umwandeln. Dann ergibt sich die Determinante doch aus dem Produkt der Diagonale.

Ja. Aber das bringt einen Qualitativ in diesem Fall glaub ich nicht weiter, da man am Ende auch hier die Nullstellen des Polynoms ermitteln muss. Oder in anderen Worten: Das Nullstellenproblem ist um einiges schwieriger als die Berechnung der Determinante.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »GreenPepper« (20.07.2015, 19:25)


20

21.07.2015, 16:16

Dann ergibt sich die Determinante doch aus dem Produkt der Diagonale.

Schon, aber die Determinante bringt dir halt nichts.

Das Nullstellenproblem ist um einiges schwieriger als die Berechnung der Determinante.

Genau, und man sollte das sogar noch viel deutlicher sagen. die Determinante kann man mit 'einfachen' Formeln berechnen, mit etwas besseren Formeln kann man sie auch sehr effizient berechnen. Determinantebestimmung ist ein gelöstes Problem, und nichts das irgendwie Schwierigkeiten bereiten würde. Die Nullstellenberechnung hingegen ist ein erwiesenermaßen 'unlösbares' Problem. Es gibt gute Algorithmen, mit denen man die relativ effizient mit einer hohen Genauigkeit ausrechnen kann, aber halt nur in Außnahmesituationen exakt.

Wenn du immernoch eine konkrete Aufgabe zu lösen hast. Du kannst zum Beispiel Python mit Numpy benutzen, was dir viele Werkzeuge zur Hand gibt um Eigenwerte und Nullstellen effizient und einfach zu berechnen. Damit hast du im Grunde eine fertige Implementierung der aktuellen State-of-the-Art Algorithmen
Lieber dumm fragen, als dumm bleiben!

Werbeanzeige