
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);![]()