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 = U 0 (k1)a ( (k1)x+a ) 2 x<a m d 2 x d t 2 = U 0 (k1)a ( (2k1)a(k1)x ) 2 a<x<2a

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

public class Oscilador extends RungeKutta{
    double lonConden;
    double permitividad;
    public Oscilador(double lonConden, double permitividad, double h){
        super(h);
        this.lonConden=lonConden;
        this.permitividad=permitividad;
    }
    public double f(double x, double v, double t){
        int signo=+1;
        if(x>lonConden){
            x=2*lonConden-x;
            signo=-1;
        }
        double temp=signo*(permitividad-1.0)*lonConden/
((x*(permitividad-1.0)+lonConden)*(x*(permitividad-1.0)+lonConden)); return temp; } }

Se establece el estado incial

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

Se crea un objeto de la clase derivada

 Sistema oscila=new Oscilador(10.0, permitividad, 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