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

Lösung nichtlinearer komplexer Gleichungssysteme

 

Daniel123
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 02.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2015, 16:30     Titel: Lösung nichtlinearer komplexer Gleichungssysteme
  Antworten mit Zitat      
Hallo alle zusammen,

ich arbeite gerade an meiner Bachelorarbeit in Physik und muss dafür, als letzten Schritt gewissermaßen, folgendes Gleichungssystem lösen:

1/g+\sum_{k=1}^{\mathcal{L}} \frac{s_k}{v_i-\epsilon_k} = \sum_{j\neq i}^M \frac{1}{v_i-v_j}

Es gilt dabei L \geq M und man hat insgesamt M solcher Gleichungen (und entsprechend viele unbekannte v's. s_k ist eine Konstante, die auf 1/2 gesetzt werden kann, und \epsilon_k sind ein Set von Energien - hier einfach \epsilon_j=j für j=1,...L. g ist die Kopplungsstärke des Systems.

Ziele der ganzen Sache ist es, diese Lösungen als Funktion von g zu plotten, wobei g in der Regel zwischen 0 und 5 liegen sollte.

Über die Lösungen weiß man, dass sie entweder real sind oder komplex konjugierte Paare bilden. Man startet bei g=0 und wählt M Startwerte für v in der Nähe der Energien \epsilon_j. (In der Tat wird das System für g=0 gerade durch eine beliebige Zuordnung v_j=\epsilon_k gelöst, zB für \epsilon =1,2,3,4,5 und M=3 wäre v=2,3,5 denkbar.)

So weit habe ich das auch alles in den beiden unten angehängten Dateien implementiert (ein Skript (text_BCS) und eine Definition des obigen Systems(BetheBCS)). Das Problem ist tritt immer an den Stellen auf, an denen sich ein komplex konjugiertes Paar bildet. Ich habe noch einen Artikel angehängt, wie es eigentlich aussehen sollte (S.7 oben). Mein Plot sieht zwar *ähnlich* aus, aber trotz großer Zahl an Iterationsschritten halt nicht korrekt. Diese scheint auch keine große Rolle zu spielen, ob ich 300 oder 30,000 angeben, ändert wenig am Erscheinungsbild.

Ich bin leider kein großer Matlab-Experte, deswegen würde ich mich sehr freuen, wenn jemand, der sich besser damit auskennt, mal drüberschauen könnte. Vielleicht gibt es ja effektivere Algorithmen dafür?

Vielen Dank jetzt schon für eure Hilfe!

0312070v1.pdf
 Beschreibung:
Weiterer Artikel, in dem auch der Imaginärteil zu sehen ist (S.2)

Download
 Dateiname:  0312070v1.pdf
 Dateigröße:  481.26 KB
 Heruntergeladen:  380 mal
faribault_JMathPhys_50_095212.pdf
 Beschreibung:
Artikel mit korrekter Lösung (S. 7 oben)

Download
 Dateiname:  faribault_JMathPhys_50_095212.pdf
 Dateigröße:  1.74 MB
 Heruntergeladen:  816 mal
BetheBCS.m
 Beschreibung:
Definition des Glecihungssystems

Download
 Dateiname:  BetheBCS.m
 Dateigröße:  775 Bytes
 Heruntergeladen:  338 mal
test_BCS.m
 Beschreibung:
Skript zur Lösung

Download
 Dateiname:  test_BCS.m
 Dateigröße:  1.24 KB
 Heruntergeladen:  336 mal
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.07.2015, 17:02     Titel: Re: Lösung nichtlinearer komplexer Gleichungssysteme
  Antworten mit Zitat      
Hallo Daniel123,

Du kannst nicht erwarten, dass die Leser in diesem Forum die umfangreichen und sehr speziellen Fach-Papers von Dir durch lesen, um Dein Problem zu verstehen. Das Studium der Fachliteratur bleibt den Fragenden immer alleine überlassen.

Zitat:
Das Problem ist tritt immer an den Stellen auf, an denen sich ein komplex konjugiertes Paar bildet.

Während Dir klar ist, was Du hier meinst, haben die Computer-Linguisten, Medizin-Techniker und Werkzeugmacher in diesem Forum keine Ahnung, was Du genau meinst.

Kannst du das Problem genauer beschreiben? Was tritt auf wenn sich wo ein komplex konjugiertes Paar bildet? Kannst Du den relevanten Code-Abschnitt posten? Was bedeutet "effizienter"? Soll es schneller laufen, oder numerisch stabiler?
Versuche Dein Problem in kleine Teile zu spalten, so dass die einzelnen Fragen mit jeweils 3 oder 7 Sätzen, bzw. 20 Zeilen Code beantwortet werden können. Dazu sollte es auf keinen fall nötig sein, die Papers zu lesen. Die Teilnehmer in diesem Forum kommen kaum hinterher alle relevanten Papers zu lesen, die ihre eigene Arbeit betreffen. Dann bleibt zum Lesen Papers für fremde Fachgebiete keine Zeit, zu mal man sich in das Thema ja auch erstmal grundsätzlich einarbeiten müsste.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Daniel123
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 02.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.07.2015, 15:33     Titel:
  Antworten mit Zitat      
Hallo Jan S,

ich würde von niemand hier erwarten/verlangen, dass er die speziellen Paper liest, die ich angehängt habe. Sie waren nur dazu da, um zu verdeutlichen, wie das Endergebnis aussehen soll. Ich hätte natürlich auch die Plots dort rauskopieren und als Bilder hier anhängen können - tut mir leid, wenn ich da für Verwirrung gesorgt habe!

Ich versuche, sobald wie möglich das Problem genauer zu beschreiben. Ich suche dann auch noch mal ein Bild, wie der Plot bei mir aussieht, damit es klarer wird.

Vielen Dank für den Hinweis!
Private Nachricht senden Benutzer-Profile anzeigen
 
Daniel123
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 02.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.07.2015, 20:54     Titel:
  Antworten mit Zitat      
In Ergänzung zu meinem oben genannten Problem habe ich jetzt noch ein paar Erläuterungen angefügt.

Das Problem bleibt das gleiche: Für obiges nichtlineares, komplexes Gleichungssystem suche ich Lösung für vorgegebene Startwerte {v_1, v_2,..., v_M}. bei g=0. g wird dann in kleinen Schritten erhöht und für diesen neuen Wert nach Lösungen in der Nähe des vorherigen g's gesucht.

Der Ausschnitt aus meinem Code, in dem das System gelöst werden soll, lautet:

Code:

for k =1:numSteps
    g = (g_end/numSteps)*k;  
    z(k+1)=g;
    f =@(x)BetheBCS(x,g);
    v  = [real(y(k,:));imag(y(k,:))];
    [res,~]=fsolve(f,v);
    y(k+1,:) = res(1,:) + 1i*res(2,:)
end
 


BetheBCS ist das Gleichungssystem, der Code dazu findet sich im ersten Beitrag. Komplexe Lösungen sind explizit implementiert.

Wie oben erwähnt, sind die Startwerte zunächst alle real. Es gibt jedoch kritische Punkte, an denen zwei reale Werte zusammenlaufen und ein komplex konjugiertes Paar bilden. Dieses "Zusammenlaufen findet bei mir jedoch überhaupt nicht statt.

Ich habe mein bisheriges Ergebnis und das gewünschte Ergebnis als Bilder angehängt. Ich denke, aus denen sollte ersichtlich werden, wo ein Problem auftritt - der Realteil "knickt" vorher ab (zB bei g=0.2)

Folgende Idee zur Verbesserung hatte ich, doch auch die führt nicht zum gewünschten Ergebnis: Man schaut, wo zum ersten Mal Imaginärteile auftreten und implementiert den Code zunächst nur bis zu dieser Stelle, wobei wir nur Realteile zulassen. Doch auch so gelingt es mir nicht, dass zwei Realteile zu einem zusammenlaufen.

Ich hoffe, das Problem verständlich formuliert zu haben und bin für jede Hilfe dankbar!

BCS_attempt.jpg
 Beschreibung:
So sieht es derzeit aus. Knick bei g=0.2, kein "zusammenlaufen", keine symmetrische Aufspaltung des Imaginärteils

Download
 Dateiname:  BCS_attempt.jpg
 Dateigröße:  55.49 KB
 Heruntergeladen:  304 mal
Unbenannt.jpg
 Beschreibung:
So sollte es aussehen: Oben Real- unten Imaginärteil der Lösung

Download
 Dateiname:  Unbenannt.jpg
 Dateigröße:  38.52 KB
 Heruntergeladen:  306 mal
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.