Anterior

Procedimientos numéricos

Ecuación diferencial de segundo orden

Resolver la ecuación diferencial de segundo orden

I d 2 θ d t 2 =M

por procedimientos numéricos con las condiciones iniciales: en el instante t=0, dθ/dt=0, θ=0.

public class Sistema extends RungeKutta{
    double radio;
    double dist;
    final double cte=0.001;
    final double roz=0.1;
 public Sistema(double radio, double dist, double h){
        super(h);
        this.radio=radio;
        this.dist=dist;
 }
 public double f(double x, double v, double t){
        return cte*momento(x)-roz*v;
 }
  double momento(double  ang){
    double angulo=ang%(Math.PI/6);    //30 grados
    double y=radio*Math.sin(angulo);
    double x=radio+dist-radio*Math.cos(angulo);
    double momento1=radio*Math.cos(Math.atan(x/y)-angulo)/(x*x+y*y);
    angulo=Math.PI/6-angulo;
    y=radio*Math.sin(angulo);
    x=radio+dist-radio*Math.cos(angulo);
    double momento2=radio*Math.cos(Math.atan(x/y)-angulo)/(x*x+y*y);
    return 2*(momento1+momento2);
  }
}

Se establece el estado incial

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

Se crea un objeto de la clase derivada

 Sistema sis=new Sistema(0.2, 0.05, 0.01);

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

sis.resolver(estado);Anterior