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.
