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

Schiefer Wurf mit Luftwiderstand

 

bingbong
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 18.11.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.11.2007, 19:10     Titel:
  Antworten mit Zitat      
okay super danke.
so hab ichs mir eh gedacht (juhu ein erfolgserlebnis)

ich würde jetzt gerne von dieser Kurve einen bestimmten v-Wert ausgeben lassen. zB wenn der Weg 20m ist. und dann stoppen (also eine Abbruchbedingung wenn der Weg den Wert erreicht hat)..
aber ich komm mit dem ode-solver nicht klar. ich hab mir gedacht...

wenn qW (:,1) = 20 dann zeig mir qW(end,2)

aber irgendwie ist er damit nicht zufrieden..

hat jemand eine bessere Idee?
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 22.11.2007, 19:51     Titel:
  Antworten mit Zitat      
Hmmm...

In dem Fall würde ich in der Funktion mit den DGLs eine if-Bedingung einfügen:

Code:

dq = zeros(4,1);
if dq(1) <= x_stop
  dq(1) = q(2);
  dq(2) = -1/m*k*q(2).*sqrt(q(2).^2+q(4).^2);
  dq(3) = q(4);
  dq(4) = -g - 1/m*k*q(4).*sqrt(q(2).^2+q(4).^2);
end
 


Damit bricht er auf jeden Fall die weitere Berechnung ab, sobald x_stop erreicht wurde, allerdings wird in die Zeit noch weiter laufen und die Kurven im Plot werden ab dem Punkt zu Geraden - weil konstant.

Probiers mal damit - ich hoffe das klappt!

Grüße
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
bingbong
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 18.11.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.11.2007, 20:01     Titel:
  Antworten mit Zitat      
das kann ich nicht erkennen weil die kurve vorher eigenltich auchschon ziemlich konstant aussehen.. obs sies wwirklich ist weiß ich nicht.. ich hoffe mal nicht! sonst stimmt ja die ganze formel nicht..

muss ich da nicht break oder so einbauen, oder return? (funktioniert zwar nicht, aber mein kopf sagt es muss stimmen)

Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 22.11.2007, 20:45     Titel:
  Antworten mit Zitat      
Wenn du die if-Abfrage folgendermaßen erweiterst, bricht er den ODE-Solver nach Erreichen von x_stop ab:
Code:

dq = zeros(4,1);
if dq(1) <= x_stop
dq(1) = q(2);
dq(2) = -1/m*k*q(2).*sqrt(q(2).^2+q(4).^2);
dq(3) = q(4);
dq(4) = -g - 1/m*k*q(4).*sqrt(q(2).^2+q(4).^2);
else
return; % damit bricht Matlab diese Fkt. ab und kehrt zur vorherigen zurück
end
 


Hattest Recht mit deinem Gefühl Wink

Grüße
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
bingbong
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 18.11.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.11.2007, 22:45     Titel:
  Antworten mit Zitat      
es geht einfach nicht... also ich weiß nicht worans liegt. und ich bin nur mehr verzweifelt.. hier nochmal mein code,.. hab inwzischen einiges umgeändert und ziemlich viel auskommentiert... ich weiß echt nicht mehr worans liegt.
also noch mal zu klarheit.-... der läufer nimmt anlauf. springt ab und läuft nach der landung wieder (beschleunigt erneut) weiter.
geschwinddgkeit über weg.
(komisch ist auch obwohl ich immer die (end)-werte der vorigen kurve benutze liegt die neue an einem anderen Punkt.

Code:





a1=3.75;
s1=0;

global v1;

  while s1<12.72
    s1=0:.001:12.72;
    global v1;
        v1=a1*sqrt(2*s1/a1);
        plot (s1,v1,'r')
        hold on
  end


%----------------Beginn Sprung----------------

% --- Bewegungsgleichungen ---
%
% Der schiefe Wurf in der x-y-Ebene mit Luftwiderstand wird
% durch die Bewegungsgleichungen
%
% m*xdd = - k*xd*sqrt(xd^2+yd^2)
% m*ydd = - m*g - k*yd*sqrt(xd^2+yd^2)
% globale Variablen (werden auch von wurf_odefun benutzt)
global k m g
% Parameter
m = 75; % (kg)

cw = 0.78;

A = 0.63; %1.80*0.35
rho = 1.204;
h = 1.067;
k = cw*A*rho*1/2;% (kg/m)

g = 9.81; % (m/s^2)
% Endzeit
T = 1.27; % (s)
% Anfangsbedingungen
x0 = 12.72; % (m)
y0 = 0; % (m)
alpha = (asin(sqrt(2*g*h/v1(end)^2))); % (rad)

v0 = v1(end); % (m/s)
q0 = [x0,v0*cos(alpha/180*pi),y0,v0*sin(alpha/180*pi)];
% Integration mit Luftwiderstand
%options = odeset('event', @abbruch);

[tW,qW] = ode45('testode',[0 T],q0);


% Plotten
figure(1)
hold on
%plot(qW(:,2)+qW(:,4),qW(:,1),'green','LineWidth',2) % Geschwindikgeit (vx+vy), sx
plot(qW(:,1),qW(:,4)+qW(:,2),'green','LineWidth',2) % Geschwindikgeit (vx+vy), sx

% plot(qW(:,1),qW(:,2),'LineWidth',2)
% plot(qW(:,3),qW(:,4),'LineWidth',2)
hold on

% plot(qW(:,2),qW(:,1),'blue','LineWidth',2), % für v_x über sx
% plot(qW(:,4),qW(:,1),'yellow','LineWidth',2), % für v_y über sx
% plot(qW(:,4),qW(:,3),'black','LineWidth',2), % für v_y über sy
% hold off,
%sa=(v0+cos(alpha)*(v0+sin(alpha)+sqrt(v0^2*sin(alpha)*sin(alpha)+2*g*h)))/g;


d = sqrt(qW(end,2)^2+qW(end,4)^2);


xlabel('s (m)')
ylabel('v (m/s)')
legend('mit Luftwiderstand')
box on, grid on

s2 = 20;


%----------------Ende Sprung----------------


a2=1.05;



s3=qW(end,1);


v4 = 0.3;

global v3;

  while s3<20
    s3=qW(end,1):.001:25;
    global v3;
        v3= a2*sqrt(2*s3/a2);
        plot (s3,v3,'b')
        hold on
  end
 
 


Code:

% Schiefer Wurf mit Luftwiderstand
% ODE-Funktion
function dq = testode(t,q)
global k m g ddd
% Die Bewegungsgleichungen
%
% m*xdd = - k*xd*sqrt(xd^2+yd^2)
% m*ydd = - m*g - k*yd*sqrt(xd^2+yd^2)
%
% werden mit
%
% q(1) = x
% q(2) = xd
% q(3) = y
% q(4) = yd
%
% in ein DGL-System erster Ordnung ¨uberf¨uhrt:

a=0.1;
dq = zeros(4,1);
x_stop =  [20; 0; 0; 0];
if dq(1) >= x_stop
dq(1) = q(2); %sx
dq(2) = -1/m*k*q(2).*sqrt(q(2).^2+q(4).^2); %Vx
dq(3) = q(4); %sy
dq(4) = -g - 1/m*k*q(4).*sqrt(q(2).^2+q(4).^2); %Vy

else
return;
end
 


hey leute ihr seid echt toll.. tut mir leid dass ich so rumnerve .. nur ich bracuh das morgen und will nicht ein jahr wiederholen Sad

DANKE!
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 23.11.2007, 08:05     Titel:
  Antworten mit Zitat      
Folgendes:
In der Solver-Funktion:
Entweder x_stop = 20 setzten oder bei der if-Bedingung q(1) <= x_stop(1) schreiben! Wichtig ist: q(1) <= ... nicht dq ... weil dq zwei Zeilen vorher immerwieder auf '0' setzt.

Dann die while-Zeile und das zugehörige end auskommentieren und es sollte laufen!

Ich hoffe es klappt noch!

Grüße
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Physik Prof

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2008, 12:16     Titel: Prof. Dr. Dr. Dr.
  Antworten mit Zitat      
also wir benutzen zurzeit ein programm das heißt Coach 6
kostet so 4 €
das ist sehr leicht zu bedienen die komplette berechnung wird sozusagen durch darstellungen ersetzt
mit diesem programm habe ich ein modell zum schiefen wurf mit luftreibung erstellt, dass wir morgen nun un der schule zum auswerten von einigen versuchen verwenden.
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.