Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Energieerhaltung (https://www.delphipraxis.net/66709-energieerhaltung.html)

markusj 4. Apr 2006 16:18

Re: Energieerhaltung
 
Also, erstens LK=LeistungsKurs

So, dann zum Thema: Du lässt deinen Pendelmit einer Masse m aus einer Höhe h fallen. Das bedeutet, du gibtst ihm potentielle Energie, die nach Epot berechnet wird (m*g*h).
Diese Energie ist beim durchlaufen des Tiefpunktes voll in Bewegungsenergie, kinetischer Energie umgewandelt:
Ekin = 0,5*m*v^2 wobei v die Maximalgeschwindigkeit ist.
Zwischen den oberen Umkehrpunkten und dem Teifpunkt ist die Energie in beiden Systemen (sowohl Lage- als auch Bewegungsenergie) vorhanden.
Es gilt nach dem Energieerhaltungssatz für die Maximalwerte:
Epot = Ekin
m*g*h = 0,5*m*v^2 |m wird gekürzt, dann wird nach v umgestellt
v = sqrt(2*g*h)
Da du es hier mit einer Sinusfunktion zu tun hast, ist deine Momentangeschwindigkeit v*sin(w*t), wobei w (Omega) die Rotationsfrequenz enthält (2*pi*frequenz = omega).
Eigentlich hast du sogar eine Kosinusfunktion, da die Geschwindigkeit der Auslenkung um 90°hinterherhinkt.
So, die gespeicherte Energie E(t) nimmt also von Epot ausgehend ab.
Epot-Freib*s(t) = E(t), wobei s(t) enthält, welche Strecke der Pendel zurückgelegt hat.
Freib ist die unten angegebene Reibungskraft, das sogenannte Stoksche Gesetz.
Das bedeutet, du lässt die Kugel los, nach einem Rechenschritt hat sie eine Strecke mit einer Geschwindigkeit durchquert. Diese Geschwindigkeit fütterst du zusammen mit der Strecke in die Gleichung, dann erhältst du den restlichen Energiebetrag.
Dann gibst du wieder eine Energiepäckchen weiter ... bis Epot = 0. Dann das ganze Spiel umgekehrt.
Du nimmst ein Energiepäckchen der kinetischen Energie, und gibst es der potentiellen Energie zurück ... dein Pendel steigt. Glecihzeitig nimmt die Geschwindigkeit deines Pendels ab, damit auch die Strecke ... trotzdem wird noch gebremst.

Ich hoffem ich habs nicht übertrieben, bei Fragen, schick mir gerne eine Mail, ich hab zur Zeit nicht ganz soviel Zeit.

mfG

Markus

PS: Such mal nach harmonischer Pendelschwingung und guck mal unter leifiphysik, Klasse 11. Dort findest du viele Informationen zu diesem Thema

Flare 4. Apr 2006 16:37

Re: Energieerhaltung
 
Ganz so ausfürhlich wollte ich es zwar nicht haben, aber so ist es wesentlich genauer ^^
Ich müsste diese Formeln ja eigentlich auch erklären können...hab schließlich auch Physik Leistungskurs


Flare

ManuMF 4. Apr 2006 19:21

Re: Energieerhaltung
 
Hmmm, da haben wir letzte Woche eine Klausur drüber geschrieben... :cyclops:


Ich würde aber - wenn schon mit s(t) - die Formel für die gedämpfte Schwingung mit e und dem Abklingkoeffizienten nehmen, also

s(t) = s[max] * sin(wt + A) * e^((ln p% / T) * t)

wobei
s[max] = der maximale Ausschlag,
w = Omega (siehe #21),
A = Alpha (Phasenverschiebung (z.B. Pendel rechts -> 0,5pi)) und
p% = die Prozentzahl von s nach einem T. In der Luft ist das z.B. 0,95. Kann ja auch der Nutzer eingeben

Das dürfte mit Delphi ganz gut zu realisieren sein. Aber dann braucht es einen Button "neu starten", wenn das Pendel stehen geblieben ist ;-)

Vorschlag, um für s(t) t zu bekommen: Beim Starten des Programms wird in eine Variable GetTickCount gespeichert, und dann wird für t der Wert (StartVariable - GetTickCount) / 1000) genommen.

Ach ja, die Formel für T gilt nur für kleine Auslenkungen. Also so weit, wie die Kugeln im Programm momentan ausgelenkt werden, würde es nicht funktionieren.

Hoffe, das war jetzt auch nicht zu... physikalisch? ;-)

Gruß,
ManuMF

Nicodius 4. Apr 2006 20:04

Re: Energieerhaltung
 
danke für eure Mühe ;)


ich geh jetzt das ganze langsam durch - hol mir mein essen an den arbeitstisch und denk über die vorschläge nach :)


danke vielmals -

grüße Nico

Nicodius 4. Apr 2006 20:08

Re: Energieerhaltung
 
Zitat:

Zitat von ManuMF
s[max] = der maximale Ausschlag


in was wird der angegeben? ;) soll ich da den winkel angeben den es maximal hat?
oder eben eine konstante von der seillänge(die bei meinem programm ja nicht verändert wird)

grüße Nico

Flare 4. Apr 2006 20:46

Re: Energieerhaltung
 
s[max] ist die maximale Auslenkung in y-Richtung von dem Ruhepunkt der Kugel weg.


Flare

Nicodius 4. Apr 2006 21:00

Re: Energieerhaltung
 
aah danke vielmals :) - also eine konstante in meinem beispiel - perfekt *g*

Nicodius 4. Apr 2006 21:14

Re: Energieerhaltung
 
so tut mir leid ein problem habe ich noch :(


also ich hab jetzt mal alle formeln implementiert und bei mir ist dann imemr ekin = epot soll das so sein?

und jetzt mein eigentliches problem ich finde die geschwindigkeit sollte man an der animation erkennen


Delphi-Quellcode:
  Formelx := round(Zeichen.Width div 2 -50+ 150*cos( (180-Move.Position)*2*Pi/360));
  Formely := round(150*sin((Move.Position)*2*Pi/360));
  Formelxx := round(Zeichen.Width div 2 +20 + 150*cos( (360+Move.Position)*2*Pi/360));
  Formelyy := round(150*sin((360+Move.Position)*2*Pi/360));

  Label1.Caption := 'Wert: ' + IntToStr(Move.Position);
  e := Zeichen.Width div 2 -50;
  Zeichen.Repaint;
  Zeichen.Canvas.MoveTo(Zeichen.Width div 2 -100, 10);
  Zeichen.Canvas.LineTo(Zeichen.Width div 2 +100, 10);
  h := 150-Formelx;
  v := sqrt(2*g*h);
  EPot := m*g*h;
  Ekin := 0.5*m*power(v,2);
  Writer.Lines.Add('h  : ' + FloatToStr(h));
  Writer.Lines.Add('v  : ' + FloatToStr(v));
  Writer.Lines.Add('EPot: ' + FloatToStr(EPot));
  Writer.Lines.Add('Ekin: ' + FloatToStr(Ekin));
  for i := 1 to 5 do
  begin
  if (links = true) and (e = Zeichen.Width div 2 -50) then
  begin
    Zeichen.Canvas.MoveTo(e,10);
    Zeichen.Canvas.LineTo(Formelx+12,Formely+12);
    Zeichen.Canvas.Brush.Color := clgreen;
    Zeichen.Canvas.Ellipse(Formelx,Formely,Formelx+25,Formely+25);
    inc(e, 25);
  end
  else
  if (i = 5) and (links = false) then
  begin
    Zeichen.Canvas.MoveTo(e,10);
    Zeichen.Canvas.LineTo(Formelxx+12,Formelyy+12);
    Zeichen.Canvas.Brush.Color := clgreen;
    Zeichen.Canvas.Ellipse(Formelxx,Formelyy,Formelxx+25,Formelyy+25);
    inc(e, 25);
  end
  else
  begin

    Zeichen.Canvas.MoveTo(e,10);
    Zeichen.Canvas.LineTo(e,150);
    inc(e, 25);
    Zeichen.Canvas.Brush.Color := clgreen;
    Zeichen.Canvas.Ellipse(e-40,150,e-15,175);
  end;
  end;

wie könnte ich da eine geschwindigkeit simulieren? - wenn ich beim timer interval der geschwindigkeit anpassen würde wäre das ja nicht gut sichtbar

für gute ideen bin ich sehr dankbar :)


grüße Nico

Jelly 4. Apr 2006 22:41

Re: Energieerhaltung
 
Ähm... ohne jetzt genau jeden Rechenansatz durchgeschaut zu haben... Eins wurde komplett vergessen... Diese Pendelproblem mit den Kugeln lässt sich alleine mit der Energieerhaltung gar nicht erklären.

Lass ich eine Kugel aus einer Höhe h auf die anderen prallen, so ist die Ernergieerhaltung weiterhin gegeben, wenn auf der anderen Seite z.B. 2 Kugeln hochjagen, allerdings nur bis zu einer Höhe h'=h/2

Es braucht also unbedingt noch einen anderen Erhaltungssatz, nämlich die Impulserhaltung...

Nur mit beiden Erhaltungsgrössen lässt sich physikalisch das Problem überhaupt verstehen und lösen.

Nicodius 5. Apr 2006 05:56

Re: Energieerhaltung
 
ja ich habs mir einfach gemacht derweil und nur die animation gezeichnet - ich weiss

also sollte ich den impuls von kugel1-2-3-4 bis zur 5er errechnen?


grüße und danke - Nico


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:35 Uhr.
Seite 3 von 5     123 45      

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