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
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 18.11.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2007, 13:41     Titel: Schiefer Wurf mit Luftwiderstand
  Antworten mit Zitat      
Hallo!

Also ich habs geschafft den normalen schiefen Wurf zu programmieren. Aber jetzt möchte ich den Luftwiderstand einbauen und weiß nicht weiter.
Übers internet hab ich herausgefunden dass ich das auf jeden Fall mit einer While Schleife machen muss... Sonst find ich nur seitenlange berechnungen die ich nicht durchschau...

und ich glaub ich bin auch in meiner Überlegung falsch weil ich darf von einer Geschwindigkeit doch keine Kraft einfach abziehen? (ich stelle geschwindigkeit über weg dar)

Wär toll wenn mir jemand weiterhelfen könnte...
Private Nachricht senden Benutzer-Profile anzeigen


Martin
Admin

Admin



Beiträge: 651
Anmeldedatum: 16.06.07
Wohnort: Bietigheim-Bissingen
Version: ---
     Beitrag Verfasst am: 18.11.2007, 13:59     Titel:
  Antworten mit Zitat      
Hallo bingbong,

ich kenn die genaue Aufgabe nicht, aber wenn man mit Luftwiderstand rechnen muss dann ist das eine Kraft die definitiv entgegen wirkt.

Also Beispiel für die Lufwiderstandskraft eines Fallschirms:

FL = Luftwiderstandsbeiwert (cw) * Fläche Fallschirm (A) * Luftdichte/2 * Fallgeschwindigkeit²
(Ist ein Beispiel aus diesem Buch)

Wie natürlich deine DGL aussieht und dort die Luftwiderstandskraft eingebaut werden muss kann ich so nicht sagen.

Ich hoffe dir hilft das ein wenig weiter.

Viele Grüße und noch einen schönen Sonntag
Martin
_________________

Der kleine goMatlab.de-Knigge - Eine kleine Liste von wichtigen Regeln, die jeder beachten sollte
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: 18.11.2007, 14:30     Titel:
  Antworten mit Zitat      
Danke, aber die Formel war mir eigenlich eh klar.
Es geht nur darum ob ich
v- Fw rechnen darf. und so eine schleife aussschauen sollte?
ich habe eine geschwindigkeit in x und in y richtung (vx,vy), beziehungsweise auch nur v. Soll ich jetzt eine Schleife machen die über die Zeit den Luftwiderstand eifnach abzieht?
War meine erste Überlegung aber da wird die Geschw. sofort negativ.. und das ist ja physikalisch unmöglich...


ps.: die aufgabe ist wie schon der titel: Programmierung von einem schiefen Wurf mit Luftwiderstand. Parameter sind frei wählbar.
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 18.11.2007, 17:17     Titel:
  Antworten mit Zitat      
Moin,
ich denke du bist gedanklich noch auf dem Holzweg Wink
Wenn du den Luftwiderstand mit ins Spiel bringst, muss dir klar sein, dass er sich in Abhängigkeit von der Geschwindigkeit ändert (wie in der Gleichung von Martin).

Das bedeutet, du musst dir zu jedem Zeitschritt deines Wurfes die Geschwindigkeit errechnen und kannst daraus dann den zugehörigen Luftwiderstand errechnen.

In diesem Moment bist du bei Differentialgleichungen (DGL) und die kann man in MATLAB mit ODE-Solvern lösen. Also nichts mit WHILE-Schleifen (sollten hier nix zu suchen haben Wink )

Grüße
Alex

PS: sonst poste doch deine bisherige Lösung - vllt. hab ich die Aufgabenstellung an sich doch noch nicht richtig verstanden...
_________________

>> 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: 18.11.2007, 17:31     Titel:
  Antworten mit Zitat      
Very Happy nun bin ich um einiges klüger

allerdings gibts da noch eine fragen ....

steve hat Folgendes geschrieben:

Das bedeutet, du musst dir zu jedem Zeitschritt deines Wurfes die Geschwindigkeit errechnen und kannst daraus dann den zugehörigen Luftwiderstand errechnen.


mit FL = Luftwiderstandsbeiwert (cw) * Fläche Fallschirm (A) * Luftdichte/2 * Fallgeschwindigkeit² dieser Formel bekomme ich als Ergebnis eine Kraft, Die Luftwiderstandskraft.
Aber keine Geschwindigkeit...
ich verstehs nicht... Sad

steve hat Folgendes geschrieben:

In diesem Moment bist du bei Differentialgleichungen (DGL) und die kann man in MATLAB mit ODE-Solvern lösen. Also nichts mit WHILE-Schleifen (sollten hier nix zu suchen haben Wink )



ODE... damit kann ich überhuapt nicht umgehen...
Rolling Eyes
und das mit der while-Schleife hab ich aus dem Internet....



Vielleicht hat ja jemand die Geduld mir das nochmal zu erklären...

danke aber für die antwortetn bisher...
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 18.11.2007, 19:50     Titel:
  Antworten mit Zitat      
Na klar Wink

Am besten tasten wir uns Schritt für Schritt nach vorne:

mit der Gleichung
Zitat:
FL = Luftwiderstandsbeiwert (cw) * Fläche Fallschirm (A) * Luftdichte/2 * Fallgeschwindigkeit²
kannst du dir den Widerstand berechnen. Allerdings brauchst du die Geschwindigkeit für diese Berechnung (Fallgeschwindigkeit²).

Ich denke du hast dir bis jetzt ein Programm geschrieben, welches für eine bestimmte Anfangsgeschwindigkeit eine Geschwindigkeit zu einem bestimmten Zeitpunkt berechnet, oder?

Das ist in etwa schon richtig, nur kannst du dann auch nur für diesen Zeitpunkt den Luftwiderstand berechnen - klar soweit?

Was wir jetzt brauchen, sind zwei DGLen. Eine für die Geschwindigkeit und eine für den Luftwiderstand.
Die für den Luftwiderstand (LW) haben wir ja schon (wenn wir diese nehmen können?!):
Zitat:
FL = Luftwiderstandsbeiwert (cw) * Fläche (A) * Luftdichte/2 * Fallgeschwindigkeit²

Die Gleichung für die Geschwindigkeit brauchen wir noch (hast du aber oder?).

Jetzt gehts ans Eingemachte Wink
Mit der LW-Gleichung können wir den LW für den Beginn des Wurfes berechnen, da wir die Anfangsgeschwindigkeit ja schon haben.
Da der LW eine Kraft ist, müssen wir diese noch in eine Beschleunigung umrechnen!
Zitat:
F=m*a


Dann erstellst du die Differentialgleichung für die Geschwindigkeit in der Form dv/dt = ...

zur Programmierung:
du schreibst dir eine Funktion
Code:
function dxdt = geschw(t,x,p)
% t ist der Zeitvektor; x ist der Vektor der Geschwindigkeit und p ist eine Structvariable mit den Parametern

v = x; % Übergabe der Anfangsbedingung v0 (wo diese definiert wird, das kommt noch)

% Jetzt folgen die eigentlichen Berechnungen:
% 1. für den Luftwiderstand:
LW = p.cw*p.A*p.rho_L/2*v^2;

% 2. für die Geschwindigkeitsänderung:
dvdt = ...; %hier muss dann die Gleichung rein die du erstellt hast

dxdt = dvdt; % Überschreiben der Änderungen in den dxdt-Vektor (mann kann auch gleich mit x und dxdt rechnen - allerdings mach ich das immer so, dann behält man besser den Überblick)

end
 


Und jetzt noch das file für den Aufruf der Funktion:
Code:

% definierst du die Parameter und Anfangsbedingungen:
p.A = ...; %m² Fläche
p.cw = ...; %Widerstandsbeiwert
p.rho_L = ...; kg/m³ Luftdichte
p.g = 9.81; % m/s² Fallbeschleunigung
p.v0 = ...; % m/s Anfangsgeschwindigkeit
p.alpha = ...; % Abwurfwinkel
p.tend = ...; % s Simulationsende
%falls weitere Parameter benötigt werden, in der gleichen Art definieren

% Definition des Simulationszeit und der Anfangsbedingungen:
tsp = [0 p.tend];
x0 = p.v0;

% Aufruf des ODEsolvers:

[T,V] = ode45(@geschw,tsp,x0,[],p);
% Diese Zeile gibt die Lösung der DGL in der Funktion geschw() zu den Zeitpunkten T mit den Werten V zurück
% Diese kannst du dir nun plotten:
figure,
plot(T,V);

 


Das müsste es gewesen sein!
Ich hab das jetzt so aus dem Kopf rekonstruiert und hoffe das es halbwegs funktioniert!
Falls nicht, dann schreib einfach nochmal hier rein - wo es hakt Wink

Grüße
Steve
_________________

>> 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: 19.11.2007, 13:57     Titel:
  Antworten mit Zitat      
okay super danke.
Werd mich mal eingehend damit beschäftigen und hoffenltich krieg ichs hin. wenn nicht meld ich mich wieder..

Vielen Dank!
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: 21.11.2007, 19:51     Titel:
  Antworten mit Zitat      
Also ich versuch das jetzt schon ewig und kriegs einfach nicht hin. Meine geschwindigkeitsformel stimmt überhaupt nicht. und mir läuft die zeit davon. Ich seh nur mehr rote Fehlermeldungen Shocked
Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 21.11.2007, 20:52     Titel:
  Antworten mit Zitat      
Poste doch mal deine .m-files. Dann kann ich mal drüber schauen und die Fehlermeldungen evtl. auch verringern 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: 21.11.2007, 22:21     Titel:
  Antworten mit Zitat      
Code:
% --- 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
% Paramter
m = 1; % (kg)
k = 0.1; % (kg/m)
g = 9.81; % (m/s^2)
% Endzeit
T = 2.0; % (s)
% Anfangsbedingungen
x0 = 0; % (m)
y0 = 0; % (m)
alpha = 60; % (?)
v0 = 10; % (m/s)
q0 = [x0,v0*cos(alpha/180*pi),y0,v0*sin(alpha/180*pi)];
% Integration mit Luftwiderstand
[tW,qW] = ode45('testode',[0 T],q0);
% Plotten
figure(1)
hold on
plot(qW(:,5),qW(:,6),'LineWidth',2)

xlabel('x (m)')
ylabel('y (m)')
legend('mit Luftwiderstand')
box on, grid on
 


Code:

% Schiefer Wurf mit Luftwiderstand
% ODE-Funktion
function dq = testode(t,q)
global k m g
% 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:
dq = zeros(4,1);
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);
 


so wird weg über weg dargestellt.. aber ich bracuhe geschwindigkeit über weg 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, 09:36     Titel:
  Antworten mit Zitat      
Guten Morgen!

Also folgendes ist mir aufgefallen:

bingbong hat Folgendes geschrieben:
Code:
plot(qW(:,5),qW(:,6),'LineWidth',2)
kann nicht funktionieren, da dein Vektor qW nur 4 Spalten hat.
Ansonsten läuft das Programm in der Form bei mir ohne Fehler!

Ich vermute, dass der Vektor q(2) bzw. qW(:,2) die Geschwindigkeit (-änderung) in x-Richtung und analog q(4) bzw. qW(:,4) in y-Richtung ist, richtig?
Wenn dem so ist und du die Gesamtgeschwindigkeit über den Weg x plotten willst, musst du den plot-Befehl folgendermaßen ändern:

Code:

plot(qW(:,1),qW(:,2)+qW(:,4),'LineWidth',2)
 


Damit wird auf der x-Achse der Weg x aufgetragen und auf der y-Achse die Vektoraddidtion der Einzelgeschwindigkeiten, also die Gesamtgeschwindigkeit.

Analog kannst du für die Einzelgeschwindigkeiten ebenfalls Plots anfertigen:
Code:

hold on,
plot(qW(:,1),qW(:,2),'b','LineWidth',2), % für v_x über x
plot(qW(:,1),qW(:,4),'r','LineWidth',2), % für v_y über x
plot(qW(:,3),qW(:,4),'k','LineWidth',2), % für v_y über y
hold off,
 


Hoffe das ist so in Ordnung! Ansonsten schreib einfach wo es noch hakt!

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?

Zuletzt bearbeitet von steve am 22.11.2007, 14:41, insgesamt einmal bearbeitet
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, 14:37     Titel:
  Antworten mit Zitat      
alles klar Very Happy !! ich weiß schon was mein problem war! und zwar hab ich ganze zeit erwartet dass eine schöne wurfkurve kommt. aber ich hab vergessen die Absprungbeschleunigung beim ersten Mal dazuzuzählen. DAmit würd ja eine kurzzeitige Geschwindigkeitserhöhung kommen. Wisst ihr was ich meine?
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, 14:41     Titel:
  Antworten mit Zitat      
Nein, spontan weiß ich jetzt nicht was du damit meinst - kannst es ja evtl. nochmal erklären Wink

Aber schön, wenn die Probleme jetzt behoben sind Smile

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, 16:17     Titel:
  Antworten mit Zitat      
okay is eh klar. weiß schon Smile

also ich programmiere ja eigentlich einen sprung mit anlauf. aber da der sprung ja eigentlich ein schiefer wurf ist hab ich hier einfach wurf geschrieben.

und ich will nun die absprungskraft einbringen...
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, 17:07     Titel:
  Antworten mit Zitat      
Achso...

Naja, dann halt die Absprungkraft in x- und y-Anteil zerlegen und mit der Masse mutliplizieren, dann hast du die Beschleunigung in x- und y-Richtung. (Für alle die, die sich auch mal an einer solchen Aufgabe versuchen wollen/müssen Wink)

Also dann weiterhin viel Erfolg!

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
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.