WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Inverse der Matrix

 

Benni84
Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 13.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.03.2011, 02:21     Titel: Inverse der Matrix
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.03.2011, 11:08     Titel:
  Antworten mit Zitat      
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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Benni84
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 13.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.03.2011, 15:29     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Benni84
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 13.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.03.2011, 18:38     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.03.2011, 18:22     Titel:
  Antworten mit Zitat      
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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Benni84
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 13.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.03.2011, 19:12     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Benni84
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 13.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.03.2011, 23:06     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Benni84
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 13.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.03.2011, 00:25     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.