jueves, 23 de febrero de 2012

4ª Clase

Sistemas de eventos discretos

Estos sistemas se representan como un conjunto finito de variables y a todo el conjunto de todos los valores de esas variables se le denomina estado. Pueden ser:

  • Sincronicos: en cada tiempo discreto se evaluarán las funciones de transición ("state machine")
  • Asincrónicos: las funciones se evalúan solo si los inputs cambian ("event driven simulation")
 Un sistema dinámico de eventos discretos (SED) es un sistema que, conducido por eventos, evoluciona por un conjunto finito de estados.

Método Montecarlo

Es un método no determinístico o estadístico numérico, usado para aproximar expresiones matemáticas complejas y costosas de evaluar con exactitud. El método se llamó así en referencia al Casino de Montecarlo  por ser “la capital del juego de azar”, al ser la ruleta un generador simple de números aleatorios.

En ciertas aplicaciones estadísticas, se partiria de un colectivo (o espacio muestral) para lograr numeros aleatorios:


 En cambio en el método montecarlo se sigue el orden inverso:

es decir, dados unos números aleatorios y una distribución, se trata de obtener, no el colectivo real (eso sería imposible) sino una simulación del mismo o \colectivo" virtual".
Anylogic

Es una herramienta (programa) desarrollada por XJ Tecnologías que incluye todos los métodos de simulación mas comunes en practica hoy.La herramienta fue nombrado AnyLogic, ya que apoya todas las tres conocidos enfoques de modelado:
  • Dinámica de sistemas
  • Sistemas de eventos discretos
  • Simulation basada en agentes





martes, 21 de febrero de 2012

PRACTICA 3

Ejemplo en EJS de ecuación diferencial de 2ºgrado.

Ecuación diferencial de primer grado:        x´= ax+bu
                                                                x(0 )= x0

Ecuación diferencial de segundo grado:     x´´ = ax´+bx+cu
                                                                x´´=F(t, x, x´)

Ejemplo de ecuación diferencial de segundo grado: MUELLE

Aplicando la 2ª Ley de Newton a este sistema masa-muelle nos quedaria: Ef = m*a
                                                    f -k*x -fr*v = m*a 
                                                    f -k*x -fr*x´= m*x´´

Para poder introducir dicha ecuación en el programa EJS necesitamos que este en forma explícita, es decir:

Problema del valor inicial: x´´= -k/m*x -b/m*x´+1/m*f
                                       x(0) = 2 = x1
                                       x´(0) = 0 = x2 


 NOTA: Una ecuaión explícita de orden "n" es equivalente a un sistema de "n" ecuaciones de primer orden.

Luego según los cambios x = x1 y x´= x2 tendriamos las dos ecuaciones que necesitamos para nuestro problema y que veremos en las imagenes siguientes.

 Damos valores a las variables:



Ecuaciones que necesitamos para nuestro problema mencionadas anteriormente:


A continuación siguiendo los pasos que hicimos en la practica pasada, commo pone acontinuación obtendremos la gráfica del movimiento del bloque muelle-masa:



En la siguiente imagen vemos lo que hay que hacer para representar la grafica anterior a traves de gráficos y dibujos como en este ejemplo una pelota "colgada" del techo:




Esta pelota realiza la misma trayectoria representada en la grafica de arriba.

jueves, 16 de febrero de 2012

3ª Clase

 Programación orientada a objetos:

 La programación orientada a objetos o POO (OOP en inglés) es un paradigma o modelo de programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas informáticos. Su uso se popularizó a principios de la década de los años 1990.

Conceptos fundamentales:

 Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas. 


Herencia: (por ejemplo, herencia de la clase C a la clase D) Es la facilidad mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos métodos y variables publicas declaradas en C. Los componentes registrados como "privados" (private) también se heredan, pero como no pertenecen a la clase, se mantienen escondidos al programador y sólo pueden ser accedidos a través de otros métodos públicos. Esto es así para mantener hegemónico el ideal de OOP.  
        - Ejemplo de herencia:

Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos) los mismos que consecuentemente reaccionan a eventos. Se corresponde con los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase.  
              - Ejemplo de objeto:
 Método: Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema. 

Mensaje: una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.
               - Ejemplo de mensaje:
 Caracteristicas más importantes:
 
Abstracción: denota las características esenciales de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción.El proceso de abstracción permite seleccionar las características relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstracción es clave en el proceso de análisis y diseño orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar.  

Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.

Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos. 

Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple.


 Programas de simulación:

Sirven para implementar el modelo matemático o computacional de un sistema y obtener resultados gráficos y animaciones de su comportamiento.

Métodos de simulación:        
Programas de simulación:
- Dynamic Systems      ->      - Easy Java Simulations
- System Dynamics      ->      - AnyLogic
- Discrete Event                     - GPSS, Simscript, Arena
- Agent Based                       - Matlab

Ecuaciones Diferenciales Ordinarias: Solo UNA variable independiente.


Ecuaciones de Derivadas Parciales: VARIAS variables independientes.

Para resolver graficamente estas ecuaciones utilizaremos el programa AnyLogic mencionado antes:
El ejemplo de este programa con una ecuación E.D.O. seria:
Este ejemplo se verá en las proximas practicas mas detalladamente.

martes, 14 de febrero de 2012

PRACTICA 2.2

Continuando los ejercicios de la segunda clase de practicas, empezamos a trastear con el programa EJS, Easy Java Simulations es una herramienta de software diseñada para la creación de simulaciones discretas por por ordenador. En nuestro caso escribimos una ecuación diferencial y dicho programa nos dio el resultado de esta graficamente.

La imagen inferior muestra la ventana de descripción de EJS, donde podemos poner TITULO y DESCRIBIR nuestra SIMULACIÓN:
A continuación se muestra la ventana del MODELO y las variables en la que hay que describirlas:
 Para inicializar las variables hacemos INICIALIZACIÓN:

Pasamos a la ventana del modelo EVOLUCIÓN:

Despues pasamos a la ventana de VISTA donde podemos ver la simulación:
Pinchando en el boton indicado en la siguiente imagen se despliega una pestaña:


 Pinchando en esa pestaña se despliega la grafica de simulación:
Despues definimos las variables de entrada X e Y de forma que:
 Por último pinchamos en el play para que se ejecute la simulación:

PRACTICA 2.1

En esta nueva clase de practicas hemos probado el codigo de la clase de la semana pasada en la que dibujabams una linea atraves de un archivo html, quedando como resultado: 

 Como primer ejercicio para esta clase se nos pidió que hicieramos otra linea que cruzase a la del ejercicio anterior, siendo su codigo fuente:


Teniendo en cuenta!: Que hay que guardar el archivo con otro normbre, cambiar también el nombre de la "función" public class DoubleLine! y cambiar el nombre del archivo html:


Un resultado posible seria:

sábado, 11 de febrero de 2012

2ª Clase

En esta segunda clase se ha visto lo que querria decir la función BufferReader del programa jEdit que hemos utilizado en los ejercicios anteriores, para definirla necesitamos ver en que consiste la MEMORIA DE UN ORDENADOR:
Otra de las cosas que hemos visto es la libreria Java.applet que son una llamada a un archivo html, por ejemplo:


El ejemplo seria el de dibujar una linea cualquiera y su codigo fuente seria:

Donde la palabra width significa ancho de la pagina donde se va a dibujar la linea y height significa alto y su unidad son los pixeles.

miércoles, 8 de febrero de 2012

PRACTICA 1

Ejemplo 2 apuntes de clase "Suma de dos numeros":

1º/ Escribimos codigo fuente

2º/ Compilamos codigo fuente
 Tiene que salir Code 0 Si sale Code 1 habria errores y nos indicaria cual es el error y cuantos hay

3º/ Ejecutamos el codigo fuente

  

Ejemplo 3 Ecuación de segundo grado

Partiremos de la ecuanción:  

De donde despejaremos x para realizar el programa:
 

!Tener en cuenta¡ Descartaremos que el numero que nos de como resultado al operar la raiz de la ecuación no sea negativo y que la "a" del denominador no nos puede dar cero.

De forma que el programa nos quedaria:

Repitiendo las operaciones de COMPILAR y EJECUTAR descritas en el ejemplo de arriba.

viernes, 3 de febrero de 2012

1ª Clase: Lenguaje Java

JAVA: Lenguaje de programación informático

A diferencia de otros lenguajes el Java parte de un archivo fuente (Editor).


El programa JAVAC es un compilador para pasar el archivo fuente a un lenguaje intermedio llamado Bytecode y este a su vez puede utilizar otro programa llamado GCJ que también es un compilador para pasar a codigo nativo el Bytecode.

El programa que a nosotros nos interesa seria el JAVA que nos permite ejecutar el Bytecode e interpretarlo y también el progrma JVM que es una maquina virtual de JAVA que nos permitira "imprimir" en la Pantalla.


Luego también hemos visto los entornos IDE de los cuales nos interesa el jEDIT para realizar los ejercicios.

Pasos para realizar los ejercicios con jEdit:

1º/ Instalar jEdit
2º/ Instalar plugin.Console
3º/ Escribir codigo fuente
4º/ Compilar codigo fuente: Plugins > Console > Compile Current Buffer
5º/ Ejecutar codigo fuente: Plugins > Console > Run Current Buffer