Anterior

Procedimientos numéricos

Ecuación diferencial de segundo orden

Resolver la ecuación diferencial de segundo orden

M d 2 x d t 2 = m L ( B(x+ L 2 )B(x L 2 ) ) B(x)=N μ 0 R 2 I 2 ( R 2 + x 2 ) 3

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

public class Oscilador extends RungeKutta{
    double masa;
    double longitud;
    double mMagnetico;
    double radio;
    double intensidad;
    int nEspiras;
    public Oscilador(double masa, double longitud, double mMagnetico, double radio, 
double intensidad, int nEspiras, double h){
        super(h);
        this.masa=masa;
        this.longitud=longitud;
        this.mMagnetico=mMagnetico;
        this.radio=radio;
        this.intensidad=intensidad;
        this.nEspiras=nEspiras;
    }
    public double f(double x, double v, double t){
        double aceleracion=mMagnetico*(campo(x+longitud/2)-campo(x-longitud/2))
/(masa*longitud);
        return aceleracion;
    }
  double campo(double x){
    double r=radio*radio+x*x;
    double y=4*Math.PI*1.0e-7*intensidad*nEspiras*radio*radio/(2*Math.pow(r, 1.5));
    return y;
  }
}

Se establece el estado incial

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

Se crea un objeto de la clase derivada

 Oscilador oscila=new Oscilador(0.25, longitud, mMagnetico, radio, intensidad, 150, 0.05);

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