Anterior

Procedimiento numérico

Resuelve la ecuación diferencial de segundo orden

d 2 θ d t 2 + g l M+m M+m sin 2 θ sinθ+ ( dθ dt ) 2 msinθ·cosθ M+m sin 2 θ =0

por procedimientos numéricos con las siguientes condiciones iniciales t=0, θ=θ0, (dθ/dt)=0

public class Oscilador extends RungeKutta{
	double masa;
	double lon;
public Oscilador(double masa, double lon, double h){
	super(h);
	this.masa=masa;
	this.lon=lon;
}
public double f(double x, double v, double t){
	double y=-Math.sin(x)*Math.cos(x)*v*v/(masa+Math.sin(x)*Math.sin(x))-
	9.8*(masa+1)*Math.sin(x)/((masa+Math.sin(x)*Math.sin(x))*lon);
	return y;
}
} 

Se establece el estado incial

Estado estado=new Estado(0.0, angInicial, 0.0);

Se crea un objeto de la clase derivada

//mB es la masa de la plataforma, lon es la longitud del péndulo, 
Oscilador oscila=new Oscilador(mB, lon, 0.005);

Se llama a la función resolver que determina el estado del sistema en el instante t+h conocido el estado en el instante t

oscila.resolver(estado);
Anterior