|
Benni84 |
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 12.01.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.03.2011, 01:21
Titel: Inverse der Matrix
|
|
Hallo zusammen,
ich hab'das Problem, dass mir eine symbolische 100 kreuz 100 Matrix A vorliegt und ich bei der Berechnung mit C=inv(A) den Befehl mehrmals nach mehreren Tagen abgebrochen hab', weil kein Ergebnis ermittelt wird, und Matlab immernoch (anscheinend vergebens) rechnet.
Da muss es doch eine schnellere Möglichkeit geben. Hatte selbst nach 6 Tagen noch keine Inverse vorliegen. Bei schnelleren Rechnern erhielt ich ebenfalls kein Ergebnis.
Achso: Invertierbar ist die Matrix!
Gibt es irgendwelche Matrizenzerlegungen mit denen ich die Inverse umgehen kann? Vielleicht die QR-Zerlegung?
Wäre super froh und dankbar, wenn mir dabei jemand helfen könnte!
Viele Dank und viele Grüße,
Benni
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 06.03.2011, 10:08
Titel:
|
|
Hallo,
selbst wenn MATLAB dir ein Ergebnis ausspucken würde, ist die Wahrscheinlichkeit groß, dass es so komplex wäre, dass du nichts damit anfangen könntest.
Stelle es dir so vor: symbolisches Rechnen ist dazu geeignet, Dinge zu beschleunigen, die man auch mit Papier und Bleistift rechnen könnte. Es ist nicht dazu gedacht, Dinge zu tun, die von der Komplexität her "unmöglich" erscheinen.
Ich würde also dringend zu einem numerischen Ansatz raten.
Die andere Frage ist übrigens: wozu brauchst du die Inverse?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Benni84 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 12.01.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.03.2011, 14:29
Titel:
|
|
Hallo!
Vielen Dank für die schnelle Antwort!
Mein Problem ist, dass ich letztendlich ein Optimierungsproblem lösen will, mit Zielfunktion Spur(C), wobei C eine Kovarianzmatrix ist, die sich aus meiner zu berechnenden Inversen folgendermaßen ablesen lässt:
C=A, mit inv([J1'*J1,J2';J2,0])=[A,B;C,D]. J1,J2 sind die Jacobimatrizen von F1,F2, wobei F1 die Zielfunktion und F2 die Nebenbedingungen eines weiteren Optimierungsproblems sind.
D.h., ich bräuchte ein symbolisches Ergebnis.
Eine zweite, alternative Berechnung von C würde die Inverse umgehen, und zwar, wenn ich u.a. J2 in eine 'untere Dreiecksmatrix' + eine 'Orthogonalmatrix' zerlegen würde. Eine solche Zerlegung finde ich allerdings nicht, nur die QR-, LU-, LDL- und Choleskyzerlegung.
Von daher bin ich nun ratlos wie ich an meine Kovarianzmatrix komme? Hättest Du da noch eine Idee für mich?
Nochmals danke und viele Grüße,
Benni
|
|
|
Benni84 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 12.01.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.03.2011, 17:38
Titel:
|
|
Ah, ich Dummkopf, ich kann nach der QR-Zerlegung ja einfach transponieren, dann erhalte ich die untere Dreiecksmatrix.
Aber:
Der Befehl [Q,R]=qr(J2) ist in meinem Fall nicht ausführbar, weil J2 symbolisch ist. Kann ich symbolische Matrizen nicht zerlegen?
VG, Benni
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 07.03.2011, 17:22
Titel:
|
|
Hallo,
so oder so: ich sehe bei einer Optimierung keine Notwendigkeit für symbolisches Rechnen, da die Zielfunktion ja immer nur an einem Punkt ausgewertet werden muss.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Benni84 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 12.01.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.03.2011, 18:12
Titel:
|
|
Achso, ich verstehe, ich geb'meine symbolische Inverse einfach als Zielfunktion inv(...) an, ohne sie vorher berechnet zu haben. Sorry, bin noch Matlabneuling.
Dankeschön, das hat mir sehr gefallen!
Viele Grüße,
Benni
|
|
|
Benni84 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 12.01.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.03.2011, 22:06
Titel:
|
|
Hallo, ich bin es doch nochmal.
Ich habe jetzt das Problem, dass meine Zielfunktion sehr kompliziert ist,
ich mehrere Schritte brauche, um sie zu entwickeln. Innerhalb der Schritte leite ich ab.
Wenn ich sie so innerhalb der Function-File deklariere wird direkt im ersten Schritt der Inpuwert x übergeben und somit die Ableitung = 0.....
Ich möchte aber, dass der Inputwert erst am Ende der Deklaration übergeben wird. Ich stell mir das dann in etwa so vor, dass ich die Funktion erstmal mit einer Hilfsvariablen z deklariere, am Ende dann x übergebe, also z=x setzen oder so.
Gibt es da eine Möglichkeit?
Meine alternative Herangehensweise wäre es, die Funktion im Workspace zu deklarieren und dann innerhalb von
'function(y)=zielfunktion(x)
.......
end'
auf die im Workspace definierte Funktion zuzugreifen.
Geht das irgendwie? Mit 'global' habe ich es nicht hinbekommen.
Sorry, dass ich so viele (hoffentlich nicht zu dumme) Fragen hab'.
VG,
Benni
|
|
|
Benni84 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 12.01.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.03.2011, 23:25
Titel:
|
|
Ok, ich hab'es jetzt so gelöst,
dass ich meine Funktion f am anfang mittels der Hilfsvariablen x definiere, den Inputwert z danach an x mit x=z übergebe
und schließlich über y=subs(f) substituiere.
|
|
|
|
|
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.
|
|