Wie erstelle ich dieses Ergebnis (aus einem Buch)?

8

Das Ergebnis, an dem ich interessiert bin, finden Sie in "Synchronisation: Ein universelles Konzept in den nichtlinearen Wissenschaften", Seite Abbildung . Das eigentümliche Fragment finden Sie auch am Ende dieses Beitrags.33314.3

Grundsätzlich gibt es diese dissipative Kopplung, die auf eine eindimensionale Anordnung von Anfangsbedingungen (horizontale Achse) angewendet wird, die sich im Laufe der Zeit entwickelt (vertikale Achse). Mir ist klar, dass ich kein identisches Ergebnis erzielen kann, da ich die genauen Anfangsbedingungen nicht kenne, aber darum geht es in diesem Beitrag nicht.

Das eigentliche Problem ist, dass ich nicht sicher bin, wie ich die Evolutionsregel anwenden soll. Wenn ich einige Anfangsbedingungen habe, die einer einzelnen Iteration unterzogen werden, ist das Ergebnis im Wesentlichen eine Funktion dieser Anfangsbedingungen ... Was ist diese fragliche Funktion (Prozedur)?

Ich würde es gerne in MatLab berechnen können. Es muss sicherlich etwas verwandte Standardfunktionen geben ...


Kupplung

Pranasas
quelle
Sie müssen das gegebene System von PDEs für u1(x,t) und u_2 (x, t) lösen u2(x,t).
@nonlinearism Was ist mit den Anfangsbedingungen? Ich meine, einige zusätzliche Informationen müssen offensichtlich eingeführt werden, um die Lösung eindeutig zu machen.
Pranasas
@ WillieWong Danke für deine Bemerkung. scicomp ist es dann! Ich war mir dessen nicht ganz bewusst.
Pranasas
1
Ich habe die Frage migriert. Möglicherweise möchten Sie Ihre Frage erneut markieren. Für den Anfang scheinen Parabol-PDE und Matlab angemessen zu sein.
Willie Wong
Haben Sie schon einmal Mathematica ausprobiert? Überprüfen Sie diese Demonstrationen. Wolfram.com/CoupledLorenzOscillators Sie können Anfangsbedingungen angeben und dann über diese iterieren.
Rorschach

Antworten:

5

Parabolische PDEs wie die im Buch beschriebenen können normalerweise mit der Methode der Linien gelöst werden . Zuerst erstellen Sie ein Netz für die Richtung. Ich gehe davon aus, dass Sie einen einheitlichen Abstand verwendet haben, da die Diagramme keine Merkmale aufweisen, die die Notwendigkeit einer Ungleichmäßigkeit anzeigen. Als nächstes fassen Sie Ihre Gleichungen nur mit der Zeitableitung auf der linken Seite neu zusammen und ändern die Ableitungen in in Näherungen mit endlicher Differenz. Hier ist die erste Gleichung für einen allgemeinen inneren Punkt:xx

u1,it=ε(u2,iu1,i)u1,i+12u1,i+u1,i1Δx2u1,i+24u1,i+1+6u1,i4u1,i1+u1,i2Δx4u1,iu1,i+1u1,i12Δx

Ich werde Ihnen die zweite Gleichung, die Grenzgleichungen und die Punkte in der Nähe der Grenze überlassen. Jetzt haben Sie einen gekoppelten Satz von ODE ist für . von Ihren Anfangsbedingungen können Sie im ersten Zeitschritt und zuweisen . Jetzt erfüllen Sie bei jedem Zeitschritt die oben genannten diskretisierten Gleichungen zu unterschiedlichen Zeiten, basierend auf dem von Ihnen verwendeten Zeitintegrationsalgorithmus. Wenn es sich um explizites Euler handelt, erfüllen Sie es zu Beginn jedes Zeitschritts. Wenn es impliziter Euler ist, das Ende. i=1...Nu1,iu2,i

In Matlab gibt es jedoch eine einfache Möglichkeit, all diese (und viele kompliziertere) Methoden zu handhaben. Was Sie wollen, ist eine Funktion, die einen Vektor von Werten zurückgibt, der der rechten Seite der obigen Gleichung entspricht, wenn ein Vektor von . Wenn Sie periodische Randbedingungen annehmen, erhalten Sie:uj,i

function [ u_prime ] = derivative( t, u, delta_x )

u_prime = zeros(length(u),1);
u = [u(end-3:end); u; u(1:4)];

if t < 200
    epsilon = 0;
else
    epsilon = 0.1;
end


for i = 5:2:length(u) - 4;
    u_prime(i-4) = epsilon*(u(i+1) - u(i)) - ...
        (u(i+2) - 2*u(i) + u(i-2))/delta_x^2 - ...
        (u(i+4) - 4*u(i+2) + 6*u(i) - 4*u(i-2) + u(i-4))/delta_x^4 - ...
        u(i)*(u(i+2) - u(i-2))/(2*delta_x);
    j = i+1;
    u_prime(j-4) = epsilon*(u(j-1) - u(j)) - ...
        (u(j+2) - 2*u(j) + u(j-2))/delta_x^2 - ...
        (u(j+4) - 4*u(j+2) + 6*u(j) - 4*u(j-2) + u(j-4))/delta_x^4 - ...
        u(j)*(u(j+2) - u(j-2))/(2*delta_x); 
    end
end

Jetzt können Sie dies jedem der in Matlabs integrierten ODE-Löser zuführen. Ich fand, dass ode15s ziemlich gut abschnitten. Ich habe auch sinusförmiges ICS angenommen, aber es scheint keine Rolle zu spielen.

N = 1000;   % Number of space discretizations

x = linspace(0, 150, N);
u_0 = zeros(2*N,1);
u_0(1:2:end-1) = sin(2*x/10);   % u_1
u_0(2:2:end) = -sin(4*x/10);    % u_2
delta_x = x(2) - x(1);

[t,u] = ode15s(@(t,u) derivative(t,u,delta_x), [0 400], u_0);

Die Ergebnisse ergeben: Simulationsergebnisse

Godric Seer
quelle