Eskailera irristatzen: estatika eta dinamika

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

Solido zurruna

Errotazioaren
Dinamika
Errotazioaren
dinamikaren ekuazioa
Inertzia-momentuak
Errotazioaren dinamika
eta energiaren balantzea
Tortsio-pendulua
Pendulu konposatua
Zabua
Marruskadura,
errotazio mugimenduan
Atwood-en osziladorea
Hagatxoa erortzen
mutur finko batekin
Hagatxoa erortzen,
marruskadurarik gabe
Hagatxoa erortzen,
marruskadura eta guzti
Eskailera irristatzen,
abiadura konstanteaz
marca.gif (847 bytes)Eskailera: estatika
eta dinamika
Eskailera bat horma perpendikular bitan eutsita

Eskalera bat horma perpendikular bitan eutsita, eta pertsona bat eskaileran gora.

Erreferentziak

Programazio kodea

 

Aurreko kapituluan aztertu da eskailera irristatzen, horma perpendikular bitan (zorua eta horma), baina kalkuluak sinplifikatzeko, abiadura konstantea inposatu diogu. Honako kapitulu honetan, berriro aztertuko dugu eskailera nola mugitzen den, baina oraingoan aske erortzen utziko diogu, alegia ez diogu abiadura konstantea inposatuko. Hala ere, azkenean, horma bertikalak eskailerari eragiten dion marruskadura-indarra arbuiatuko dugu.

Eskailera bat horma perpendikular bitan eutsita

Estatika

Demagun eskailera homogeneoa dela, m masa duela eta L luzera. Ondoko irudiak erakusten ditu eskailerak jasaten dituen indarrak.

  • Fy eta Fr dira, horma biek eskailerari eragiten dioten marruskadura-indarrak, bakoitza mutur batean.

  • Fx eta N dira, hormek eragiten dioten erreakzio normalak.

  • mg da, planetak eskailerari eragiten dion erakarpena, eta masa-zentroan aplikatzen da.

Orekan, hiru ekuazio idatz daitezke: bi ekuazio indarrekin (translazio horizontala eta bertikala) eta ekuazio bat momentuekin (errotazioa). Baina hiru ekuazio horietan lau ezezagun dauzkagu, eta sistema indeterminatua da. Ikus bedi erreferentzietan aipatutako artikulua.

Hortaz, ariketa hori ebatzi ahal izateko, baldintza bat ezarri beharra daukagu, esaterako, horma bertikalak ez duela marruskadurarik eragiten, Fy=0.

Baldintza horretan, eskailerak bertikalarekiko θ angelua osatzen badu, hona hemen orekaren ekuazioak:

  1.  Indar erresultantea nulua izan behar da:

  1.  Eta indarren momentu erresultantea ere nulua izan behar da edozein punturekiko (esaterako, eskaileraren beheko muturrarekiko).

Ezagutzen bada θ angelua, orduan kalkula daiteke Fr, alegia, zein indar egin behar zaion eskaileraren beheko muturrari ez dezan irrist egin (marruskadurak edo beste inork):

Eskaileraren θ angelua handituz bagoaz, gero eta inklinatuagoa egongo da, eta beraz, marruskadura-indarra handitzen joango da. Baina marruskadura-indarrak muga bat dauka:

FrsN= μsmg

Hemen, μs da marruskadura-indarraren koefiziente estatikoa.

Orduan, eskailerak "angelu limite" bat izango du (θl) irrist egiten hasteko, alegia, eskailerak ez du irrist egingo angelu limitea baino tenteago badago, eta irrist egingo du angelu limitea baino inklinatuagoa badago. Hona hemen angelu limitearen baldintza:

tanθl=2μs

Dinamika

Eskaileraren angelua angelu limitea baino handiagoa bada (θ>θl) eskailera irristatzen hasiko da. Orduan, marruskadura-indarra ezaguna da: Fr=μN . Marruskadura-koefiziente zinetikoa, μ, txikiagoa izan ohi da μs koefiziente estatikoa baino.

Eskaileraren higidurak bi atal izango ditu:

1.- Eskaileraren goiko muturrak horma bertikala ukitzen du

  • Masa-zentroaren translazio higidura:

  • Eskaileraren errotazio-higidura, bere masa-zentrotik pasatzen den ardatzarekiko:

hemen Imz=mL2/12, suposatu da, eskailera hagatxo homogeneoa dela, eta m masa duela eta L luzera.

Masa-zentroaren posizioa (x, y) da. Eskaileraren goiko muturrak horma bertikala ukitzen duen bitartean (Fx>0), badago erlazio bat x, y eta θ angeluaren artean.

Erlazio horiek deribatzen baditugu denborarekiko:

Eta bi azelerazioak ordezkatzen baditugu masa-zentroaren translazioaren ekuazio bietan orduan Fx eta N bakan daitezke:

Ondoren, ordezka ditzagun errotazioaren ekuazioan N, Fx eta Fr=μN.

Ekuazio diferentzial horren soluzioa θ(t) da, baina prozedura numerikoez integratu behar da, honako hasierako baldintzekin: t=0, dθ/dt=0, θ=θ0.

Ikusten da, horma bertikalak eskailerari eragiten dion indarra (Fx) gutxituz doala denborarekin, eta aldiune batean Fx nulu bilakatzen da. Dei diezaiogun aldiune horri t1 , eskaileraren angeluari une horretan θ1 eta bere abiadura angeluarrari (dθ/dt)1. Hortaz, une horretan eskaileraren masa zentroaren abiadura horizontala honela adieraz daiteke:

2.- Eskaileraren goiko muturrak horma bertikala ukitzeari uzten dio.

 

Hona hemen higiduraren ekuazioak:

  • Masa-zentroaren translazioa

  • Eskaileraren errotazioa, masa-zentrotik pasatzen den ardatzarekiko:

Masa-zentroaren altueraren adierazpenak oraindik balio du:

Deriba dezagun denborarekiko bi aldiz:

Azelerazio bertikalaren adierazpen hori translazio bertikalaren ekuazioan ordezkatuz, N indarra bakan daiteke:

Ondoren, N indarraren adierazpena ordezka daiteke errotazioaren ekuazioan eta translazio horizontalean. Ekuazio diferentzial bi lortzen dira, bigarren ordenakoak:

Ekuazio diferentzialen bikote hori akoplatuta dago, eta prozedura numerikoez integratu behar dira hasierako baldintzak inposatuta: t1  aldiunean, eskaileraren angelua ezaguna da (θ1), bere abiadura angeluarra aldiune horretan ere bai (dθ/dt)1 eta masa-zentroaren abiadura horizontala ere bai:

Eskaileraren mugimendua amaitzen da angeluak θ=π/2 balio duenean, alegia, eskailera zoruan guztiz etzanda dagoenean.

Saiakuntza

Aukeran idatz daiteke:

  • Eskailerak osatzen duen angelua bertikalarekiko, θ0 , desplazamendu-barrari saguaz eragiten.

  • Zoruaren marruskadura-koefiziente estatikoa, μs, desplazamendu-barrari saguaz eragiten.

  • Zoruaren marruskadura-koefiziente zinetikoa, μ, desplazamendu-barrari saguaz eragiten.

  • Eskaileraren luzera eta masa finkotzat hartu dira: L=10 m eta m=10 kg.

Hasi botoia sakatu.

Hasierako angelua (θ0) angelu limitea baino txikiagoa bada (tanθl=2μs) eskailera ez da mugitzen, eta leihatilan agertzen da "Geldirik" dagoela. Baina mugitzen bada, uneoro ikusten da eskailera nola mugitzen den eta eta indarrak nola doazen aldatzen. Programak honako datuak uneoro idatziz erakusten ditu: t denbora (segundotan), θ angelua (gradutan), Fx eta N (Fy) Newton-etan.

stokesApplet aparecerá en un explorador compatible con JDK 1.1.
                              
 

Eskailera bat horma perpendikular bitan eutsita, eta pertsona bat eskaileran gora

Demagun lehengo eskailera homogeneo bera, m masa eta L luzeraduna, bi horma perpendikularretan eutsita. Gainera, pertsona bat, M masaduna eta partikulatzat hartuko duguna, eskaileran gora igotzen da, beheko muturretik d distantziaraino. Azter dezagun eskaileraren portaera, pertsonaren posizioaren arabera.

Estatika

Eskailerak bost indar jasaten ditu, irudiak adierazten duen bezala:

  • Fx , horma  bertikalak eragiten diona (ez du marruskadurarik).

  • N , zoruak eragiten dion erreakzio normala.

  • mg , eskaileraren pisua, bere masa-zentroan aplikatzen da.

  • Mg , pertsonaren pisua.

  • Fr , zoruak eragiten duen marruskadura-indarra.

Hona hemen orekaren ekuazioak, eskailerak bertikalarekiko osatzen duen angelua θ denean:

Indarren erresultantea nulua izan behar da (norabide horizontalean eta bertikalean):

Indarren momentu erresultantea ere nulua izan behar da, edozein punturekiko (esaterako, eskaileraren beheko muturrarekiko).

Ezagutzen bada θ angelua, orduan bakan daiteke Fr , alegia, eskailerak beheko muturrean jasaten duen marruskadura-indarra:

Pertsona eskaileran gora igotzen doan heinean, d distantzia handituz doa, eta marruskadura indarra handitzen da. Baina marruskadura-indarrak muga bat dauka:

FrsN= μs(mg+Mg)

Eta hor, μs marruskaduraren koefiziente estatikoa da.

Orduan, pertsona eskaileran gora igo daiteken distantzia maximoa, eskailerak irrist egin gabe hau da:

Dinamika

Pertsonak eta eskailerak bikote bat osatzen dute, eta bikote horren masa-zentroa honela kalkulatzen da (ikusi alboko irudia):

Steiner-en teorema aplikatuz, bikotearen inertzia momentu totala kalkula daiteke, masa-zentrotik pasatzen den ardatzarekiko:

Eskailera irristatzen ari denean, marruskadura indarra ezaguna da: Fr=μN , eta hor μ da marruskadura-koefiziente zinetikoa, izan ere, μs marruskadura koefiziente estatikoa baino pixka bat txikiagoa izan ohi da.

Eskaileraren mugimenduak bi atal ditu:

1.- Eskaileraren goiko muturrak horma bertikala ukitzen du

Multzoaren masa-zentroaren translazioa:

Multzoaren errotazioaren ekuazioa, masa-zentrotik pasatzen den ardatzarekiko:

Masa-zentroaren posizioa (x, y) da eta, eskaileraren goiko muturrak horma bertikala ukitzen duen bitartean (Fx>0), badago erlazio bat bere posizioaren eta eskaileraren θ angeluaren artean.

Deriba ditzagun erlaziook denborarekiko:

Azelerazioen adierazpen horiek MZ-ren translazioaren ekuazioetan ordezkatuz, Fx eta N bakan daitezke:

Ondoren, N eta Fx-en adierazpenak errotazioaren ekuazioan ordezkatuz, honelako ekuazio diferentziala lortzen da:

Ekuazio diferentzial horren soluzioa θ(t) da, baina prozedura numerikoez integratu behar da, eta hasierako baldintzak inposatu: t=0, dθ/dt=0, θ=θ0.

Ikusten da, horma bertikalak eskailerari eragiten dion indarra (Fx) denborarekin gutxitzen doala, eta aldiune batean Fx nulu bilakatzen da. Dei diezaiogun aldiune horri t1, eskaileraren angeluari aldiune horretan θ1 eta eskaileraren abiadura angeluarrari (dθ/dt)1.

Eta une horretan, masa zentroaren abiadura horizontala honela adieraz daiteke:

2.- Eskaileraren goiko muturrak horma bertikala ukitzeari uzten dio

Hona hemen higiduraren ekuazioak:

Masa-zentroaren translazio higidura:

Errotazio-higidura, masa-zentrotik pasatzen den ardatzarekiko:

Masa-zentroaren y altuerak θ angeluarekin erlazionatuta segitzen du:

Erlazio hori deribatzen bada bi aldiz denborarekiko:

Eta azelerazio bertikala ordezkatzen bada translazio bertikalaren ekuazioan, N bakan daiteke:

Ondoren, N-ren adierazpen hori ordezka daiteke translazio horizontalaren ekuazioan:

Eta ekuazio diferentzial bi lortzen dira, bata translazio horizontalerako eta bestea errotaziorako, biak bigarren ordenakoak eta akoplatuak:

Ekuazio diferentzial bikote hori integra daiteke prozedura numerikoak erabilita, baina hasierako baldintzak inposatu behar dira: t1 aldiunean eskailerak osatzen duen angelua bertikalarekiko ezaguna da, θ1 , bere abiadura angeluarra aldiune horretan ere bai, (dθ/dt)1 , eta masa-zentroaren abiadura horizontala ere bai:

Eskailera iristen denean θ=π/2 angeluraino, lurra jo eta gelditu egiten da.

Saiakuntza

Aukeran idatz daiteke:

  • Eskailerak hasieran osatzen duen θ angelua norabide bertikalarekiko, desplazamendu-barrari saguaz eragiten.

  • Zoruak duen marruskadura-koefiziente estatikoa, μs, desplazamendu-barrari saguaz eragiten.

  • Zoruaren marruskadura-koefiziente zinetikoa, μ, desplazamendu-barrari saguaz eragiten.

  • Eskaileran gora igotzen den pertsonaren M masa.

  • Eskaileraren luzera eta masa finkotzat hartu dira: L=10 m eta m=10 kg

Hasi botoia sakatu.

Hasierako angelua (θ0) angelu limitea baino txikiagoa bada (tanθl=2μs) eskailera ez da mugitzen, eta leihatilan agertzen da "Geldirik" dagoela, baina pertsona eskaileran gora igotzen hasten da, eta une batean eskailera mugitzen hasten da, beheko muturra irristatzen hasten delako.

Mugitzen hasita, uneoro ikusten da eskailera nola mugitzen den eta eta indarrak nola doazen aldatzen. Programak honako datuak uneoro idatziz erakusten ditu: t denbora (segundotan), θ angelua (gradutan), Fx eta N (Fy) Newton-etan.

stokesApplet aparecerá en un explorador compatible con JDK 1.1.

 

Erreferentzia

Mendelson K. S. Statics of a ladder leaning against a rough wall. Am. J. Phys. 63 (2) February 1995. pp. 148-150.

 

Programazio-kodea

public abstract class State {
	double t;
	double x;
	double vx;
public State(double t, double x, double vx) {
	this.t=t;
	this.x=x;
	this.vx=vx;
}
}
public class Estado extends State{
public Estado(double t, double x, double vx) {
	super(t, x, vx);
}
}
public class Estado1 extends State{
	double y;
	double vy;
public Estado1(double t, double x, double y, double vx, double vy) {
	super(t, x, vx);
	this.y=y;
	this.vy=vy;
}
}
public interface RK {
abstract public void resolver(State e);
}
public abstract class RungeKutta implements RK{
	double h;
RungeKutta(double h){
	this.h=h;
}
public void resolver(State 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 v=e.vx;
	double t=e.t;

	k1=h*v;
	l1=h*f(x, v, t);
	k2=h*(v+l1/2);
	l2=h*f(x+k1/2, v+l1/2, t+h/2);
	k3=h*(v+l2/2);
	l3=h*f(x+k2/2, v+l2/2, t+h/2);
	k4=h*(v+l3);
	l4=h*f(x+k3, v+l3, t+h);
//nuevo estado del sistema
	x+=(k1+2*k2+2*k3+k4)/6;
	v+=(l1+2*l2+2*l3+l4)/6;
//cambia el estado de la partícula
	e.x=x;
	e.vx=v;
	e.t=t+h;
}
abstract public double f(double x, double v, double t);
}
public abstract class RungeKutta1 implements RK{
	double h;
RungeKutta1(double h){
	this.h=h;
}
public void resolver(State 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=((Estado1)e).y;
	double vx=e.vx;
	double vy=((Estado1)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;
	((Estado1)e).y=y;
	e.vx=vx;
	((Estado1)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 Sistema extends RungeKutta{
	double mInercia;
	final double m=10.0;
	final double lonVarilla=1.0;
	double mu;
Sistema(double mu, double h){
	super(h);
	this.mu=mu;
	this.mInercia=m*lonVarilla*lonVarilla/12;
}
public double f(double x, double v, double t){ // x es ángulo, v es velocidad angular
	double seno=Math.sin(x);
	double coseno=Math.cos(x);
	double A=mInercia+m*lonVarilla*lonVarilla/4-m*lonVarilla*lonVarilla*mu*seno*coseno/2;
	double B=m*lonVarilla*lonVarilla*mu*coseno*coseno/2;
	double C=m*9.8*lonVarilla*seno/2-m*9.8*mu*lonVarilla*coseno;
	return ((B*v*v+C)/A);
}
public double fuerza_X(double x, double v){
	double Fx=mu*9.8+(-mu*Math.sin(x)+Math.cos(x))*f(x, v, 0.0)*lonVarilla/2-
		(mu*Math.cos(x)+Math.sin(x))*v*v*lonVarilla/2;
	return (m*Fx);
}
public double fuerza_Y(double x, double vx){
	double temp=9.8-(f(x, vx, 0.0)*Math.sin(x)+vx*vx*Math.cos(x))*lonVarilla/2;
	return (m*temp);
}
}
public class Sistema1 extends RungeKutta1{
double mInercia;
	final double m=10.0;
	final double lonVarilla=1.0;
	double mu;
Sistema1(double mu, double h){
	super(h);
	this.mu=mu;
	this.mInercia=m*lonVarilla*lonVarilla/12;
}
public double g(double x, double y, double vx, double vy, double t){
	return (-mu*fuerza_Y(x, vx)/m);
}
public double f(double x, double y, double vx, double vy, double t){
	double seno=Math.sin(x);
	double coseno=Math.cos(x);
	double A=mInercia+m*lonVarilla*lonVarilla*seno*(seno-mu*coseno)/4;
	double B=-m*lonVarilla*lonVarilla*coseno*(seno-mu*coseno)/4;
	double C=m*9.8*lonVarilla*(seno-mu*coseno)/2;
	return ((B*vx*vx+C)/A);
}

public double fuerza_Y(double x, double vx){
	double temp=9.8-(f(x, 0.0, vx, 0.0, 0.0)*Math.sin(x)+vx*vx*Math.cos(x))*lonVarilla/2;
	return (m*temp);
}
}

public class MiCanvas extends Canvas {
 //objeto sistema
	RK sistema;
	double angInicial=Math.PI/6;
	State estado=new Estado(0.0, angInicial, 0.0);
//otros miembros dato...
//funciones miembro
 void setNuevo(int ang, double muEst, double muDin){
	this.angInicial=ang*Math.PI/180;
	this.mu=muDin;
	tipo=1;
	estado=new Estado(0.0, angInicial, 0.0);
	if(angInicial>=Math.atan(2*muEst)){
		sistema=new Sistema(mu, dt);
		tipo=1;
	}else{
	tipo=3;
	}
	xExtremo=lonVarilla*Math.sin(angInicial);
	repaint();
}

void mover(){
	switch(tipo){
		case 1:
			sistema.resolver(estado);
			xExtremo=lonVarilla*Math.sin(estado.x);
			double fX=((Sistema)sistema).fuerza_X(estado.x, estado.vx);
			if(fX<0){
				double fY=((Sistema)sistema).fuerza_Y(estado.x, estado.vx);
				sistema=new Sistema1(mu, dt);
				double x0=lonVarilla*Math.sin(estado.x)/2; 
				double vx0=lonVarilla*Math.cos(estado.x)*estado.vx/2;
				estado=new Estado1(estado.t, estado.x, x0, estado.vx, vx0);
				fY=((Sistema1)sistema).fuerza_Y(estado.x, estado.vx);
				tipo=2;
			}
			break;
		case 2:
			sistema.resolver((Estado1)estado);
			xExtremo=((Estado1)estado).y+lonVarilla*Math.sin(estado.x)/2;
			double vPunta=((Estado1)estado).vy+estado.vx*lonVarilla*Math.cos(estado.x)/2;
			double dist=((Estado1)estado).y-lonVarilla*Math.sin(estado.x)/2;
			if(dist<0){
				parent.hilo.putMsg(Hilo.PAUSE);
				System.out.println("vuelve a tocar");
			}
			if(estado.x>Math.PI/2){
				estado.x=Math.PI/2;
				parent.hilo.putMsg(Hilo.PAUSE);
			}
			if(vPunta<0){
				parent.hilo.putMsg(Hilo.PAUSE);
				System.out.println("se para");
			}
			break;
		case 3:
			break;
		default:
		break;
	}
	repaint();
}