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 +β dx dt +kx=mg

con las condiciones iniciales: En el instante t=0, la posición inicial de la partícula es x=0.02 y parte del reposo, su velocidad inicial es dx/dt=0 y su masa inicial es m0=1.0·10-6

public class Oscilador extends RungeKutta{
    final double k=0.01;
    final double beta1=0.0003;
    final double beta2=0.1;
     double flujo;
    double masaIni=1.0e-6;
    double masa;
    public Oscilador(double flujo, double paso){
        super(paso);
        this.flujo=flujo;
    }
    void setMasa(double m){
        masaIni=m;
    }
    double getMasa(){
        return masa;
    }
    public double f(double x, double v, double t){
        masa=masaIni+flujo*t;
        double y=9.8-k*x/masa-(beta1+beta2*flujo)*v/masa;
        return y;
    }
} 
//Objetos de la clase Oscilador Estado estado=new Estado(0.0, 0.02, 0.0; Oscilador oscilador=new Oscilador(flujo, 0.005); void mover(){ oscilador.resolver(estado); masa=oscilador.getMasa(); if(estado.x>=0.03){ masaCae=estado.v*oscilador.getMasa()/(alfa+estado.v); estado.t=0.0; estado.x=0.03; estado.v=0.0; masa=oscila.getMasa(); oscilador.setMasa(masa-masaCae); bCae=true; } }
Anterior