miércoles, 9 de febrero de 2011

Práctica 1 { parte 5: cálculo de la matriz de covarianza }

Realizaremos un estudio estadístico para conocer el grado de incertidumbre del movimiento del robot.
Este movimiento será un simple travel(90), repetido 10 veces. Trazaremos una linea recta para ver la desviación y la distancia recorrida en cada iteración.

Veamos una tabla con los datos:


Con estos datos resolveremos la siguiente matriz de covarianza que expresa algebraicamente el error cometido:


Haremos un programa en java en el que insertemos los datos obtenidos (multiplicados por 100)  y nos devolverá la matriz resuelta. Esta matriz nos servirá para obtener datos del error que tiene, la distancia que recorre, hacia donde se desvia etc...

Aquí vemos la matriz que nos devuelve el programa:


Los números salen tan grandes por las unidades, todo simplificado sería:
| 2,24125          0,04715 |
                                     
| 0,04715            0,0851 |

A continuación os mostraremos el código del programa que nos saca la matriz:



Aquí os dejamos el código:



public class Covarianza {

    public static void main(String[] args) {

      java.util.Scanner s = new java.util.Scanner(System.in)
      .useDelimiter(System.getProperty("line.separator"));

      float uno=0;
      float dos=0;
      float tres=0;
      int i;
      int mediax=0;
      int mediay=0;
      int[] x=new int[10];
      int[] y=new int[10];
      float aux,aux2;

      for (i=0;i<=9;i++){
        System.out.println("Inserte el resultado de x"+i);
        x[i] = s.nextInt();
        mediax=mediax+x[i];
      }
      mediax=mediax/10;
      for (i=0;i<=9;i++){
        System.out.println("Inserte el resultado de y"+i);
        y[i] = s.nextInt();
        mediay=mediay+y[i];
      }
      mediay=mediay/10;
      for (i=0;i<=9;i++){
        aux=x[i]-mediax;
        aux=(float) Math.pow(aux,2);
        uno=uno+aux;
      }
      uno=uno/10;
      for (i=0;i<=9;i++){
        aux=x[i]-mediax;
        aux2=y[i]-mediay;
        aux=aux*aux2;
        dos=dos+aux;
      }
      dos=dos/10;
      for (i=0;i<=9;i++){
        aux=y[i]-mediay;
        aux=(float) Math.pow(aux,2);
        tres=tres+aux;
      }
      tres=tres/10;
      System.out.print(" | "+uno);
      System.out.print(" "+dos);
      System.out.println(" |");
      System.out.println("P = | |");
      System.out.print(" | "+dos);
      System.out.print(" "+tres);
      System.out.println(" |");
    }
}

No hay comentarios:

Publicar un comentario