|
muhmar |
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 16.07.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.4
|
|
|
|
|
|
Verfasst am: 12.03.2009, 11:19
Titel: Matrizen invertieren
|
|
Hey Leute,
wahrscheinlich ist das eine ziemlich banale Frage, aber mich beschäftigt das doch sehr.
Und zwar hab ich mir ein Programm zur Berechnung einer ausgleichenden Kugel geschrieben und bin jetzt an einer Stelle die mich irritiert.
Und zwar lese ich dazu eine Koordinatendatei ein und berechne daraus meine Parameter zu berechnen. Wenn nun die Punktdatei zu groß wird, gibt er mir aus, dass irgendwelche Matrizen singulär werden. Liegt des vllt an der Inversion, dass Matlab nur bis zu einer bestimmten Größe invertieren kann, oder...!?!?
Ich hab keinen Plan.
Gruß Muhmar
|
|
|
|
|
muhmar |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 16.07.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.4
|
|
|
|
|
|
Verfasst am: 12.03.2009, 11:23
Titel:
|
|
Also die konkrete Aussage von MatLab ist:
"Warning: Matrix is singular to working precision."
|
|
|
Bijick |
Ehrenmitglied
|
|
Beiträge: 914
|
|
|
|
Anmeldedatum: 18.06.07
|
|
|
|
Wohnort: Nürnberg
|
|
|
|
Version: R2006b, R2008b
|
|
|
|
|
|
Verfasst am: 12.03.2009, 11:37
Titel:
|
|
Hallo Muhmar,
das liegt nicht an der Größe der Matrizen allein. Singulär heißt eine Matrix dann, wenn ihre Determinante Null ist. "singular to working precision" bedeutet, dass die Determinante "fast Null" ist, also Matlab den Wert nicht von Null unterscheiden kann. Eine Inversion ist dann nicht möglich.
Ich würde sagen, es passiert hier zufällig bei großen Matrizen, das Problem liegt bei den Werten in der betreffenden Matrix.
Wie berechnest Du denn die Inverse und wofür? Die Funktion inv sollte sparsam verwendet werden, eventuell kommst Du mit \ etwas weiter.
Herzliche Grüße
Bijick
_________________
>> why
|
|
|
Helmert |
Forum-Century
|
|
Beiträge: 121
|
|
|
|
Anmeldedatum: 04.09.08
|
|
|
|
Wohnort: Karlsruhe
|
|
|
|
Version: 2011a
|
|
|
|
|
|
Verfasst am: 12.03.2009, 13:43
Titel:
|
|
Hallo Muhmar,
ich denke auch, daß das Problem nicht bei der Größe der Matrix sondern an den Werten darin liegt. Wenn man eine korrekte Implementierung voraussetzt, wären z. B. folgende Ursachen denkbar:
- Die Punkte sind so angeordnet, daß die Lösung geometrisch mehrdeutig ist, z. B. wenn alle Punkte (nahezu) in einer Ebene liegen.
- Je nachdem, welches Modell du verwendest, können weitere Singularitäten auftreten, z. B. wenn ein beobachteter Punkt mit deinen Näherungskoordinaten für den Kugelmittelpunkt (nahezu) identisch ist.
- Wenn du mit sehr großen Zahlenwerten arbeitest, kann es zu numerischen Instabilitäten kommen. Hier könnte eine vorherige Zentrierung der Punktwolke auf den Schwerpunkt nebst Skalierung auf kleine Zahlenwerte helfen, was nach der Schätzung dann wieder rückgängig zu machen wäre.
Evtl. wären noch weitere Möglichkeiten denkbar ...
|
|
|
muhmar |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 16.07.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.4
|
|
|
|
|
|
Verfasst am: 12.03.2009, 16:33
Titel:
|
|
Okay, Problem gelöst! Ich hab mir Kugelpunkte simuliert. Da hier die Werte durch eine falscha Annahme nahezu identisch waren, wurden die Matrizen singulär. Danke euch!!
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|