Procedimientos numéricos
Ecuación diferencial de segundo orden
Resolver la ecuación diferencial de segundo orden
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);![]()
