Anterior

Procedimiento numérico

Ecuación diferencial de segundo orden

Resolver la ecuación diferencial de segundo orden

( m· sin 2 θ+M )R d 2 θ d t 2 =Fcosθ mR·sin2θ 2 ( dθ dt ) 2 (m+M)g·sinθ

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

public class Bloque extends RungeKutta{
   final double mBloque=1.0;
    double mBala;
    final double G=9.8;
    final double radio=1.0;
    int fuerza;
    public Bloque(double mBala, int fuerza, double h){
        super(h);
        this.mBala=mBala;
        this.fuerza=fuerza;
    }
    public double f(double x, double v, double t){
        double den=mBala*Math.sin(x)*Math.sin(x)+mBloque;
        double y=fuerza*Math.cos(x)-mBala*radio*v*v*Math.sin(2*x)/2-
(mBala+mBloque)*G*Math.sin(x); return(y/(radio*den)); } }

Se establece el estado incial

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

Se crea un objeto de la clase derivada

 Bloque b=new Bloque(mBala, fuerza, 0.0002);

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

b.resolver(estado);
Anterior