Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Luftwiderstand (https://www.delphipraxis.net/131495-luftwiderstand.html)

rajuneon 25. Mär 2009 19:42


Luftwiderstand
 
Guten Abend!

Ich habe das Problem, dass meine Berechnungen nicht so funktionieren wie sie sollten, aber nicht weiß, woran das liegen könnte.

lw ist der Luftwiderstand, (interv/1000) ist dt (siehe WIKIPEDIA von dort sind auch meine anderen Formeln)
Delphi-Quellcode:
Timer1Timer...
lw := 0.5 * rho * cw * A * (sqr(vx) + sqr(vy)) / 10000; // vx und vy hier noch die Startwerte aus der PLAY-Button-Procedure
winkelbogen := arctan(vy / vx);
  winkel := RadToDeg(winkelbogen);
ax := (-cos(winkelbogen)) * lw * m;
ay := (-g) - (sin(winkelbogen) * lw / m);
vx := vx + (ax * (interv / 1000));
vy := vy + (ay * (interv / 1000));
v := vx + vy;
x := x + (vx * (interv / 1000));
y := y + (vy * (interv / 1000));
// Berechnung der variablen Werte MIT Luftwiderstand
Die Beträge der errechneten Werte wachsen, aber meist mit negativem Vorzeichen. Normalerweise müsste z.B. der Betrag von vx erst sinken und dann wieder steigen, x genau andersherum...stattdessen werden die werte immer kleiner. Was ist denn daran falsch? Ich verzweifel hier bald!

BAMatze 25. Mär 2009 20:01

Re: Luftwiderstand
 
Zitat:

Zitat von rajuneon
Delphi-Quellcode:
Timer1Timer...
lw := 0.5 * rho * cw * A * (sqr(vx) + sqr(vy)) / 10000; // <-- hier ziehst du die Wurzel aus vx und vy gemäß Wiki sollten das aber Quadrate sein!!
winkelbogen := arctan(vy / vx);
  winkel := RadToDeg(winkelbogen);
ax := (-cos(winkelbogen)) * lw * m;
ay := (-g) - (sin(winkelbogen) * lw / m);
vx := vx + (ax * (interv / 1000));
vy := vy + (ay * (interv / 1000));
v := vx + vy;
x := x + (vx * (interv / 1000));
y := y + (vy * (interv / 1000));
// Berechnung der variablen Werte MIT Luftwiderstand

Also hab mir die Formeln in Wiki mal angeschaut und habe einen Fehler gefunden, vieleicht wars das ja dann schon, hab den Fehler kommentiert. Anscheinend hast du nur Wurzel mit Quadrat vertauscht in der ersten Formel.

MfG
BAMatze

rajuneon 25. Mär 2009 20:11

Re: Luftwiderstand
 
sqr ist doch quadrat
sqrt sind imho wurzeln
oder irre ich da?

BAMatze 25. Mär 2009 20:15

Re: Luftwiderstand
 
Ja hast recht, hatte gerade in der Hilfe bei C nachgeschaut. Dann schaue ich mal ob ich was anderes finde.

Schau mal bei ax, da wird in Wiki auch durch m dividiert, du multiplizierst. (diesmal sollte ich die Operationszeichen nicht verwechseln) :-D :-D

rajuneon 25. Mär 2009 20:25

Re: Luftwiderstand
 
Hey! Das war sicher richtig^^ Nur leider behebt es nicht den Hauptfehler, dass der Betrag von z.B. der Y-Koordinate immer größer wird und das auch noch bei negativem Vorzeichen! Das kann ja nicht sein, er muss doch wieder kleienr werden, wenn der Scheitelpunkt erreicht ist.

BAMatze 25. Mär 2009 20:32

Re: Luftwiderstand
 
ok dann musst du mir mal kurz erklären, was folgendes bedeutet?

Zitat:

(interv / 1000)
Also normaler Weise hätte ich die Beschleunigungen ax und ay von Hand integriert, dann kommt mach auch auf die von dir erwarteten cos- und sin-Asdrücke.

rajuneon 25. Mär 2009 20:54

Re: Luftwiderstand
 
(interv/1000) ist mein dt (also das vom User gewählte Intervall/1000ms)

rajuneon 25. Mär 2009 22:11

Re: Luftwiderstand
 
es lag daran, dass ich den winkel nicht ins bogenmaß gebracht hatte -.-
vielen dank trotzdem für die mühe!

Luckie 25. Mär 2009 23:53

Re: Luftwiderstand
 
Wenn ich mich an meine Mechanikvorlesung richtig erinnere, funktioniert das aber nur bei niedrigen Geschwindigkeiten und laminaren Strömungen. Sobald es Verwirrbelungen gibt, muss man Differentialgleichungen lösen. Und da wünsche ich viel Spass. :?

http://de.wikipedia.org/wiki/Laminar


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz