Quanten.de Diskussionsforum  

Zurück   Quanten.de Diskussionsforum > Schulphysik und verwandte Themen

Hinweise

Schulphysik und verwandte Themen Das ideale Forum für Einsteiger. Alles, was man in der Schule mal gelernt, aber nie verstanden hat oder was man nachfragen möchte, ist hier erwünscht. Antworten von "Physik-Cracks" sind natürlich hochwillkommen!

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 19.05.14, 12:47
ghostwhisperer ghostwhisperer ist offline
Profi-Benutzer
 
Registriert seit: 09.06.2009
Ort: Kronberg
Beiträge: 336
ghostwhisperer eine Nachricht über ICQ schicken
Standard Simulation elastischer Stöße - Energie nicht konstant

Hi there!
Ich komm mit meiner Simulation elastischer Stöße einfach nicht weiter..
Weiß nicht wo ich das am besten reinstelle..
Im großen und ganzen stimmt mein Algo in MATLAB. Ich definiere den Flug einfacher Teilchen und ihre Stöße miteinander. Dabei definiere ich Stöße quasi so, als ob eine Feder mit der Feder-Konstante D zwischen den stoßenden Teilchen ist, sobald der Abstand kleiner einer Konstanten 2*ru ist (quasi die Radien der Kugeln).
Die Art der Abstoßung erscheint mir dabei richtig.
Wenn ich aber die Energien berechne, die alle Teilchen zu jedem Zeitpunkt haben, so kommen diese nur Betragsmäßig richtig raus.. Das Problem ist, dass kinetische und potentielle Energien, egal was ich mache, immer um einen Zeitschritt dt auseinander liegen, so dass ihre Summe nicht immer eine Konstante ist.
Frage: Was mache ich bei der Berechnung der Stöße oder den daraus folgenden Änderungen der Positionen und Geschwindigkeiten der Teilchen falsch??

Code:
Rmax = 18.0;
ru = 0.5;
D = 25;

x(1) = -1;
y(1) = 0;
z(1) = 0;
vx(1) = 1.0;
vy(1) = 0;
vz(1) = 0;
x(2) = 1;
y(2) = 0.0;
z(2) = 0;
vx(2) = -1.0;
vy(2) = 0;
vz(2) = 0;
ax(1) = 0;
ay(1) = 0;
az(1) = 0;
ax(2) = 0;
ay(2) = 0;
az(2) = 0;
dt = 0.005;
TN = 25;
Epn = 0;
ki =1;
for t = 0:dt:TN
    
    Epn = 0;
    for i = 1:AN 
        p1(1) = x(i);
        p1(2) = y(i);
        p1(3) = z(i);
        a(1) = 0;
        a(2) = 0;
        a(3) = 0;
        Fd(1) = 0;
        Fd(2) = 0;
        Fd(3) = 0;
        
        for j = 1:AN
            if i ~= j
                p2(1) = x(j);
                p2(2) = y(j);
                p2(3) = z(j);
                if norm(p2-p1,2)<(2*ru)
                    s = p2 - p1;
                    sn = s/norm(s,2);
                    s = s - 2*ru*sn;
                  if norm(s,2)<(2*ru-0.02*ru)
                        s = s;
                    else
                        s =0*s;
                    end
                    Fd = Fd -D*s;
                    Epn = Epn + 0.5*D*norm(s,2)*norm(s,2);
                end
            end    
        end

       a = -Fd / m;
        
        ax(i) = a(1);
        ay(i) = a(2);
        az(i) = a(3); 
    end
    
 Ep(ki) = 0.5*Epn;

    for i = 1:AN 
        
        p1(1) = x(i);
        p1(2) = y(i);
        p1(3) = z(i);
        v1(1) = vx(i);
        v1(2) = vy(i);
        v1(3) = vz(i);
        a(1) = ax(i);
        a(2) = ay(i);
        a(3) = az(i);
        
        if abs(p1(1))>=Rmax || abs(p1(2))>=Rmax || abs(p1(3))>=Rmax
            if abs(p1(1))>=Rmax 
                if (v1(1)/abs(v1(1))) == (p1(1)/abs(p1(1)))
                    v1(1) = -v1(1)
                end
            end
            if abs(p1(2))>=Rmax 
                if (v1(2)/abs(v1(2))) == (p1(2)/abs(p1(2)))
                    v1(2) = -v1(2)
                end
            end
            if abs(p1(3))>=Rmax 
                if (v1(3)/abs(v1(3))) == (p1(3)/abs(p1(3)))
                    v1(3) = -v1(3)
                end
            end
        end
        
        Ek(ki) = Ek(ki)+ 0.5*(v1(1)*v1(1)+v1(2)*v1(2)+v1(3)*v1(3));
        dv = a*dt;
        v1 = v1 + dv;
        p1 = p1 + v1*dt;
        
        vx(i) = v1(1);
        vy(i) = v1(2);
        vz(i) = v1(3);
        x(i) = p1(1);
        y(i) = p1(2);
        z(i) = p1(3); 
    end
      
    ti(ki) = t;
   ki=ki+1;

end
plot(ti,Ek+Ep);
plot(ti,Ek,'-',ti,Ep,'--',ti,Ek+Ep,'.');
f=vq;
end
PS: Initialisierungen und unrelevanten Code hab ich nicht hierherkopiert.

DANKE!
__________________
Koordinatensysteme sind die Extremstform von Egoisten- sie beziehen alles auf sich selbst.

http://thorsworld.net/
Mit Zitat antworten
  #2  
Alt 22.05.14, 21:48
Benutzerbild von Struktron
Struktron Struktron ist offline
Profi-Benutzer
 
Registriert seit: 31.01.2011
Beiträge: 231
Standard AW: Simulation elastischer Stöße - Energie nicht konstant

Hallo Ghosti,

mittlerweile ist die Simulation von harten Kugeln weit verbreitet. Als einfacher Ansatz hat sich der einfache Geschwindigkeitsübertrag in Richtung der Berührungsnormale bewährt. Vor allem bei der Programmierung von Spielen oder Computeranimationen. In 3-D ist das für den Anfang leichter nachvollziehbar, aber einfach ist es trotzdem nicht. Auch nicht, wenn man nur mit einfachen harten gleich schweren Kugeln rechnet. Lothar Brendel rechnet im Schwerpunktsystem, ein Link zu seinem stoss.pdf ist auf meiner Homepage.
Mein Ansatz ist vielleicht etwas schwerer zu verstehen, dafür verwende ich das Laborsystem und die Stöße werden in kartesischen Koordinaten betrachtet. Dabei sind Drehungen des Koordinatensystems in Richtung der wichtigen Relativgeschwindigkeiten erforderlich.
Vorstellen kann man sich leicht extreme Stöße, z.B. frontale oder (fast) orthogonale Stöße. Dabei wird offensichtlich, dass sich Impuls und Energie unerwartet merkwürdig verhalten. Zeichne Dir das am besten auf ein Stück Papier. Im Extremfall, wenn eines der beiden Teilchen (fast) zur Ruhe kommt und das andere die Bewegung übernimmt, kannst Du schon optisch erkennen, was mit Impuls und Energie passiert. Pythagoras hilft...
Einiges dazu steht auf meiner Homepage.

MfG erst mal und viel Erfolg,
Lothar W.
Mit Zitat antworten
  #3  
Alt 30.05.14, 18:04
ghostwhisperer ghostwhisperer ist offline
Profi-Benutzer
 
Registriert seit: 09.06.2009
Ort: Kronberg
Beiträge: 336
ghostwhisperer eine Nachricht über ICQ schicken
Standard AW: Simulation elastischer Stöße - Energie nicht konstant

Hi!
Das letzte Problem ist tatsächlich die endliche Auflösung dt der Zeit.
Egal was ich simuliere, Federn, elektrische Kräfte oder Planetenbahnen, je kleiner dt desto geringer der Fehler! Und dieser kumuliert, d.h. ist immer positiv!
Da ich Vielteilchen-Systeme simulieren will, kann ich nicht vorhersagen in welcher Richtung sich das ganze entwickelt. Daher kann ich den Fehler nicht durch Mittel der positiven und der negativen Ableitung der System-Größen minimieren..
Gibt es dafür eine Lösung??
MFG ghosti
__________________
Koordinatensysteme sind die Extremstform von Egoisten- sie beziehen alles auf sich selbst.

http://thorsworld.net/

Geändert von ghostwhisperer (30.05.14 um 18:07 Uhr)
Mit Zitat antworten
  #4  
Alt 30.05.14, 18:29
ghostwhisperer ghostwhisperer ist offline
Profi-Benutzer
 
Registriert seit: 09.06.2009
Ort: Kronberg
Beiträge: 336
ghostwhisperer eine Nachricht über ICQ schicken
Standard Problem gelöst!

http://theorie2.physik.uni-greifswal...mpp/teil2.html
__________________
Koordinatensysteme sind die Extremstform von Egoisten- sie beziehen alles auf sich selbst.

http://thorsworld.net/
Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:13 Uhr.


Powered by vBulletin® Version 3.8.8 (Deutsch)
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
ScienceUp - Dr. Günter Sturm