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

Formatierung von komplexen Zahlen für EW Probleme

 

Dada
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 20.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.12.2020, 04:14     Titel: Formatierung von komplexen Zahlen für EW Probleme
  Antworten mit Zitat      
Hallo liebe Community,
ich weiß nicht wie ich es erklären soll aber ich habe Probleme bei der Eigenwertberechnung in Matlab. Ich fang einfach mal von vorne an.
Ich möchte gerne die Eigenwerte einer Matrix für verschiedene Dimensionen berechnen. Diese Matrix setzt sich aus einer Matrix mit deren unitären Transformation zusammen. Ich füge einfach mal den Code ein.

Code:
% Das ist mein Code.
syms S;
a = [1;0;0]
b = [0;1;0]
c = [0;0;1]
w = exp(2*pi*i/3)

U = 1/sqrt(3)*(a*a'+a*b'+a*c'+b*a'+w*b*b'+w^2*b*c'+c*a'+w^2*c*b'+w^4*c*c')

A = 1/3*[1 1 1; 1 1 1;1 1 1]
B = 1/3*[1 w' w'^2; w 1 w*w'^2; w^2 w^2*w' 1]
C = 1/3*[1 w'^2 w'^4; w^2 w^2*w'^2 w^2*w'^4; w^4 w^4*w'^2 w^4*w'^4]
W = kron(U*a*a'*U',U*a*a'*U')+kron(U*b*b'*U',U*b*b'*U') + kron(U*c*c'*U',U*c*c'*U'))
M = S*W-kron(a*a',eye(3))

e = eig(M)
 

(das oben gezeigte Programm ist eine Vereinfachung für das Forum und explizit ausgeschrieben. Ich habe verschiedene Funktionen geschrieben, damit das auch für jede Dimension funktioniert)

Wie einige von euch erkennen handelt es sich um ein Quantenphysikalisches Problem und was mir sorge bereitet ist die Matrix W.

Mein Problem:
Die Matrix M gibt Matlab mit extrem großen Brüchen aus (die "Quasi" null sind) und somit gibt Matlab auch die Eigenwerte mit Brüchen raus die geschätzt 50 stellen haben.
Ich habe es schon versucht mit round(W,5) was für eine Dimension von 2 Funktioniert aber nicht wenn es um höhere Dimensionen geht wie in dem Beispiel oben. Ich hab auch schon das Format rat oder short versucht aber nichts hat etwas gebracht.
Ich weiß das mein Programm funktioniert. Wenn ich die Matrix W explizit nochmal aufschreibe
Code:

W = 1/3*[1 0 0 0 0 1 0 1 0; 0 1 0 1 0 0 0 0 1;
0 0 1 0 1 0 1 0 0; 0 1 0 1 0 0 0 0 1;
0 0 1 0 1 0 1 0 0; 1 0 0 0 0 1 0 1 0;
0 0 1 0 1 0 1 0 0;1 0 0 0 0 1 0 1 0;
0 1 0 1 0 0 0 0 1]      

 


Bekomme ich genau die Eigenwerte, die ich haben will. Kennt sich jemand mit der Formatierung aus und kann mir helfen? Ihr würdet mir sehr helfen.

Alles gute
Dada
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.12.2020, 10:11     Titel:
  Antworten mit Zitat      
Hallo,

das Problem ist für mich die Definition von w. Wenn du die symbolisch machst, sind die Ergebnisse wie gewünscht:
Code:


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
 
Dada
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 20.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.12.2020, 12:12     Titel:
  Antworten mit Zitat      
Uhh Danke Harald! Für die schnelle Antwort. Ja es funktioniert tatsächlich. Ich bekomme zwar dann Probleme bei meinem SPD in CVX da es ja nicht symbolisch rechnet. Aber zum testen muss ich dann eben immer wechseln. Das ist kein Problem.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.12.2020, 12:47     Titel:
  Antworten mit Zitat      
Hallo,

ich weiß offen gesagt nicht, was ich mit der Antwort anfangen soll.
Was ist SPD, was ist CVX? Zwischen was musst du wechseln?

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
 
Dada
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 20.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.12.2020, 00:52     Titel:
  Antworten mit Zitat      
SPD steht für semi definite programming. Im Prinzip ist es eine Optimierung einer Funktion. Zum Beispiel, wenn man eine Funktion maximieren will unter bestimmten, festgesetzten Bedingungen, nutzt man SPD um die optimalen Werte der Variablen der Funktion zu bekommen die diese Funktion maximieren.
CVX ist ein Tool von matlab um solche Optimierungsprobleme durchzuführen.
In meinem bestimmten Fall, versuche ich die optimale Matrix unter festgesetzten Bedingungen in verschiedenen Dimensionen zu bekommen (bzw. die Spur dieser Matrix). Dafür brauche ich aber die Eigenwerte von den Bedingungen die gegeben sind damit das überhaupt funktioniert. Das „Problem” ist CVX rechnet mit der Symbol Umgebung. Deswegen muss ich jetzt für jede Dimension die Eigenwerte berechnen und die dann in den Bedingungen in CVX einfügen da CVX nicht in der Symbol Umgebung von pi arbeitet. Daher kommt immer ein Fehler.
Aber im Prinzip kein allzu großes Problem, da jedes Optimierungsproblem ein bisschen anders aussieht für jede Dimension und ich es sowieso „umschreiben“ muss. Falls du noch eine Idee hast, wie ich sowohl die Eigenwerte berechnen kann als auch W aufrufen kann ohne ein pi in der symbol Umgebung, wäre es mega! Aber du hast mir schon mit dem sym(pi) sehr geholfen!

P.S. sorry für diese Verwirrende Erklärung. War noch nie so gut darin.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.12.2020, 20:41     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
wie ich sowohl die Eigenwerte berechnen kann als auch W aufrufen kann ohne ein pi in der symbol Umgebung

Wenn w erzeugt wird, kommt doch gar kein pi mehr vor:
Code:
w = exp(2*sym(pi)*i/3)
w =
(3^(1/2)*1i)/2 - 1/2
 

Du kannst das natürlich auch direkt so eingeben, wenn dir das weiterhilft.

Zitat:
sorry für diese Verwirrende Erklärung. War noch nie so gut darin.

Es kann sich lohnen, daran zu arbeiten ;)

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
 
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.