Oszilazioak |
Osziladoreak (II) |
Posizio-, abiadura- eta azelerazio-bektoreak koordenatu polarretan | |||||||
Poleen masak arbuiagarriak dira, ez dute marruskadurarik eta soka zurruna da, luzaezina, baina oso luzea, bi pisuek polearekin joko ote duten ez arduratzeko bezain luzeak. Sokak beti dauka tentsioa eta, beraz, bi esferen energia kontserbatzen da.
Posizio-, abiadura- eta azelerazio-bektoreak koordenatu polarretan
Eskumako esfera aztertzeko, ezar ditzagun erreferentzia sistemaren ardatzak, bata norabide erradialean eta bestea, horrekiko perpendikularra, alegia, ortorradiala. Horiek dira koordenatu polarrak. Eskumako irudiak erakusten ditu bektore unitarioak . Posizio bektorea Esfera oszilatzailearen posizio-bektorea koordenatu polarretan hau da: Abiadura bektorea
Esferaren abiadura-bektorea ibilbidearekiko tangentea da, baina ibilbidea ez da zirkularra. Adieraz dezagun abiadura koordenatu polarretan: Bektore unitarioen osagai cartesiarrak horrela adierazten dira:
Kalkula ditzagun bektore unitarioen deribatuak denborarekiko:
Orduan, abiadura-bektorearen osagaiak koordenatu polarretan: Azelerazio bektorea Deriba dezagun abiadura denborarekiko: Orduan, azelerazio-bektorearen osagaiak koordenatu polarretan:
Higiduraren ekuazioak
Eskumako esferak jasaten dituen indarrak bi dira:
Higidura-ekuazioa norabide erradialean: mgcosθ -T= m·ar Higidura-ekuazioa norabide ortorradialean: -mgsinθ=m·aθ Ezkerreko esferak ere bi indar jasaten ditu:
Dei diezaiogun esfera horren posizioari, y. Orduan, bere higiduraren ekuazioa: Izan ere, ezkerreko esfera dy altuera igotzen bada, eskumakoa dr distantzia urrunduko da, eta alderantziz, beraz, y koordenatua eta r koordenatua erlazionatuta daude: dy = - dr Hiru ekuazio lortu ditugu; lehena eta hirugarrena hartuz T elimina daiteke eta ekuazio bakarra geratzen da. Bigarren ekuazioarekin, bigarren ordenako bi ekuazio diferentzialeko sistema akoplatu bat geratzen zaigu:
Dei diezaiogun masa-erlazioari μ=M/m
Energiaren kontserbazio-printzipioaHar dezagun energia potentzialaren jatorria (zero maila) poleen altueran. Orduan, bi esferen energia potentzialen batura hau da: Ep= -Mgy -mg·rcosθ Eta energia zinetikoa: y eta r erlazionatuta daudela kontutan izanda (dy= -dr), defini dezagun y+r=L=kte, eta honela berridatz daiteke: Ekuazio horretan MgL termino konstantea elimina dezakegu, energia potentzialaren zero-maila birplanteatuz. Ondoren ekuazio osoa zati m eginez: Aurreko atalean lortutako bigarren ordenako bi ekuazio diferentzialen sistema akoplatua ebatziko dugu, prozedura numerikoak erabiliz, baina hasierako baldintzak finkatu behar dira. Demagun t=0 aldiunean, r=r0, θ=θ0, eta hasierako abiaduraren osagai polarrak: (dr/dt)0 eta r0(dθ/dt)0 Uneoro kalkulatuko dugu e energia totala eta hasierako e0 energiarekin konparatuko dugu. Defini dezagun energiaren errorea, ehunekotan adierazita: Emaitza zehatzean, errore hori nulua izan behar da, baina kalkulu numerikoak erroreak pilatu egin ditzake eta emaitza zehatzetik desbideratzen joan daiteke. Errore hori 1 baino handiagoa izatera iristen bada (%1) orduan programa interaktiboa gelditu egingo da. Kasu horretan, integrazio-urratsa laburtzea komeni da. SaiakuntzaAukeran idatz daitezke:
Hasi botoia sakatu. Leihatilan, esfera gorriaren ibilbidea irudikatzen da. Ikus bedi zelako ibilbide bitxiak ateratzen diren. Hala behar izanez gero, honako doiketak ere egin daitezke:
Programa interaktiboak hainbat ibilbide mota irudikatzen ditu: adibidez, M>m bada (edo μ>1), esferak oreka-posizioaren inguruan oszilazio bitxiak edo kiribilak burutuko ditu, baina M<m bada, beherantz ihes egingo du. Aukera bitez betiere μ>1 balioak. Ohiko hasierako posizioa θ0=90º da (esfera gorria X ardatzaren gainean) eta r0>0 (0 eta 2 artean). r0=0 aukeratzen bada bigarren ekuazio diferentzialak singularitate bat dauka, eta kalkuluak errorea ematen du. Ohiko hasierako abiadura nulua da, (dr/dt)0=0, eta (dθ/dt)0=0, baina r0≈0 posiziotik hurbil abiatzea nahi bada, abiadura erradialari balio bat emanda, (dr/dt)0 , ez du errorerik ematen. Programa interaktiboa gelditu egiten da esfera r=0 posiziora iristen bada, edota prozedura numerikoa erroreak pilatzen joan bada eta aldiune bateko energia, hasierako energiarekin konparatuta, %1 errorea izatera iristen bada. Egiazta bitez honako kasu hauek:
Programaren integrazio-urratsa oso txikia aukeratzen bada (1/10), kalkuluak oso zehatzak dira baina astunak eta geldoak. Hobe litzateke programak integrazio urrats aldakorra hartuko balu, horrela, esfera jatorritik hurbil dagoenean (r=0) integrazio-urrats laburrarekin ez luke errore handirik pilatuko, baina urrunago dabilenean urrats luzearekin ez litzateke geldoegi izango. |
Tufillaro N. B., Abott T. A. Griffiths D. J. Swinging Atwood’s machine. Am. J. Phys. 52 (10) October 1984, pp. 895-903
public abstract class RungeKutta { double h; RungeKutta(double h){ this.h=h; } void setPaso(double dt){ this.h=dt; } public void resolver(Estado e){ //variables auxiliares double k1, k2, k3, k4; double l1, l2, l3, l4; double q1, q2, q3, q4; double m1, m2, m3, m4; //estado inicial double x=e.x; double y=e.y; double vx=e.vx; double vy=e.vy; double t=e.t; k1=h*vx; l1=h*f(x, y, vx, vy, t); q1=h*vy; m1=h*g(x, y, vx, vy, t); k2=h*(vx+l1/2); l2=h*f(x+k1/2, y+q1/2, vx+l1/2, vy+m1/2, t+h/2); q2=h*(vy+m1/2); m2=h*g(x+k1/2, y+q1/2, vx+l1/2, vy+m1/2, t+h/2); k3=h*(vx+l2/2); l3=h*f(x+k2/2, y+q2/2, vx+l2/2, vy+m2/2, t+h/2); q3=h*(vy+m2/2); m3=h*g(x+k2/2, y+q2/2, vx+l2/2, vy+m2/2, t+h/2); k4=h*(vx+l3); l4=h*f(x+k3, y+q3, vx+l3, vy+m3, t+h); q4=h*(vy+m3); m4=h*g(x+k3, y+q3, vx+l3, vy+m3, t+h); x+=(k1+2*k2+2*k3+k4)/6; vx+=(l1+2*l2+2*l3+l4)/6; y+=(q1+2*q2+2*q3+q4)/6; vy+=(m1+2*m2+2*m3+m4)/6; t+=h; //estado final e.x=x; e.y=y; e.vx=vx; e.vy=vy; e.t=t; } abstract public double f(double x, double y, double vx, double vy, double t); abstract public double g(double x, double y, double vx, double vy, double t); } public class Oscilador extends RungeKutta{ double mu; // longitud péndulo/radio tierra Oscilador(double mu, double h){ super(h); this.mu=mu; } public double f(double x, double y, double vx, double vy, double t){ double z=(x*vy*vy+9.8*(Math.cos(y)-mu))/(1+mu); return z; } public double g(double x, double y, double vx, double vy, double t){ double z=-(2*vx*vy+9.8*Math.sin(y))/x; return z; } public double energia(double x, double y, double vx, double vy){ double z=mu*vx*vx/2+(vx*vx+x*x*vy*vy)/2+9.8*x*(mu-Math.cos(y)); return z; } } public class Estado { public double t; public double x; public double y; public double vx; public double vy; public Estado(double t, double x, double y, double vx, double vy) { this.t=t; this.x=x; this.y=y; this.vx=vx; this.vy=vy; } } //objetos Estado estado=new Estado(0.0, x0, y0, V0x, V0y); Oscilador oscilador=new Oscilador(mu, 0.005); //resolución numérica oscilador.resolver(estado); double energia=oscilador.energia(estado.x, estado.y, estado.vx, estado.vy); error=Math.abs((energia-eInicial)*100/eInicial); if(error>1.0 || estado.x<0.0){ //detiene el movimiento } |