
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: la partícula está en reposo vx=dx/dt=0 en el instante t=0, cuando se encuentra en la posición x0
public class Particula extends RungeKutta{ double a; double roza; public Particula(double roza, double a, double h){ super(h); this.roza=roza; this.a=a; } public void setRozamiento(double roza){ this.roza=roza; } public double f(double x, double v, double t){ double temp=double temp=(-9.8-a*v*v)*((a*x+roza)/(1.0+a*a*x*x)); return temp; } } |
Se establece el estado incial
Estado estado=new Estado(0.0, xIni, 0.0);
Se crea un objeto de la clase derivada
Particula p=new Particula(roza, a, 0.0025);
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
p.resolver(estado);
Procedimiento del punto medio
Supongamos que la partícula parte de la posición x0, tal que tanθ0= a·x0. El ángulo θ1es la raíz de la ecuación trascendente que resolvemos por el procedimiento del punto medio
Una vez calculado la raíz θ1,obtenemos la posición x1 a partir de la relación tanθ1= a·x1
public class Funcion extends Ecuacion{ double roza; |
Se calcula la posición final x1 cuando la posición inicial x0=-2.5 y el coeficiente de rozamiento μ=0.1
public class Aplicacion { public static void main(String[] args) { double roza=0.1; double a=2.0; double xIni=-2.5; double angIni=Math.atan(a*xIni); |
La posición final x1 es la posición inicial x0 para la siguiente etapa del movimiento. El coeficiente de rozamiento cambia de signo.