2016-07-25 40 views
1

Ich versuche die Bewegung eines Teilchens in einem Potential zu modellieren und Feedback zu integrieren. Das Problem, das ich habe, ist eine Verzögerung der Rückmeldung hinzuzufügen. Also, in Matlab arbeiten, habe ich ein einfaches Skript, das wie folgt aussieht:Lösen von gekoppelten Differentialgleichungen mit Zeitverzögerung

clear all; close all; 
qx = .3; 
qy = .4; 
qz = .5; 
om_D = 1.2e8; 
ep = 1e-10; 

t = 0:1e-11:1e-5; 

[t,rss]=ode45(@ion_test, t, [1e-7 .45 2e-7 -.45 0.5e-7 .45],[], qx, qy, qz, om_D, ep); 

wo ion_test.m eine Funktion Datei, die wie folgt lautet:

function dr = ion_test(t,r, qx, qy, qz, om_D, ep)  
    dr = zeros(6,1); 
    dr(1) = r(2); 
    dr(2) = (2*qx*cos(om_D.*t) + ep.*2*r(3)*r(5)); 
    dr(3) = r(4); 
    dr(4) = (2*qy*cos(om_D.*t) + ep.*2*r(1)*r(5)); 
    dr(5) = r(6); 
    dr(6) = (2*qz*cos(om_D.*t) + ep.*2*r(1)*r(3)); 
end 

So wie Sie sehen können, die Differentialgleichungen für Jede der Koordinaten von r sind gekoppelt. Die Sache, die ich hinzufügen muss, ist die Fähigkeit für jede Gleichung, die Werte anderer Koordinaten zu früheren Zeiten aufzurufen, nicht nur ihre aktuellen Werte. Der Zweck ist, einen verzögerten Rückkopplungsmechanismus einzubauen. Jede Hilfe sehr geschätzt!

+1

plese, post a [mcve] –

+0

Hoffe, diese Version ist klarer –

+0

nein. Ich muss in der Lage sein, es zu kopieren und es –

Antwort

0

Ich denke, die Antwort auf meine Frage war im Grunde, dass ich dde23 anstelle von ode45 verwenden musste.