Anterior

Procedimientos numéricos

Diferencia de dos integrales elípticas

0 π/2 dϕ 1 k 2 sin 2 ϕ 0 ϕ 0 dϕ 1 k 2 sin 2 ϕ sin ϕ 0 = 1 2 k k=cos( θ 0 2 )

     double angulo=Double.valueOf(textAngulo.getText()).doubleValue();
     double k=Math.cos(angulo*Math.PI/360);
     double angFi=Math.asin(1.0/(Math.sqrt(2)*k));
     double res1=Integral_Eliptica.primera(Math.PI/2, k); //completa
     double res2=Integral_Eliptica.primera(angFi, k); //incompleta
     System.out.println(res1-res2);

Ecuación diferencial de segundo orden

Resolver la ecuación diferencial de segundo orden

d 2 θ d t 2 3g 2L sinθ=0

por procedimientos numéricos con las condiciones iniciales: en el instante t=0, la varilla está inclinada un ángulo θ=θ0 y parte del reposo, ω=dθ/dt=0.

public class Sistema extends RungeKutta{
    double lonVarilla;
    public Sistema(double lonVarilla, double h){
      super(h);
      this.lonVarilla=lonVarilla;
    }
    public double f(double x, double v, double t){
         return (14.7*Math.sin(x)/lonVarilla);
    }

} 

Se establece el estado incial

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

Se crea un objeto de la clase derivada

 Sistema sis=new Sistema(lonVarilla, 0.002);

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

sis.resolver(estado);

Anterior