Disko bat etzanda biratzen eta irristatzen

prev.gif (1231 bytes)home.gif (1232 bytes)next.gif (1211 bytes)

Solido zurruna

Solido zurrunaren
higidura orokorra
Esfera bat 
plataforma birakor 
baten gainean
Kutxa bat malda
inklinatuan
Gurpil oszilatzailea
marca.gif (847 bytes)Disko bat etzanda
biratuz eta irristatuz
Disko bat indar
konstante baten
eraginpean
Partikula astun bat
eraztun birakor
baten ertzean
Gurpil bat
gainazal ahur
batean oszilatzen
Kurba zikloidalak
Gurpil karratua
Higiduraren ekuazioak eraztun baten kasuan

Higiduraren ekuazioak disko baten kasuan

Saiakuntza

Erreferentzia

Kalkuluaren prozedura numerikoak

 

Demagun disko bat gainazal horizontal batean etzanda eta, aldi berean, irristatzen eta biratzen, irudiak erakusten duen bezala.

Diskoak jasaten dituen indarrak hiru dira:  bi bertikal (pisua eta planoaren erreakzioa) eta horizontal bat bakarrik, marruskadura-indarra. Azter dezagun diskoaren higidura mota:

  1.  Diskoak translazio hutsa badu (biratu gabe) orduan masa-zentroaren higidura zuzena da eta uniformeki dezeleratzen doa gelditu arte.

  2.  Diskoak errotazio hutsa badu (translaziorik gabe) orduan bere masa-zentroa geldi mantentzen da eta errotazioa dezeleratzen doa gelditu arte.

  3.  Bi kasuetan, diskoa gelditu arte pasatzen den denborak bi menpekotasun ditu: hasierako abiadura (translaziozkoa edo errotaziozkoa) eta marruskadura-koefizientea.

  4.  Diskoa aldi berean biratzen eta transaldatzen ari bada orduan masa-zentroaren higidura zuzena da, dezeleratzen doa eta errotazioa ere dezeleratzen doa. Bi higidura-motak aldiune berean gelditzen dira beti, berdin dio zeintzuk diren hasierako abiadurak.

Azken ezaugarri horrek harrigarria dirudi baina, froga daitekeenez, diskoaren translazioa eta errotazioa ez dira independenteak, oso erlazio estua dute.

Adibide hau formulatzea ez da oso zaila, baina planteatzen diren higidura-ekuazioek ez dute soluzio analitikorik. Diskoaren posizioa eta abiadura lortzeko, denboraren menpe, higidura-ekuazioak prozedura numerikoez ebatzi behar dira. Kapitulu honen amaieran erakusten da higidura ekuazioak ebazteko Java hizkuntzako programazio-kodea.

 

Higiduraren ekuazioak eraztun baten kasuan

Gogora dezagun nolakoa den marruskadura-indarra:

Bloke bat gainazal horizontal baten gainean irristatzen ari denean, marruskadura-indarra jasaten du irristatzearen aurka, eta ezaguna da: F=μN, eta N=mg

Hasteko, har dezagun eraztun bat, (ma masa eta erradioa R). Eraztunaren zentroak v abiadura du eta aldi berean eraztuna biratzen ari da ω abiadura angeluarraz (bere zentrotik pasatzen den ardatz perpendikular baten inguruan).

Har dezagun eraztuneko P elementu bat, θ posizio angeluarrean dagoena eta dm masa duena, irudiak (gorriz) adierazten duena bezala. Adieraz dezagun P puntu horren vP abiadura:

vp=(v-ωRsinθ)i+(ωRcosθ)j

Elementu horrek jasaten duen marruskadura-indarra, dF, bere abiaduraren aurkakoa da, alegia v abiaduraren norabide bera du baina aurkako noranzkoa.

Eraztun osoaren masa ezaguna da (ma). Orduan, dm elementuaren masa, R·dθ luzera duenez, dm=ma·dθ/(2π)

Eraztunak jasaten duen marruskadura-indar erresultantea

Elementu horrek jasaten duen dF marruskadura-indarrak bi osagai ditu:

Beraz, eraztun osoak jasaten duen marruskadura-indarra:

Egiazta daiteke, eraztunaren simetriagatik, bigarren integralak beti ematen duela Fy=0 (translazioa X ardatzaren norabidekoa delako).

Eraztunaren masa-zentroaren higidura-ekuazioa:

 

Marruskadura-indarraren momentua eraztunaren zentroarekiko.

P puntuko elementuak jasaten duen marruskadura-indarrak honako momentua eragiten du eraztunaren zentroarekiko:

Eraztuna osatzen duten gainontzeko elementuek ere marruskadura-indar bana jasaten dute, eta marruskadura-indar guzti horien momentu erresultantea hau da:

Momentu infinitesimal guztiek Z ardatzaren norabidea dute, alegia, eraztunarekiko perpendikularrak dira, beraz, momentu erresultanteak ere norabide horixe izango du, eta noranzkoa, eraztunaren ω abiadura angeluarraren aurkakoa.

Idatz dezagun eraztunaren errotazioaren ekuazioa: M=I(dω/dt). Hemen I=ma·R2 eraztunaren inertzia-momentua da, zentrotik pasatzen den ardatzarekiko. Orduan higiduraren ekuazioa:

Eraztunaren bi higidura-ekuazioetatik abiatuta kalkula daitezke, batetik, translazioa, alegia, eraztunaren zentroaren x posizioa eta v abiadura, eta bestetik errotazioa, alegia, eraztunak biratutako φ angelua eta ω abiadura angeluarra. Aldagai horiek guztiak denboraren menpe kalkulatzeko ekuazio diferentzial bi ebatzi behar dira, biak bigarren ordenakoak, eta akoplatuta daude, beraz nahitaez prozedura numerikoak erabili behar dira:

Lehenik  f(v, ω) eta g(v, ω) funtzioak kalkulatu behar dira, lehen aipatutako integralak kalkulatuz (Fx eta M) baina kalkulua errepikatu behar da, v eta ω-ren balio bakoitzerako.

Kasu bereziak

  • Demagun eraztuna translazio hutsez desplazatzen dela: ω=0

Eraztunaren zentroak ibilbide zuzena jarraitzen du. Hasieran, v0 abiadura du baina gutxitzen doa nulu izatera iristen den arte.

v=v0 -μg·t
x=v0·t -
μg·t2/
2

Hona hemen zenbat denbora behar duen eraztunak guztiz gelditzeko eta ibilitako distantzia:

  • Demagun eraztunak errotazio hutsez biratzen duela: v=0

Eraztunaren zentroa geldi mantentzen da. Hasieran, biratu egiten du ω0 abiadura angeluarraz bere zentroaren inguruan, baina gutxitzen doa nulu izatera iristen den arte.

ω=ω0 -μg·t/R
φ
=ω0·t- μg·t2/
(2R)

Hona hemen zenbat denbora behar duen eraztunak guztiz gelditzeko eta biratutako angelu totala:

 

Higiduraren ekuazioak disko baten kasuan

Demagun disko bat (md masaduna eta R erradioduna) v abiaduraz desplazatzen dela eta aldi berean ω abiadura angeluarraz biratzen ari dela, bere zentrotik pasatzen den ardatz perpendikularrarekiko.

Har dezagun diskoaren P puntu bat, dm masa duena, diskoaren zentrotik r distantziara eta θ posizio angeluarra duena, irudiak adierazten duen bezala. Kalkula dezagun puntu horren abiadura:

v=(v-ωrsinθ)i+(ωrcosθ)j

Elementu horrek jasaten duen marruskadura-indarra, dF, bere abiaduraren aurkakoa da, alegia v abiaduraren norabide bera du baina aurkako noranzkoa.

Disko osoaren masa ezaguna da (md). Orduan, dm elementuaren masa, (r·dθ)dr azalera duenez, dm=md·r·dθ·dr/(πR2)

Diskoak jasaten duen marruskadura-indar erresultantea

Elementu horrek jasaten duen dF marruskadura-indarrak bi osagai ditu:

Beraz, disko osoak jasaten duen marruskadura-indar erresultantea:

Egiazta daiteke, diskoaren simetriagatik, bigarren integralak beti ematen duela Fy=0 (translazioa X ardatzaren norabidekoa delako).

Diskoaren masa-zentroaren higidura-ekuazioa:

Marruskadura-indarren momentua diskoaren zentroarekiko

P puntuko elementuak jasaten duen marruskadura-indarrak honako momentua eragiten du diskoaren zentroarekiko:

Diskoa osatzen duten gainontzeko elementuek ere marruskadura-indar bana jasaten dute, eta marruskadura-indar guzti horien momentu erresultantea hau da:

Momentu infinitesimal guztiek Z ardatzaren norabidea dute, alegia, diskoarekiko perpendikularrak dira, beraz, momentu erresultanteak ere norabide horixe izango du, eta noranzkoa, eraztunaren ω abiadura angeluarraren aurkakoa.

Idatz dezagun eraztunaren errotazioaren ekuazioa: M=I(dω/dt). Hemen I=(1/2)md·R2 diskoaren inertzia-momentua da, zentrotik pasatzen den ardatzarekiko. Orduan higiduraren ekuazioa:

Diskoaren bi higidura-ekuazioetatik abiatuta kalkula daitezke, batetik, translazioa, alegia, diskoaren zentroaren x posizioa eta v abiadura, eta bestetik errotazioa, alegia, diskoak biratutako φ angelua eta ω abiadura angeluarra. Aldagai horiek guztiak denboraren menpe kalkulatzeko ekuazio diferentzial bi ebatzi behar dira, biak bigarren ordenakoak, eta akoplatuta daude, beraz nahitaez prozedura numerikoak erabili behar dira:

Lehenik  f(v, ω) eta g(v, ω) funtzioak kalkulatu behar dira, lehen aipatutako integralak kalkulatuz (Fx eta M) baina kalkulua errepikatu behar da, v eta ω-ren balio bakoitzerako.

Kasu bereziak

  • Demagun diskoa translazio hutsez desplazatzen dela, ω=0

Diskoaren zentroak ibilbide zuzena jarraitzen du. Hasieran, v0 abiadura du baina gutxitzen doa nulu izatera iristen den arte.

v=v0 -μg·t
x=v0·t-
μg·t2/
2

Hona hemen zenbat denbora behar duen diskoak guztiz gelditzeko eta ibilitako distantzia:

  • Demagun diskoak errotazio hutsez biratzen duela, v=0

Diskoaren zentroa geldi mantentzen da. Hasieran, biratu egiten du ω0 abiadura angeluarraz bere zentroaren inguruan, baina gutxitzen doa nulu izatera iristen den arte.

ω=ω0 -4μg·t/(3R)
φ=ω0·t -
4μg·t2/(6R)

Hona hemen zenbat denbora behar duen diskoak guztiz gelditzeko eta biratutako angelu totala:

 

Adibidea

  • Marruskadura-koefizientea μ=0.3 gainazal horizontalaren eta eraztunaren edo diskoaren artean.

  • Eraztunaren edo diskoaren erradioa, R=1 m.

Translazio hutsa:

Eraztuna

  • Masa-zentroaren translazio-abiadura hasieran, v0=5 m/s

  • Errotazioaren hasierako abiadura angeluarra, ω0=0

Azelerazioa konstantea ateratzen da: – μ·g= -2.94 m/s2

Gelditu arteko denbora, t=5/2.94=1.70 s

Gelditu arte desplazatu den distantzia, x=4.25 m

Diskoa

Translazio hutsaren kasuan, emaitza berdinak lortzen dira diskoarentzat ere.

Errotazio hutsa

Eraztuna

  • Masa-zentroaren translazio-abiadura hasieran, v0=0

  • Errotazioaren hasierako abiadura angeluarra, ω0=1 rad/s

Azelerazio angeluarra konstantea ateratzen da: –μ·g/R= -2.94 m/s2

Gelditu arteko denbora, t=1.0/2.94=0.34 s

Gelditu arte biratu duen angelu totala, φ=0.17 rad

Diskoa

Azelerazio angeluarra konstantea ateratzen da: –4μ·g/(3R)= -3.92 m/s2

Gelditu arteko denbora, t=1/3.92=0.26 s

Gelditu arte biratu duen angelu totala, φ=0.13 rad

Translazioa eta errotazioa aldi berean

Eraztuna

  • Masa-zentroaren translazio-abiadura hasieran, v0=5 m/s

  • Errotazioaren hasierako abiadura angeluarra, ω0=1 rad/s

Gelditu arteko denbora, t=1.78 s

Gelditu arte biratu duen angelu totala, φ=1.15 rad

Gelditu arte desplazatu den distantzia, x=4.34 m

  • Masa-zentroaren translazio-abiadura hasieran, v0=1 m/s

  • Errotazioaren hasierako abiadura angeluarra, ω0=5 rad/s

Gelditu arteko denbora, t=1.78 s

Gelditu arte biratu duen angelu totala, φ=4.34 rad

Gelditu arte desplazatu den distantzia, x=1.15 m

Harritzekoa dirudi, baina, hasierako baldintzak ezberdinak diren arren, denbora berdina tardatzen du gelditu arte.

Saiakuntza

Aukeran idatz daiteke

  • Eraztuna ala diskoa dagokion botoia aktibatuz.

  • Masa-zentroaren hasierako translazio-abiadura, v0 , m/s-tan, dagokion kontrolean idatziz.

  • Hasierako errotazio-abiadura angeluarra, ω0, rad/s-tan, dagokion kontrolean idatziz.

  • Marruskadura-koefizientea, μ, desplazamendu-barrari saguaz eragiten.

  • Eraztunaren zein diskoaren erradioa finkotzat hartu da: R=1 m

Hasi botoia sakatu.

Diskoa edo eraztuna, mugitzen hasten da ezarritako baldintzekin: translazioa eta errotazioa. Bi abiadurak (translaziozkoa eta errotaziozkoa)  moteltzen doaz denbora igaro ahala, eta azkenean gelditu egiten da.

Hasierako higidura ez bada sinplea (translazio hutsa edo errotazio hutsa) orduan programa interaktiboak kalkulu numeriko astuna burutu behar du eta, egiaztatuta dagoen arren, bere zehaztasunak ba dauka bere muga. Diskoaren kasuan egiten diren eragiketak, eraztunarenak baino lau bider astunagoak dira, eta zure ordenagailuak ez badauka prozesatze-abiadura nahikorik, gerta liteke applet-aren animazioa "etenekin" ikustea edo nahasia.

stokesApplet aparecerá en un explorador compatible con JDK 1.1.

 

Erreferentzia

Voyenli K., Eriksen E. On the motion of an ice puck. Am. J. Phys. 53 (12) December 1985, pp. 1149-1153

 

Kalkuluaren prozedura numerikoak

public abstract class Simpson {
	int n;
	final double a=0.0;
	final double b=2*Math.PI;

public Simpson(int n){
	if(n%2==1) n++; //hace que el número de divisiones sea par
	this.n=n;
}
public double integral(){
	double h=(b-a)/n;
	double suma=f(a)+f(b);
	for(int i=1; i<n; i+=2){
		suma+=4*f(a+i*h);
	}
	for(int i=2; i<n; i+=2){
		suma+=2*f(a+i*h);
	}
	return (suma*h/3);
}
abstract public double f(double x);
}
public class Aro_Vcm extends Simpson{
	double v, w;
public Aro_Vcm(int n, double v, double w){
	super(n);
	this.v=v;
	this.w=w;
}
void setVelocidades(double v, double w){
	this.v=v;
	this.w=w;
}
public double f(double ang){ //radio R=unidad
	double num=(v-w*Math.sin(ang));
	double den=Math.sqrt(v*v+w*w-2*v*w*Math.sin(ang));
	return (num/den);
}
}
public class Aro_Vangular extends Simpson{
	double v, w;
public Aro_Vangular(int n, double v, double w){
	super(n);
	this.v=v;
	this.w=w;
}
void setVelocidades(double v, double w){
	this.v=v;
	this.w=w;
}
public double f(double ang){ //radio R=unidad
	double num=(w-v*Math.sin(ang));
	double den=Math.sqrt(v*v+w*w-2*v*w*Math.sin(ang));
	return (num/den);
}
}
public class Aro extends RungeKutta2{
	double mu;
	Aro_Vcm cm=null;
	Aro_Vangular angular=null;
Aro(double mu, double v0, double w0, double h){
	super(h);
	this.mu=mu;
	cm=new Aro_Vcm(90, v0, w0);
	angular=new Aro_Vangular(90, v0, w0);
}
public double f(double x, double y, double v, double w, double t){
	cm.setVelocidades(v, w);
	double temp=-mu*9.8*cm.integral()/(2*Math.PI);
	return temp;
}
public double g(double x, double y, double v, double w, double t){
	angular.setVelocidades(v, w);
	double temp=-mu*9.8*angular.integral()/(2*Math.PI);
	return temp;
}
}
public abstract class SimpsonDoble {
	private int n; //número de divisiones del intervalo a, b (integral interior)
	private int m; //número de divisiones del intervalo c, d (integral exterior)
	final double x1=0.0;
	final double x2=1.0;
	final double y1=0.0;
	final double y2=2*Math.PI;
public SimpsonDoble(int n1, int m1){
	if(n1%2==1) n1++; //hace que el número de divisiones sea par
	if(m1%2==1) m1++; //hace que el número de divisiones sea par
	this.n=n1;
	this.m=m1;
}
protected double integralPrimera(double p){
	double h=(x2-x1)/n;
	double suma=f(x1, p)+f(x2, p);
	for(int i=1; i<n; i+=2){
		suma+=4*f(x1+i*h, p);
	}
	for(int i=2; i<n; i+=2){
		suma+=2*f(x1+i*h, p);
	}
	return (suma*h/3);
}
public double integral(){
	double h=(y2-y1)/m;
	double suma=g(y1)+g(y2);
	for(int i=1; i<m; i+=2){
		suma+=4*g(y1+i*h);
	}
	for(int i=2; i<m; i+=2){
		suma+=2*g(y1+i*h);
	}
	return (suma*h/3);
}
abstract public double f(double x, double y);
abstract public double g(double x);
}
public class Disco_Vcm extends SimpsonDoble{
	double v, w;
public Disco_Vcm(int n, int m, double v, double w){ //d/a separación dividido radio
	super(n, m);
	this.v=v;
	this.w=w;
}
void setVelocidades(double v, double w){
	this.v=v;
	this.w=w;
}
public double f(double r, double ang){
	double num=r*(v-w*r*Math.sin(ang));
	double den=Math.sqrt(v*v+w*r*w*r-2*v*w*r*Math.sin(ang));
	return (num/den);
}
public double g(double ang){
	return (integralPrimera(ang));
}
}
public class Disco_Vangular extends SimpsonDoble{
	double v, w;
public Disco_Vangular(int n, int m, double v, double w){ //d/a separación dividido radio
	super(n, m);
	this.v=v;
	this.w=w;
}
void setVelocidades(double v, double w){
	this.v=v;
	this.w=w;
}
public double f(double r, double ang){
	double num=r*r*(w*r-v*Math.sin(ang));
	double den=Math.sqrt(v*v+w*r*w*r-2*v*w*r*Math.sin(ang));
	return (num/den);
}
public double g(double ang){
	return (integralPrimera(ang));
}
}
public abstract class RungeKutta2 {
	double h=0.01;
RungeKutta2(double h){
	this.h=h;
}
public void setPaso(double h){
	this.h=h;
}
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;
//condiciones iniciales
	double x=e.x;
	double y=e.y;
	double vx=e.v;
	double vy=e.w;
	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);
//nuevo estado del sistema
	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;

//cambia el estado de la partícula
	e.x=x;
	e.y=y;
	e.v=vx;
	e.w=vy;
	e.t=t+h;
}
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 Estado {
	double t;
	double x;
	double y;
	double v;
	double w;
public Estado(double t, double x, double y, double v, double w) {
	this.t=t;
	this.x=x;
	this.y=y;
	this.v=v;
	this.w=w;
}
}
//creación de objetos
//v0 y w0 son las velocidades iniciales

Estado estado=new Estado(0.0, 0.0, 0.0, v0, w0);
RungeKutta2 objeto=new Disco(mu, v0, w0, dt);    //polimorfismo
if(bAro){
	objeto=new Aro(mu, v0, w0, dt);
}
//calcula la posición y la velocidad del disco o del aro en función del tiempo
objeto.resolver(estado);