lunes, 14 de noviembre de 2011

Programacion 2: "Cadenas de caracteres en Java"

Cadenas de caracteres en Java
2010

Introducción al tema:

Dentro del área de la programación existen lo que los programadores llaman: variables
primitivas, dentro de las cuales se encuentran datos tales como : int (números enteros), float
(números de coma flotante), double (números de coma flotante de mayor capacidad de
almacenamiento), boolean (afirmación de valor verdadero o falso), char (carácter unicode), y al que nos interesa, String (cadena de caracteres unicodes, o más bien cadena de char).
Según lo planteado dentro del programa de actividades del curso: “Programación 2”, en la
presente semana se presenta la actividad de realizar la resolución de problemas manipulando
cadenas de caracteres, siendo estas vistas con anterioridad en las clases de cátedra del mismo curso, la idea de la presentación del siguiente documento, es entregar las respuestas solicitadas , y dar a entender la explicación del desarrollo de los tres problemas en cuestión.

Problemas: cadenas sección 2

Equipo E, F.

Ejercicio 1:
Invertir una cadena ingresada por teclado.

Ejemplo: juliocesar -> P ->rasecoiluj
1-Análisis de variables de entradas/salidas.

Variables de entrada:
Variable X de tipo String, será lo que contenga la cadena de “n” caracteres.

Variables de salida:
Variable Z de tipo String, indicara la cadena de “n” caracteres, pero de forma inversa.

2-Un ejemplo especifico.
Se puede utilizar para formar sopa de letras, ya que se pueden formar palabras, dejándolas al
revés para tener una mayor dificultad en el juego.

3-Proceso generalización.
En el proceso ingresaremos una variable X de tipo String que puede tener “N” caracteres, cuyo
código nos debe permitir ingresar una cadena de caracteres.

• Ingresamos la cadena por teclado de tipo String
• La guardamos en la variable X
• For (int i=0; i<cadena.length(); i++){
• posicion--;
• Damos vuelta la cadena
• imprimimos en pantalla

4-Pseudocódigo.
Inicio
String cad =”ingresar palabra”;
Desde i=0 hasta cad.length() hacer

Inicio
Invertir posición
Imprimir (cad.charAt(posición))
fin

5-Diagrama de flujo.





Ejercicio 2:

Analice el problema y construya un programa que permita reemplazar la primera palabra por una
palabra dada por teclado.

Ejemplo: abc Federico abc comarca abc ->P -> león Federico león comarca león

1- Análisis de variables de entradas/salidas.
Variables de entrada:

Variable X de tipo String, es la palabra nueva que se entrega por teclado.
Variables de salida:
Variable R de tipo String, que devuelve la palabra modificada.

2- Un ejemplo especifico.
Identificar los jugadores de un equipo de fútbol, dándoles a ello una identificación especial para
que sea más fácil identificarlos entre personas que no conocen de ellos.

3- Proceso generalización.
• Primeramente ingresamos la cadena
• Solicitamos una palabra ingresada por teclado.
• Se guardara la palabra ingresada en nuestra variable.
• Reemplazamos la palabra que se repetía en nuestra frase, por nuestra variable.
• Cadena=cadena.replace ("abc"," "+X);
• Imprimimos en pantalla la nueva frase que se formo.

4- Pseudocódigo.

Inicio
Frase
String cadena =”ingresar palabra”;

Inicio
Cadena=cadena.replace ("abc",""+n) // reemplazamos cadena
Imprimir (cadena)
Fin

5- Diagrama de flujo.






Ejercicio 3:

Analice un problema y construya un programa que permita transformar todas las primeras letras
de las palabras de una frase en mayúsculas.

Ejemplo: corazón de león Rodolfo el reno -> P -> Corazón De León Rodolfo El Reno.

1-Análisis de variables de entradas/salidas.
Variables de entrada:
Variable R de tipo String, será lo que contenga la cadena de “n” caracteres.
Variables de salida:
Variable P de tipo String, indicara la cadena de “n” caracteres, pero solamente mostrará
las primeras letras de cada palabra en mayúsculas.

2-Un ejemplo especifico.
Se puede ocupar para que en un colegio donde los alumnos integrantes de un curso, en una clase
de lenguaje, puedan colocar las primeras palabras con mayúsculas, ya sea en un listado de
nombres de otras personas que se encuentran en minúsculas, así ellos puedan identificar y
cambiar rápidamente.

3-Proceso generalización.
• Solicitamos una frase ingresada por teclado.
• Se guardara la frase ingresada en nuestra variable.
• Agregamos una condición
• Cambiamos las primeras letras a mayúsculas de las palabras en la frase
• Imprimimos en pantalla la nueva frase que se formo.

4-Pseudocódigo.
inicio de clase
inicio del main

Se crean variables "FRASE" y "NUEVA" de tipo string, se le asignan valores null y " "
respectivamente
Se crean variable "I" de tipo entero, iniciada en 0 
se inicia liza el escaner
se pide ingresar una frase
"FRASE" = texto ingresado
MIENTRAS "I" < largo de "FRASE" hacer:
MIENTRAS "I" < largo de frase y a la vez el caracter DE "FRASE"en posición de “I” es igual a " "
hacer:se le asigna a nueva su valor más trozo de frase entre las posiciones dadas por I e I+1
se aumenta “I” en uno
//fin de MIENTRAS

SI i es menor que largo de frase hacer:
se le asigna a nueva su valor más bus trozo de frase entre las posiciones dadas por i e i más uno y
se pasa a mayúscula
se aumenta i en uno
//fin de SI
MIENTRAS "I" < largo de frase y a la vez el carácter de "FRASE"en posición de “I” es igual a " "
hacer:

se le asiga a nueva su valor más trozo de frase entre las posiciones dadas por I e I+1
se aumenta i en uno
//fin de MIENTRAS
//fin de MIENTRAS
imprimir: "La nueva frase es" + nueva
//fin del main
fin de clase


Programacion 2: "Informe de Vectores"

Matrices + programación

Problema 1

1. Enunciado.
Dados dos vectores de largo n y m ya llenos (contienen elementos) entregue cuantos elementos están en ambos arreglos. Construir el programa con métodos crear vector, llenar vector, contar, imprimir vector.

Ejemplo:
[1 2 3 4 5 6] p 3
[1 3 5 7 9]



2. Análisis de variable de entrada y salida.

· Variable de entrada :
Variable array Arreglo1 de tipo entero, contendrá los siguetees objetos: 1 - 2 - 3 - 4 - 5 - 6
Variable array Arreglo2 de tipo entero, contendrá los siguetees objetos: 1 - 3 - 5 - 7 - 9
Variable C de tipo entero, contador que obtendrá primeramente valor cero.
· Variable de Salida:
Variable C de tipo entero, mostrara la cantidad de números que se repiten.

3. Un ejemplo especifico.
Se tiene un curso de 60 alumno en la cual se necesita saber la cantidad de números verificador de su credencial de identificación (RUT) se repiten para poder separarlo en un nuevo curso de manera que los dos curso queden equitativo.

4. Proceso de generalización.
En el proceso nos vamos a referir a dos vectores de un conjunto de números ya determinado que están separados en dos arreglos Arreglo1 y Arreglo2 los cuales van a ser separados para luego comparar uno a uno para saber la cantidad de números tienes en común los dos arreglos mostrar por pantalla el total de números que se repiten.

· Ingresamos los arreglos A y B más el contador C.
· Con un for recorremos el primer arreglo y lo mostramos en pantalla.
· Hacemos lo mismo para el segundo arreglo.
· Aplicamos dos ciclos for para recorrer los dos arreglos.
· Realizamos la comparación de ambos arreglos a través de un (if).
· Sumamos con nuestro contador C.
· Imprimimos nuestro contador en pantalla.

5. Diagrama de flujo. 




6. Pseudocódigo.

Algoritmo de compara dos arreglos.

Variables
Arreglo A, entero, positivo, contiene 1-n dígitos.
Arreglo B, entero, positivo, contiene 1-n dígitos.
Int c, entero igual a 0;

inicio
Mientras que i <0 y i <A.length hacer lo siguiente.
Mientras que J <0 y J <B.length hacer lo siguiente.
IF ( A[] ==B[])
C++;

Imprimir cantidad de números que se repiten.
Fin.


Problema 2

1. Enunciado.
Elabore un programa computacional para ordenar un arreglo por burbuja de menor a mayor. Elabore los métodos Crear vectores, llenar vectores, intercambiar vectores. Imprimir vectores. Para las longitudes de vectores debe ser finita de largo 6 como efecto de prueba.

Ejemplo:
[5, 65, 70, 69, 2, 0] [0, 2, 5, 65, 69, 70]





2. Análisis de variable de entrada y salida.
· Variable de entrada.
Variable tipo arreglo, entero arreglo1 en cual contiene 6 objeto donde ya está ingresado.
Variable aux de tipo entero, que se ocupa de manera auxiliar para poder intercambiar los valores del arreglo1.
· Variable de salida.
Variable de tipo arreglo, entro arreglo1 en el cual imprime los números ya ordenados de menor a mayor.


3. Un ejemplo especifico.
Se quiere separar un grupo 60 estudiantes en dos grupos, Para la cual se decidió separarlo a través de su día de nacimiento, si por algún motivo se repite el día de nacimiento de alguno pasa al ínstate al otro curso.



4. Proceso de generalización.
En el proceso ingresamos un arreglo de tipo arreglo el cual obtiene 6 objetos ingresados.
· Una vez agregada el arreglo, aplicamos un for para comprobar que el arreglo es correcto. 
· Declaramos la variable auxiliar.
· Aplicamos dos ciclos for para recorrer las filas y columnas.

· Agregamos la condición (if)
· Utilizamos la variable auxiliar para intercambiar los valores de las columnas del arreglo.
· Recorremos el arreglo con un ciclo for.
· Imprimimos el arreglo en pantalla.


5. Diagrama de flujo. 


6. Pseudocódigo.

· Algoritmo de ingresar un arreglo con 6 objeto.
· Variables
· Arreglo, entero, positivo, contiene 6 objetos.
· AUX, entero positiva, variable auxiliar.

· Inicio
· Mientras que i <0 y i <6 hacer lo siguiente.
· Mientras que J <0 y J <6-1 hacer lo siguiente.
· IF ( A[j] >A[J+1])
· A[j+1]=AUX;
· Mientras que i=0 y i < 6 hacer lo siguiente
· Imprimir resultado en pantalla.
· Fin.

Programacion 1: Laboratorio orientado a objetos

Ejercicio Propuesto.

Problema:

Crear la clase Notas
- Constructor que inicialice 4 notas
- Constructor que tenga como parámetros las notas.
- Métodos para modificar las notas (setNota1, setNota2….) estático
- Métodos para obtener las notas (getNota1, getNota2….)
- Método para Calcular el promedio de notas estático
- Método para Calcular la nota mayor estático.
Crear una clase Principal que use la clase Notas y que haga:

Clase Principal

- Crear 4 objetos de tipo Notas con notas ingresadas por teclado.
- Obtenga el promedio de notas del objeto1 y del objeto2
- Imprima las notas de ambos objetos e imprima el promedio mayor entre ambos objetos.
- Imprima las notas del objeto3 y su nota más alta, lo mismo para el objeto4.
- Modifique las notas de los objetos 3 y 4, muestre por pantalla.
- Imprima las notas de ambos objetos y la nota más alta entre ambos objetos.


1. El proyecto sólo tiene estas dos clases: la clase Notas y la clase Principal
2. Comprima la carpeta de su proyecto (el nombre de este archivo debe ser su nombre)
3. Suba su archivo comprimido a la plataforma educa en el ítem tareas


Reglas:
1. El archivo debe estar grabado con su Nombre completo.
2. Esta actividad es PRESENCIAL, es decir, debe estar en uno de los laboratorios de la escuela.
3. El archivo debe estar en la plataforma Educa sección Tareas, usted tiene plazo hasta fin de la sesión de laboratorio.
4. Es su responsabilidad verificar que su archivo esté en la plataforma antes de cerrado el proceso.


Tipo de entrega : individual subido en sección Tareas de Educa.
Fecha límite : sesión de laboratorio.



Desarrollo Solución del Código:
Clase Principal

import java.util.*;
public class Claseprincipal{
static void main(){
Scanner leer= new Scanner(System.in);
Notas A1, A2, A3, A4;
double a,b,c,d;
System.out.println( "ingrese 4 notas para A1 " );
a= leer.nextDouble();
b= leer.nextDouble();
c= leer.nextDouble();
d= leer.nextDouble();
A1= new Notas(a,b,c,d);
System.out.println( "ingrese 4 notas para A2 " );
a= leer.nextDouble();
b= leer.nextDouble();
c= leer.nextDouble();
d= leer.nextDouble();
A2= new Notas(a,b,c,d);
System.out.println( "ingrese 4 notas para A3 " );
a= leer.nextDouble();
b= leer.nextDouble();
c= leer.nextDouble();
d= leer.nextDouble();
A3= new Notas(a,b,c,d);

System.out.println( "ingrese 4 notas para A4 " );
a= leer.nextDouble();
b= leer.nextDouble();
c= leer.nextDouble();
d= leer.nextDouble();
A4= new Notas(a,b,c,d);
System.out.println();
System.out.println();
double prom =Notas.CalcularPromedio(A1);
System.out.println( "El promedio de A1 es " + prom);
System.out.println();

double prom2= Notas.CalcularPromedio(A2);
System.out.println( "El promedio de A2 es " + prom2);
System.out.println();
System.out.println(" la Nota del objeto A1" );
System.out.println(A1.getNota1( ));
System.out.println(A1.getNota2( ));
System.out.println(A1.getNota3( ));
System.out.println(A1.getNota4( ));
System.out.println();

System.out.println(" la Nota del objeto A2" );
System.out.println(A2.getNota1( ));
System.out.println(A2.getNota2( ));
System.out.println(A2.getNota3( ));
System.out.println(A2.getNota4( ));
System.out.println();

if ( Notas.CalcularPromedio(A1) > Notas.CalcularPromedio(A2))
System.out.println("el promedio mayor es " + prom);
else
System.out.println("el promedio mayor es " + prom2);
double mayor= Notas.NotaMayor(A3);
double mayor2=Notas.NotaMayor(A4);
System.out.println(A3.getNota1( ));
System.out.println(A3.getNota2( ));
System.out.println(A3.getNota3( ));
System.out.println(A3.getNota4( ));
System.out.println("La nota mayor es "+ mayor);
System.out.println();
System.out.println(" Las Nota del objeto A4");
System.out.println(A4.getNota1( ));
System.out.println(A4.getNota2( ));
System.out.println(A4.getNota3( ));
System.out.println(A4.getNota4( ));
System.out.println("La nota mayor es "+ mayor2);
System.out.println();

Notas.setNota1(A3,6);
Notas.setNota2(A3,5);
Notas.setNota3(A3,4);
Notas.setNota4(A3,7);
Notas.setNota1(A4,6);
Notas.setNota2(A4,5);
Notas.setNota3(A4,4);
Notas.setNota4(A4,7);
}
}





Clase Notas:


class Notas{
private double nota1;
private double nota2;
private double nota3;
private double nota4;
Notas(){
nota1=0.0; nota2=0.0; nota3=0.0; nota4=0.0;
}
Notas(double nota1, double nota2, double nota3, double nota4)
{
this.nota1=nota1;
this.nota2=nota2;
this.nota3=nota3;
this.nota4=nota4;
}
static void setNota1(Notas n1, double nota1){
 n1.nota1=nota1;}
static void setNota2(Notas n2, double nota1){
 n2.nota1=nota1;}
static void setNota3(Notas n3, double nota1){
 n3.nota1=nota1;}
static void setNota4(Notas n4, double nota1){
n4.nota1=nota1;}
double getNota1()
{return nota1;}
double getNota2()
{return nota2;}

double getNota3()
{return nota3;}
double getNota4()
{return nota4;}
static double CalcularPromedio(Notas obj){
return ((obj.getNota1()+ obj.getNota2()+ obj.getNota3()+ obj.getNota4())/4);
}

static double NotaMayor(Notas obj2){
double max1=1,max2=1;
if(obj2.getNota1()>obj2.getNota2())
 max1=obj2.getNota1();
 else
 max1=obj2.getNota2();
 if(obj2.getNota3()>obj2.getNota4())
 max2=obj2.getNota3();
 else
 max2=obj2.getNota4();
 if(max1>max2)
 return max1;
 else
 return max2;
}
}



Informe Fisica: Laboratorio N°1

En proceso de Desarrollo

Curso: Programación de Robots

Laboratorio #1 "Programación 1"

Autor: Alamiro Solis Toro
Competencia: Desarrollo de software(nivel 1)
Curso: Pogramacion 1


Guión Laboratorio 1.

Conocimientos previos.
Clases de cátedra.

Desarrollo.
Ingresar con su cuenta personal.Abrir el programa BlueJ.
Crear un proyecto cuyo nombre es el suyo, es decir, su proyecto lo graba con su nombre completo.


a) Crear un programa Java (la clase se llama Promedio) que permita calcular la nota final de la asignatura programación I. La información de que se dispone es que hay 3 evaluaciones parciales cuyo peso es de 20% la primera, 25% la segunda y 30% la tercera. También hay 2 tareas individuales cuya ponderación es de 25%. Diseña una solución que permita ingresar esta información y luego imprima por pantalla el resultado final.


b) En el mismo proyecto diseña otra clase de nombre Calcular. En esta clase tienes que entregar el resultado del área achurada que se muestra en la siguiente figura


Analiza qué información es indispensable. Luego solicita por teclado al usuario que te ingrese todos los datos que te permitirán resolver el problema. El programa debe imprimir por pantalla el resultado.

Comprima la carpeta de su proyecto (el nombre de este archivo DEBE ser su nombre).
Suba su archivo comprimido a la plataforma educa en el ítem tareas.

Reglas:
1. El archivo debe estar grabado con su Nombre completo.
2. Esta actividad es PRESENCIAL, es decir, debe estar en uno de los laboratorios de la escuela.
3. El archivo debe estar en la plataforma Educa sección Tareas, usted tiene plazo hasta fin de la sesión de laboratorio.
4. Es su responsabilidad verificar que su archivo esté en la plataforma antes de cerrado el proceso.
Tipo de entrega : individual subido en sección Tareas de Educa.

Fecha límite : sesión de laboratorio.


Código de la solución:

a)
import java.util.*;
class Promedio
{
public static void main(){
Scanner leer= new Scanner(System.in);
System.out.println ( "leer nota 1" );
int n1 = leer.nextInt();
System.out.println ( "leer nota 2" );
int n2 = leer.nextInt();
System.out.println ( "leer nota 3" );
int n3 = leer.nextInt();
System.out.println ( "leer nota 4" );
int t1 = leer.nextInt();
System.out.println ( "leer nota 5" );
int t2 = leer.nextInt();
System.out.println ( "leer nota 6" );
double promedio= 0.20 * n1 + 0.25 * n2 + 0.30 * n3;
double tareas= 0.15 * t1 + 0.10 * t2;
double total= promedio + tareas;
System.out.println ("La nota ha sido" + total);
}
}




b)
import java.util.*;
class Calcular
{
public static void main(){
Scanner leer= new Scanner(System.in);
System.out.println ( " ingrese el largo" );
int a1 = leer.nextInt();
System.out.println ( " ingrese el ancho del rectangulo" );
int a2 = leer.nextInt();
System.out.println ( "ingrese el radio" );
int r = leer.nextInt();
double b1= a1*a2;
double PI= 3.1416;
double x= 2*PI*(r*r);
double ax= b1-x;
System.out.println ("el area achurada es " + ax);
}
}


Regresión lineal y cuadrática "I.B.D"

Informe regresión lineal y cuadrática


Curso: Introducción a las bases de datos


Integrantes:
Nicolas Yañez
Alamiro Solis
Gonzalo Cartez
Camilo Rivas



Desarrollo

Introducción
El análisis de regresión se utiliza para explicar una determinada variable, digamos Y,
en función de una variable X, o bien en función de varias variables X1, X2, ..., Xk.
En el primer caso se tratará de regresión univariante, y en el segundo caso, de regresión
multivariante. El modelo de explicación en ambos casos es lineal, esto es, se asume que la dependencia entre Y y las variable explicativa X adopta la forma:
Y = a + b X + error


O, en el caso multivariante:


Y = a + b1 X1 + b2 X2 + ... + bk Xk.+ error


El término de error aparece porque cada vez que observamos una X, no siempre se observa la misma Y. Por ejemplo, si X es la estatura de una persona, e Y el peso, cada vez que observemos una estatura, no siempre obtendremos el mismo peso en Y.
En pocas palabras, regresión lineal es un método utilizado en estadística o en econometría para determinar si existe relación de dependencia entre dos o más variables independientes. Excel tiene algunas funciones que pueden ser útiles para ese cálculo(ESTIMACIÓN LINEAL, PEARSON,PRONOSTICO, TENDENCIA).


1.1) para calcular el coeficiente b la ecuación lineal dada por:

[calculamos de dos formas la función ya que los datos no nos eran muy descriptivos por lo que buscamos información en Internet y nos guiamos por ella para resolver el problema]


y = a + bx


Ya teniendo los datos de coordenadas almacenados en la base de datos es necesario obtener:


La sumatoria de las coordenadas (promedio de x - x )

La sumatoria de las coordenadas (promedio de y - y )





entonces según:




la funcion queda de esta forma:


para saber el error se utiliza:




que pasado a nuestros datos es:





entonces nuestra función queda expresada como :





Para obtener estos datos utilizamos una sentencia mysql de esta forma:
mysql> select sum(x),sum(y),sum((x-promediox)),sum(y-promedioy),sum(x*x),sum(y*y),sum(x*y) from datoslineal natural join promedioslineal;


Que transformamos en vista para que quedara almacenada en la base de datos:

mysql> create view calculosregresionlineal as select sum(x),sum(y),sum((x-promediox)),sum(y- promedioy),sum(x*x),sum(y*y),sum(x*y) from datoslineal natural join promedioslineal;
Esta vista nos arroja una tabla con estos datos:


N sum(x) sum(y) sum((x-promediox)) sum(y-promedioy) sum(x*x) sum(y*y) sum(x*y)


164 497.013 607.974 -2.797762022055 -4.0856207306206 2365.795055 3648.947138 1945.630142






Entonces la formula queda de esta manera


Pendiente(b) = (NΣXY - (ΣX)(ΣY)) / (NΣX2- (ΣX)2)

b= (164*1945,630142 - 497,013 * 607,974) / (163*2365,795055- (497,013 )(497,013 ))
= 0,122020459
Ahora, de nuevo, substituir en la fórmula del intercepto


Intercepción(a) = (ΣY - b(ΣX)) / N

a = (ΣY - b(ΣX)) / N


= (607,974 -0,122020459*(497,013) ) / 164
=3,3373673513
Entonces se obtiene la función de esta manera:


y = a + bx
y = 3,3373673513 + 0,122020459x
Lo que graficado en openoffice calculara de esta manera:




y que comparado con el vídeo
[foto al vídeo del traker con puntos ]
1.2 para establecer rectas alternativas es necesario graficar los puntos obtenidos

Entonces podemos trazar una función según la pendiente tomando 2 puntos


Primera función para recta alternativa con
b= (9-0)/(10-0) = 0,9  y   a =0
y = 0,9x + 0


segunda función para recta alternativa con


b=(6-0)/(9,9-0)= 0,6060...60 y a =0
y = 0,60x+0
Herramientas necesarias para este Informe

1. Software Traker
2. Motor de Base de Datos (MySQL)
3. Excel
4. Derive




Traker

Es un Software libre de análisis de vídeo y construcción de modelos construido con el ambiente de Java del proyecto Open Source Physics (OSP, Física de Código Abierto). Está diseñado para ser usado en cursos o clases introductorios de física en la universidad. Ademas Tracker incluye ahora un autotracker que sigue masas puntuales automaticamente, un sistema dinámico de dos cuerpos que modela partículas interactuantes el cual usamos en esta ocacion para poder realizar el muestreo de los puntos .


Algunas de las caracteristicas de traker que utilizamos para realizar este expermiento son:


a. Seguimiento de Objetos con datos y marcas de posición, velocidad y aceleración.
b. Seguimiento Automático para un seguimiento preciso sin usar el ratón.
c. Video de la modelación con datos y marcas de partículas dinámicas.
d. Seguimiento del centro de masa con marcadores y datos.
e. Vectores gráficos interactivos y suma de vectores.
f. Herramientas de análisis de datos con poderosos ajustes manuales y automáticos de
curvas.
g. Herramienta para exportar videos para grabar videos con marcas de seguimiento
h. Arrastre y suelte archivos trk y de vídeo para abrirlos.


Utilizamos exel y openoffice calc para calcular y graficar las formulas que obteníamos desde mysql.
DERIVE

Lo utilizmos para crear formulas y resolver las ecuaciones ya que los numero con los que trabajamos eran de mas de 4 decimales por lo que era tedioso hacerlos manualmente.



Conclusiones

Hemos examinado dos importantes herramientas del análisis estadístico, la
regresión y la correlación. Se sugiere el siguiente esquema para la aplicación de
dichas técnicas.


1. Identificación del modelo. Se debe saber si el modelo de regresión o el de
correlación es el apropiado para dar respuesta a sus preguntas.

2. Revisión de las suposiciones. La validez de las conclusiones depende de que
también se ajusten los datos analizados al modelo elegido.
3. La aplicación del análisis de regresión simple permitirá estudiar la relación que
existe entre una variable independiente y otra dependiente, utilizando el modelo de
regresión.

4.Se consideró la correlación como una medida descriptiva de la intensidad de una
relación líneal entre dos variables.

5. El coeficiente de determinación es una medida de la bondad de ajuste para la
ecuación de regresión; este puede interpretar como la proporción de la variación de la variable dependiente explicada por la ecuación de regresión.

6. Uso de la ecuación. Una vez que se ha determinado que es probable que la ecuación de regresión describa adecuadamente la relación entre las dos variables,
X y Y. puede utilizarse para cualquiera de fines:

a) predecir qué valor es probable que tenga Y, dado un valor particular de X, o bien,
b) estimar la media de la subpoblación de los valores de Y para un valor particular de X.






Regresión Cuadrática

Introducción
Para poder desarrollar este experimento primero es importante definir conceptos con los cuales trabajaremos como lo es la Regresión Cuadrática y la forma en la cual procederemos a desarrollar este experimento.



La Regresión Cuadrática

La regresión cuadrática es el proceso por el cual encontramos los parámetros de una parábola que mejor se ajusten a una serie de datos que poseemos, ya sean mediciones hechas o de otro tipo. Bueno, pero ¿Por qué habríamos de querer ajustar nuestros datos precisamente a una parábola y no a otra función?




Una función cuadrática o de segundo grado se puede representar de manera genérica
como se ve en la figura en el extremo inferior.
Entonces lo que nos interesa es encontrar los valores de a, b yc que hacen que el valor de y calculado sea lo más cercano posible al medido.
A menudo en una investigación el objetivo es explicar el comportamiento de una variable en términos de más de una variable, por ejemplo sea la variabley, cuyo comportamiento explicaremos en términos de las variable
x1,x2.... xk


Se explicará mediante una relación lineal:

En función de las variables x1,x2.... xk llamadas independientes o también explicativas). La variable respuesta es de tipo cuantitativa y las variables explicativas deben ser cuantitativas y/o categóricas.

También podemos decir que es un método para ajustar puntos dispersos ( experimentales ), y aproximar por una recta tal que la suma de las distancias verticales de los puntos a la recta sea mínima y poder determinar la función que mejor lo represente y así podamos calcular los valores de a,b y c mediante algunos métodos de eliminación como lo son Gauss Joraussdan y Cramer.

Además trataremos principalmente las evidencias de el uso de distintos software utilizados en este experimento con una breve explicación de lo que estas son y pueden lograr, como también trataremos las distintas estrategias y experiencias que adquirimos con este experimento, mostrando todo el proyecto pero no solamente visto desde el punto de vista de la informática sino también desde el punto de vista de los ingenieros y como resolver problemas.



Conclusión:


El método de regresión es de suma importancia para el manejo de datos estadísticos-descriptivos, en la manera en que sean los datos agrupados e identificados ordenadamente.

El uso de la Regresión en la economía es de amplio uso, debido a la manera ordenada de manejar los datos e identificar los datos.

El análisis de regresión no es capaz de identificar la relación entre dos fenómenos de causa-efecto, aunque se a capaz de identificar las variables de manera individual y proporcional entre los fenómenos en estudio.



Conceptos:

Gauss Joraussdan: llamada también la “eliminación Gaussiana” es en Matemáticas algoritmos del álgebra lineal para determinar las soluciones de un sistema de ecuaciones lineales, encontrar matrices e inversas.

Cramer: este sistema de eliminación es un Teorema en Álgebra Lineal que da la solución de un Sistema Lineal De Ecuaciones en términos de Determinantes. Además la regla de Cramer es de importancia teórica porque da una expresión explícita para la solución del sistema.

Matriz:En matemáticas, una matriz es una tabla bidimensional de números consistente en cantidades. Abstractas que pueden sumarse y multiplicarse Las matrices se utilizan para describir sistemas de ecuaciones lineales, realizar un seguimiento de los coeficientes de una aplicación lineal y registrar los datos que dependen de varios parámetros.
Conclusiones generales:

-Como futuros ingenieros denota establecer un conocimiento esencial en lo que es regresión ya que en cualquier empresa le podremos dar uso a este aprendizaje. Nosotros pensábamos que operando con las 4 operaciones básicas de la aritmética seria lo único que necesitariamos en el ramo, esto nos hace retractarnos de lo que pensábamos y mantener la convicción de que es fundamental par nuestra formación como ingenieros.

-También el trabajo en equipo estableció tener roles para poder realizar un buen informe, y determinar que diferencias teníamos para saber en que eramos realmente buenos, esto nos hizo mantener un equilibrio y evidenciar el mismo aprendizaje en cada uno, por lo que lo hizo una buena experiencia.



Bibliografia:

Paginas Web
http://www.arquimedex.com/index.php?accion=1&id=83



Informe N°1 Laboratorio: 

Movimiento Rectilíneo Uniforme.

Nombres:
Camilo Rivas,
Pablo Lincoqueo,
Alamiro Solis,
Ninoska ulloa.




Resumen


Como uno puedes saber el momento exacto de una colisión entre dos vehículos, a que distancia ocurrirá el impacto, todas estas dudas se pueden resolver mediante unos cálculos simples de problemas de encuentro de móviles con MRU.

Para realizar el siguiente informe, respondimos a algunas interrogantes planteadas por el profesor en una guía de trabajo sobre MRU, cuya metodología es calcular las pruebas teóricamente en primer lugar y luego realizar la prueba práctica con nuestros Robot Lego para comprobar los resultados de manera más interesante. Los resultado s obtenidos se acercan bastantes a nuestros cálculos teóricos dándonos una gratificación extra por el buen resultado obtenido.


Objetivos

· Determinar la relación velocidad-potencia de programación de su robot (MRU).
· Utilizar correctamente programas tales como Excel, Open office Calc, etc.
· Utilizando una velocidad constante conocida, determinar distancias desconocidas.
· Calcular el tiempo y la distancia de encuentro de 2 robots que se mueven en la misma dirección, pero en sentidos opuestos.


Herramientas



Materiales: 2 Robot Lego NXT, Cronómetro, Huincha aislante, Sensor de Luz, Huincha, Notebook, Calculadora.
Conceptuales:
MRU: describir el movimiento que tiene un cuerpo que se desplaza a través de una línea recta con velocidad constante.


Velocidad:
v = D
T
x = x 0 + v 0 ( t - t 0 )
v = v0 * t



Ecuaciones que describen el MRU

a = 0




Problemas de encuentro:

Se define encuentro como el evento que ocurre cuando dos móviles se encuentran en la misma posición y al mismo tiempo.

Xa = Xb t te

Para poder calcular los problemas de encuentro primero hay que definir las ecuaciones itinerarios para ambos móviles y luego despejar el tiempo al igualarlas, con ese tiempo se reemplaza en cualquiera de las ecuaciones y se alcanzan los resultados esperados.



Actividades

1) Función Velocidad/Potencia de programación.

A través de la toma de datos de velocidad para una determinada potencia de programación, calcular una función que me entregue la velocidad de su robot en función de la potencia.


Respuesta
Para calcular las velocidades a diferentes potencias del Robot Lego primero hay que cargarle un programa proporcionado por el profesor llamado Pru_Vel, el cual nos dará el tiempo que se demora en llegar de una línea a otra, las cuales fueron hechas en la tarima con huincha aislante negra y a una distancia tomada con la hincha de medir para que nuestros cálculos sean más exactos. A continuación


El código utilizado:






Ahora mostraremos los datos obtenidos de las mediciones:






Con los datos de los gráficos obtenidos tenemos el siguiente resumen:

Ahora para calcular una potencia cualquiera solamente se :
Potencia Robot
Velocidad 
Utiliza una regla de tres simple y la obtienes como en el siguiente ejemplo potencia de 30 %:

10
0.13 m/s
100 ------- 0.35 m/s
60
0.23 m/s
30 --------- x
100
0.35 m/s
(30* 0.35) / 100 = 0.105 m/s
velocidad teórica.




2) Cálculo de distancias desconocidas.

A través de una velocidad conocida, se requiere conocer unas distancias que no se conocen a priori.
(Se debe comprobar el resultado utilizando una segunda velocidad)
Para realizar esta actividad necesitamos los datos de la anterior prueba específicamente la velocidad a una potencia dada. Lo primero es realizar unos cá lculos teóricos para saber cuándo avanza nuestro Robot Lego después de cierto tiempo, para calcular este tiempo se crean unas nuevas marcar en la tarima antes utilizada y se toma el tiempo obtenido entre ellas como el tiempo final, se guarda la distancia entre los dos nuevos puntos para poder verificar nuestros resultados.

Este es el cálculo que realizamos lo siguiente:
- Tomamos como referencia una potencia de 40 % que equivale a una V = 0.34 m/s.
- Con un tiempo de 3.24 seg. Se demoró en recorrer la distancia previamente medida.
- Distancia entre puntos es de D = 1.15 m
Con cual al tener la velocidad el tiempo que se demoró se llega a la distancia que avanzo de forma muy simple.

D = V*T
D = 0.34 m/s * 3.24 seg
D = 1.10 m




3) Tiempo de encuentro y posición.
Utilizando un segundo robot, se debe hacer un problema de encuentro.

Se requiere:

- Cálculo de las velocidades con las que se moverán los robots.
- Teóricamente calcular el tiempo y la posición desencuentro.
- Demostrar a través de montaje en laboratorio, que se cumple lo que entrega la teoría.

Para esta actividad hay que prepara otro Robot Lego y además calcularle la velocidad a este para poder realizar el encuentro. Les mostraremos las velocidades de los robots que se van a utilizar en este experimento:


Ahora solo nos falta determinar la distancia que habrá entre ellos para poder realizar el cálculo teór ico del tiempo del encuentro y el momento de la colisión. La distancia entre ambos es de 1.57 m.
Para poder determinar estos datos necesitamos ordenarlos de acuerdo a los siguientes pasos:

- Definir el sistema de referencia para este problema
- Dirección y sentido de la Velocidad
- Definir la posición inicial del cuerpo
- Armar las ecuaciones del movimiento de los móviles. Mostramos un diagrama para ejemplificar y mayor entendimiento.


Inicio
Distancia= 1.57m
Datos Móvil A
Datos Móvil Profe

V = 0,34 m/s
V = - 0,35 m/s
Xi = 0 m
Xi = 1.57 m 




Ecuaciones itinerarios para ambos móviles.

Móvil A X (A) = 0,34 * t
Móvil Profe X (P) = 1.57 – 0,35 * t
Para poder conocer el tiempo y la distancia se tienen que igualar las ecuaciones y despejar el tiempo:

Xa = Xb t te
0,34 * t = 1.57 – 0.35 * t
(0,34 + 0,35) * t = 1.57
t = 1.57 / 0,69
t = 2.27
s tiempo de encuentro

al reemplazar este tiempo en cualquiera de las dos ecuaciones itinerario se encuentre la distancia del choque.

X (A) = 0,34 * 2,27
X (A) = 0.77 m lugar de choque desde el inicio del sistema de referencia.



Mecanismos de verificación

Para las actividades realizadas en este laboratorio el mecanismo de verificación que utilizamos fue el de realizar los cálculos numéricos en el cuaderno y luego procedíamos a realizarlos con nuestro robot de forma práctica para todos las interrogantes planteadas.
Desde calcular la velocidad de nuestro robot mediante los datos entregados por el programa y luego los transcribimos los datos a Excel y mediante la regresión obtuvimos la velocidad para las diversas potencias. También podríamos haber realizado el cálculo manualmente mediante la fórmula de velocidad= d/t, ya que teníamos los datos que nosotros habíamos medido de manera confiable


Para calcular la distancia recorrida luego de un cierto tiempo lo verificamos directamente midiendo cuando avanzo nuestro robot y comparando con nuestros cálculos teóricos.

Y para el problemas de choque luego de calcular la velocidad de nuestros robot, creamos un programa simple en NXC que hiciera avanzar el robot de forma recta por el tiempo que nosotros quisiéramos y en nuestro casi seria el tiempo calculado teóricamente, y así se pudo corroborar que tan acertados habían sido nuestras estimaciones y cálculos previo, y para la distancia la medimos para ver si era la que se había calculado anteriormente.


Conclusiones

En este informe se logró completar todos los objetivos que se nos plantearon:
- Para la primera actividad las velocidades obtenidas para diferentes potencias fueron las siguientes:
Potencia Robot
Velocidad
Y para una potencia cualquiera. 
Potencia 30% de los motores su  V = 0,105 m/s 
10
0.13 m/s
60 
0.23 m/s
100
0.35 m/s


- Para la segunda actividad no lo dio mayor complejidad ya que sabiendo la fórmula de la velocidad dedujimos rápidamente como obtener la distancia:
Para un tiempo de 3.29s a una velocidad de 0.34 m/s recorre 1.10 m

Con este resultado logramos entender que las condiciones en que se tomó el experimento incluyen en los resultados ya que al medirlo con una huincha la distancia real fue de 1.15 m, esta diferencia de 5 cm se debe a varios factores como: Nuestro Robot Lego no avanza completamente derecho, el material de agarre de la las ruedas, etc. Este experimento fue revisado por el profesor y verifico nuestros datos.
- Por ultimo para la última actividad el problema de choques, se realizó sin problemas y los datos calculados también los verifico el profesor

X (A) = 0.77 m distancia de colisión
t = 2.27 s tiempo que demoraría en colisionar.
Estos son los datos obtenidos mediante los cálculos teóricos, en la realidad hubo un margen de alrededor de 6 cm de diferencia luego de realizar las mediciones con huincha en mano.


De esta última actividad pudimos utilizar los cono cimientos de MRU en su plenitud y lograr calcular los tiempos, y además de aprender a utiliz ar una forma ordena de cómo proceder con este tipo de problemas que son bastante difíciles si no se es ordenado en su forma de resolverlos.



Bibliografía

Paul G. Hewitt, Física conceptual, Addison-Wesley Iberoamericana
Serway A. Raymond, Física T1, McGraw-Hill
Páginas Web utilizadas:

Problemas de encuentro. (s.d.). . Recuperado Octubre 29, 2010, a partir de
http://www.dav.sceu.frba.utn.edu.ar/homovidens/fatela/proyecto_final/1pag4.htm
Física resumen de ecuaciones hasta movimiento en el plano o parabólico. (s.d.). . Recuperado



Proyecto Robotica "Aprendiz de Cantante"

Colaboración de los grupos Phoenix y Dembers.
Phoenix
Nicolas Yáñez
Camilo Rivas
Fabian Vega

Dembers
Gonzalo Cartez
Cristian Alvarez
Ninoska Ulloa
Alamiro Solis
Introducción:

En este momento ya hemos desarrollado comportamientos de robot medianamente complejos, utilizando tareas paralelas y detección inteligente de sensores para ejecutar acciones reguladas por un semáforo, por lo que el desafió para esta oportunidad es comunicar vía bluetooth dos robots implementando un comportamiento colaborativo.
Para utilizar todas estas herramientas ya mencionadas decidimos desarrollar un modelo de colaboración que simule un director de orquesta y un intérprete que se describe en el siguiente enunciado.

“En la ciudad de Temuco se esta creando una orquesta de músicos robots para tocar una pieza de música contemporánea, el equipo inicial consta de un director y de un percusionista, el director es el encargado de recibir las partituras y dirigir al percusionista para que las interprete.

El robot director (maestro) por medio del sensor de sonido, detecta el tiempo y la frecuencia de los sonidos que se le entregan (partituras), esta información se almacena en forma de un arreglo bidimensional para enviarla vía Bluetooth al robot percusionista (esclavo), quien almacena esta información en un archivo para poder disponer de ella en cualquier minuto y reproduce los sonidos recorriendo el arreglo.”

Algunos puntos que aclarar
Cuando el robot director detecte una pausa de un tiempo determinado, enviará los datos al robot músico y dejara de escuchar hasta que el músico termine de ejecutar la pieza.
El robot músico solo almacenará la última partitura tocada.
Cuando el robot director detecto una pausa de un minuto sin recibir partituras se retirara del escenario.



Estrategia de solución:

Estrategia de trabajo :
La estrategia de trabajo utilizada consistio en dividir el equipo, un integrante investigaba acerca de la conexion bluetooth, otro integrante implementaba el programa de prueba que daba el inicio a la implementación del programa definitivo, y el resto del equipo ideaba un modelo para el robot.
Diagrama de flujo de la solución: Aquí se presenta una pequeña descripción de la solución y un diagrama de flujo que muestre la solución propuesta para el problema.

Código del programa:

Codigo Robot Maestro:

//maestro
//se definen los indices de las conecciones de entrada y salida
#define BT_CONN 1
#define INBOX 1
#define OUTBOX 5

//se utiliza una subtarea que comprueba el estado de la conexion
sub BTCheck(int conn){
if (!BluetoothStatus(conn)==NO_ERR){
TextOut(5,LCD_LINE2,"Error");
Wait(1000);
Stop(true);
}
}
task main(){
//se definen los sencores que se utilizaran
SetSensorSound(IN_3);
SetSensorType(IN_3, SENSOR_TYPE_SOUND_DBA);

//se definen variables para almacenar la entrada y salida de datos bt
string in, out, iStr;
//se comprueba la coneion BT
BTCheck(BT_CONN);
while(true){
//se transforma a String la lectura del sensor de sonido
out=NumToStr(SENSOR_3);
//se envia la lectura del sensor al esclavo
SendRemoteString(BT_CONN,OUTBOX,out);
Wait(5);

}
}
}



Codigo Robot Esclavo:

//esclavo
//se definen los indices de las conecciones de entrada y salida
#define BT_CONN 1
#define INBOX 5
#define OUTBOX 1

//se utiliza una subtarea que comprueba el estado de la conexión
sub BTCheck(int conn){
if (!BluetoothStatus(conn)==NO_ERR){
TextOut(5,LCD_LINE2,"Error");
Wait(1000);
Stop(true);
}
}



task main(){
//se definen variables para almacenar la entrada y salida de datos btstring in, out, iStr;
while(true){
//se comprueba la conexión
BTCheck(0);
//se recibe un String por conexión bt
ReceiveRemoteString(INBOX, true, in);
//se responde "ok"
SendResponseString(OUTBOX,"ok");
//se muestra por pantalla lo que se recibe
TextOut(10,LCD_LINE3,in);
//se toca el tono correspondiente a lo recibido por BT
PlayTone(7*StrToNum(in),10);
Wait(1);
}
}


Diseño del Robot:







Informe de auto-evaluación de los integrantes:

Autoevaluaciones:
Nicolas Yañez: 7.0 como jefe de grupo me encargué de pensar la estrategia de trabajo y distribuir roles para algunos integrantes del grupo conociendo sus cualidades para cada área previamente y además de crear el código del robot.

Gonzalo Cartez: 6.7 tuvo un rol de secretario el cual iba tomando nota de los problemas que se nos fueron presentando y tomar nota además de la participación de c/u de los integrantes en la actividad y tratar de redistribuir roles cuando no les acomodasen.
Fabian vega :6.5 se encargo principalmente en el armado del robot con el modelo previamente planificado y de reordenar el kit lego para un avance más rápido sin demora en el aspecto de encontrar las piezas.

Cristian Alvarez: 6.4 este integrante se encargo de ir haciendo el trabajo de análisis al código de robot en lo que respecta diagramas de flujo redactar las soluciones de trabajo y inspeccionar que cada uno cumpliera con el roll que se le asigno previamente.

Alamiro Solis : 6.8 junto con Fabián vega fue el encargado de la construcción adecuada del robot ya que mientras los demás cumplían sus respectivos roles de programación e secretaria este integrante debía tener el robot armado y en optimas condiciones para ir probando y modificando el código.

Ninoska Ulloa: 6.7 Esta participante del proyecto se encargo junto a nicolas principalmente en el armado del código NXC del robot ya que este requirió de bastante esfuerzo para poder dar con su objetivo final.

Pablo Lincoqueo 6.5 como jefe de grupo también tuve que ayudar a hacer las autoevaluaciones revisando y evaluando a c/u de los integrantes del grupo según su desempeño y la información recaudada de sus avances durante el proyecto en el puesto que se le fue asignado y además comprobé y me encargué de los ultimo retoques del código NXC del robot. 

Camilo Rivas: 6.6 encargado de lo relacionado a la planificación del modelo del robot y supervisión de sus respectivas armas de ambos robots y cerciorarse de que todo marche bien con lo planificado en cuanto al modelo.
Conclusión: 

La utilidad de la comunicacion entre robots no es discutible, siempre existira una complejidad en la implementacion de la conexión, que concuerda con la funcionalidad que se obtiene, personalmente nuestro grupo de trabajo se encontró con varios inconvenientes al ser la primera vez que trabajabamos con conexiones bluetooth, una de ellas fue el periodo de latencia entre el envió de información y el procesamiento de esta misma, que es rapida pero no al nivel de llegar a ser fluida como para detectar un sonido y en 2 o 3 milisegudos reproducirlo en el otro robot.
También se nos dificulto diferenciar que “NXT” era el que queriamos conectar via Bluetooth ya que todos se llamaban “NXT”. pero así como dificultades tambien tubimos aprendizajes, entendimos como realizar un enlace entre dos robots para compartir información lo que abre muchas posibilidades de desarrollo, también nos dimos cuenta de las limitaciones de esta conexión, ya que comprobamos que el enlace resistia hasta 8 o 9 metros en linea visual.