Een simulatie van een slinger

Moderators: ArcherBarry, Fuzzwood

Berichten: 24

Een simulatie van een slinger

Hallo allemaal,

Wij moeten nu voor school een profielwerkstuk maken en we gaan een simulatie van 2 gekoppelde slingers maken in Java.

Nu zijn we begonnen met het maken van een enkele slinger, zou niet zo moeilijk moeten zijn (dachten we ;) ). We hebben bij natuurkunde de meeste formules voor harmonische trillingen al gehad. In de simulatie kun je de beginhoek (a), massa (m), de lengte van de slinger (l) en de valversnelling (g = 9,81 m/s2). Waar we naar toe moeten is een functie die de hoeksnelheid w geeft als functie van de tijd omdat we op de computer met een aantal beelden per seconde werken en per beeld een rotatie plaatsvind die we in radialen moeten opgeven.

Hier gaat het een beetje mis. We kunnen met alle gegevens die we hebben in het begin de trillingstijd (T), frequentie (f), en de amplitude uitrekenen (maximale horizontale uitwijking t.o.v. evenwichtstand toch?). We kennen de formule u(t) = A * sin(2*pi*f*t), en als je daar dan de afgeleide van neemt krijg je de horizontale snelheid als functie van de tijd: v(t) = A * cos(2*pi*f*t) * f * t.

Dit moet worden omgezet in radialen, want aan meter per seconde hebben we niets. We kennen de formule v = w * r -> w = v / A want volgens onze natuurkundelaraar moesten we voor de straal de A invullen (kan iemand mij vertellen waarom?). Als we dan de de formule v(t) = ... substitutioneren in w = v / A, krijg je w = (A * cos(2*pi*f*t) * f * t) / A.

Klopt dit allemaal? Want ik heb ook ergens gelezen dat de hoeksnelheid bij een slinger constant is, maar dat is volgens mij niet waar.

Alvast bedankt!

Re: Een simulatie van een slinger

Het klopt dat het misgaat. Als je de afgeleide neemt van u(t)=Asin(2.pi.f.t) dan is t de variabele. Als je daarnaar differentieert krijg je een andere uitdrukking.

Nog even een vraag tussendoor, waar heb je die v voor nodig? Als je de herhalingsfrekwentie fs van de simulatie kent, dan is toch gewoon de tijd t=n/fs en is de uitwijking u=A.sin(n.2.pi.f/fs). Of is dat niet de bedoeling.

Ik neem aan dat je een methode weet om de f van de slinger uit te rekenen, anders loop je vast.

Een heel andere simulatie gaat niet uit van de harmonische beweging maar rekent uit welke kracht er opde slinger werkt, welke (hoek-)versnelling hij dan krijgt, etc. Is dat misschien de bedoeling?

Berichten: 24

Re: Een simulatie van een slinger

bessie schreef:Het klopt dat het misgaat. Als je de afgeleide neemt van u(t)=Asin(2.pi.f.t) dan is t de variabele. Als je daarnaar differentieert krijg je een andere uitdrukking.

Nog even een vraag tussendoor, waar heb je die v voor nodig? Als je de herhalingsfrekwentie fs van de simulatie kent, dan is toch gewoon de tijd t=n/fs en is de uitwijking u=A.sin(n.2.pi.f/fs). Of is dat niet de bedoeling.

Ik neem aan dat je een methode weet om de f van de slinger uit te rekenen, anders loop je vast.

Een heel andere simulatie gaat niet uit van de harmonische beweging maar rekent uit welke kracht er opde slinger werkt, welke (hoek-)versnelling hij dan krijgt, etc. Is dat misschien de bedoeling?
Klopt, dat was een foutje van mij, kwam ik net achter ;) .

w = (A * Math.cos(2*Math.PI*f*t) * f * 2 * Math.PI) / A is dan de formule.

Als het programma wordt opgestart, berekent hij de T door T = 2*pi*sqrt(l/g) want de l is bekend.

Vervolgens de frequentie door f = 1 / T.

Ik heb hem nu slingeren met de bovenstaande formule, maar het probleem is dat de maximale uitwijking niet gelijk is aan de amplitude ;) , misschien dat ik mijn code eens moet posten?

Trouwens, de amplitude is toch de maximale horizontale uitwijking? Als de maximale uitwijkingshoek dan 45 graden is (gegeven), dan is de A toch A = (lengteSlinger/1000.0) * Math.sin(alfa*Math.PI/180.0)? (In Java moet de sinus is radialen worden gegeven).

Re: Een simulatie van een slinger

Goed plan mits de code niet te lang is.

Waarom gedeeld door A in de formule

w = (A * Math.cos(2*Math.PI*f*t) * f * 2 * Math.PI) / A ?

En nee, de amplitude is niet de horizontale uitwijking. De sinus/cosinus in je formules zijn afkomstig uit de oplossing van de slinger vergelijking, waar ik naar refereerde in een eerdere post (kracht, versnelling etc). Deze oplossing beschrijft de hoek die de slinger heeft tov de verticaal.

Berichten: 24

Re: Een simulatie van een slinger

Code: Selecteer alles

public class slinger extends Applet implements Runnable {

	int x = 200, y = 100, lengteSlinger = 200, breedteSlinger = 20, straalCirkel = 10,

	FPS = 20;

	double g = 9.81, T, f, m = 0.140, alfa = 1, A, u, t = 0, v, w, alfax;

	double animationCounter = 0;

	  Thread animator; // The thread that performs the animation

	  volatile boolean pleaseStop; // A flag to ask the thread to stop



	public void init() {

		T = 2*Math.PI*Math.sqrt((lengteSlinger/1000.0)/g);

		f = 1 / T;

		A = (lengteSlinger/1000.0) * Math.sin(alfa*Math.PI/180.0);

	}



  public void paint(Graphics g) {

	  System.out.println(u);

	  Graphics2D g2d = (Graphics2D)g;

	g2d.setColor(Color.red);

	g2d.rotate(w/FPS,x+0.5*breedteSlinger,y); // rotate(aantal radialen, xDraaipunt,yDraaipunt)

	g2d.drawString("max A: " + A + ", u = " + u,250,200);

	g2d.fillRect(x, y, breedteSlinger, lengteSlinger); // fillRect(x,y,breedte,lengte)

	g2d.setColor(Color.black);

	g2d.fillOval(x-5+breedteSlinger/2,y-straalCirkel/2,straalCirkel,straalCirkel);

  }



   public void animate() {

	// u(t) = A * sin(2*pi*f*t)

	// v(t) = A * cos(2*pi*f*t) * f * t

	// v = w * r = w * A

	// w = (A * cos(2*pi*f*t) * f) / A

	u = A * Math.sin(2*Math.PI*f*t);

	w = (A * Math.cos(2*Math.PI*f*t) * f * 2 * Math.PI) / A;

	t += 0.050;

	repaint();

  }



 }


Ik heb alle overige code die er niet toe doet, even weggelaten. ;)

Die gedeeld door A komt uit de formule v = w * r en we moesten voor de r de amplitude invullen, volgens mij had ik dat in mijn eerste post verteld.

Gebruikersavatar
Berichten: 7.224

Re: Een simulatie van een slinger

Bedenk eens goed waar je de hoeksnelheid van de slinger voor nodig hebt. Heb je deze wel nodig?

Bedenk eens goed wat de amplitude van een slinger is en hoe je deze uit kunt rekenen (maak een tekening!)

Waarom is alfa=1 in je code. Een uitwijking van 1 graden is erg weinig.
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton

Berichten: 24

Re: Een simulatie van een slinger

Bart schreef:Bedenk eens goed waar je de hoeksnelheid van de slinger voor nodig hebt. Heb je deze wel nodig?

Bedenk eens goed wat de amplitude van een slinger is en hoe je deze uit kunt rekenen (maak een tekening!)

Waarom is alfa=1 in je code. Een uitwijking van 1 graden is erg weinig.
Elke 50 ms wordt de functie paint aangeroepen, dus elke 50 ms gebeurt er een rotatie. Deze wordt gegeven in radialen. De eenheid van de hoeksnelheid is rad / s dus om uit te rekenen hoeveel radialen hij moet verplaatsen in die 50 ms, deel je de hoeksnelheid door 20.

De amplitude van een slinger is de horizontale afstand van de verticaal tot de uiterste stand van de slinger toch? Als je de slinger tekent in de uiterste stand (iets van 10 graden bijv.) kun je de amplitude uitrekenen door de sinus van die 10 graden want de sinus = overstaande hoek (A) gedeeld door de schuine zijde (lengte slinger).

Ik was een beetje met alfa aan het expirimenteren. Als ik bijv. alfa 45 graden maakt, zou de maximale hoek van de slinger toch ook 45 graden moeten worden? Dat gebeurde bij mij helaas niet. ;)

Re: Een simulatie van een slinger

Volgens mij zit je er op een aantal punten goed naast. Wat je goed moet onthouden is, dat de functie u(t) weergeeft welke hoek de slinger maakt met de verticaal. Het is de oplossing van de vergelijkingen die gelden voor de kracht en de versnelling van de slinger.

Om een vergelijking te maken: de functie u(t)=sin(ft) is ook de oplossing van een massa die aan een veer hangt en die in een harmonische beweging wordt gebracht.

Dat er in u(t) een sinus voorkomt, is een beetje verwarrend, want het lijkt dan of het gaat om de geometrie van de slinger zelf. Maar dat is dus niet zo. Sterker nog, om u(t)=sin(ft) te mogen gebruiken moet je de geometrie van de slinger helemaal wegdenken, hij geldt alleen voor kleine uitwijkingen. Kijk eens rond op dit forum met zoekterm slinger dan leer je heel veel over het hoe en waarom.

Nu is jouw programma een eerste experiment. Maar voor je opdracht moet je twee gekoppelde slingers simuleren. Welnu, ik weet niet hoe dat eruit ziet, maar ik heb een sterk vermoeden dat u(t)=sin(ft) dan helemaal niet meer opgaat. Juist daarom denk ik dat je snel naar een andere vorm moet zoeken, nl. gewoon de vergelijking waar ik het al een paar keer eerder over heb gehad, voor de kracht en de versnelling. Maar dat is natuurlijk aan jou.

Berichten: 24

Re: Een simulatie van een slinger

bessie schreef:Volgens mij zit je er op een aantal punten goed naast. Wat je goed moet onthouden is, dat de functie u(t) weergeeft welke hoek de slinger maakt met de verticaal. Het is de oplossing van de vergelijkingen die gelden voor de kracht en de versnelling van de slinger.

Om een vergelijking te maken: de functie u(t)=sin(ft) is ook de oplossing van een massa die aan een veer hangt en die in een harmonische beweging wordt gebracht.

Dat er in u(t) een sinus voorkomt, is een beetje verwarrend, want het lijkt dan of het gaat om de geometrie van de slinger zelf. Maar dat is dus niet zo. Sterker nog, om u(t)=sin(ft) te mogen gebruiken moet je de geometrie van de slinger helemaal wegdenken, hij geldt alleen voor kleine uitwijkingen. Kijk eens rond op dit forum met zoekterm slinger dan leer je heel veel over het hoe en waarom.

Nu is jouw programma een eerste experiment. Maar voor je opdracht moet je twee gekoppelde slingers simuleren. Welnu, ik weet niet hoe dat eruit ziet, maar ik heb een sterk vermoeden dat u(t)=sin(ft) dan helemaal niet meer opgaat. Juist daarom denk ik dat je snel naar een andere vorm moet zoeken, nl. gewoon de vergelijking waar ik het al een paar keer eerder over heb gehad, voor de kracht en de versnelling. Maar dat is natuurlijk aan jou.
Ik heb er eventjes mijn natuurkundeboek bij gepakt en hier staat het volgende in over de uitwijking u:

Uitwijking: afstand van trillende voorwerp tot evenwichtsstand. Bij veren is de uitwijking u uit de evenwichtsstand in het algemeen ongelijk aan de uitrekking u van de veer.

Bovendien staat er een plaatje in van een slinger. De amplitude A wordt aangegeven door de horizontale afstand van de verticaal tot de uiterste stand van de slinger.

Misschien is het beter om met de krachten en de versnelling te gaan rekenen. Ik zal daar eens even naar gaan kijken.

Berichten: 24

Re: Een simulatie van een slinger

Iemand nog een suggestie omtrend de hoeksnelheid van een slinger?

Gebruikersavatar
Berichten: 2.609

Re: Een simulatie van een slinger

Iemand nog een suggestie omtrend de hoeksnelheid van een slinger?
Ik heb niet alles gelezen, maar ik begrijp dat je een simulatie programmeert.

Als je in een bepaalde iteratie de nieuwe positie van de slinger hebt berekend, kan je dan niet kijken hoeveel radialen je draait? Als je dat aantal radialen dan deelt door je tijdstap krijg je de ogenblikkelijke hoeksnelheid. Als je dat bij elke iteratie doet en je laat die hoeksnelheid tekenen in een grafiek kan je daar misschien besluiten uit trekken.

Re: Een simulatie van een slinger

naamloos.GIF
naamloos.GIF (2.04 KiB) 935 keer bekeken
Zie hier een mathematische slinger. Zoals je kan zien beweegt de massa loodrecht op het touw. De kracht die daar voor zorgt is m.g.sin(alpha). De versnelling van de massa is dus g.sin(alpha). De hoekversnelling is dan

- g/l sin(alpha).

De differentiaalvergelijking
\(\frac{d^2\alpha}{dt^2}=-g/l.sin(\alpha)\)
kan analytisch alleen worden opgelost indien sin(alfa) wordt vervangen door zijn eerste orde benadering, nl. alfa zelf.
\(\frac{d^2\alpha}{dt^2}=-g/l.\alpha\)
Met als oplossing
\(\alpha=A.sin(t.\sqrt{g/l})\)
Hieruit volgt voor de horizontale afwijking:
\(x=l. sin(\alpha)=l.sin(A.sin(t.\sqrt{g/l}))\)
Om TS te bedienen, de hoeksnelheid als functie van de tijd is de afgeleide van de hoek dus
\(\frac{d\alpha}{dt}=A.\sqrt{g/l}.cos(t.\sqrt{g/l})\)

Gebruikersavatar
Berichten: 2.609

Re: Een simulatie van een slinger

Ja, uiteraard kan je het uitrekenen. Maar het is zijn bedoeling van de gegevens uit zijn simulatie te halen lijkt mij. Normaal gezien zou je de sinus/cosinus vorm van de hoeksnelheid in functie van de tijd ook moeten terugvinden als je deze numeriek uit je simulatie haalt.

Re: Een simulatie van een slinger

Maar het is zijn bedoeling van de gegevens uit zijn simulatie te halen lijkt mij. Normaal gezien zou je de sinus/cosinus vorm van de hoeksnelheid in functie van de tijd ook moeten terugvinden als je deze numeriek uit je simulatie haalt.
Dat klopt, maar TS is er nog niet van overtuigd dat zijn zienswijzen niet kloppen. Daarom heb ik de berekening gegeven zodat hij kan zien wat hij fout doet.

De simulatie moet bestaan uit een grafische voorstelling, nl. de slinger tekenen voor een bepaalde hoek. Bij die hoek bepaalt hij de terugdrijvende kracht mgsin(alfa) . Aan de hand daarvan kan hij de hoekversnelling berekenen, en dan met numerieke integratie de nieuwe hoeksnelheid en de nieuwe hoek bepalen. Dan ontstaat vanzelf de sinusoide die hij noemde, overigens afgezien van numerike drift. Door kleine afrondfoutjes en door de numerieke integratie gaat de slingersimulator vroeg of laat gedrag vertonen dat niet lijkt te kloppen, maar dat zal de praktijk leren.

Voorlopig moet TS zijn eerst juiste model nog opstellen en aanpassen aan zijn uiteindelijke opgave, de samengestelde slinger (dit kan m.i. alleen met een berekening van krachten en versnellingen).

Ik heb op dit forum zo´n zelfde simulatie gedaan in excel voor twee massa´s verbonden met een veer, waarvan er één aangestoten werd. Dit in het topic over behoud van impuls.

Berichten: 24

Re: Een simulatie van een slinger

bessie schreef:[attachment=6551:naamloos.GIF]

Zie hier een mathematische slinger. Zoals je kan zien beweegt de massa loodrecht op het touw. De kracht die daar voor zorgt is m.g.sin(alpha). De versnelling van de massa is dus g.sin(alpha). De hoekversnelling is dan

- g/l sin(alpha).

De differentiaalvergelijking
\(\frac{d^2\alpha}{dt^2}=-g/l.sin(\alpha)\)
kan analytisch alleen worden opgelost indien sin(alfa) wordt vervangen door zijn eerste orde benadering, nl. alfa zelf.
\(\frac{d^2\alpha}{dt^2}=-g/l.\alpha\)
Met als oplossing
\(\alpha=A.sin(t.\sqrt{g/l})\)
Hieruit volgt voor de horizontale afwijking:
\(x=l. sin(\alpha)=l.sin(A.sin(t.\sqrt{g/l}))\)
Om TS te bedienen, de hoeksnelheid als functie van de tijd is de afgeleide van de hoek dus
\(\frac{d\alpha}{dt}=A.\sqrt{g/l}.cos(t.\sqrt{g/l})\)
Dank je! Hier kan ik echt wat mee ;)

Ik ben ervan overtuigd dat ik het verkeerd aanpakte. Het is inderdaad beter om dan te werken met de formule voor de terugdrijvende kracht. Ik heb dit allemaal ingevoerd in het programma (dus de hoeksnelheid steeds uitrekenen en vervolgens de verplaatsing), het komt nog niet helemaal uit, maar dat probeer ik nog wel even uit te zoeken.

Wat ik nog niet helemaal begrijp, is wat nu precies die amplitude is. Volgens mij is het de horizontale uitwijking, want als je hebt u(t) = A*sin(2*pi*f*t), en sin(2*pi*f*t) kan maximaal 1 worden, dan zou A dus gelijk zijn aan de maximale uitwijking van u. Maar de formule alpha = A*sin(t*sqrt(g/l)) spreekt dat weer tegen, want daar zou de amplitude dan weer de maximale hoek zijn. Kan iemand hier een suggestie op geven?

Vergeet niet dat ik dit doe voor een profielwerkstuk, ik zit dus in 6VWO en ik heb de moeilijkere natuurkunde niet gehad.

Ontzettend bedankt voor alle reacties ;)

EDIT:

4. Amplitude of the pendulum : The maximum displacement of the bob from its mean or equilibrium position is known as the amplitude of the pendulum. The straight-line length AB or AC is the amplitude of the pendulum. It has to be borne in mind that the amplitude is the straight-line distance between points A and B or C and not the length of the arc AB or AC.

Klopt dit?

Reageer