 
	Procedimientos numéricos
Sistema de dos ecuaciones diferenciales de segundo orden
| public class Particula extends RungeKutta{
	double b;
 public Particula(double b, double h){
     super(h);
     this.b=b;
  }
 public double f(double x, double y, double vx, double vy){
	double ax=-b*Math.sqrt(vx*vx+vy*vy)*vx;
	return ax;
 }
 public double g(double x, double y, double vx, double vy){
	double ay=-9.8-b*Math.sqrt(vx*vx+vy*vy)*vy;
	return ay;
 }
}
 | 
Se establece el estado incial
double v0x=v0*Math.cos(angulo*Math.PI/180);
double v0y=v0*Math.sin(angulo*Math.PI/180);
Estado estado=new Estado(0.0, 0.0, 0.0, v0x, v0y);
Se crea un objeto de la clase derivada
Particula p=new Particula(b, 0.025);
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);
Integral de Simpson y procedimiento del punto medio
El alcance x y el tiempo de vuelo t se calculan cuando y=0. Primero, se resuelve la ecuación trascendente
para calcular el límite superior de la integral, el ángulo θ, con
Una vez calculado el límite superior θ, de la integral, se calcula el alcance x y el tiempo de vuelo t, resolviendo numéricamente las integrales
| public class Funcion extends Ecuacion{
     Simpson obj; | 
Clases para resolver numéricamente las integrales
| public abstract class Simpson {
    protected double v0;
    protected double angIni;
    protected double b;
    public Simpson(double b, double v0, double angulo){
      this.b=b;
      this.v0=v0;
      this.angIni=angulo;
    }
    public double integral(double a, double b, int n){
        if(n%2==1) n++;
        double h=(b-a)/n;
        double suma=g(a)+g(b);
        for(int i=1; i<n; i+=2){
            suma+=4*g(a+i*h);
        }
        for(int i=2; i<n; i+=2){
            suma+=2*g(a+i*h);
        }
        return (suma*h/3);
    }
    abstract public double g(double x);
    protected double v2(double x){
        double z=Math.cos(x)*Math.cos(x)* | 
Calcula el ángulo final, la altura máxima, el alcance y el tiempo de vuelo
| public class Aplicacion {
  public static void main(String[] args) {
      double angIni=45*Math.PI/180;
      double v0=60.0;
      double b=0.0025;
      Simpson pos_Y=new Pos_Y(b, v0, angIni);
	    Funcion f=new Funcion(pos_Y);
      try{
 //con -90º hay desbordamiento
         double angFinal=f.puntoMedio((-88*Math.PI/180), angIni); 
	        double hMax=pos_Y.integral(angIni, 0.0, 100);
	        double alcance=new Pos_X(b, v0, angIni).integral(angIni, angFinal, 100);
	        double tVuelo=new Tiempo(b, v0, angIni).integral(angIni, angFinal, 100);
          System.out.println("Alcance "+alcance+"  altura máxima "+ | 
