SlideShare una empresa de Scribd logo
´
´
APLICACION DE LA SIMULACION
POR ORDENADOR A LA
˜
ENSENANZA DE LAS CIENCIAS
Programa de Formacion del Profesorado
´
y Formacion Continua de la UNED
´
Curso 2007-08

Alfonso Urqu´a
ı
Carla Mart´n
ı
Departamento de Informatica y Automatica
´
´
Escuela T´ cnica Superior de Ingenier´a Informatica, UNED
e
ı
´
Juan del Rosal 16, 28040 Madrid, Espana
˜
{aurquia,carla}@dia.uned.es
http://www.euclides.dia.uned.es/
Texto base  euclides
´
Presentacion
El Equipo Docente le da la bienvenida al curso “Aplicacion de la simulacion por ordenador
´
´
a la ense˜ anza de las Ciencias”, perteneciente al Programa de Formacion del Profesorado y
n
´
Formacion Continua de la UNED.
´
Encontrara que la materia impartida en este curso tiene importantes aplicaciones practi´
´
cas. Una de ellas es la programacion de laboratorios virtuales: herramientas docentes que,
´
adecuadamente empleadas, resultan extremadamente eficaces. Se trata de programas informaticos ideados para reproducir algunos aspectos del comportamiento de un sistema real,
´
permitiendo que el alumno interaccione con el modelo simulado de forma analoga a como
´
lo har´a con el sistema real. Una de las ventajas fundamentales de este enfoque es que el
ı
alumno desempena un papel activo en su proceso de aprendizaje, con lo cual este le resulta
˜
´
mas ameno y motivador.
´
El entorno de simulacion que se emplea en este curso es “Easy Java Simulations” (abrevia´
do: Ejs), el cual ha sido ideado y desarrollado por el Prof. Dr. Francisco Esquembre1 . Como
quedara patente a lo largo del curso, la eleccion de este entorno responde a motivos bien
´
´
fundamentados. Tres de las caracter´sticas por la cuales Ejs es adecuado para la docencia
ı
son las siguientes. En primer lugar, su gran facilidad de instalacion y manejo: es un entorno
´
concebido para ser usado por educadores y alumnos sin profundos conocimientos de programacion. En segundo lugar, Ejs puede ser descargado, usado y distribuido gratuitamente.
´
Finalmente, Ejs genera automaticamente el laboratorio virtual como una aplicacion o como un
´
´
applet de Java. En este ultimo caso, el laboratorio virtual puede ser publicado en una pagina
´
´
web para su uso a trav´ s de Internet.
e
Le animamos, por tanto, a que instale Ejs en su propio ordenador y a que vaya realizando
por si mismo los ejemplos que vamos proponiendo a lo largo de este texto. Asimismo, nos gustar´a que ideara y realizara sus propias simulaciones interactivas, acordes con sus intereses y
ı
con la actividad docente que usted realiza. Esperamos, en definitiva, que encuentre aplicables
los conocimientos adquiridos en este curso, as´ como el material que en el le proporcionamos,
ı
´
a su labor docente cotidiana.
Para finalizar esta presentacion, nos gustar´a invitarle a que env´e sus dudas y sugerencias
´
ı
ı
de mejora al profesor Alfonso Urqu´a (e-mail: aurquia@dia.uned.es) y a la profesora Carla
ı
Mart´n (e-mail: carla@dia.uned.es), de modo que podamos atenderlas.
ı

El Equipo Docente.

1 Prof. Dr. Francisco Esquembre, Dpto. de Matematicas, Universidad de Murcia, Campus de Espinardo, 30071
´
Murcia (Espana). E-mail: fem@um.es
˜
Texto base  euclides
Sitio web del curso
En el sitio web
http://www.euclides.dia.uned.es/simulab-pfp/
puede encontrar informacion y noticias referentes al curso.
´
Tambi´ n, puede acceder a un curso online gratuito, escrito en ingl´ s, sobre programacion
e
e
´
de laboratorios virtuales con Easy Java Simulations. Se trata de una version muy resumida
´
del curso que aqu´ le presentamos.
ı
Este curso online recibio el segundo premio al “Curso mejor disenado” (Best Designed
´
˜
Course Award) en la competicion internacional celebrada con motivo de la 6th Int. Conference
´
Virtual University, que tuvo lugar en Bratislava (Eslovaquia), en diciembre de 2005.
Finalmente, en el sitio web puede visualizar los laboratorios virtuales explicados en el
curso y algunos de los laboratorios virtuales mas destacados programados por nuestros
´
alumnos de anos anteriores.
˜
Texto base  euclides
Registro de alumnos
El Negociado del Programa de Formacion del Profesorado de la UNED facilita a los Equipos
´
Docentes la direccion postal y el numero de tel´ fono de cada alumno, pero no la direccion de
´
´
e
´
e-mail.
Si dispone de correo electronico y desea que, en caso de que surja la necesidad, nos ponga´
mos en contacto con usted mediante e-mail, env´enos al Equipo Docente (aurquia@dia.uned.es,
ı
carla@dia.uned.es) un correo electronico indicandonos simplemente que esta matriculado en
´
´
´
el curso. De esta manera, tambi´ n sabremos que ha recibido este material.
e
Texto base  euclides
´
´
Orientacion metodologica
Objetivos docentes
En este curso se pretende que el alumno aprenda a hacer un uso eficaz de la simulacion
´
interactiva por ordenador como herramienta docente. Para ello, debe adquirir la capacidad de
disenar y programar laboratorios virtuales utiles para la ensenanza de las Ciencias, emplean˜
´
˜
do para ello el entorno de simulacion Ejs.
´

Contenidos
Los contenidos del curso van siendo expuestos gradualmente, a trav´ s de una sucesion de
e
´
casos de estudio. Estos contenidos son:
1. Diseno, programacion y distribucion a trav´ s de Internet de laboratorios virtuales, usan˜
´
´
e
do el entorno de simulacion Easy Java Simulations (Ejs).
´
2. Fundamentos de la aplicacion de la simulacion dinamica interactiva por ordenador a la
´
´
´
ensenanza de las Ciencias. Metodolog´a docente. Preparacion del material docente.
˜
ı
´
3. Ejemplos de aplicacion de laboratorios virtuales, programados con Ejs, a la ensenanza
´
˜
de las Ciencias.

Material did´ ctico
a
Al comienzo del curso se entregara al alumno el siguiente material:
´
– Una copia impresa del Texto Base del curso:
Aplicacion de la Simulacion por Ordenador a la Ense˜ anza de las Ciencias
´
´
n
Alfonso Urqu´a y Carla Mart´n
ı
ı
En este texto no solo se realiza una introduccion tutorial al manejo de Ejs, sino que tam´
´
bi´ n se explican los fundamentos y la aplicacion de una metodolog´a para el modelado
e
´
ı
orientado a la simulacion interactiva usando Ejs.
´
– Un CD-ROM, que contiene:
• El Texto Base del curso en formato electronico.
´
• El entorno de simulacion Ejs.
´
• El entorno de desarrollo de Java.
• El codigo de los laboratorios virtuales explicados en el Texto Base del curso.
´
• Manuales y otra documentacion de Ejs.
´
El alumno debera emplear como material didactico del curso, tanto el Texto Base, como
´
´
los manuales y ap´ ndices de Ejs incluidos en el CD-ROM.
e
Asimismo, es muy recomendable la lectura del libro:
Creacion de Simulaciones Interactivas en Java
´
Francisco Esquembre
Editorial: Pearson Prentice-Hall
Metodolog´a y actividades
ı
El curso tiene un enfoque eminentemente aplicado. Se entregara al alumno el software
´
Ejs, un texto en el que se explica paso a paso su manejo, ilustrado mediante una coleccion
´
de ejemplos de aplicacion a la ensenanza de las Ciencias. El alumno podra realizar estos
´
˜
´
ejemplos en su propio ordenador y desarrollar su propio material docente.

Nivel del curso
Iniciacion.
´

Alumnado
Este curso esta destinado a profesores de materias de Ciencias (f´sica, qu´mica, biolog´a,
´
ı
ı
ı
matematicas, econom´a, etc.) que est´ n interesados en el empleo de la simulacion interactiva
´
ı
e
´
por ordenador como herramienta docente. Para poder realizar el curso, el alumno debe
disponer de ordenador y de conexion a Internet.
´

´
´
Duracion y dedicacion
6 meses, 120 horas (12 cr´ ditos)
e

´
´
Criterios de evaluacion y calificacion
El alumno debera realizar individualmente un trabajo en el cual aplique eficazmente la
´
simulacion interactiva por ordenador a la docencia. Para ello, debera emplear el entorno de
´
´
simulacion Ejs.
´
Dicho trabajo consistira en la realizacion de dos laboratorio virtuales, uno sencillo y otro
´
´
mas complejo, cuyos contenidos quedan a la eleccion del alumno.
´
´
El alumno debera entregar el fichero .xml de cada laboratorio, as´ como todos los ficheros
´
ı
de imagenes que haya usado para la descripcion de la Introduccion y la Vista de los dos
´
´
´
laboratorios. Con el fin de facilitar la revision de los trabajos, debera guardar todas las figuras
´
´
de los dos laboratorios en un mismo directorio, y env´arnoslo junto con los dos ficheros .xml.
ı
Es necesario que los dos laboratorios virtuales funcionen correctamente y que est´ n ame
pliamente documentados, empleando para ello el panel Introduccion. Esta documentacion
´
´
debe incluir cinco ventanas, con los nombres y el contenido que se detalla a continuacion:
´
1. Objetivo. Objetivo docente del laboratorio: qu´ concepto se pretende ilustrar mediante
e
el laboratorio.
2. Modelo matem´ tico. Explicacion detallada del modelo matematico: descripcion de las
a
´
´
´
variables y las ecuaciones.
´
3. Algoritmo de la simulacion. Clasificacion de las variables en conocidas y desconoci´
das. Asignacion de la causalidad computacional. Diagrama de flujo del algoritmo de la
´
simulacion.
´
4. Actividades. Actividades que se proponen al alumno, a realizar con el laboratorio virtual. Para ello, debe realizarse un descripcion de todas las capacidades interactivas que
´
posee el laboratorio virtual (solo una descripcion de la funcionalidad, no la explicacion
´
´
´
de como se ha programado).
´
5. Autor. Nombre del autor.
El alumno debera enviar los dos laboratorios virtuales adjuntos en un correo electronico,
´
´
a las direcciones:
aurquia@dia.uned.es
carla@dia.uned.es
antes del 20 de junio.
El “asunto” (subject) del mensaje debera ser: Trabajo Curso Formacion Profesorado.
´
´
En el cuerpo del mensaje debera indicar su nombre y apellidos.
´

´
Atencion al alumno
Las consultas deben dirigirse a los profesores Alfonso Urqu´a y Carla Mart´n, y pueden
ı
ı
realizarse por cualquiera de los tres m´ todos siguientes:
e
– Llamando a los numeros de tel´ fono 91 398 84 59 / 82 53, cualquier lunes lectivo, de
´
e
16h a 20h.
– Enviando un correo electronico a las direcciones:
´
aurquia@dia.uned.es
carla@dia.uned.es
– Acudiendo personalmente, cualquier lunes lectivo, entre las 16h y las 20h, al despacho 5.15 de la E.T.S. de Ingenier´a Informatica de la UNED. En este caso, ser´a muy
ı
´
ı
recomendable que enviara un correo electronico a los profesores Alfonso Urqu´a y Carla
´
ı
Mart´n, manifestandoles su intencion de venir, con el fin de concertar una cita y poder
ı
´
´
atenderle adecuadamente.
Texto base  euclides
´ndice
I
´
I Fundamentos del modelado y la simulacion
1.

1

´
Conceptos b´ sicos del modelado y la simulacion
a

3

1.1.

3

1.2.

Tipos de modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4

1.3.

Modelos matematicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
´

5

1.4.
2.

Sistemas y modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

El marco experimental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

´
Simulacion de modelos de tiempo continuo

9

2.1.

Variables y ecuaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

2.2.

Parametros, variables de estado y variables algebraicas . . . . . . . . . . . . . . 10
´

2.3.

Un algoritmo para la simulacion de modelos de tiempo continuo
´

2.4.

Causalidad computacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.5.

Variables conocidas y desconocidas . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.6.

Asignacion de la causalidad computacional . . . . . . . . . . . . . . . . . . . . . 18
´

. . . . . . . . 11

II Easy Java Simulations

21

3.

23

Fundamentos de Ejs
3.1.
3.2.

Paradigma modelo-vista-control . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.3.

Definicion del modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
´

3.4.

Definicion de la vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
´

3.5.
4.

¿Qu´ es Easy Java Simulations? . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
e

Ejecucion y distribucion del laboratorio virtual . . . . . . . . . . . . . . . . . . . 29
´
´

´
Instalacion y arranque de Ejs

31

4.1.
4.2.

Instalacion de Ejs para Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
´

4.3.

El directorio de instalacion de Ejs . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
´

4.4.

Seleccion del directorio de trabajo
´

4.5.

Arranque de Ejs y ejecucion de un laboratorio virtual . . . . . . . . . . . . . . . 33
´

4.6.
5.

Requisitos para la instalacion de Ejs . . . . . . . . . . . . . . . . . . . . . . . . . 31
´

Opciones de configuracion de Ejs . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
´

. . . . . . . . . . . . . . . . . . . . . . . . . . 33

´
Conceptos b´ sicos para la descripcion del modelo
a

I

39
5.1.
5.2.

Descripcion algor´tmica del modelo . . . . . . . . . . . . . . . . . . . . . . . . . . 40
´
ı

5.3.

El algoritmo de simulacion de Ejs . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
´

5.4.

Declaracion e inicializacion de las variables . . . . . . . . . . . . . . . . . . . . . 46
´
´

5.5.

Descripcion de la evolucion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
´
´

5.6.

Descripcion de las ligaduras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
´

5.7.

M´ todos propios del usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
e

5.8.
6.

Componentes del modelo escrito en Ejs . . . . . . . . . . . . . . . . . . . . . . . 39

Los algoritmos de integracion de Ejs . . . . . . . . . . . . . . . . . . . . . . . . . 50
´

´
Conceptos b´ sicos para la descripcion de la vista
a

55

6.1.

´
Arbol de elementos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

6.2.

Clases de elementos de la vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

6.3.

Algunas clases de elementos de tipo Contenedor . . . . . . . . . . . . . . . . . . 57

6.4.

Algunas clases de elementos de tipo Basicos . . . . . . . . . . . . . . . . . . . . 62
´

6.5.

Algunas clases de elementos de tipo Dibujo . . . . . . . . . . . . . . . . . . . . . 63

III Casos de estudio
7.

71

´
Programacion de un osciloscopio virtual con Ejs

73

7.1.
7.2.

Descripcion de la introduccion
´
´

7.3.

El algoritmo de la simulacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
´

7.4.

Declaracion e inicializacion de las variables . . . . . . . . . . . . . . . . . . . . . 78
´
´

7.5.

Programacion del modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
´

7.6.

Programacion de la vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
´

7.7.

Programacion de las capacidades interactivas . . . . . . . . . . . . . . . . . . . . 87
´

7.8.
8.

Las figuras de Lissajous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

Ejecucion y distribucion del laboratorio virtual . . . . . . . . . . . . . . . . . . . 91
´
´

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

Laboratorio virtual del concepto de ciclo l´mite
ı

95

8.1.
8.2.

Descripcion de la introduccion
´
´

8.3.

El algoritmo de la simulacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
´

8.4.

Declaracion e inicializacion de las variables . . . . . . . . . . . . . . . . . . . . . 96
´
´

8.5.

Programacion de la evolucion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
´
´

8.6.

Programacion de la vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
´

8.7.
9.

Modelo de un ciclo l´mite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
ı

Programacion de las capacidades interactivas . . . . . . . . . . . . . . . . . . . . 104
´

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

Principio de Arqu´medes
ı

111

9.1.

Descripcion del modelo matematico
´
´

. . . . . . . . . . . . . . . . . . . . . . . . . 111

9.2.

El algoritmo de la simulacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
´

9.3.

Declaracion e inicializacion de las variables . . . . . . . . . . . . . . . . . . . . . 112
´
´

II
9.4.

Programacion de las ligaduras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
´

9.5.

Programacion de la vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
´

10. P´ ndulo simple
e

117

10.1. Descripcion del modelo matematico
´
´
10.2. Descripcion de la introduccion
´
´

. . . . . . . . . . . . . . . . . . . . . . . . . 117

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

10.3. El algoritmo de la simulacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
´
10.4. Declaracion e inicializacion de variables . . . . . . . . . . . . . . . . . . . . . . . 119
´
´
10.5. Programacion del modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
´
10.6. Programacion de la vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
´
10.7. Algunas actividades propuestas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
´
11. Conduccion de calor a trav´ s de una pared multiple
e
´
11.1. Descripcion del modelo matematico
´
´
11.2. Descripcion de la introduccion
´
´

127

. . . . . . . . . . . . . . . . . . . . . . . . . 127

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

11.3. El algoritmo de la simulacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
´
11.4. Declaracion e inicializacion de las variables . . . . . . . . . . . . . . . . . . . . . 131
´
´
11.5. Programacion de la vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
´
12. Laboratorio virtual de un sistema mec´ nico
a

137

12.1. Descripcion del sistema e hipotesis de modelado . . . . . . . . . . . . . . . . . . 137
´
´
12.2. Modelado f´sico de los componentes . . . . . . . . . . . . . . . . . . . . . . . . . 138
ı
12.3. Modelo matematico del sistema simplificado . . . . . . . . . . . . . . . . . . . . 140
´
12.4. El algoritmo de la simulacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
´
12.5. Declaracion e inicializacion de las variables en Ejs . . . . . . . . . . . . . . . . . 145
´
´
12.6. Definicion del modelo en Ejs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
´
12.7. Definicion de la vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
´
12.8. Modelo matematico del sistema completo . . . . . . . . . . . . . . . . . . . . . . 154
´
12.9. Inclusion de masa2 en el panel de animacion . . . . . . . . . . . . . . . . . . . . 167
´
´
12.10. Ligadura en la posicion de masa2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
´
12.11. Visualizacion del modo del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . 167
´
12.12. Anadiendo interactividad al laboratorio . . . . . . . . . . . . . . . . . . . . . . . 167
˜
13. C´ lculo del numero π por el m´ todo de Monte Carlo
a
´
e

173

13.1. Simulaciones de Monte Carlo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
13.2. Estimacion del valor de π . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
´
13.3. El algoritmo de la simulacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
´
13.4. Programacion de la vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
´
´
14. Simulacion interactiva de un globo aerost´ tico
a

179

14.1. Modelo de un globo aerostatico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
´
14.2. El algoritmo de la simulacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
´

III
14.3. Programacion de la vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
´
15. Laboratorio virtual del sistema bola y varilla

187

15.1. Modelo del sistema bola y varilla . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
15.2. El algoritmo de la simulacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
´
15.3. Programacion de la vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
´

IV Ap´ ndices
e
A.

197

Java para el desarrollo de laboratorios virtuales en Ejs

199

A.1.

Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
´

A.2.

Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
A.2.1. Tipos simples de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
A.2.2. Cadenas de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

A.3.

Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
A.3.1. Nombre de las variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
A.3.2. Vectores y matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

A.4.

Operadores . . . . . . . . . . . . . . .
A.4.1. Operadores aritm´ ticos . . . .
e
A.4.2. Operadores relacionales . . .
A.4.3. Operadores logicos booleanos
´
A.4.4. Operador de asignacion . . . .
´

A.5.

Control del flujo del programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
A.5.1. if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
A.5.2. for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

A.6.

Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

A.7.

M´ todos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
e

A.8.

String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

A.9.

La clase Math de Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

202
203
204
204
205

A.10. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
A.10.1. Ejemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
A.10.2. Ejemplo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

IV
Parte I

Fundamentos del modelado y la
´
simulacion

1
Texto base  euclides
Tema 1

Conceptos b´ sicos del modelado y
a
´
la simulacion

Objetivos: Una vez estudiado el contenido del tema deber´a saber:
ı
´
• Discutir los conceptos “sistema”, “modelo”, “simulacion” y “marco experimental”.
• Describir y comparar los diferentes tipos de modelos.
´
• Comparar y reconocer los distintos tipos de modelos matematicos.

1.1. Sistemas y modelos
El concepto de modelo puede ser definido de varias maneras. En el sentido amplio del
t´ rmino, puede considerarse que un modelo es “una representacion de un sistema desarrollae
´
da para un proposito espec´fico”.
´
ı
Puesto que la finalidad de un modelo es ayudarnos a responder preguntas sobre un
determinado sistema, el primer paso en la construccion de un modelo es definir cual es
´
´
el sistema y cuales son las preguntas.
´
En este contexto, puede entenderse que un sistema es “cualquier objeto o conjunto de
objetos cuyas propiedades se desean estudiar”. Con una definicion tan amplia, cualquier
´
fuente potencial de datos puede considerarse un sistema.
Algunos ejemplos de sistema son:
• Un conjunto de planetas, que giran alrededor de una estrella.
• Una maquina fotocopiadora.
´
• El servicio de emergencias de un hospital, incluyendo el personal, las salas, el equipamiento y los medios para el transporte de los pacientes.
• Un circuito, compuesto por una fuente y una resistencia.
• El ecosistema de una determinada selva tropical.
Es caracter´stico de la naturaleza humana plantearse cuestiones acerca de las propiedades
ı
de los sistemas. Por ejemplo, para el sistema formado por el conjunto de planetas y la estrella,
una pregunta t´pica es: ¿Cual es el periodo de giro de cada uno de los planetas? Para la
ı
´
maquina fotocopiadora: ¿Como debo ajustar los mecanismos de la maquina a fin de obtener
´
´
´
3
4

´
´
TEMA 1. CONCEPTOS BASICOS DEL MODELADO Y LA SIMULACION

copias de calidad optima? Para el servicio de emergencias: ¿Como puedo organizar el servicio,
´
´
de modo que el tiempo de espera de los pacientes sea m´nimo?
ı
Muchas cuestiones de este tipo pueden ser resueltas mediante experimentacion. De hecho,
´
este ha sido el m´ todo empleado durante siglos para avanzar en el conocimiento: basta con
´
e
conectar la fuente a la resistencia y observa qu´ ocurre.
e
Un experimento puede definirse como “el proceso de extraer datos de un sistema sobre el
cual se ha ejercido una accion externa”.
´
Cuando es posible trabajar directamente con el sistema real, el metodo experimental pre´
senta indudables ventajas, ya que esta basado en solidos fundamentos cient´ficos. Sin em´
´
ı
bargo, tambi´ n presenta sus limitaciones, ya que en ocasiones es imposible o desaconsejable
e
experimentar con el sistema real. Algunas de estas razones son las siguientes:
• Quiza la mas evidente de ellas es que el sistema aun no exista f´sicamente. Esta si´
´
ı
tuacion se plantea frecuentemente en la fase de diseno de nuevos sistemas, cuando
´
˜
el ingeniero necesita predecir el comportamiento de los mismos antes de que sean
construidos.
• Otra posible razon es el elevado coste economico del experimento.
´
´
• El experimento puede producir perjuicio o incomodidad. Por ejemplo, experimentar con
un nuevo sistema de facturacion en un aeropuerto puede producir retrasos y problemas
´
imprevisibles que perjudiquen al viajero.
• En ocasiones el tiempo requerido para la realizacion del experimento lo hace irrealiza´
ble. Casos extremos pueden encontrarse en los estudios geologicos o cosmologicos, de
´
´
evolucion de las especies, sociologicos, etc.
´
´
• Algunos experimentos son peligrosos, y por tanto es desaconsejable realizarlos. Por
ejemplo, ser´a inapropiado usar el sistema real para adiestrar a los operarios de una
ı
central nuclear acerca de como deben reaccionar ante situaciones de emergencia.
´
• En ocasiones el experimento requiere modificar variables que en el sistema real o bien
no estan accesibles o no pueden ser modificadas en el rango requerido. Con un modelo
´
matematico adecuado, se pueden ensayar condiciones de operacion extremas que son
´
´
impracticables en el sistema real.
En cualquiera de los casos anteriores, el modelado y la simulacion son las t´ cnicas ade´
e
cuadas para el analisis del sistema. A excepcion de la experimentacion con el sistema real, la
´
´
´
simulacion es la unica tecnica disponible que permite analizar sistemas arbitrarios de forma
´
´
´
precisa, bajo diferentes condiciones experimentales.

1.2. Tipos de modelos
Los seres humanos, en nuestra vida cotidiana, empleamos continuamente modelos para
comprender y predecir el comportamiento de sistemas (ver la Figura 1.1). Por ejemplo, considerar que alguien es “amable” constituye un modelo del comportamiento de esta persona.
Este modelo nos ayuda a responder, por ejemplo, a la pregunta: “¿como reaccionara si le
´
´
pedimos un favor?”. Tambi´ n disponemos de modelos de los sistemas t´ cnicos que estan
e
e
´
basados en la intuicion y en la experiencia. Todos estos se llaman modelos mentales .
´
Por ejemplo, aprender a conducir un coche consiste parcialmente en desarrollar un modelo
mental de las propiedades de la conduccion del coche. Asimismo, un operario trabajando en
´
determinado proceso industrial sabe como el proceso reacciona ante diferentes acciones: el
´
operario, mediante el entrenamiento y la experiencia, ha desarrollado un modelo mental del
proceso.
Otro tipo de modelos son los modelos verbales, en los cuales el comportamiento del sistema
es descrito mediante palabras: si se aprieta el freno, entonces la velocidad del coche se
reduce. Los sistemas expertos son ejemplos de modelos verbales formalizados. Es importante
diferenciar entre los modelos mentales y los verbales. Por ejemplo, nosotros usamos un
modelo mental de la dinamica de la bicicleta cuando la conducimos, sin embargo no es
´
sencillo convertirlo a un modelo verbal.
´
1.3. MODELOS MATEMATICOS

5

SISTEMA

EXPERIMENTAR
CON EL SISTEMA
REAL

MODELO
MENTAL

EXPERIMENTAR CON EL
MODELO DEL SISTEMA

MODELO
VERBAL

MODELO
FÍSICO

SOLUCIÓN
ANALÍTICA

MODELO
MATEMÁTICO

SIMULACIÓN

Figura 1.1: Formas de estudiar un sistema.

Ademas de los modelos mentales y verbales, existe otro tipo de modelos que tratan de
´
imitar al sistema real. Son los modelos f´sicos, como las maquetas a escala que construyen
ı
los arquitectos, disenadores de barcos o aeronaves para comprobar las propiedades est´ ticas,
˜
e
aerodinamicas, etc.
´
Finalmente, existe un cuarto tipo de modelos, los modelos matematicos. En ellos, las rela´
ciones entre las cantidades que pueden ser observadas del sistema (distancias, velocidades,
flujos, etc.) estan descritas mediante relaciones matematicas. En este sentido, la mayor´a de
´
´
ı
las leyes de la naturaleza son modelos matematicos. En esencia, la Ciencia consiste en la
´
construccion de modelos de una porcion de la realidad y en el estudio de sus propiedades.
´
´
Por ejemplo, para el sistema “masa puntual”, la Ley de Newton del movimiento describe la
relacion entre la fuerza y la aceleracion. Asimismo, para el sistema “resistencia el´ ctrica”, la
´
´
e
Ley de Ohm describe la relacion entre la ca´da de tension y el flujo de corriente.
´
ı
´
En algunos casos, las relaciones matematicas que constituyen los modelos son sencillas
´
y pueden resolverse anal´ticamente. Sin embargo, en la mayor´a de los casos, los modelos
ı
ı
no pueden resolverse anal´ticamente y deben estudiarse, con ayuda del ordenador, aplicando
ı
m´ todos num´ ricos. Este experimento num´ rico realizado sobre el modelo matematico, recibe
e
e
e
´
el nombre de simulacion.
´

1.3. Modelos matem´ ticos
a
La finalidad de un estudio de simulacion (es decir, las preguntas que debe responder) con´
diciona las hipotesis empleadas en la construccion del modelo, y estas a su vez determinan
´
´
´
qu´ tipo de modelo resulta mas adecuado al estudio. De hecho, un mismo sistema puede
e
´
ser modelado de multiples formas, empleando diferentes tipos de modelos, dependiendo de la
´
finalidad perseguida en cada caso.
Existen diferentes clasificaciones de los modelos matematicos, atendiendo a diferentes cri´
terios. A continuacion se describen algunas de las clasificaciones mas comunmente usadas.
´
´
´
6

´
´
TEMA 1. CONCEPTOS BASICOS DEL MODELADO Y LA SIMULACION

Determinista vs Estoc´ stico
a
Un modelo matematico es determinista cuando todas sus variables de entrada son deter´
ministas, es decir, el valor de cada una de ellas es conocido en cada instante.
Por el contrario, un modelo es estocastico cuando alguna de sus variables de entrada es
´
aleatoria. Las variables del modelo calculadas a partir de variables aleatorias son tambi´ n
e
aleatorias. Por ello, la evolucion de este tipo de sistemas debe estudiarse en t´ rminos proba´
e
bil´sticos.
ı
Por ejemplo, consid´ rese el modelo de un parking, en el cual las entradas y salidas de
e
coches se producen en instantes de tiempo aleatorios. La aleatoriedad de estas variables se
propaga a trav´ s de la logica del modelo, de modo que las variables dependientes de ellas
e
´
tambi´ n son aleatorias. Este ser´a el caso, por ejemplo, del tiempo que transcurre entre que
e
ı
un cliente deja aparcado su veh´culo y lo recoge (tiempo de aparcamiento), el numero de
ı
´
veh´culos que hay aparcados en un determinado instante, etc.
ı
Es importante tener en cuenta que realizar una unica r´ plica de una simulacion estocasti´
e
´
´
ca es equivalente a realizar un experimento f´sico aleatorio una unica vez.
ı
´
Por ejemplo, si se realiza una simulacion del comportamiento del parking durante 24
´
horas, es equivalente a observar el funcionamiento del parking real durante 24 horas. Si se
repite la observacion al d´a siguiente, seguramente los resultados obtenidos seran diferentes,
´
ı
´
y lo mismo sucede con la simulacion: si se realiza una segunda r´ plica independiente de la
´
e
primera, seguramente los resultados seran diferentes.
´
La consecuencia que debe extraerse de ello es que el diseno y el analisis de los experimen˜
´
tos de simulacion estocasticos debe hacerse teniendo en cuenta esta incertidumbre en los
´
´
resultados, es decir, debe hacerse empleando t´ cnicas estad´sticas.
e
ı
Las dificultades asociadas a la simulacion de modelos estocasticos pueden invitarnos en
´
´
ocasiones a realizar hipotesis adicionales, con el fin de eliminar la incertidumbre en el valor
´
de las variables de entrada. Un ejemplo t´pico consiste en sustituir cada variable de entrada
ı
aleatoria por otra determinista, cuyo valor sea la media de la distribucion de probabilidad de
´
aquella. Este modelo determinista, obtenido de eliminar la incertidumbre en el valor de las
variables de entrada, proporcionara resultados no aleatorios. Sin embargo, esta simplificacion
´
´
hara que probablemente el modelo ya no sea una representacion del sistema valida para el
´
´
´
objetivo del estudio.

Est´ tico vs Din´ mico
a
a
Un modelo de simulacion estatico es una representacion de un sistema en un instante
´
´
´
de tiempo particular, o bien un modelo que sirve para representar un sistema en el cual el
tiempo no juega ningun papel. Ejemplo de simulaciones estaticas son las simulaciones de
´
´
Monte Carlo.
Por otra parte, un modelo de simulacion dinamico representa un sistema que evoluciona
´
´
con el tiempo.

De tiempo continuo vs De tiempo discreto vs H´brido
ı
Un modelo de tiempo continuo esta caracterizado por el hecho de que el valor de sus
´
variables de estado puede cambiar infinitas veces (es decir, de manera continua) en un
intervalo finito de tiempo. Un ejemplo es el nivel de agua en un deposito.
´
Por el contrario, en un modelo de tiempo discreto los cambios pueden ocurrir unicamente
´
en instantes separados en el tiempo. Sus variables de estado pueden cambiar de valor solo
´
un numero finito de veces por unidad de tiempo.
´
1.4. EL MARCO EXPERIMENTAL

7

Pueden definirse modelos con algunas de sus variables de estado de tiempo continuo y las
restantes de tiempo discreto. Este tipo de modelos, con parte de tiempo continuo y parte de
tiempo discreto, de llama modelos h´bridos.
ı
Tal como se ha indicado al comienzo de la seccion, la decision de realizar un modelo conti´
´
nuo o discreto depende del objetivo espec´fico del estudio y no del sistema en s´. Un ejemplo de
ı
ı
ello lo constituyen los modelos del flujo de trafico de veh´culos. Cuando las caracter´sticas y el
´
ı
ı
movimiento de los veh´culos individuales son relevantes puede realizarse un modelo discreto.
ı
En caso contrario, puede resultar mas sencillo realizar un modelo continuo.
´
En este punto es conveniente realizar una consideracion acerca de los modelos de tiempo
´
continuo y discreto. Al igual que las variables continuas (aquellas que pueden tomar cualquier
valor intermedio en su rango de variacion) son una idealizacion, tambi´ n lo son los modelos
´
´
e
de tiempo continuo. Cualquiera que sea el procedimiento de medida que se emplee para medir
el valor de una variable, tendra un l´mite de precision. Este l´mite marca la imposibilidad
´
ı
´
ı
de dar una medida continua y supone que, en la practica, todas las medidas son discretas.
´
Igualmente, los ordenadores trabajan con un numero finito de cifras decimales. Sin embargo,
´
para los razonamientos teoricos, conviene considerar ciertas variables como continuas.
´
Al simular mediante un computador digital un modelo de tiempo continuo, debe discretizarse el eje temporal a fin de evitar el problema de los infinitos cambios en el valor de
los estados. Esta discretizacion constituye una aproximacion (con su error asociado) que
´
´
transforma el modelo de tiempo continuo en un modelo de tiempo discreto. Por ejemplo, si se
discretiza el eje temporal del modelo de tiempo continuo
dx
= f (x, u, t)
dt

(1.1)

con un intervalo de discretizacion ∆t, se obtiene (empleando el m´ todo de Euler expl´cito) el
´
e
ı
siguiente modelo de tiempo discreto:
xK+1 − xK
= f (xK , uK , tK ) −→ xK+1 = xK + ∆t · f (xK , uK , tK )
∆t

(1.2)

1.4. El marco experimental
Al igual que se distingue entre el sistema real y el experimento, es conveniente distinguir
entre la descripcion del modelo y la descripcion del experimento. Esto es as´ tanto desde el
´
´
ı
punto de vista conceptual como practico. Sin embargo, en el caso del modelo esta separacion
´
´
implica cierto riesgo: su empleo en unas condiciones experimentales para las cuales no es
valido.
´
Por supuesto, cuando se trabaja con sistemas reales este riesgo nunca existe, ya que un
sistema real es valido para cualquier experimento. Por el contrario, cualquier modelo esta fun´
´
damentado en un determinado conjunto de hipotesis. Cuando las condiciones experimentales
´
son tales que no se satisfacen las hipotesis del modelo, este deja de ser valido. Para evitar este
´
´
´
problema, la descripcion del modelo debe ir acompanada de la documentacion de su marco
´
˜
´
´
experimental. Este establece el conjunto de experimentos para el cual el modelo es valido.
´
8

´
´
TEMA 1. CONCEPTOS BASICOS DEL MODELADO Y LA SIMULACION
Tema 2

´
Simulacion de modelos de tiempo
continuo

Objetivos: Una vez estudiado el contenido del tema deber´a saber:
ı
´
• Clasificar las variables de un modelo matematico de tiempo continuo
´
en: parametros, variables de estado y variables algebraicas.
´
´
• Aplicar el metodo de integracion expl´cito de Euler.
ı
´
• Realizar la asignacion de la causalidad computacional.
´
• Plantear el algoritmo de la simulacion de modelos de tiempo continuo
sencillos.

En este tema se explican algunos aspectos fundamentales de la simulacion de los modelos
´
matematicos de tiempo continuo. Estas explicaciones constituyen la base para la compren´
sion del algoritmo para la simulacion interactiva que emplea Ejs, que se describe en el Tema 5.
´
´

2.1. Variables y ecuaciones
Los modelos matematicos estan compuestos por ecuaciones, que describen la relacion en´
´
´
tre las magnitudes relevantes del sistema. Estas magnitudes reciben el nombre de variables.
Ejemplo 2.1.1. Sobre un objeto de masa constante (m) actuan dos fuerzas: la fuerza de la
´
gravedad (m · g) y una fuerza armonica de amplitud (F0 ) y frecuencia (ω) constantes. La fuerza
´
total aplicada sobre el objeto (F ) es:
F = m · g + F0 · sin (ω · t)

(2.1)

donde g la aceleracion gravitatoria, que se considera constante. Se aplica el criterio siguiente:
´
la aceleracion tiene signo positivo cuando tiene sentido vertical ascendente. Por ejemplo, la
´
aceleracion gravitatoria terrestre ser´a g = −9.8 m · s−2
´
ı
La fuerza neta (F ) aplicada sobre el objeto hace que este adquiera una aceleracion (a), que
´
´
viene determinada por la relacion siguiente:
´
m·a=F
9

(2.2)
´
TEMA 2. SIMULACION DE MODELOS DE TIEMPO CONTINUO

 

i

¢£

i

¥

u

C

i

¡¤

u

R

¡

R

¦

10

Figura 2.1: Circuito RC.

La posicion y la velocidad del objeto pueden calcularse teniendo en cuenta que la derivada
´
respecto al tiempo de la posicion es la velocidad, y que la derivada respecto al tiempo de la
´
velocidad es la aceleracion. El modelo obtenido es el siguiente:
´

F
m·a
dx
dt
dv
dt

= m · g + F0 · sin (ω · t)

(2.3)

= F

(2.4)

= v

(2.5)

= a

(2.6)

Este modelo esta compuesto por cuatro ecuaciones, Ecs. (2.3) – (2.6), las cuales describen
´
la relacion existente entre las magnitudes relevantes del sistema, que son las variables del
´
modelo:
– La aceleracion gravitatoria (g),
´
– La amplitud (F0 ) y frecuencia (ω) de la fuerza armonica,
´
– La fuerza neta (F ) aplicada sobre el objeto
– La masa (m), posicion (x), velocidad (v) y aceleracion (a) del objeto.
´
´

2.2. Par´ metros, variables de estado y variables algebraicas
a
El punto de partida para la simulacion del modelo consiste en clasificar sus variables de
´
acuerdo al criterio siguiente:
– Par´ metros. Son aquellas variables cuyo valor permanece constante durante la simua
lacion.
´
– Variables de estado. Son las variables que estan derivadas respecto al tiempo.
´
– Variables algebraicas. Son las restantes variables del modelo. Es decir, aquellas que no
aparecen derivadas en el modelo y que no son constantes.
Ejemplo 2.2.1. De acuerdo con la clasificacion anterior, el modelo descrito en el Ejemplo 2.1.1
´
tiene:
– Cuatro parametros: g, m, F0 , ω.
´
– Dos variables de estado: x, v.
– Dos variables algebraicas: a, F .
Observese que la variable tiempo (t) no se incluye en la clasificacion.
´
´
´
2.3. UN ALGORITMO PARA LA SIMULACION DE MODELOS DE TIEMPO CONTINUO

11

Ejemplo 2.2.2. Considerese el circuito electrico mostrado en la Figura 2.1, el cual esta com´
´
´
puesto por un generador de tension, dos resistencias y un condensador. El modelo de este
´
circuito consta de las ecuaciones siguientes:

u
iR1
u − uC
duC
C·
dt
uC

= u0 · sin (ω · t)

(2.7)

= iR2 + iC
= R1 · iR1

(2.8)
(2.9)

= iC

(2.10)

= iR2 · R2

(2.11)

La Ec. (2.7) es la relacion constitutiva del generador de tension. La amplitud (u0 ) y la fre´
´
cuencia (ω) son independientes del tiempo (t).
Las Ecs. (2.9) y (2.11) son las relaciones constitutivas de las resistencias. La Ec. (2.10) es la
relacion constitutiva del condensador. Los valores de la capacidad (C) y de las resistencias (R1 ,
´
R2 ) son independientes del tiempo.
Finalmente, la Ec. (2.8) impone que la suma de las corrientes entrantes a un nodo debe ser
igual a la suma de las corrientes salientes del mismo.
Las variables de este modelo se clasifican de la manera siguiente:
– Parametros: u0 , ω, C, R1 , R2 .
´
– Variable de estado: uC .
– Variables algebraicas: u, iR1 , iR2 , iC .

´
2.3. Un algoritmo para la simulacion de modelos de tiempo
continuo
En la Figura 2.2 se muestra un algoritmo para la simulacion de modelos de tiempo
´
continuo. Puede comprobarse que la clasificacion de las variables del modelo en parametros,
´
´
variables de estado y variables algebraicas constituye la base para la simulacion del modelo:
´
– Al comenzar la simulacion, se asignan valores a los parametros. Estos valores permane´
´
cen constantes durante toda la simulacion.
´
– Las variables de estado son calculadas mediante la integracion num´ rica de sus deri´
e
vadas. Por ejemplo, la funcion de paso del m´ todo expl´cito de Euler para la ecuacion
´
e
ı
´
diferencial ordinaria
dx
= f (x, t)
(2.12)
dt
es la siguiente:
xi+1 = xi + f (xi , ti ) · ∆t
(2.13)
donde xi y xi+1 representan el valor de la variable de estado x en los instantes ti y ti + ∆t
respectivamente, y f (xi , ti ) representa el valor de la derivada de x (es decir, dx ) en el
dt
instante ti .
– El valor de las variables algebraicas se calcula, en cada instante de tiempo, a partir de
valor de las variables de estado en ese instante y del valor de los parametros.
´
La condicion de terminacion de la simulacion depende del estudio en concreto que vaya
´
´
´
a realizarse sobre el modelo. Puede ser, por ejemplo, que se alcance determinado valor de la
variable tiempo, o que una determinada variable satisfaga cierta condicion.
´
El valor del tama˜ o del paso de integracion (∆t) debe escogerse alcanzando un compromiso
n
´
entre precision y carga computacional. Cuanto menor sea el valor de ∆t, menor es el error
´
´
TEMA 2. SIMULACION DE MODELOS DE TIEMPO CONTINUO

12

Inicio
Asignar valor al incremento en el tiempo ( t)
§

t=0
Asignar valor a los parámetros
Asignar valor inicial a las
variables de estado
Calcular el valor, en el instante t, de las
variables algebraicas y de las derivadas

Terminar

t=t+ t

sí

Fin

§

no

Calcular el valor, en instante t+ t, de las
variables de estado
§

Figura 2.2: Algoritmo de la simulacion de los modelos matematicos de tiempo continuo.
´
´

Inicio
4"13  #%   
   %       © ¨

2

 #%         6 5

t=0

m = 10, F0 = 15, w = 10, g = -9.8
x(0) = 10, v(0) = 7
F(t) = m*g + F0 * sin(w*t)
a(t) = F(t) / m
derx(t) = v(t)
derv(t) = a(t)

! © ! ©     ©
      © ¨
© !   ! © ! )
©   ©     ©  ! ( 
 ©    (     '
 #%      
   %  5

2

x(t)  0

sí

Fin

no

x(t+ t) = x(t) + derx(t) * t
v(t+ t) = v(t) + derv(t) * t
2
2

©  %$  # ©
    © ¨

t=t+ t

t = 0.01

! © ! ©    
©  ! ( 10  © 
 (     '

2
2

Figura 2.3: Algoritmo de la simulacion del modelo descrito en el Ejemplo 2.1.1.
´
´
2.3. UN ALGORITMO PARA LA SIMULACION DE MODELOS DE TIEMPO CONTINUO

13

que se comete en el calculo de las variables del modelo, pero mayor es el tiempo de ejecucion
´
´
de la simulacion.
´
Un procedimiento para estimar el error cometido al escoger un determinado valor de ∆t es
comparar los resultados obtenidos usando ese valor y los obtenidos usando un valor menor,
por ejemplo, ∆t . Si la diferencia entre ambos resultados es aceptable para los propositos del
´
2
estudio de simulacion que se esta realizando, entonces el valor ∆t es adecuado. En caso
´
´
contrario, se comparan los resultados obtenidos usando ∆t y ∆t . Si el error es aceptable, de
2
4
ı
emplea ∆t . Si el error es demasiado grande, se investigan los valores ∆t y ∆t , y as´ sucesiva2
4
8
mente.
Ejemplo 2.3.1. En la Figura 2.3 se muestra el algoritmo de la simulacion del modelo descrito
´
en el Ejemplo 2.1.1. Observese que:
´
– Las derivadas de las variables de estado se han sustituido por variables auxiliares, cuyo
nombre es igual al de la variable de estado, pero anteponiendole el prefijo “der”:
´
dx
dt
dv
dt

→ derx

(2.14)

→ derv

(2.15)

– Para realizar el calculo de las variables algebraicas y las derivadas, se ha despejado de
´
cada ecuacion la variable a calcular y se han ordenado las ecuaciones, de modo que sea
´
posible resolverlas en secuencia. Se ha obtenido la siguiente secuencia de asignaciones:

F
a
derx
derv

= m · g + F0 · sin (ω · t)
F
=
m
= v
= a

(2.16)
(2.17)
(2.18)
(2.19)

La secuencia de calculos, segun se muestra en la Figura 2.3, es la siguiente:
´
´
t=0

t = 0.01

t = 0.02

m = 10, F0 = 15, ω = 10, g = −9.8
x(0) = 10, v(0) = 7
F (0) = m · g + F0 · sin (ω · t) → F (0) = 10 · (−9.8) + 15 · sin(10 · 0) = −98
a(0) = F (0)/m → a(0) = −98/10 = −9.8
derx(0) = v(0) → derx(0) = 7
derv(0) = a(0) → derv(0) = −9.8
x(0.01) = x(0) + derx(0) · ∆t → x(0.01) = 10 + 7 · 0.01 = 10.07
v(0.01) = v(0) + derv(0) · ∆t → v(0.01) = 7 + −9.8 · 0.01 = 6.902
F (0.01) = m · g + F0 · sin (ω · t) → F (0.01) = 10 · (−9.8) + 15 · sin(10 · 0.01) = −96.5025
a(0.01) = F (0.01)/m → a(0.01) = −96.5025/10 = −9.65025
derx(0.01) = v(0.01) → derx(0.01) = 6.902
derv(0.01) = a(0.01) → derv(0.01) = −9.65025
x(0.02) = x(0.01) + derx(0.01) · ∆t → x(0.02) = 10.07 + 6.902 · 0.01 = 10.139
v(0.02) = v(0.01) + derv(0.01) · ∆t → v(0.02) = 6.902 + −9.65025 · 0.01 = 6.8055
Y as´ sucesivamente ...
ı

En la Figura 2.4 se muestra la evolucion de la posicion, la velocidad y la aceleracion del
´
´
´
objeto, obtenidas ejecutando el algoritmo mostrado en la Figura 2.3. En el eje horizontal de
ambas graficas se representa el tiempo.
´
La condicion de finalizacion de la simulacion es que el objeto toque el suelo. Es decir, que se
´
´
´
satisfaga la condicion: x  0.
´
´
TEMA 2. SIMULACION DE MODELOS DE TIEMPO CONTINUO

14

x

14

v

10

12

a

5

10

0

8

-5

6

-10

4

-15

2

-20

0
0

1

0

2

1

2

Figura 2.4: Resultado de la ejecucion del algoritmo mostrado en la Figura 2.3.
´

{x con t=0.005} – {x con t=0.01}
7

7

0.01
0.00
-0.01
-0.02
-0.03
-0.04
-0.05
-0.06
0

1

2

Figura 2.5: Diferencia en la evolucion temporal de la posicion para dos valores de ∆t.
´
´

Cabe plantearse si el valor 0.01 para el tama˜ o del paso de integracion (∆t) es adecuado. En
n
´
la Figura 2.5 se muestra la diferencia entre la posicion del objeto, calculada usando ∆t = 0.005,
´
y la posicion calculada usando ∆t = 0.01. En el eje horizontal esta representado el tiempo. Esta
´
´
grafica permite obtener una idea de como va acumulandose el error y cual es la magnitud de
´
´
´
´
este. Dependiendo cual sea el objetivo del estudio de simulacion, esta magnitud del error (y
´
´
´
consecuentemente, el valor ∆t = 0.01) sera o no aceptable.
´

2.4. Causalidad computacional
Como se ha mostrado en el Ejemplo 2.3.1, para realizar el calculo de las variables alge´
braicas y las derivadas, es preciso despejar de cada ecuacion la variable a calcular y ordenar
´
las ecuaciones, de modo que sea posible resolverlas en secuencia.
Esto tiene un caracter general. Para plantear el algoritmo de la simulacion de un modelo,
´
´
es preciso realizar las tareas siguientes:
1. Decidir qu´ variable debe calcularse de cada ecuacion y como deben ordenarse las
e
´
´
ecuaciones del modelo, de modo que puedan ser resueltas en secuencia. A esta decision
´
se la denomina asignacion de la causalidad computacional.
´
2. Una vez se ha decidido qu´ variable debe evaluarse de cada ecuacion, debe manipularse
e
´
simbolicamente la ecuacion a fin de despejar dicha variable.
´
´
2.4. CAUSALIDAD COMPUTACIONAL

⋅

(ϖ ⋅ )

[ ]=

R

E

V
T

U

D

BA @ 9 C

C

a)

⋅

G F

[ ]=

R

[

]=

QP I H

(ϖ ⋅ )

S

⋅

8

[ ]=

15

b)

Figura 2.6: La causalidad computacional es una propiedad del modelo completo.

Ejemplo 2.4.1. Supongase que se desea modelizar una resistencia electrica mediante la Ley
´
´
de Ohm. La Ley de Ohm establece que la ca´da de potencial, u, entre los bornes de una
ı
resistencia es igual al producto de un parametro caracter´stico de la resistencia, R, por la
´
ı
intensidad de la corriente electrica, i, que circula a traves de la resistencia:
´
´
u=i·R

(2.20)

(Ley de Ohm)

Esta ecuacion constituye una relacion entre las tres variables u, R e i, que es valida para
´
´
´
cualquiera de las tres posibles causalidades computacionales admisibles de la ecuacion:
´
[u] = i · R

[i] =

u
R

[R] =

u
i

(2.21)

donde se ha se˜ alado la variable a evaluar de cada ecuacion incluyendola entre corchetes y se
n
´
´
ha despejado escribiendola en el lado izquierdo de la igualdad.
´
La consideracion fundamental que debe hacerse llegado este punto es que:
´
la causalidad computacional de una determinada ecuacion del modelo no solo
´
´
depende de ella misma, sino que tambi´ n depende del resto de las ecuaciones
e
del modelo. Es decir, la causalidad computacional es una propiedad global del
modelo completo.
Ejemplo 2.4.2. La casualidad computacional de la ecuacion de la resistencia (vea Ejemplo
´
2.4.1) depende del resto de las ecuaciones del modelo.
Si la resistencia se conecta a un generador de tension senoidal, las ecuaciones del modelo
´
son:
u =
[u] =

[i] · R
u0 · sin (

· t)

(Relacion constitutiva de la resistencia)
´
(2.22)
(Relacion constitutiva del generador de tension) (2.23)
´
´

donde R, u0 y
son parametros del modelo, es decir, su valor se supone conocido y no es
´
preciso evaluarlos de las ecuaciones del modelo.
En las Ecuaciones (2.22) y (2.23) se ha se˜ alado entre corchetes la variable que debe
n
evaluarse de cada ecuacion.
´
Para simular el modelo es preciso ordenar las ecuaciones y despejar la variable a evaluar
en cada una de ellas. Realizando la ordenacion y la manipulacion simbolica, se obtiene (vea la
´
´
´
Figura 2.6a):
[u] =
[i] =

u0 · sin (
u
R

· t)

(2.24)
(2.25)
16

´
TEMA 2. SIMULACION DE MODELOS DE TIEMPO CONTINUO

Como puede verse, en primer lugar debe calcularse el valor de la ca´da de tension, a partir
ı
´
de la relacion constitutiva del generador, y a continuacion debe calcularse la corriente, a partir
´
´
de la relacion constitutiva de la resistencia (para lo cual debe usarse el valor de la tension que
´
´
ha sido previamente calculado).
En cambio, si esta misma resistencia se conecta a un generador sinusoidal de corriente,
las ecuaciones del modelo, una vez ordenadas y manipuladas simbolicamente, seran (vea la
´
´
Figura 2.6b):

[i] =

i0 · sin (

[u] =

i·R

· t)

(2.26)
(2.27)

En este caso, en primer lugar debe calcularse el valor de la corriente, a partir de la relacion
´
constitutiva del generador, y a continuacion debe calcularse la ca´da de tension, a partir de la
´
ı
´
relacion constitutiva de la resistencia (para lo cual debe usarse el valor de la corriente que se
´
ha sido previamente calculado).
Se observa que en el caso de la Ecuacion (2.25) la relacion constitutiva de la resistencia
´
´
se usa para calcular la corriente, mientras que en el caso de la Ecuacion (2.27) se usa para
´
calcular la ca´da de tension. La variable a evaluar depende no solo de la relacion constitutiva
ı
´
´
´
de la resistencia, sino tambien del resto del modelo.
´
A continuacion, se describe un procedimiento sistematico para asignar la causalidad
´
´
computacional de un modelo1 . Sin embargo, para aplicarlo deben previamente clasificarse
las variables del modelo en conocidas y desconocidas, segun sean conocidas o desconocidas
´
en el instante de evaluacion. En primer lugar, por tanto, se explicara como realizar esta
´
´ ´
clasificacion.
´

2.5. Variables conocidas y desconocidas
A efectos de la asignacion de la causalidad computacional, las variables del modelo se
´
clasifican en desconocidas (o incognitas) y conocidas. Dicha clasificacion se realiza en funcion
´
´
´
de que el valor de la variable deba o no ser evaluado de las ecuaciones del modelo.
Variables conocidas:
– La variable tiempo.
– Los parametros del modelo. La persona que formula el modelo decide qu´ variables
´
e
son parametros. La caracter´stica distintiva de este tipo de variables es que no son
´
ı
calculadas de las ecuaciones del modelo, sino que se les asigna valor al inicio de la
simulacion (en la llamada fase de ”inicializacion del modelo”) y este permanece constante
´
´
´
durante toda la simulacion. Puesto que los parametros no deben ser calculados de las
´
´
ecuaciones del modelo, a efectos de la asignacion de la causalidad computacional, se
´
considera que los parametros son variables conocidas.
´
– Las entradas globales al modelo, es decir, aquellas variables cuyo valor se especifica,
independientemente del de las demas variables, para cada instante de la simulacion.
´
´
– Las variables que aparecen derivadas en el modelo, ya que son consideradas variables
de estado, es decir, se asume que se calculan mediante la integracion num´ rica de su
´
e
derivada. El motivo es evitar tener que derivar num´ ricamente en tiempo de simulacion.
e
´
Por tanto, toda variable que aparece derivada en el modelo se clasifica como una variable
de estado. Con el fin de formular el modelo de manera adecuada para su simulacion, se
´
sustituye la derivada de cada variable de estado, all´ donde aparezca, por una variable auxiliar
ı
(por ejemplo, de nombre igual al de la variable de estado, pero anteponiendo el prefijo “der”).
1 Esta

explicacion esta extra´da del texto (Elmqvist 1978)
´
´
ı
2.5. VARIABLES CONOCIDAS Y DESCONOCIDAS

17

Estas variables auxiliares se clasifican como desconocidas y se anade al modelo la condicion
˜
´
de que cada variable de estado se calcula por integracion num´ rica de su correspondiente
´
e
variable auxiliar.
Variables desconocidas:
– Las variables auxiliares introducidas, de la forma descrita anteriormente, sustituyendo
a las derivadas de las variables de estado.
– Las restantes variables del modelo, es decir, aquellas que, no apareciendo derivadas,
dependen para su calculo en el instante de evaluacion del valor de otras variables. Estas
´
´
variables se denominan variables algebraicas.
Ejemplo 2.5.1. Considerese el circuito mostrado en la Figura 2.1. El modelo esta compuesto
´
´
por las ecuaciones siguientes:
u
iR1
u − uC
duC
C·
dt
uC

= u0 · sin (ω · t)

(2.28)

= iR2 + iC
= R1 · iR1

(2.29)
(2.30)

= iC

(2.31)

= iR2 · R2

(2.32)

La variable uC aparece derivada, con lo cual es una variable de estado del modelo.
Con el fin de realizar la asignacion de la causalidad computacional, se sustituye en el modelo
´
por la variable auxiliar deruC . Realizando esta sustitucion ( duC por deruC ), se obtiene el
´
dt
modelo siguiente:
duC
dt

u

=

u0 · sin (ω · t)

(2.33)

iR1
u − uC

=
=

iR2 + iC
R1 · iR1

(2.34)
(2.35)

C · deruC
uC

=
=

iC
iR2 · R2

(2.36)
(2.37)

A efectos de la asignacion de la causalidad computacional, se considera que:
´
– La variable de estado, uC , es conocida.
– La derivada de la variable de estado, deruC , es desconocida.
Al realizar la simulacion, uC se calculara integrando deruC .
´
´
Descontando del numero total de ecuaciones, el numero de variables de estado, se obtiene
´
´
el numero de ecuaciones disponibles para el calculo de variables algebraicas. Este numero
´
´
´
determina el numero de variables algebraicas del modelo. El resto de las variables deberan ser
´
´
parametros. La persona que realiza el modelo debera decidir, de entre las variables que no son
´
´
estados, cuales son las variables algebraicas y cuales los parametros.
´
´
´
En este ejemplo solo hay una variable de estado: uC . As´ pues, debe emplearse una de las
´
ı
ecuaciones del modelo para evaluar su derivada: deruC . Puesto que deruC solo interviene en la
´
Ec. (2.36), debe emplearse esta ecuacion para calcular deruC .
´
Las restantes cuatro ecuaciones permiten calcular cuatro variables algebraicas. Una posible
eleccion de las variables algebraicas es la siguiente: u, iR1 , iR2 , iC . En consecuencia, las
´
variables desconocidas son las siguientes: u, iR1 , iR2 , iC y deruC . El resto de las variables
del modelo deberan ser parametros: u0 , ω, R1 , R2 y C.
´
´
Este modelo tiene solo 5 ecuaciones y 5 incognitas, con lo cual la causalidad computacional
´
´
puede asignarse de manera sencilla (en el siguiente ep´grafe se explica un metodo sistematico
ı
´
´
para hacerlo). Asignar la causalidad computacional es decidir en que orden deben evaluarse
´
las ecuaciones y que incognita debe evaluarse de cada ecuacion, a fin de calcular las incognitas
´
´
´
´
u, iR1 , iR2 , iC y deruC del conjunto de Ecuaciones (2.33) – (2.37).
18

´
TEMA 2. SIMULACION DE MODELOS DE TIEMPO CONTINUO

A continuacion, se se˜ ala en cada ecuacion del modelo que incognita debe calcularse de
´
n
´
´
´
ella. Para ello, se incluye entre corchetes la incognita a evaluar de cada ecuacion:
´
´
[u] =
iR1 =
u − uC =
C · [deruC ] =
uC

=

u0 · sin (ω · t)
iR2 + [iC ]

(2.38)
(2.39)

R1 · [iR1 ]
iC

(2.40)
(2.41)

[iR2 ] · R2

(2.42)

Ordenando las ecuaciones del modelo, se obtiene:

[u] =
uC =
u − uC
iR1

=
=

C · [deruC ] =

u0 · sin (ω · t)
[iR2 ] · R2

(2.43)
(2.44)

R1 · [iR1 ]
iR2 + [iC ]

(2.45)
(2.46)

iC

(2.47)

Finalmente, despejando en cada ecuacion la incognita que debe ser evaluada de ella, se
´
´
obtiene el modelo ordenado y resuelto:
[u] =
[iR2 ] =
[iR1 ] =
[iC ] =
[deruC ] =

u0 · sin (ω · t)
uC
R2
u − uC
·
R1
iR1 − iR2
iC
C

(2.48)
(2.49)
(2.50)
(2.51)
(2.52)

Ademas, debe realizarse el calculo de la variable de estado mediante la integracion de su
´
´
´
derivada:
d [uC ]
= deruC
dt

(2.53)

Observese que, en general, la clasificacion de las variables en algebraicas y parametros
´
´
´
puede realizarse de varias maneras, en funcion de cual sea el experimento que desee realizarse
´
´
sobre el modelo.
Para comprobar si una determinada clasificacion es valida, es preciso realizar la asigna´
´
cion de la causalidad computacional, y comprobar que efectivamente las variables algebraicas
´
seleccionadas pueden evaluarse de las ecuaciones del modelo.
Una seleccion de las variables algebraicas alternativa a la anterior consistir´a en escoger R1
´
ı
y R2 como variables algebraicas, en lugar de iR1 e iR2 . En este caso, iR1 e iR2 ser´an parametros.
ı
´

´
2.6. Asignacion de la causalidad computacional
En esta seccion se describe un procedimiento sistematico para asignar la causalidad
´
´
computacional de un modelo. Consta de dos pasos. En primero consiste en comprobar que
el modelo no es estructuralmente singular. El segundo paso es la asignacion en s´ de la
´
ı
causalidad.
´
2.6. ASIGNACION DE LA CAUSALIDAD COMPUTACIONAL

19

Singularidad estructural del modelo
Antes de realizar la particion se comprueba la no singularidad estructural del modelo. Es
´
decir, se comprueba:
– que el numero de ecuaciones y de incognitas (obtenido siguiendo el criterio anterior de
´
´
clasificacion de las variables en conocidas y desconocidas) es el mismo; y
´
– que cada incognita puede emparejarse con una ecuacion en que aparezca y con la cual
´
´
no se haya emparejado ya otra incognita.
´
Si alguna de estas dos condiciones no se verifica, se dice que el modelo es singular y es
necesario reformularlo para poder simularlo.
Si el modelo no es singular, se procede a asignar la casualidad computacional.
Ejemplo 2.6.1. Considere un modelo con tres variables: x, y, z. El modelo esta compuesto por
´
tres ecuaciones, en cada una de las cuales intervienen las variables siguientes:

f2

f1 (x, y, z)
dx
x,
,y
dt
f3 (x, z)

= 0

(2.54)

= 0

(2.55)

= 0

(2.56)

Sustituyendo la derivada de la variable x por la variable auxiliar (derx), se obtiene un modelo
compuesto por las tres ecuaciones siguientes:
f1 (x, y, z) =

0

(2.57)

f2 (x, derx, y) =
f3 (x, z) =

0
0

(2.58)
(2.59)

Dicho modelo tiene tres incognitas: derx, y, z. La variable x, por aparecer derivada, se supone
´
que es una variable de estado: se calcula integrando derx, y no de las ecuaciones del modelo.
Se comprueba que este modelo no es singular, ya que cada ecuacion puede asociarse con una
´
incognita que interviene en ella y que no se ha asociado con ninguna otra ecuacion (observese
´
´
´
que, en general, esta asociacion puede no ser unica):
´
´

→

y

(2.60)

f1 (x, y, z)

= 0

f2 (x, derx, y)

= 0

→

derx

(2.61)

f3 (x, z)

= 0

→

z

(2.62)

Ejemplo 2.6.2. Considere un modelo con tres variables: x, y, z. El modelo esta compuesto por
´
tres ecuaciones, en cada una de las cuales intervienen las variables siguientes:

f2

f1 (z) =
dx
,y
=
dt
f3 (x) =

0

(2.63)

0

(2.64)

0

(2.65)

Dicho modelo tiene tres incognitas: derx, y, z. Observe que la tercera ecuacion (f3 (x) = 0) no
´
´
contiene ninguna incognita, mientras que la segunda ecuacion contiene dos incognitas que no
´
´
´
aparecen en ninguna otra ecuacion del modelo (f2 (derx, y) = 0). En consecuencia, el modelo es
´
singular y por tanto es necesario reformularlo.

´
Asignacion de la causalidad computacional
Una vez se ha comprobado que el modelo no es singular, se realiza la asignacion de
´
causalidad computacional siguiendo las tres reglas siguientes:
20

´
TEMA 2. SIMULACION DE MODELOS DE TIEMPO CONTINUO

1. Las variables que aparecen derivadas se consideran variables de estado y se suponen
conocidas, ya que se calculan por integracion a partir de sus derivadas. Las derivadas
´
de las variables de estado son desconocidas y deben calcularse de las ecuaciones en que
aparezcan.
2. Las ecuaciones que poseen una unica incognita deben emplearse para calcularla.
´
´
3. Aquellas variables que aparecen en una unica ecuacion deben ser calculadas de ella.
´
´
Aplicando las tres reglas anteriores a sistemas no singulares pueden darse dos situaciones:
1. Se obtiene una solucion que permite calcular todas las incognitas usando para ello todas
´
´
las ecuaciones. Esto significa que las variables pueden ser resueltas, una tras otra, en
secuencia. En este caso, el algoritmo proporciona una ordenacion de las ecuaciones tal
´
que en cada ecuacion hay una y solo una incognita que no haya sido previamente cal´
´
´
culada. En ocasiones sera posible despejar la incognita de la ecuacion. En otros casos,
´
´
´
la incognita aparecera de forma impl´cita y deberan emplearse m´ todos num´ ricos para
´
´
ı
´
e
e
evaluarla.
2. Se llega a un punto en que todas las ecuaciones tienen al menos dos incognitas y
´
todas las incognitas aparecen al menos en dos ecuaciones. Corresponde al caso en que
´
hay sistema de ecuaciones. Si en este sistema las incognitas intervienen linealmente,
´
sera posible despejarlas resolviendo el sistema simbolicamente. Si al menos una de
´
´
las incognitas interviene de forma no lineal, deberan emplearse m´ todos num´ ricos
´
´
e
e
para evaluar las incognitas. El algoritmo de particion asegura que la dimension de los
´
´
´
sistemas de ecuaciones obtenidos es m´nima.
ı
Ejemplo 2.6.3. A continuacion va a realizarse la particion del modelo descrito en el Ejemplo
´
´
2.6.1. Indicando unicamente las incognitas que intervienen en cada ecuacion se obtiene:
´
´
´
= 0
= 0

(2.66)
(2.67)

f3 (z) = 0

(2.68)

f1 (y, z)
f2 (derx, y)

La variable z es la unica incognita que aparece en la ecuacion f3 , por tanto debe emplearse
´
´
´
esta ecuacion para calcular z. Las ecuaciones que quedan por emplear, y las incognitas que
´
´
quedan por evaluar son:
(2.69)
(2.70)

f1 (y) = 0
f2 (derx, y) = 0

Debe emplearse f1 para calcular y. Seguidamente, debe emplearse f2 para calcular derx.
Las ecuaciones ordenadas, con la causalidad computacional se˜ alada, son las siguientes:
n
f3 (x, [z]) =
f1 (x, [y] , z) =

0
0

(2.71)
(2.72)

f2 (x, [derx] , y) =

0

(2.73)
Parte II

Easy Java Simulations

21
Texto base  euclides
Tema 3

Fundamentos de Ejs

Objetivos: Una vez estudiado el contenido del tema deber´a saber:
ı
´
´
• Quien y con que finalidad ha desarrollado Ejs.
´
´
• Cual es la metodolog´a de Ejs para la creacion de laboratorios virtuales.
ı

3.1. ¿Qu´ es Easy Java Simulations?
e
Easy Java Simulations (abreviado: Ejs) es un entorno de simulacion que ha sido disenado
´
˜
y desarrollado por el profesor Francisco Esquembre1 . Segun indica el Prof. Esquembre, Ejs
´
ha sido especialmente ideado para el desarrollo de aplicaciones docentes, permitiendo a
profesores y alumnos crear de forma sencilla sus propios laboratorios virtuales, sin que para
ello requieran de conocimientos avanzados de programacion.
´
El entorno de simulacion Ejs, as´ como su documentacion y algunos casos de estudio,
´
ı
´
puede ser descargado gratuitamente del sitio web http://fem.um.es/Ejs. Para su comodidad,
todo este material ha sido incluido en el CD que se le ha entregado como material de este
curso. En el Tema 4 se explicara como realizar la instalacion de Ejs.
´ ´
´

Condiciones de uso de Ejs
Las condiciones de uso de Ejs y el copyright de los ejemplos de simulaciones disponibles
en el sitio web http://fem.um.es/Ejs, son las indicadas en dicho sitio web (en diciembre de
2004), y que a continuacion se reproducen textualmente:
´
Easy Java Simulations es propiedad exclusiva de su autor, Francisco Esquembre,
que lo distribuye bajo licencia Open Source.
Los ejemplos de simulaciones contenidos en este servidor son propiedad de sus
autores.
Copyright del Software Easy Java Simulations
1 Prof. Dr. Francisco Esquembre, Dpto. de Matematicas, Universidad de Murcia, Campus de Espinardo, 30071
´
Murcia (Espana). E-mail: fem@um.es
˜

23
TEMA 3. FUNDAMENTOS DE EJS

24

Easy Java Simulations y sus archivos JAR de librer´a pueden copiarse y distribuirı
se sin l´mite alguno y sin solicitar permiso previo, siempre que se trate de fines
ı
no comerciales. En cualquier caso, debe mantenerse siempre la referencia al autor
que aparece en el programa.
Pueden distribuirse cualesquiera nuevas simulaciones creadas con Easy Java Simulations, siempre que se incluya una referencia a este hecho, junto con un enlace
a la pagina Web oficial de Easy Java Simulations, http://fem.um.es/Ejs. No es
´
preciso hacer esto en todas las paginas de simulaciones de una unidad educativa,
´
bastara con incluir una referencia para todo el conjunto en un lugar claramente
´
visible.
Cualquier publicacion que resulte del uso de Easy Java Simulations debe referen´
ciar el servidor Web original de Ejs, http://fem.um.es/Ejs.
Por ultimo, animamos a cualquier autor que haya escrito nuevos ejemplos con
´
Easy Java Simulations a enviarnos un breve correo electronico con un enlace a
´
sus ejemplos.

3.2. Paradigma modelo-vista-control
La metodolog´a para la creacion de laboratorios virtuales de Ejs esta basada en una simı
´
´
plificacion del paradigma “modelo-vista-control”. Este paradigma2 establece que el laboratorio
´
virtual se compone de las tres partes siguientes:
1. El modelo: describe los fenomenos bajo estudio. Esta compuesto por un conjunto de
´
´
variables y por las relaciones entre estas variables.
2. El control: define las acciones que el usuario puede realizar sobre la simulacion.
´
3. La vista: representacion grafica de los aspectos mas relevantes del fenomeno simulado.
´
´
´
´
Estas tres partes estan interrelacionadas entre s´:
´
ı
– El modelo afecta a la vista, ya que debe mostrarse al usuario cual es la evolucion del
´
´
valor de las variables del modelo.
– El control afecta al modelo, ya que las acciones ejercidas por el usuario pueden modificar
el valor de las variables del modelo.
– La vista afecta al modelo y al control, ya que la interfaz grafica puede contener elementos
´
que permitan al usuario modificar el valor de las variables o realizar ciertas acciones.

´
Simplificacion del paradigma modelo-vista-control realizada por Ejs
Ejs se basa en una simplificacion del paradigma modelo-vista-control, suprimiendo la
´
parte del control como tal, e integrando sus funciones tanto en la vista como en el modelo.
Esta simplificacion se basa en el hecho de que el usuario puede usar la interfaz grafica del
´
´
laboratorio virtual (es decir, la vista) para interaccionar con la simulacion, empleando para
´
ello el raton, el teclado, etc.
´
As´ pues, en un laboratorio virtual programado usando Ejs, el usuario interacciona con
ı
el modelo a trav´ s de la vista. Por tanto, al programar el modelo es preciso especificar de
e
qu´ forma las acciones realizadas por el usuario durante la simulacion sobre los componentes
e
´
graficos o los controles de la vista afectan al valor de las variables del modelo.
´
Las propiedades de los elementos graficos de la vista (posicion, tamano, etc.) pueden
´
´
˜
asociarse con las variables del modelo, dando lugar a un flujo de informacion bidireccional
´
entre la vista y el modelo. Cualquier cambio en el valor de una variable del modelo es
automaticamente representado en la vista. Rec´procamente, cualquier interaccion del usuario
´
ı
´
con la vista de laboratorio virtual, modifica el valor de la correspondiente variable del modelo.
2 Esta discusion esta extra´da de la Seccion 3.1 del documento EjsManual3.1.pdf, que puede encontrar en el CD
´
´
ı
´
del curso.
´
3.3. DEFINICION DEL MODELO

25

Botones para la selección del panel: definición de la introducción, el modelo o la vista

Crear una simulación nueva
Abrir una simulación existente
Grabar a disco
Grabar con un nombre distinto
Ejecutar la simulación
Cambiar la fuente
Editar opciones
Versión y autores

Ventana en la que Ejs muestra
los mensajes al usuario

Figura 3.1: Interfaz de usuario de Ejs.

Ademas del modelo y la vista, Ejs permite incluir en el laboratorio virtual paginas HTML
´
´
que realicen las funciones de documentacion, informando acerca de la finalidad del labora´
torio, sus instrucciones de uso, recomendaciones pedagogicas, etc. Este conjunto de paginas
´
´
recibe el nombre de Introduccion.
´
Resumiendo lo anterior, la definicion de un laboratorio virtual mediante Ejs se estructura
´
en las siguientes tres partes:
´
– Introduccion: paginas html que incluyen los contenidos educativos relacionados con el
´
laboratorio virtual.
– Modelo: modelo dinamico cuya simulacion interactiva es la base del laboratorio virtual.
´
´
– Vista: interfaz entre el usuario y el modelo. La vista del laboratorio virtual tiene dos
funciones. Por una parte, proporciona una representacion visual del comportamiento
´
dinamico del modelo. Por otra parte, proporciona los mecanismos para que el usuario
´
pueda interaccionar con el modelo durante la simulacion.
´
En la Figura 3.1 se muestra la interfaz de usuario de Ejs. Se trata de la pantalla que aparece al arrancar Ejs. Como puede verse, en la parte superior hay tres botones: Introduccion,
´
Modelo, Vista. Mediante estos botones puede seleccionarse el panel para la definicion de las
´
paginas de la introduccion, el panel para la definicion del modelo o el panel para la definicion
´
´
´
´
de la vista.
TEMA 3. FUNDAMENTOS DE EJS

26

Botones para la selección de los paneles de definición del modelo

Figura 3.2: Panel para la definicion del modelo.
´

´
3.3. Definicion del modelo
Ejs proporciona un procedimiento sencillo para la definicion del modelo: un conjunto de
´
paneles que el usuario debe completar para especificar las variables y los algoritmos que
componen el modelo.
En la Figura 3.2 se muestra el panel para la definicion del modelo, dentro del cual, a su
´
vez, puede accederse a cinco paneles: Variables, Inicializacion, Evolucion, Ligaduras y Propio.
´
´
La finalidad de cada uno de estos paneles se explicara en el Tema 5.
´
Ademas de este m´ todo para definir el modelo, Ejs soporta la opcion de describir y simular
´
e
´
el modelo usando Matlab/Simulink3 :
– En cualquier punto de la definicion del modelo en Ejs pueden incluirse codigo Matlab,
´
´
as´ como llamadas a cualquier funcion de Matlab, tanto las funciones propias de Matlab
ı
´
como cualquier funcion definida en un fichero M.
´
– El modelo puede ser descrito parcial o completamente usando bloques de Simulink.
El modelado y la simulacion combinando el uso de Ejs y Matlab/Simulink excede los
´
objetivos planteados en este curso.

´
3.4. Definicion de la vista
Ejs proporciona un conjunto de elementos predefinidos que pueden usarse de manera
sencilla para componer la vista.
3 Puede

encontrar informacion acerca de Matlab y Simulink en el sitio web http://www.mathworks.com/
´
´
3.4. DEFINICION DE LA VISTA

27

Figura 3.3: Panel para la definicion de la vista.
´

´
En la Figura 3.3 se muestra el panel para la definicion de la vista. Esta se realiza emplean´
do las dos ventanas siguientes:
– La ventana situada en la parte derecha del panel, que tiene el letrero Elementos para la
vista. Los elementos se encuentran clasificados en tres grupos: Contenedores, Basicos y
´
Dibujo. Estos elementos son clases de componentes graficos que Ejs tiene predefinidas
´
y que el usuario va a emplear para componer la vista.
´
– La ventana que esta situada en la parte izquierda del panel, y tiene el letrero Arbol de
´
elementos. En esta ventana el usuario va componiendo la vista, usando para ello los
elementos de la ventana Elementos para la vista.
Los elementos graficos proporcionados por Ejs estan programados usando la librer´a
´
´
ı
Swing de Java y las herramientas creadas en el proyecto Open Source Physics. Puede encontrar informacion acerca de este proyecto en el sitio web http://www.opensourcephysics.org/
´
Como ilustracion de qu´ tipo de laboratorios virtuales puede programarse empleando
´
e
Ejs, y en particular, qu´ capacidades de visualizacion e interactividad tienen, se muestra
e
´
a continuacion un laboratorio virtual que ha sido programado para la ensenanza del control
´
˜
automatico.
´
28

TEMA 3. FUNDAMENTOS DE EJS

Figura 3.4: Vista de un laboratorio virtual programado con Ejs.

Ejemplo 3.4.1. En la Figura 3.4 se muestra la vista de un laboratorio virtual programado
con Ejs. El modelo consta de una planta4 , compuesta por cuatro depositos de l´quido, y de su
´
ı
sistema de control. Este laboratorio virtual se emplea para ilustrar diferentes aspectos de la
teor´a del control automatico. El objetivo es controlar el nivel de los dos depositos inferiores
ı
´
´
mediante dos bombas. Para ello, pueden emplearse dos estrategias de control - manual y
automatico (PID descentralizado)- entre las cuales el alumno puede conmutar en tiempo de
´
simulacion.
´
Dos bombas hacen circular el l´quido desde la cubeta inferior a los tanques. En el diagraı
ma de la planta, mostrado en la parte superior izquierda de la Figura 3.4, cada bomba se
representa mediante un triangulo inscrito en un c´rculo.
´
ı
Una valvula de doble via distribuye el causal suministrado por cada una de las bombas. La
´
primera de estas valvulas determina que proporcion del l´quido suministrado por la bomba va
´
´
´
ı
al Tanque 1 y que proporcion (la restante) va al Tanque 4. Igualmente, una segunda valvula
´
´
´
determina como se reparte el flujo entre los Tanques 2 y 3.
´
En la base de los Tanques 3 y 4 existen sendos agujeros, a traves de los cuales se vierte
´
l´quido a los Tanques 1 y 2 respectivamente. Igualmente, a traves de los agujeros situados en
ı
´
4 Puede encontrarse informacion adicional acerca de esta planta en (Johansson 2000). La programacion y el
´
´
manejo del laboratorio virtual se explican en (Dormido  Esquembre 2003, Martin, Urquia, Sanchez, Dormido,
Esquembre, Guzman  Berenguel 2004).
´
´
3.5. EJECUCION Y DISTRIBUCION DEL LABORATORIO VIRTUAL

29

la base de los Tanques 1 y 2 se vierte l´quido a la cubeta inferior. Estos flujos son modelados
ı
usando la relacion de Bernoulli5 .
´
La vista del laboratorio virtual, mostrada en la Figura 3.4, consta de:
– La ventana principal, situada en la parte izquierda, que contiene la representacion es´
quematica del proceso (en la parte superior) y los botones de control (en la parte inferior).
´
Ambos permiten al alumno experimentar con el modelo. En la representacion esquematica
´
´
del sistema, pueden modificarse (haciendo clic y arrastrando el raton) los niveles del
´
l´quido en los tanques, la forma y la seccion de los tanques y los valores de consigna
ı
´
para el nivel de l´quido. Los deslizadores y botones situados en la parte inferior permiten
ı
modificar interactivamente el valor de los parametros del controlador PID y el valor de
´
la seccion de los agujeros realizados en la base de los tanques. Asimismo, los botones
´
permiten seleccionar las variables de estado del modelo (el volumen o el nivel del l´quido),
ı
abrir y cerrar ventanas graficas, etc.
´
– En la parte izquierda, se muestran seis ventanas en las cuales se representa graficamente
´
la evolucion en el tiempo de las variables relevantes del sistema: altura del l´quido en cada
´
ı
tanque y voltaje aplicado a cada una de las bombas por el sistema de control.

´
´
3.5. Ejecucion y distribucion del laboratorio virtual
Una vez que el usuario ha definido el modelo, la vista y la introduccion del laboratorio
´
virtual, Ejs genera automaticamente el codigo Java del programa, lo compila, empaqueta
´
´
los ficheros resultantes en un fichero comprimido, y genera paginas html que contienen la
´
introduccion y la simulacion como un applet.
´
´
Entonces, existen tres posibles formas de ejecutar el laboratorio virtual:
– Como un applet, abriendo con un navegador web (Internet Explorer, Netscape, etc.) el
documento html generado por Ejs para el laboratorio. Esta opcion permite publicar el
´
laboratorio virtual en Internet.
Una vez han sido generadas por Ejs, puede usted (si lo desea) editar las paginas html
´
del laboratorio virtual y anadirles otros contenidos. Debera usar para ello un editor de
˜
´
paginas web.
´
Es importante tener en cuenta que, por motivos de seguridad, los applets de Java no
pueden escribir datos en el disco (pero si pueden leer datos del disco o de Internet).
Por ello, si ha programado la simulacion de modo que escriba datos en el disco, no
´
podra ejecutarla como un applet, sino que debera usar cualquiera de las dos formas de
´
´
ejecucion siguientes.
´
– Ejecucion desde el entorno Ejs.
´
– Ejecucion como una aplicacion Java independiente.
´
´

5 El flujo de l´quido (F ) se relaciona con la seccion recta del orificio (a), el nivel del l´quido en el tanque (h) y la
ı
´
ı
√
aceleracion gravitatoria (g) mediante la relacion de Bernoulli: F = a · 2 · g · h.
´
´
30

TEMA 3. FUNDAMENTOS DE EJS
Tema 4

´
Instalacion y arranque de Ejs

Objetivos: Una vez estudiado el contenido del tema deber´a saber:
ı
´
• Como instalar Ejs.
´
• Como ejecutar un laboratorio virtual ya existente.
´
• Como acceder a los ejemplos que incluye Ejs.

´
4.1. Requisitos para la instalacion de Ejs
Ejs ha sido probado en las plataformas siguientes: Windows 95, 98, ME, 2000 y XP; Apple
MacIntosh bajo Mac OS X; y PC-compatibles bajo Linux.
Ejs es un programa escrito en lenguaje Java, que compila programas escritos en Java.
Por ello, Ejs requiere para su funcionamiento que previamente se haya instalado el Kit de
Desarrollo de Software de Java 2 (Java 2 SDK).
Dependiendo de la version de Ejs, es aconsejable instalar una version del Java 2 SDK u
´
´
otra. En el caso de Ejs 3.4, se recomienda usar la version 1.5.0 09 del kit de desarrollo de
´
Java 2.
Una vez haya instalado Java 2 SDK, debera instalar Ejs. La instalacion bajo Windows se
´
´
explica en la Seccion 4.2. La instalacion bajo Linux y Mac OS X, que no explica en este texto,
´
´
esta explicada detalladamente en el sitio web de Ejs (http://fem.um.es/Ejs/Ejs es/index.html)
´
y en el manual de Ejs que se incluye en el CD-ROM del curso.
La documentacion de Ejs consiste en ficheros con formato pdf. Si no dispone de un visua´
lizador de pdf, puede descargar uno gratuitamente del sitio web http://www.adobe.com/.

´
4.2. Instalacion de Ejs para Windows
´
Instalacion del Java SDK
Ejecute el fichero de instalacion de Java SDK, jdk-1 5 0 09-windows-i586-p.exe, y siga las
´
instrucciones del mismo. Este fichero se encuentra en el CD-ROM del curso.
31
´
TEMA 4. INSTALACION Y ARRANQUE DE EJS

32

Figura 4.1: Consola de Ejs version 3.4.
´

En realidad, la unica eleccion importante que debe hacer es el directorio donde debe
´
´
instalarse el software. La recomendacion que hacemos es que acepte el directorio que la
´
instalacion proporciona por defecto.
´

´
Instalacion de Easy Java Simulations
Mueva el directorio Ejs desde el CD-ROM al disco duro de su ordenador. Es recomendable
que ni dicho de los directorios del path contenga espacios en blanco en su nombre.

´
4.3. El directorio de instalacion de Ejs
El directorio Ejs contiene:
– El fichero EjsConsole.jar. Debe ejecutarlo para arrancar la consola de Ejs (v´ ase la
e
Figura 4.1). Desde dicha consola podra especificar en qu´ directorio se encuentra insta´
e
lado Java2SDK, cual es el directorio de trabajo de Ejs, podra arrancar Ejs, seleccionar
´
´
el idioma de la interfaz grafica de usuario de Ejs,etc. Asimismo, en la parte inferior de
´
la consola hay una pantalla en la cual Ejs muestra los mensajes de error generados al
compilar y ejecutar los laboratorios virtuales.
– El directorio data. Contiene el codigo de la aplicacion Ejs, con lo cual usted no debe
´
´
modificar el contenido de este directorio.
– El directorio Simulations. Es el directorio de trabajo por defecto: donde arranca la
ejecucion de Ejs, donde Ejs espera encontrar la definicion de los laboratorios virtuales
´
´
´
4.4. SELECCION DEL DIRECTORIO DE TRABAJO

33

y donde Ejs almacena los resultados de las simulaciones. En la Seccion 4.4 se explica
´
como escoger otro directorio de trabajo.
´
A su vez, el directorio Simulations contiene los tres subdirectorios siguientes:
– El directorio examples. Contiene ejemplos de uso de Ejs, que usted puede inspeccionar y modificar si lo desea.
– El directorio library. Contiene ficheros necesarios para el funcionamiento de Ejs,
por tanto, usted tampoco debe modificar el contenido de este directorio.
– El directorio laboratoriosTexto, que contiene los laboratorios virtuales descritos en
el presente texto.

´
4.4. Seleccion del directorio de trabajo
Ejs toma por defecto el directorio Simulations como directorio de trabajo. Si desea cambiar
el directorio de trabajo, puede hacerlo desde la consola de Ejs. Para ello, debe ademas copiar
´
el directorio completo library en su directorio de trabajo.

´
4.5. Arranque de Ejs y ejecucion de un laboratorio virtual
Para arrancar el entorno de simulacion Ejs debe arrancar la consola de Ejs, ejecutando el
´
fichero EjsConsole.jar. Pulse entonces el boton con la etiqueta “Ejecutar Easy Java Simula´
tions” que hay en la consola (vea la Figura 4.1).
Con ello, se abrira la ventana mostrada en las Figura 4.2, que es la interfaz de usuario del
´
entorno de simulacion Ejs, en la cual se definen las tres partes que componen el laboratorio
´
virtual: la introduccion, el modelo y la vista.
´
Para comprobar que la instalacion se ha realizado correctamente, abra alguno de los
´
laboratorios contenidos en el directorio Simulations examples. Para ello:
1. Pulse el segundo boton de la regleta de botones situada en la parte derecha de la interfaz
´
de Ejs (ver la Figura 4.2). Dicho boton representa una carpeta abierta, y si se situa
´
´
sobre el aparece el mensaje: “Abrir una simulacion existente”. Al pulsar dicho boton se
´
´
´
muestra una ventana, en la que debe escoger qu´ laboratorio virtual desea abrir.
e
2. Entre en el directorio examples.
3. Los ficheros en los que Ejs guarda la definicion del laboratorio virtual tienen extension
´
´
xml. Seleccione el fichero EarthSunAndMoon.xml y abralo (vea la Figura 4.3). Al abrir el
´
fichero EarthSunAndMoon.xml se abren las dos ventanas mostradas en la Figura 4.4. En
la ventana situada a la derecha puede ver la introduccion del laboratorio. Si pulsa los
´
botones Modelo o Vista accedera a la definicion del modelo y de la vista respectivamente.
´
´
4. Para iniciar la ejecucion de la simulacion, debe pulsar el boton que tiene un triangulo
´
´
´
´
de color verde dibujado. Si se situa con el raton sobre el, aparece el mensaje “Ejecutar
´
´
´
la simulacion” (vea la Figura 4.2). Pulselo para arrancar la simulacion
´
´
´
Al arrancar la simulacion, Ejs genera varios ficheros en el directorio de trabajo:
´
– earthSunAndMoon.jar, en el cual Ejs ha empaquetado todos los ficheros Java necesarios
para la ejecucion del laboratorio virtual.
´
– EarthSunAndMoon.html, documento html que recoge la introduccion del laboratorio y
´
la simulacion. Esta ultima como un applet. Ademas, Ejs genera otros documentos
´
´
´
html a los que se enlaza desde EarthSunAndMoon.html. Estos son: EarthSunAndMoon Activities.html, EarthSunAndMoon Author.html, etc.
– EarthSunAndMoon.bat, fichero por lotes que arranca la ejecucion del laboratorio virtual
´
como una aplicacion Java independiente. Por defecto, Ejs no genera este fichero. En la
´
Seccion 4.6 se explicara como configurar Ejs para que lo haga.
´
´ ´
– Posiblemente Ejs almacene algun fichero en el directorio library. Recuerde que, si
´
cambia el directorio de trabajo, debe copiar en el nuevo directorio de trabajo el directorio
library con todo su contenido.
34

´
TEMA 4. INSTALACION Y ARRANQUE DE EJS

Crear una simulación nueva
Abrir una simulación existente
Grabar a disco
Grabar con un nombre distinto
Ejecutar la simulación
Cambiar la fuente
Editar opciones
Versión y autores

Figura 4.2: Interfaz de usuario de Ejs.

Figura 4.3: Seleccion del fichero EarthSunAndMoon.xml, que se encuentra dentro del
´
directorio examples.
´
4.5. ARRANQUE DE EJS Y EJECUCION DE UN LABORATORIO VIRTUAL

Figura 4.4: Ventanas del laboratorio virtual EarthSunAndMoon.xml.

Figura 4.5: Vista del laboratorio EarthSunAndMoon.xml.

Figura 4.6: Pagina web del laboratorio virtual: EarthSunAndMoon.html.
´

35
36

´
TEMA 4. INSTALACION Y ARRANQUE DE EJS

Figura 4.7: Ventana de configuracion de Ejs version 3.4.
´
´

La ejecucion del laboratorio virtual hace que se abra una nueva ventana, en la cual se
´
muestra la evolucion de la tierra y de la luna en sus respectivas orbitas (vea la Figura 4.5).
´
´
Si detiene la simulacion pulsando el boton “Pause”, observara que situando el raton sobre
´
´
´
´
cualquiera de los tres objetos celestes (el sol, la tierra o la luna), pulsando y arrastrando,
podra cambiar su posicion. Pulsando el boton “Play”, reinicia la simulacion partiendo de las
´
´
´
´
nuevas posiciones.
Si lo desea, puede publicar el laboratorio virtual en Internet. Como se ha indicado anteriormente, Ejs ha creado en el directorio de trabajo los ficheros necesarios para ello. Abra el
fichero EarthSunAndMoon.html con un navegador web, y observara la pagina web mostrada
´
´
en la Figura 4.6.

´
4.6. Opciones de configuracion de Ejs
Para asignar valor a las opciones de configuracion de Ejs, debe pulsar el boton “Editar
´
´
opciones”, que tiene dibujada una mano que sujeta un papel. Se trata del penultimo boton
´
´
de la regleta lateral izquierda de botones de Ejs (vea la Figura 4.2).
Pulsando dicho boton se abre la ventana mostrada en la Figura 4.7. En ella el usuario
´
puede indicar sus preferencias acerca de:
– La posicion en la que aparece la ventana principal de Ejs cuando se arranca la aplica´
cion.
´
– El estilo, tamano, etc. de la fuente de caracteres.
˜
´
4.6. OPCIONES DE CONFIGURACION DE EJS

37

– La creacion o no de determinados ficheros, entre ellos el fichero .bat al que se hac´a
´
ı
referencia en la Seccion 4.5.
´
– Eliminar o no el fichero fuente de Java que contiene el codigo para la ejecucion del
´
´
laboratorio virtual. Por defecto, Ejs elimina este fichero una vez lo ha compilado y
ha generado el fichero .jar. En este fichero con extension .jar estan empaquetados y
´
´
comprimidos los ficheros obtenidos de la compilacion del fichero fuente .java.
´
– Mostrar o no las paginas “ocultas” del laboratorio.
´
38

´
TEMA 4. INSTALACION Y ARRANQUE DE EJS
Tema 5

Conceptos b´ sicos para la
a
´
descripcion del modelo

Objetivos: Una vez estudiado el contenido del tema deber´a saber:
ı
´
• Cuales son los componentes de un modelo en Ejs.
´
´
• Cual es el algoritmo de simulacion de Ejs.
´
• Como se declaran variables y se inicializan en Ejs.
´
´
• Cual es la utilidad de los paneles Evolucion y Ligaduras.
´
´
• Como definir metodos propios.
´
´
• Cuales son los algoritmos para la integracion de ODE que soporta Ejs.

En este tema se explica cual es el algoritmo para la simulacion que emplea Ejs. Su
´
´
comprension es esencial para poder describir correctamente los modelos usando Ejs.
´
Las explicaciones se fundamentan en los conceptos expuestos en el Tema 2, apareciendo
dos elementos adicionales:
– Ejs esta disenado para permitir la interactividad del usuario sobre el modelo durante la
´
˜
simulacion.
´
– La descripcion de como debe Ejs realizar el calculo de los parametros y de las varia´
´
´
´
bles algebraicas debe realizarse mediante fragmentos de codigo escritos empleando el
´
lenguaje de programacion Java.
´
A continuacion, se explica detalladamente todo ello.
´

5.1. Componentes del modelo escrito en Ejs
Para definir un modelo interactivo en Ejs, es preciso proporcionar la informacion siguiente:
´
– Declarar las variables que intervienen en el modelo.
– Describir los algoritmos necesarios para calcular el valor de las variables:
– En el instante inicial de la simulacion.
´
– En funcion del tiempo.
´
– Cuando el usuario realiza sobre la vista del laboratorio virtual alguna accion inter´
activa.
39
40

´
´
TEMA 5. CONCEPTOS BASICOS PARA LA DESCRIPCION DEL MODELO

Ejs proporciona un procedimiento sencillo para introducir esta informacion. En concreto,
´
la definicion del modelo en Ejs se compone de las partes siguientes:
´
– La inicializacion de las variables realizada al declararlas. A tal fin, la expresion cuyo valor
´
´
debe asignarse a la variable debe escribirse en la columna Valor del panel Variables, en
la fila correspondiente a la declaracion de la variable.
´
– Los algoritmos para la inicializacion de las variables, que se definen en el panel Iniciali´
zacion.
´
– Los algoritmos escritos en el panel Evolucion.
´
– Los algoritmos escritos en el panel Ligaduras.
– Los m´ todos definidos en el panel Propio, que pueden ser invocados desde cualquier
e
punto de la descripcion del modelo o de la vista. Se emplean t´picamente para describir
´
ı
las acciones interactivas del usuario.
En este tema se explica como debe introducirse esta informacion en los cinco paneles
´
´
(Variables, Inicializacion, Evolucion, Ligaduras y Propio) que componen el panel Modelo de Ejs
´
´
(vea la Figura 3.2).

´
5.2. Descripcion algor´tmica del modelo
ı
Como se ha indicado anteriormente, el modelo se describe en Ejs mediante fragmentos
de codigo en lenguaje Java, los cuales deben ser escritos en los diferentes paneles que
´
proporciona Ejs para la descripcion del modelo: Inicializacion, Evolucion, Ligaduras y Propio.
´
´
´
Esto implica que el modelo matematico debe ser manipulado por el usuario, previamente
´
a escribirlo en los paneles de Ejs, con el fin de formularlo como una secuencia ordenada
de asignaciones. Para ello, es conveniente emplear las t´ cnicas para la asignacion de la
e
´
causalidad computacional descritas en el Tema 2.
Las ecuaciones del modelo deben reescribirse como asignaciones, de la forma siguiente:
variable = expresion;
´

(5.1)

Ejs realiza la ejecucion de una asignacion como la mostrada en (5.1) de la forma siguiente:
´
´
1. Se evalua la expresion del lado derecho de la igualdad, empleando para ello el valor que
´
´
en ese punto de la ejecucion tengan las variables que intervienen en dicha expresion.
´
´
2. Se asigna el resultado obtenido a la variable situada al lazo izquierdo de la igualdad.
Ademas de asignaciones, para la descripcion del modelo pueden usarse las clausulas que
´
´
´
proporciona Java para el control del flujo del programa. Por ejemplo, en la Figura 5.5 se
muestra un ejemplo de uso de la clausula for.
´
Al uso conjunto de estas clausulas y de asignaciones lo denominaremos algoritmo.
´

´
5.3. El algoritmo de simulacion de Ejs
Para poder entender como estructurar la definicion del modelo en los diferentes paneles,
´
´
es preciso previamente comprender el algoritmo de simulacion de Ejs.
´
En este contexto, se entiende por algoritmo de simulacion de Ejs el orden en el que Ejs
´
ejecuta los diferentes paneles y las diferentes ventanas dentro de cada panel.
El orden es el siguiente:
1. Ejs ejecuta los diferentes paneles que componen la descripcion del modelo en el orden
´
mostrado en la Figura 5.1.
´
5.3. EL ALGORITMO DE SIMULACION DE EJS

41

Inicio

Declaración de variables (panel Variables)
Inicialización de variables (columna Valor del panel Variables)
Ejecución de los algoritmos del panel Inicialización
Ejecución de los algoritmos
del panel Ligaduras

Representación gráfica de resultados
(comunicación modelo vista)

sí

¿Interacción del usuario?
(comunicación vista modelo)

Ejecución de la acción
ejercida por el usuario

no

Ejecución de los algoritmos
del panel Evolución

Figura 5.1: Algoritmo de simulacion de Ejs.
´

2. Si un determinado panel consta de varias paginas, estas se ejecutan siguiendo el orden
´
´
relativo en que estan dispuestas1 , empezando por la que esta situada mas a la izquierda
´
´
´
y terminando con la que esta mas a la derecha.
´ ´
Por ejemplo, en la Figura 7.9 se observa que el panel Variables consta de dos ventanas:
– Variables principales, que esta situada mas a la izquierda, y que por tanto se ejecuta
´
´
en primer lugar.
– Variables auxiliares, situada mas a la derecha, y que por ello se ejecuta en segundo
´
lugar.
3. Ejs ejecuta los algoritmos de una pagina siguiendo el orden en que estan escritos,
´
´
comenzando por la parte superior de la pagina y finalizando por su parte inferior, de
´
forma completamente analoga a como si se tratara de la ejecucion de un fragmento de
´
´
codigo de un programa escrito en Java.
´
En la Figura 5.1 se muestra el algoritmo de simulacion de Ejs, es decir, la secuencia de
´
´
tareas que realiza Ejs para ejecutar cualquier laboratorio virtual. Estas son las siguientes2 :
1. Ejs crea las variables y les asigna sus correspondientes valores de inicializacion. Para
´
ello, primero realiza las asignaciones descritas en el panel Variables y a continuacion
´
ejecuta los algoritmos descritos en el panel Inicializacion.
´
1 Ejs permite cambiar la posicion relativa de una pagina respecto a las demas paginas del panel. Es decir, permite
´
´
´
´
desplazarla hacia la izquierda o hacia la derecha. Esta opcion aparece en el menu para la gestion de paginas (vea
´
´
´
´
la Figura 7.3). Para desplegar este menu es preciso situar el raton sobre la lengueta de la ventana que se desea
´
´
¨
desplazar y pulsar el boton derecho del raton.
´
´
2 Esta explicacion esta extra´da de la Seccion 3.3 del texto (Esquembre 2004b)
´
´
ı
´
42

´
´
TEMA 5. CONCEPTOS BASICOS PARA LA DESCRIPCION DEL MODELO

Inicio
Declaración de variables
(Panel Variables)

tiempo, deltaTiempo, u0, w, u, i

tiempo
deltaTiempo
u0
w

=
0.0;
=
0.05;
= 10.0;
= 100.0;

Inicialización de variables
(columna Valor del panel
Variables)
Ejecución de los algoritmos
del panel Inicialización

u = u0 * Math.sin( w * tiempo );
i = u / R;

Ejecución de los
algoritmos del
panel Ligaduras

Representación gráfica de resultados
(comunicación modelo vista)

sí

¿Interacción del usuario?
(comunicación vista modelo)

Ejecución de la acción
ejercida por el usuario

no
Ejecución de los
algoritmos del
panel Evolución

tiempo =

tiempo + deltaTiempo;

Figura 5.2: Algoritmo de simulacion del modelo mostrado en la Figura 2.6a.
´

2. Ejs ejecuta los algoritmos contenidos en el panel Ligaduras.
3. Ejs crea la vista de la simulacion y la muestra en pantalla, estableciendo las asociaciones
´
entre las propiedades de los elementos graficos y las variables del modelo, as´ como la
´
ı
forma en la que debe reaccionarse ante las acciones del usuario sobre el modelo.
En este punto, el modelo se encuentra en su estado inicial, y la vista refleja los valores
de las variables en este estado.
4. Ejs examina si el usuario ha interaccionado con la vista. Pueden darse dos situaciones:
a) Si el usuario interacciona con la vista, Ejs ejecuta los algoritmos asociados a dicha
interaccion y, a continuacion, ejecuta los algoritmos del panel Ligaduras.
´
´
b) Si el usuario no interacciona con la vista, se ejecutan los algoritmos del panel
Evolucion y seguidamente los del panel Ligaduras.
´
5. Ejs representa en la vista del laboratorio el nuevo estado del modelo que acaba de
evaluarse en el paso anterior.
6. Ejs salta al Paso 4.
Ejemplo 5.3.1. En el caso del modelo mostrado en la Figura 2.6a, que esta compuesto por un
´
generador de tension y una resistencia, el algoritmo de la simulacion podr´a ser el mostrado en
´
´
ı
la Figura 5.2. El modelo ordenado y resuelto, y con la causalidad computacional se˜ alada es
n
el representado por las Ecs. (2.24 – 2.25).
´
5.3. EL ALGORITMO DE SIMULACION DE EJS

43

Una vez que se ha realizado la asignacion de la causalidad computacional del modelo, la
´
descripcion del mismo empleando los paneles de Ejs es un proceso sistematico:
´
´
– La asignacion de valor a los parametros se realiza en el panel Variables, al declararlos, o
´
´
bien en el panel Inicializacion.
´
– En el modelo de este ejemplo no hay variables de estado. Si las hubiera, se fijar´a su valor
ı
inicial de forma analoga a como se asigna valor a los parametros: en el panel Variables,
´
´
al declararlas, o bien en el panel Inicializacion.
´
– La secuencia ordenada de asignaciones que realiza el calculo de las variables algebraicas
´
se escribe en el panel Ligaduras.
– En el panel Evolucion se describe como debe realizarse el calculo de las variables de
´
´
´
estado.
– Cuando el panel Evolucion contiene alguna pagina EDO, Ejs realiza automaticamente el
´
´
´
incremento de la variable tiempo, de acuerdo con los parametros del metodo de integracion
´
´
´
fijados por el usuario. Cuando no hay ningun panel EDO, como en este caso, el usuario
´
del modelo debe ocuparse de escribir el codigo de avance de la variable tiempo:
´
• Se define un parametro (en este ejemplo, deltaT iempo), que representa el tama˜ o
´
n
del paso de avance en el tiempo. Cambiando el valor asignado a este parametro,
´
el usuario puede controlar en que instantes de tiempo evalua Ejs el modelo.
´
´
• Se escribe la ecuacion de avance en el tiempo (tiempo = tiempo + deltaT iempo).
´

Ejemplo 5.3.2. La simulacion del modelo del circuito electrico representado en la Figura 2.1
´
´
puede realizarse empleando Ejs. La asignacion de la causalidad computacional de este modelo
´
se explico en el Ejemplo 2.5.1. El modelo ordenado, resuelto, y con la causalidad computacional
´
se˜ alada es el siguiente:
n

[u] =
[iR2 ] =
[iR1 ] =
[iC ] =
[deruC ] =
d [uC ]
dt

=

u0 · sin (ω · t)
uC
R2
u − uC
·
R1
iR1 − iR2
iC
C

(5.2)

deruC

(5.7)

(5.3)
(5.4)
(5.5)
(5.6)

Si se desea emplear uno de los metodos de integracion de Ejs para el calculo de las variables
´
´
´
de estado, es preciso:
– Expresar la derivada de cada una de las variables de estado en funcion unicamente
´ ´
de variables de estado, parametros y la variable tiempo. Puesto que se ha asignado la
´
causalidad computacional del modelo, las manipulaciones necesarias para ello se pueden
realizar de manera sencilla. En este ejemplo:
d [uC ]
iC
iR1 − iR2
= deruC =
=
=
dt
C
C

u−uC
R1

−

uC
R2

C

=

u0 ·sin(ω·t)−uC
R1

C

−

uC
R2

(5.8)

Es decir, para calcular uC debe emplearse la expresion siguiente:
´
u0 ·sin(ω·t)−uC

u

− RC
d [uC ]
R1
2
=
(5.9)
dt
C
– Deben escribirse las expresiones calculadas anteriormente para la derivada de las variables de estado en una pagina ODE, dentro del panel Evolucion. En este ejemplo, habr´a
´
´
ı
que escribir la Ec. (5.9) en una pagina EDO del panel Evolucion.
´
´
´
´
TEMA 5. CONCEPTOS BASICOS PARA LA DESCRIPCION DEL MODELO

44

Inicio
tiempo, deltaTiempo, u0, w, R1, R2, C,
uC, u, iR1, iR2, iC, deruC

tiempo
deltaTiempo
u0
w
R1
R2
C
uC

=
0.0;
=
0.05;
= 10.0;
= 100.0;
=
1.0;
=
2.0;
=
0.00001;
=
3.5;

Declaración de variables
(Panel Variables)

Inicialización de variables
(columna Valor del panel
Variables)

Ejecución de los algoritmos
del panel Inicialización
u
iR1
iR2
iC
deruC

=
=
=
=
=

u0 * Math.sin( w * tiempo );
( u – uC ) / R1;
uC / R2;
iR1 – iR2;
iC / C;

Ejecución de los
algoritmos del
panel Ligaduras

Representación gráfica de resultados
(comunicación modelo vista)

sí

¿Interacción del usuario?
(comunicación vista modelo)

Ejecución de la acción
ejercida por el usuario

no
Ejecución de los
algoritmos del
panel Evolución

En una página EDO:
d uC / d tiempo =
((u0 * Math.sin( w * tiempo ) – uC ) / R1 – uC / R2) / C

Figura 5.3: Algoritmo de simulacion del modelo del circuito RC de la Figura 2.1.
´
´
5.3. EL ALGORITMO DE SIMULACION DE EJS

45

El algoritmo de la simulacion se muestra en la Figura 5.3. Observe que:
´
– Las asignaciones que permiten calcular las variables algebraicas y las derivadas de las
variables de estado, se incluyen en el panel Ligaduras.
– Es preciso asignar la causalidad computacional a las ecuaciones del modelo para saber
como deben ordenarse dentro del panel Ligaduras y que variable debe despejarse de cada
´
´
ecuacion.
´
– El calculo de las variables de estado, mediante integracion de sus derivadas, debe incluir´
´
se en el panel Evolucion. Si se desea emplear uno de los metodos de integracion de Ejs,
´
´
´
debe emplearse una pagina EDO y expresar la derivada de cada variable de estado en
´
funcion unicamente de variables de estado, parametros y la variable tiempo.
´ ´
´
– Cuando se emplea una pagina EDO, Ejs gestiona automaticamente el incremento de la
´
´
variable tiempo a lo largo de la simulacion.
´
Los calculos que realiza Ejs para ejecutar la simulacion son los indicados a continuacion,
´
´
´
suponiendo que no se produce ninguna interaccion por parte del usuario, y que se emplea el
´
metodo de integracion de Euler expl´cito con un tama˜ o del paso igual al valor del parametro
´
´
ı
n
´
deltaT iempo.
1. Asignacion de valor a la variable tiempo:
´
tiempo
=
0.0;
2. Asignacion de valor a los parametros del modelo:
´
´
deltaTiempo =
0.05;
u0
= 10.0;
w
= 100.0;
R1
=
1.0;
R2
=
2.0;
C
=
0.00001;
3. Asignacion de valor inicial a la variable de estado:
´
uC
=
3.5;
4. Calculo del valor inicial de las variables algebraicas:
´
u
= u0 * Math.sin( w * tiempo );
iR1
= ( u - uC ) / R1;
iR2
= uC / R2;
iC
= iR1 - iR2;
deruC = iC / C;
5. Comunicacion de los valores de las variables y los parametros a la vista del laboratorio
´
´
virtual para su representacion grafica.
´
´
6. Calculo del valor de la variable de estado en el instante tiempo + deltaT iempo (aplicando el
´
metodo de Euler expl´cito):
´
ı
uC = uC + deltaTiempo * ( (u0*Math.sin(w*tiempo)-uC)/R1 - uC/R2 ) / C;
7. Incremento de la variable tiempo:
tiempo = tiempo + deltaTiempo;
8. Calculo de las variables algebraicas en el instante tiempo:
´
u
= u0 * Math.sin( w * tiempo );
iR1
= ( u - uC ) / R1;
iR2
= uC / R2;
iC
= iR1 - iR2;
deruC = iC / C;
9. Volver al Paso 5.
Si se produce interaccion por parte del usuario, t´picamente sera para modificar el valor
´
ı
´
de alguno de los parametros o de las variables de estado del modelo. Una vez realizado
´
el cambio, se ejecuta el panel Ligaduras: se recalcula el valor de las variables algebraicas
correspondientes a ese nuevo valor de los parametros y de las variables de estado. Una vez
´
hecho esto, se establece la comunicacion con la vista, para representar los valores calculados,
´
y se continua con la integracion del modelo (es decir, se ejecuta el panel Evolucion).
´
´
46

´
´
TEMA 5. CONCEPTOS BASICOS PARA LA DESCRIPCION DEL MODELO

Figura 5.4: Ejemplo de declaracion e inicializacion de variables.
´
´

´
´
5.4. Declaracion e inicializacion de las variables
De las explicaciones anteriores, se concluye que es preciso declarar y asignar valor inicial
a los siguientes tipos de variables del modelo:
– La variable tiempo, que t´picamente se inicializara al valor cero.
ı
´
– Las constantes y parametros.
´
– Las variables de estado, tanto continuas como discretas.
Es preciso declarar, pero no inicializar, los siguientes tipos de variables:
– Las variables algebraicas.
– Las derivadas de las variables de estado (variables auxiliares que se han introducido al
analizar la causalidad computacional del modelo).
No es preciso inicializar estas variables debido a que su valor en el instante inicial de
la simulacion lo calcula Ejs de ejecutar el codigo del panel Ligaduras (vea la Figura 5.1).
´
´
En cualquier caso, si se inicializa alguna de estas variables, este valor sera sobreescrito al
´
ejecutar el panel Ligaduras.
La inicializacion de las variables se realiza en dos paneles: Variables e Inicializacion (vea
´
´
nuevamente la Figura 5.1):
– En primer lugar, Ejs ejecuta las asignaciones que el usuario haya escrito en el panel
Variables.
– A continuacion, Ejs ejecuta los algoritmos que el usuario haya definido en el panel
´
Inicializacion
´
A continuacion se describe cada uno de ellos.
´

El panel Variables
En la Figura 5.4 se muestra un ejemplo de declaracion e inicializacion de variables. A
´
´
continuacion, se explica el significado de cada uno de los campos.
´
El nombre de la variable debe escribirse en la correspondiente casilla de la columna
Nombre.
´
´
5.4. DECLARACION E INICIALIZACION DE LAS VARIABLES

47

Figura 5.5: Ejemplo de inicializacion de una variable vectorial.
´

Al asignar nombres, debe tenerse en cuenta que no puede asignarse el mismo nombre a
dos variables diferentes. Para evitar que, por error, se asigne el mismo nombre a dos variables
diferentes del laboratorio virtual (por ejemplo, a una variable del modelo y a una variable
definida en la vista), es recomendable asignar a las variables nombres descriptivos de su
funcion.
´
En la columna Tipo debe indicarse el tipo de cada variable. En Ejs las variables pueden
ser de los tipos siguientes:
– boolean: cuando solo puede tomar dos valores: true o false.
´
– int: variable de tipo entero.
– double: variables de tipo real.
– String: variables del tipo cadena de caracteres.
En la columna Dimension debe indicarse la dimension de la variable. Si es una variable
´
´
escalar (es decir, no es un vector ni una matriz), la casilla debe dejarse vac´a. Si alguna de las
ı
variables es un vector o una matriz, debe indicarse su dimension.
´
Ejemplo 5.4.1. Si se escribe [10] en la casilla Dimension de la variable q, se esta declarando
´
´
un vector de 10 componentes: q [0], q [1], · · · , q [9]. Si se escribe [10] [20], se esta declarando una
´
matriz de 10 filas (de la 0 a la 9) y 20 columnas (de la 0 a la 19).
En la columna Valor, puede introducirse el valor inicial de la variable (es opcional), que
puede ser un valor constante o una expresion. Este “valor inicial” es el valor que se asigna a
´
la variable al comienzo de la simulacion. Cuando se asigna un valor inicial a una variable
´
vectorial o matricial, Ejs inicializa todos los elementos de la variable igualandolos a ese
´
determinado valor.

El panel Inicializacion
´
En algunos modelos es preciso realizar determinados calculos para asignar valor inicial a
´
alguna de las variables. El codigo Java que describe como han de realizarse estos calculos
´
´
´
puede escribirse en el panel Inicializacion.
´
Ejemplo 5.4.2. Cuando se quiere asignar un valor inicial diferente a cada uno de los elementos
de una variable vectorial o matricial, debe hacerse en el panel Inicializacion.
´
En la Figura 5.5 se muestra el codigo para realizar la inicializacion de los componentes de
´
´
un vector mediante la formula:
´
48

´
´
TEMA 5. CONCEPTOS BASICOS PARA LA DESCRIPCION DEL MODELO

Figura 5.6: Panel para la descripcion de la Evolucion.
´
´

q[0] =

1
n−1

q[i] =

−q[i − 1] +

(5.10)
2·i
n−1

para i : 1, . . . , n − 1

(5.11)

donde se supone que la variable q es un vector de n componentes: q [0] , . . . , q [n − 1].

´
´
5.5. Descripcion de la evolucion
En la Figura 5.6 de muestra el panel Evolucion. Observe que el panel se encuentra dividido
´
en las tres partes siguientes:
– En la parte superior derecha, hay un subpanel con el letrero Pulse para crear una pagina.
´
Pulsando se crea una pagina en la cual el usuario puede escribir los algoritmos que
´
desee, por ejemplo, puede programar sus propios m´ todos de integracion para calcular
e
´
las variables de estado.
– En la parte inferior derecha, hay un subpanel con el letrero Pulse para crear una pagina
´
de EDO (EDO es el acronimo de Ecuacion Diferencial Ordinaria). Esta pagina es un
´
´
´
asistente para la definicion de ecuaciones diferenciales ordinarias. Ejs genera automati´
´
camente el codigo para integrar num´ ricamente las EDO definidas en esta pagina. Ejs
´
e
´
soporta cuatro m´ todos de integracion, entre los cuales el usuario puede escoger. Estos
e
´
son:
– Euler
´
5.6. DESCRIPCION DE LAS LIGADURAS

49

– Punto medio (Euler-Richardson)
– Runge-Kutta (4o orden)
– Runge-Kutta-Fehlberg (4o -5o orden)
En la Seccion 5.8 se describen brevemente los fundamentos de estos algoritmos. En
´
cualquier caso, el codigo que genera Ejs para una pagina EDO realiza las dos tareas
´
´
siguientes:
1. Calcula el valor de las variables de estado, aplicando para ello el algoritmo correspondiente al m´ todo de integracion que ha seleccionado el usuario. Si el valor actual
e
´
de la variable tiempo es t, y el tamano del paso de integracion es ∆t, este valor
˜
´
calculado de las variables de estado es el valor de las mismas en el instante de
tiempo t + ∆t.
2. Incrementa el valor de la variable tiempo en ∆t.
Puesto que el codigo generado por Ejs para una pagina EDO incrementa el valor de la
´
´
variable tiempo, en un laboratorio virtual no puede haber m´ s de una p´ gina de
a
a
EDO.
Igualmente, si el laboratorio no tiene ninguna pagina EDO, el usuario debe gestionar
´
por s´ mismo el incremento de la variable tiempo. Este es el caso del laboratorio virtual
ı
descrito en la Seccion 7.
´
– En la parte izquierda, hay un subpanel que contiene el letrero Imagenes por segundo
´
(abreviado: IPS), debajo del cual hay un indicador que el usuario puede desplazar verticalmente arrastrandolo con el raton. Con ello puede regular la velocidad de ejecucion de
´
´
´
la simulacion. En concreto, determina el numero de pasos en el tiempo que avanzara la
´
´
´
simulacion en un segundo de tiempo real3 . Cuanto mayor sea el numero de imagenes
´
´
´
por segundo, mayor sera la velocidad con que se visualizara la evolucion del sistema.
´
´
´
En la parte inferior se encuentra el boton Arranque. Cuando esta activado, la simulacion
´
´
´
comienza tan pronto como es ejecutado el laboratorio virtual.
Si esta desactivado la simulacion no comenzara cuando se ejecute el laboratorio virtual.
´
´
´
La utilidad de ello es permitir que el usuario realice ciertas tareas antes de que comience
la simulacion (por ejemplo, cambiar el valor de ciertas variables). En este caso, es
´
preciso definir un boton de arranque (en la vista del laboratorio virtual) que el usuario
´
debera pulsar para que se inicie la simulacion. Este boton de arranque debera tener
´
´
´
´
asociada como accion una llamada al m´ todo play(). Se trata de un m´ todo predefinido
´
e
e
de Ejs que hace que comience la ejecucion de la simulacion.
´
´

´
5.6. Descripcion de las ligaduras
En general, en el panel Ligaduras se escriben los algoritmos para el calculo de las variables
´
algebraicas del modelo.
Como puede verse en la Figura 5.1, las ecuaciones de ligadura son aquellas que describen
el comportamiento del modelo, no solo durante su evolucion en el tiempo, sino tambi´ n en el
´
´
e
caso de que el usuario realice cualquier cambio interactivo en el valor de alguna variable. Esta
es una de las diferencias conceptuales entre las ecuaciones de evolucion y las ecuaciones de
´
ligadura.

5.7. M´ todos propios del usuario
e
El usuario puede definir, en el panel Propio, todos aquellos metodos en lenguaje Java que
´
precise para la definicion del modelo o de la vista. T´picamente, los m´ todos se emplean para
´
ı
e
definir acciones sobre el modelo que son activadas desde la vista (por ejemplo, cuando el
usuario pulsa un boton).
´
3 La simulacion avanza a pasos ∆t en el tiempo simulado, con lo cual, en un segundo de tiempo real el tiempo
´
simulado avanzara IPS · ∆t.
´
´
´
TEMA 5. CONCEPTOS BASICOS PARA LA DESCRIPCION DEL MODELO

50

Estos m´ todos pueden ser invocados desde cualquier parte de la simulacion, y esta es
e
´
´
su unica finalidad. Es decir, a excepcion de los puntos donde son invocados, durante la
´
´
simulacion no se realiza ninguna otra llamada a estos m´ todos.
´
e

´
5.8. Los algoritmos de integracion de Ejs
Como se ha indicado anteriormente, Ejs soporta cuatro algoritmos para la integracion de
´
las ecuaciones diferenciales ordinarias:
–
–
–
–

Euler expl´cito
ı
Punto medio (Euler-Richardson)
Runge-Kutta (4o orden)
Runge-Kutta-Fehlberg (4o -5o orden)

A continuacion se describe cada uno de ellos.
´

M´ todo de Euler expl´cito
e
ı
La funcion de paso del m´ todo de Euler para la ecuacion diferencial ordinaria
´
e
´
dx
= f (x, t)
dt

(5.12)

xi+1 = xi + f (xi , ti ) · ∆t

(5.13)

es la siguiente:
que corresponde con un desarrollo de Taylor truncado en el primer orden.
Ejemplo 5.8.1. El modelo cinematico de una masa puntual (m), sobre la que actua una fuerza
´
´
(F ), consta de las ecuaciones siguientes:

v
a

=

a

dy
dt
dv
dt
F (y, v, t)
m

=

=

(5.14)
(5.15)
(5.16)

El algoritmo para integrar este modelo, empleando el metodo de Euler expl´cito, es el siguien´
ı
te:
1. Deben conocerse los valores de las variables de estado (y, v) en el instante inicial de la
simulacion (t0 ). Sean estos valores: y0 , v0 .
´
Tambien debe fijarse el tama˜ o del paso de integracion (∆t).
´
n
´
2. Calculo de la aceleracion de la part´cula (ai ), que es una variable algebraica:
´
´
ı
ai =

F (yi , vi , ti )
m

(5.17)

3. Se calcula el valor de las variables de estado en el nuevo instante de tiempo:
vi+1

= vi + ai · ∆t

(5.18)

yi+1

= yi + vi · ∆t

(5.19)

La velocidad al final del intervalo (vi+1 ) se calcula de la aceleracion al principio del intervalo
´
(ai ). Igualmente, la posicion al final del intervalo (yi+1 ) se calcula de la aceleracion al
´
´
principio del intervalo (vi ).
´
5.8. LOS ALGORITMOS DE INTEGRACION DE EJS

51

4. Avance de un paso en el tiempo e incremento del ´ndice i:
ı
ti+1
i

=
=

(5.20)
(5.21)

ti + ∆t
i+1

5. Volver al Paso 2.

M´ todo de Euler-Richardson
e
El algoritmo de Euler-Richardson usa la derivada en el principio del intervalo para estimar
´
el valor de la variable de estado en el punto medio del intervalo (tmed = t + ∆t ). A continuacion,
2
emplea la derivada en este punto medio para calcular la variable de estado al final del
intervalo.
Este algoritmo tambi´ n se conoce como algoritmo de Runge-Kutta de 2o orden o del punto
e
medio.
La funcion de paso del m´ todo de Euler-Richardson para la ecuacion diferencial ordinaria
´
e
´
dx
= f (x, t)
dt

(5.22)

es la siguiente:
xmed

=

xi + f (xi , ti ) ·

xi+1

=

xi + f

∆t
2

xmed , ti +

(5.23)
∆t
2

· ∆t

(5.24)

Ejemplo 5.8.2. El modelo de la masa puntual descrito en el Ejemplo 5.8.1 puede integrarse,
empleando el algoritmo de Euler-Richardson, de la forma siguiente:

vmed
ymed
amed

∆t
2
∆t
= yi + vi ·
2
F ymed , vmed , ti +
=
m

(5.25)

= vi + ai ·

(5.26)
∆t
2

(5.27)

y
vi+1

=

vi + amed · ∆t

(5.28)

yi+1

=

yi + vmed · ∆t

(5.29)

M´ todo de Runge-Kutta (4o orden)
e
Este m´ todo se emplea con mucha frecuencia. Requiere cuatro evaluaciones de la derivada
e
por cada paso en el tiempo. Se denomina de 4o orden porque considera el desarrollo de Taylor
hasta 4o orden. La funcion de paso para la ecuacion diferencial ordinaria
´
´
dx
= f (x, t)
dt

(5.30)
´
´
TEMA 5. CONCEPTOS BASICOS PARA LA DESCRIPCION DEL MODELO

52
es la siguiente:

k1
k2
k3
k4
xi+1

= ∆t · f (xi , ti )
k1
∆t
, ti +
2
2
k2
∆t
= ∆t · f xi + , ti +
2
2
= ∆t · f (xi + k3 , ti + ∆t)
k1
k2
k3
k4
+
+
+
= xi +
6
3
3
6
= ∆t · f

xi +

(5.31)
(5.32)
(5.33)
(5.34)
(5.35)

M´ todo de Runge-Kutta-Fehlberg (4o -5o orden)
e
Se trata de un m´ todo de 4o orden embebido dentro de un m´ todo de 5o orden. El error
e
e
cometido al aplicar el m´ todo de cuarto orden se obtiene restando las funciones paso de
e
5
ambos m´ todos, y correspondera con el t´ rmino de 5o orden del desarrollo de Taylor ( ddtxi ·
e
´
e
5
5
∆t
).
5!
La funcion de paso para la ecuacion diferencial ordinaria
´
´
dx
= f (x, t)
dt

(5.36)

es la siguiente:
k1

=

(5.37)

∆t · f (xi , ti )

k2

=

∆t · f

xi +

k3

=

∆t · f

xi +

k4

=

∆t · f

xi +

k5

=

∆t · f

xi +

k6

=

∆t · f

xi −

∆t
k1
, ti +
4
4
3
9
3
· k1 +
· k2 , ti + · ∆t
32
32
8
1932
7200
7296
12
· k1 −
· k2 +
· k3 , ti +
· ∆t
2197
2197
2197
13
439
3680
845
· k1 − 8 · k2 +
· k3 −
· k4 , ti + ∆t
216
513
4104
8
3544
1859
11
∆t
· k1 + 2 · k2 −
· k3 +
· k4 −
· k5 , ti +
27
2565
4104
40
2

(5.38)
(5.39)
(5.40)
(5.41)
(5.42)

La formula de paso de 4o orden es:
´
25
1408
2197
k5
· k1 +
· k3 +
· k4 −
216
2565
4104
5

(5.43)

16
6656
28561
9
2
· k1 +
· k3 +
· k4 −
· k5 +
· k6
135
12825
56430
50
55

(5.44)

xi+1, 4o orden = xi +
y la de 5o orden es:
xi+1, 5o orden = xi +

´
Descripcion de las ecuaciones diferenciales en la p´ gina EDO
a
Anteriormente se ha indicado que, en una pagina EDO, la descripcion de las derivadas de
´
´
las variables de estado debe hacerse unicamente en funcion de:
´
´
– variables de estado,
– constantes y parametros, y
´
– la variable tiempo.
´
5.8. LOS ALGORITMOS DE INTEGRACION DE EJS

53

A la vista de los algoritmos de los m´ todos de integracion de Euler-Richardson, R-K y Re
´
K-F, la razon de ello es comprensible: estos m´ todos requieren la evaluacion de la derivada
´
e
´
en instantes intermedios del paso de integracion.
´
Por la forma de trabajar del algoritmo de Ejs, para posibilitar la evaluacion de la derivada
´
en los instantes intermedios del paso de integracion, es necesario que esta se exprese uni´
´
´
camente en funcion de variables de estado, variables que permanezcan constantes durante
´
el paso de integracion (es decir, las constantes y los parametros del modelo), y la variable
´
´
tiempo.
Lo anterior es equivalente a decir que la expresion de la derivada que se introduce en una
´
pagina EDO no puede contener variables algebraicas.
´
54

´
´
TEMA 5. CONCEPTOS BASICOS PARA LA DESCRIPCION DEL MODELO
Tema 6

Conceptos b´ sicos para la
a
´
descripcion de la vista

Objetivos: Una vez estudiado el contenido del tema deber´a saber:
ı
´
• Realizar las acciones basicas para configurar la vista de un laboratorio
virtual.
´
´
• Cual es la utilidad del panel Arbol de elementos.
´
• Cual es la utilidad del panel Elementos para la vista.
• Reconocer las caracter´sticas fundamentales de algunas clases de eleı
´
mentos graficos.

La vista del laboratorio virtual es la interfaz entre el usuario y el modelo. Mediante la
manipulacion de los controles de la vista, el usuario puede:
´
– Controlar la ejecucion de la simulacion, por ejemplo, deteni´ ndola o reiniciandola.
´
´
e
´
– Cambiar el valor de los parametros, de las variables de entrada y de las variables de
´
estado del modelo.
La definicion de la vista de un laboratorio virtual se realiza en el panel Vista (vea la Figura
´
´
6.1). Este panel se subdivide en dos paneles: el panel Arbol de elementos y el panel Elementos
para la vista.
El panel Elementos para la vista se divide en tres areas, donde se encuentran los iconos de
´
todas las clases que se pueden usar para componer la vista. Estas tres areas se denominan
´
Contenedores, Basicos y Dibujo. A su vez, el area de elementos llamada Dibujo contiene tres
´
´
paneles con iconos que representan clases de elementos graficos: Basicos, Grafos y cuerpos,
´
´
y Campos. Al situar el raton sobre cualquiera de los iconos se obtiene un mensaje con
´
informacion acerca de su finalidad.
´
´
El panel Arbol de elementos muestra la composicion de la vista del laboratorio virtual. La
´
vista esta compuesta por elementos graficos organizados formando una estructura en arbol.
´
´
´
Para desplegar el menu de un elemento grafico, hay que seleccionar dicho elemento en el
´
´
´
panel Arbol de la vista y hacer clic con el boton derecho del raton.
´
´
En la siguiente seccion se explica como crear la vista del laboratorio, as´ como el procedi´
´
ı
miento para seleccionar y editar el menu de un determinado elemento grafico. Las secciones
´
´
posteriores describen algunas clases de elementos graficos.
´

55
56

´
´
TEMA 6. CONCEPTOS BASICOS PARA LA DESCRIPCION DE LA VISTA

Figura 6.1: Panel Vista de un laboratorio. Se muestra el menu del elemento Traza.
´

´
6.1. Arbol de elementos
La vista del laboratorio virtual se compone de elementos graficos, los cuales pueden
´
situarse unos dentro de otros, formando una estructura de arbol.
´
Decimos que un elemento b es padre de un elemento c, si b contiene a c. Si b es padre de
c, entonces c es hijo de b. En el arbol de elementos se observara la existencia de un enlace
´
´
directo entre c y b.
Un padre puede tener varios hijos, pero un hijo solo puede tener un padre. As´, por ejem´
ı
plo, en la Figura 6.1 el elemento grafico PanelDibujo tiene dos hijos (Particula1 y Particula2)
´
y un padre (Ventana).
Es importante el orden relativo de los hijos, ya que un hijo se dibuja encima de los
hijos situados por debajo del mismo en el arbol de elementos. Por ejemplo, en la Figura
´
6.1 Particula1 se encuentra por encima de Particula2 en el arbol de elementos de la vista.
´
Si estos dos elementos tienen el mismo tamano y posicion dentro del PanelDibujo, solo se
˜
´
´
vera Particula1, ya que Particula1 oculta a Particula2.
´
Como se observa en la Figura 6.1, en el arbol de elementos hay siempre un elemento ra´z,
´
ı
denominado Vista de la simulacion. Este es el elemento de nivel superior, en el cual se ubican
´
todos los elementos graficos que componen la vista. Este elemento debe tener siempre como
´
hijos elementos graficos de la clase Ventana o VentanaDialogo.
´
´
Para situar un elemento grafico en el arbol de la vista, hay que seguir los pasos siguientes:
´
´
6.2. CLASES DE ELEMENTOS DE LA VISTA

57

1. Seleccionar la clase del elemento grafico. Para ello, debe hacer clic con el raton sobre el
´
´
´
icono de la clase de elemento grafico en cuestion. Este estara situado dentro del panel
´
´
´
de Elementos para la vista. Al hacer esto, el icono queda inscrito en un recuadro oscuro,
que senaliza que esa clase de elemento ha sido seleccionada. Observe que al posicionar
˜
el raton sobre el elemento se obtiene informacion sobre su finalidad.
´
´
2. Definir tantos objetos como desee de la clase anteriormente seleccionada. Para ello, debe
hacer clic con el raton sobre el elemento grafico padre del nuevo elemento que esta a
´
´
´
punto de crear. Observe que al situar el raton sobre cualquier punto de esta ventana, el
´
curso adquiere la forma de una varita magica.
´
Para obtener el menu de un elemento grafico hay que situar el raton sobre dicho elemento
´
´
´
y hacer clic con el boton derecho. En la Figura 6.1 se muestra el menu del elemento Traza.
´
´
Algunas opciones de los menus de los elementos graficos son:
´
´
– Propiedades: permite acceder al menu de propiedades del elemento.
´
– Renombrar: permite cambiar el nombre del elemento. No puede haber dos elementos
del arbol de elementos de la vista con el mismo nombre.
´
– Cambiar padre: permite cambiar al elemento de padre.
– Mover arriba: permite subir el elemento una posicion dentro de los elementos que
´
comparten el mismo elemento padre.
– Mover abajo: permite bajar el elemento una posicion dentro de los elementos que
´
comparten el mismo elemento padre.
– Eliminar: permite eliminar al elemento del arbol de elementos.
´
En el siguiente apartado, se describen las caracter´sticas fundamentales de algunas claı
ses.

6.2. Clases de elementos de la vista
Las clases de elementos de la vista se dividen en los tres tipos siguientes:
– Contenedores: se caracterizan porque pueden tener hijos.
– B´ sicos: no pueden tener hijos. El padre de estas clases son elementos de tipo Contenea
dor salvo las clases PanelDibujo, PanelDibujo3D y PanelConEjes.
– Dibujo: no pueden tener hijos. El padre de estas clases son elementos de la clases
PanelDibujo, PanelDibujo3D o PanelConEjes.
A continuacion, se describe brevemente cada uno de ellos.
´

6.3. Algunas clases de elementos de tipo Contenedor
Las clases de este tipo pueden contener otros elementos graficos. A continuacion se
´
´
describen las caracter´sticas fundamentales de las clases Ventana, VentanaDialogo, Panel,
ı
PanelDibujo, PanelDibujo3D y PanelConEjes.

Clases Ventana y VentanaDialogo
El padre de los elementos de estas clases es la Vista de la Simulacion. Estas dos clases
´
tienen muchas caracter´sticas comunes y comparten las mismas propiedades. Se diferencian
ı
fundamentalmente en que el cierre de un elemento de la clase Ventana conlleva la finalizacion
´
de la simulacion. Sin embargo, al cerrar un elemento de la clase VentanaDialogo la simulacion
´
´
continua.
´
La ventana de propiedades se muestra en la Figura 6.2. A continuacion, se describen sus
´
propiedades:
´
– Distribucion. La distribucion de la ventana segun la pol´tica de distribucion especifica´
´
ı
´
da. Se puede elegir una de las siguientes pol´ticas de distribucion:
ı
´
´
´
TEMA 6. CONCEPTOS BASICOS PARA LA DESCRIPCION DE LA VISTA

58

Figura 6.2: Propiedades del elemento Ventana.

–

–
–
–

• Margenes: los hijos se situan en cinco areas: centro, izquierda, derecha, arriba o
´
´
´
abajo. Cambiar el tamano de la ventana solo cambia el tamano del area del centro
˜
´
˜
´
sin cambiar el area de los margenes (izquierda, derecha, arriba o abajo).
´
´
• Caja horizontal: los hijos se situan horizontalmente de izquierda a derecha.
´
• Caja vertical: los hijos se situan verticalmente de arriba a abajo.
´
• Rejilla: se indica el numero de filas y columnas. Los hijos se van colocando por filas
´
comenzando por arriba. Dentro de una fila se van colocando de izquierda a derecha.
Todos los hijos ocupan un area del mismo tamano.
´
˜
• Flujo izquierda/centro/derecha: la distribucion flujo hace que los hijos se alineen
´
horizontalmente. Cuando no hay espacio en una l´nea se crea una fila adicional
ı
para el hijo. Izquierda/centro/derecha indica que dentro de una fila los hijos se
alinean comenzando por la izquierda/centro/derecha.
Visible. La ventana es visible cuando el valor de esta propiedad es true. Si se escribe
el nombre de una variable en la casilla de la propiedad Visible, la ventana sera visible
´
cuando dicha variable valga true.
´
Situacion. Posicion de la ventana dentro de la pantalla del ordenador.
´
Tama˜ o. Tamano de la ventana.
n
˜
Redimensionable. La ventana cambia su tamano al arrastrar un extremo de la misma
˜
con el raton cuando el valor de esta propiedad es true.
´

Clase Panel
Esta clase siempre tiene como padre a otro elemento de alguna clase de tipo contenedor.
Se usa para situar otros elementos, hijos de este elemento, segun una determinada pol´tica
´
ı
de distribucion. La propiedad distribucion se explico al describir las propiedades de las clases
´
´
´
Ventana y VentanaDialogo.

Clase PanelDibujo
Los hijos de los elementos de esta clase son del tipo Dibujo. Los elementos de la clase
PanelDibujo representan una region del plano en 2 dimensiones y proporcionan su propio
´
sistema de coordenadas. Para situar a un elemento dentro del plano del panelDibujo hay que
especificar las coordenadas x e y que ocupa en este plano (ver la Figura 6.3).
Los elementos de la clase PanelDibujo son interactivos, es decir, se puede asociar una
accion que se ejecute cuando se produzca una manipulacion del raton sobre el elemento.
´
´
´
Responden as´ a los diferentes gestos del raton segun el esquema siguiente:
ı
´
´
6.3. ALGUNAS CLASES DE ELEMENTOS DE TIPO CONTENEDOR
f
gX edcih` W edcih`Y
X
W
f
gX edcba` W edcba`Y

Figura 6.3: Sistema de coordenadas del elemento PanelDibujo.

Figura 6.4: Propiedades del elemento PanelDibujo.

Figura 6.5: Propiedades del elemento PanelDibujo3D.

59
60

´
´
TEMA 6. CONCEPTOS BASICOS PARA LA DESCRIPCION DE LA VISTA

– Cuando el usuario hace clic en el panel, se invoca la accion asociada a la propiedad
´
“Al Pulsar”. Inmediatamente despu´ s, se fijan las propiedades “X” e “Y” del panel a las
e
coordenadas de la posicion del raton, lo que invoca a su vez a la accion asociada a la
´
´
´
propiedad “Al Mover”, si la hubiera.
– Cuando el usuario mueve el raton (con el boton del raton apretado), se actualizan las
´
´
´
propiedades “X” e “Y” y se invoca la accion asociada a la propiedad “Al Mover”.
´
– Cuando el usuario finalmente suelta el boton del raton (si lo hace dentro del elemento)
´
´
se invoca la accion asociada a la propiedad “Al Soltar”.
´
El menu de propiedades de estos elementos se muestra en la Figura 6.4. Se puede especi´
ficar las dimensiones del plano que representa el elemento especificando sus coordenadas “X
M´nimo”, “X Maximo”, “Y M´nimo” e “Y Maximo”. Tambi´ n se puede dejar que se ajusten las
ı
´
ı
´
e
escalas automaticamente. Para ello, hay que introducir en las propiedades “Autoescala X” y
´
“Autoescala Y” el valor false.

Clase PanelDibujo3D
Es un contenedor especial en tres dimensiones para elementos graficos de dibujo.
´
Los elementos de esta clase representan una region tridimensional del espacio y propor´
cionan su propio sistema de coordenadas. Para situar un elemento dentro del espacio que
representan los elementos de la clase panelDibujo3D, hay que especificar las coordenadas X,
Y y Z que ocupa en este espacio.
El menu de propiedades de estos elementos se muestra en la Figura 6.5. Las dimensiones
´
de la region del espacio se especifican asignando valor a las propiedades “M´nimo X”, “Maximo
´
ı
´
X”, “M´nimo Y”, “Maximo Y”, “M´nimo Z” y “Maximo Z”. Tambi´ n se puede dejar que se ajusten
ı
´
ı
´
e
las escalas automaticamente de modo que se muestren todos los elementos graficos ubicados
´
´
en el contenedor asignando el valor true a las propiedades “Autoescala X”, “Autoescala Y” y
“Autoescala Z”.
Los elementos de esta clase responden a la interaccion del raton del siguiente modo:
´
´
– Cuando el usuario hace clic con el raton y arrastra el panel, cambia el punto de pers´
pectiva de la vista.
– Si se presiona la tecla Control mientras se opera con el raton, entonces la escena se
´
mueve en su conjunto.
– Si se presiona la tecla de mayusculas, se aplica un zoom (positivo o negativo, segun el
´
´
movimiento del raton) a toda la escena.
´
– Si la tecla que se mantiene pulsada es “Alt”, aparece un cursor tridimensional que
permite seleccionar un punto de la escena. El movimiento de este cursor responde al
movimiento bidimensional del raton afectando solamente a dos coordenadas espaciales.
´
Para forzar el movimiento en una dimension particular, debera mantenerse pulsada la
´
´
tecla correspondiente, x, y o z. Al cambiar de punto se aplican las acciones “Al pulsar”,
“Al mover” y “Al soltar”, exactamente igual que en el caso de los paneles de dibujo
bidimensionales.

Clase PanelConEjes
La clase PanelConEjes es una variante de la clase PanelDibujo. Incluye, por defecto, un
sistema de ejes coordenados. Estos elementos son interactivos y responden a la accion del
´
usuario del mismo modo que los elementos de la clase PanelDibujo.
A continuacion, se describen algunas propiedades de los elementos de esta clase (ver
´
Figura 6.6):
– T´tulo: t´tulo mostrado en la parte superior del panel.
ı
ı
– Tipo de Ejes: tipo de ejes mostrados. Se puede escoger entre tres tipos de ejes cartesianos y dos tipos de ejes polares.
6.3. ALGUNAS CLASES DE ELEMENTOS DE TIPO CONTENEDOR

Figura 6.6: Propiedades del elemento PanelConEjes.

Figura 6.7: Propiedades del elemento Boton.

Figura 6.8: Propiedades del elemento Selector.

61
´
´
TEMA 6. CONCEPTOS BASICOS PARA LA DESCRIPCION DE LA VISTA

62

– T´tulo X: t´tulo mostrado en el eje X.
ı
ı
– Pos Eje X: indica la coordenada X del cruce del eje coordenado Y con el X. Solo tiene
´
efecto cuando la propiedad “Tipo de Ejes” tiene asignado el valor Cartesian3.
– Tipo Eje X: lineal o logar´tmico en base 10. La constante LINEAR se usa para designar
ı
un tipo de eje lineal, mientras que la constante LOG10 se usa para ejes logar´tmicos.
ı
– Malla X: a esta propiedad se le asigna una variable logica o las constantes true o false.
´
Cuando esta propiedad toma el valor false no se dibuja una malla en el eje X.
– T´tulo Y: t´tulo mostrado en el eje Y.
ı
ı
– Pos Eje Y: indica la coordenada Y del cruce del eje coordenado X con el Y. Solo tiene
´
efecto cuando la propiedad “Tipo de Ejes” tiene asignado el valor Cartesian3.
– Tipo Eje Y: lineal o logar´tmico en base 10. La constante LINEAR se usa para designar
ı
un tipo de eje lineal y la constante LOG10 un tipo de eje logar´tmico.
ı
– MallaY: a esta propiedad se le asigna una variable logica o las constantes true o false.
´
Cuando esta propiedad toma el valor false no se dibuja una malla en el eje Y.
– Delta R: cuando se selecciona un tipo de ejes polares, el valor de esta propiedad indica
el paso entre l´neas de radio polar constante.
ı
– Delta Theta: cuando se selecciona un tipo de ejes polares, el valor de esta propiedad
indica el paso entre l´neas de angulo polar constante.
ı
´
– Autoescala X: a esta propiedad se le asigna una variable logica o las constantes true o
´
false. Cuando esta propiedad toma el valor true, se calcula automaticamente la escala
´
en el eje X.
– Autoescala Y: a esta propiedad se le asigna una variable logica o las constantes true o
´
false. Cuando esta propiedad toma el valor true, se calcula automaticamente la escala
´
en el eje Y.
– M´nimo X: menor valor de la coordenada X que resulta visible en el panel.
ı
– M´ ximo X: mayor valor de la coordenada X que resulta visible en el panel.
a
– M´nimo Y: menor valor de la coordenada Y que resulta visible en el panel.
ı
– M´ ximo Y: mayor valor de la coordenada Y que resulta visible en el panel.
a

6.4. Algunas clases de elementos de tipo Basicos
´
Este tipo de clases no pueden contener otros elementos graficos. A continuacion se des´
´
criben las caracter´sticas fundamentales de las clases Boton, Selector, Deslizador y CampoNuı
merico.

Boton
Un Boton es un elemento grafico al que se le pueden asociar acciones. En la Figura 6.7
´
se muestran las propiedades de los elementos de esta clase. Alguna de sus propiedades mas
´
relevantes son:
– Texto: texto mostrado por el elemento, pudiendo ser cualquier constante o variable de
tipo String.
´
– Alineacion: forma de alinear el texto en el elemento.
– Activo: el elemento responde a la accion del usuario cuando el valor de esta propiedad
´
es true. Si en esta propiedad se escribe una variable logica (tipo boolean) el elemento
´
respondera a la accion del usuario cuando la variable tome el valor true.
´
´
´
– Accion: la accion que se invoca cuando se pulsa el boton.
´
´
6.5. ALGUNAS CLASES DE ELEMENTOS DE TIPO DIBUJO

63

Selector
Un Selector es un elemento grafico que se usa para mostrar y modificar un valor logico.
´
´
Alguna de las propiedades mas relevantes de estos elementos son (ver Figura 6.8):
´
– Variable: variable logica (tipo boolean) que se “enlaza” con el selector. Este elemento
´
grafico escribe en la variable un valor true o false, en funcion de que est´ o no seleccio´
´
e
nado.
´
– Accion: accion que se ejecuta siempre que se modifica el valor del elemento Selector.
´
´
– Accion Si: accion que se ejecuta cuando la variable toma el valor true.
´
´
– Accion No: accion que se ejecuta cuando la variable toma el valor false. En el caso de
´
que est´ n asignadas tanto la propiedad Accion Si como Accion No se ejecuta primero la
e
´
´
accion asociada a Accion Si y despu´ s la asociada a Accion No.
´
´
e
´
– Activo: el elemento esta deshabilitado cuando el valor de esta propiedad es false. Si
´
en esta propiedad se escribe una variable logica (tipo boolean) el elemento se desha´
bilita cuando la variable tome el valor false. Cuando el elemento esta deshabilitado se
´
oscurece.

Deslizador
Un Deslizador es un elemento grafico que muestra y permite modificar un valor num´ rico.
´
e
Sus propiedades se muestran en la Figura 6.9. Alguna de sus propiedades fundamentales
son:
– Variable: propiedad que permite “enlazar” una variable con el deslizador. De este modo,
el valor de esta variable se modifica desplazando el deslizador entre sus dos valores
extremos.
– Formato: si su valor es no nulo, se visualiza tambi´ n el valor de la variable en forma de
e
texto.
– Al pulsar: accion que se invoca cuando se pulsa el deslizador.
´
– Al mover: accion que se invoca cuando se desplaza el deslizador.
´
– Al soltar: accion que se invoca cuando se suelta el deslizador.
´

CampoNumerico
Un CampoNumerico es un elemento que muestra y permite modificar un valor num´ rico.
e
Al modificar el valor mostrado el fondo del elemento cambia de color. Solo cuando se pulsa la
´
tecla Intro se acepta el nuevo valor y vuelve el fondo del elemento al color original. Si el valor
introducido es erroneo (es decir, no puede ser entendido por la propiedad “Formato”), el valor
´
sera rechazado y se mostrara el fondo del elemento grafico en rojo.
´
´
´
Sus propiedades se muestran en la Figura 6.10. Alguna de sus propiedades fundamentales
son:
– Variable: permite enlazar una variable de tipo double o int con el CampoNum´ rico. De
e
esta forma, al introducir un nuevo valor num´ rico y pulsar a Intro, se modifica el valor
e
de la variable.
– Formato: formato con que se visualiza el valor de la variable.
´
– Accion: accion que se invoca cuando el valor mostrado por el elemento se modifica.
´

6.5. Algunas clases de elementos de tipo Dibujo
Este tipo de clases no pueden contener otros elementos graficos. Se ubican en contene´
dores de las clases PanelDibujo, PanelDibujo3D o PanelConEjes. A continuacion se descri´
ben las caracter´sticas fundamentales de las clases Particula, Flecha, Imagen, Texto, Traza,
ı
Pol´gono.
ı
64

´
´
TEMA 6. CONCEPTOS BASICOS PARA LA DESCRIPCION DE LA VISTA

Figura 6.9: Propiedades del elemento Deslizador.

Figura 6.10: Propiedades del elemento CampoNumerico.

Figura 6.11: Propiedades del elemento Particula.
6.5. ALGUNAS CLASES DE ELEMENTOS DE TIPO DIBUJO

65

Particula
Este elemento grafico representa una forma geom´ trica sencilla. La posicion del elemento
´
e
´
dentro del contenedor se especifica introduciendo las coordenadas X, Y y Z de su posicion.
´
Solo es necesario especificar la coordenada Z si el elemento se ubica en un contenedor de
´
la clase PanelDibujo3D. Sus propiedades se muestran en la Figura 6.11. Alguna de sus
propiedades fundamentales son:
– Estilo: permite seleccionar la forma del elemento.
– X: coordenada x del elemento.
– Y: coordenada y del elemento.
– Z: coordenada z del elemento.
– Activo: indica si el elemento responde a la accion del usuario.
´
– Al pulsar: accion que se produce cuando el raton se situa sobre el elemento y se presiona
´
´
´
su boton.
´
– Al mover: accion que se produce cuando se mueve el objeto con el raton.
´
´
– Al soltar: accion que se produce cuando se deja de presionar el boton del raton.
´
´
´

Flecha
Este elemento grafico representa un vector interactivo. La posicion del elemento dentro
´
´
del contenedor se especifica dando las coordenadas cartesianas del origen y el tamano del
˜
vector segun cada uno de los ejes coordenados. En la Figura 6.12 se muestra su ventana de
´
propiedades. A continuacion se describen algunas de sus propiedades:
´
– Estilo: forma grafica del elemento, pudiendo seleccionar entre la forma de flecha, l´nea
´
ı
o cajita.
– X: coordenada x del origen del vector.
– Y: coordenada y del origen del vector.
– Z: coordenada z del origen del vector.
– Tama˜ o X: tamano del vector en el eje x.
n
˜
– Tama˜ o Y: tamano del vector en el eje y.
n
˜
– Tama˜ o Z: tamano del vector en el eje z.
n
˜
– Activo: indica si el elemento responde a la accion del usuario sobre su extremo.
´
– Movible: indica si el elemento responde a la accion del usuario sobre su origen.
´
– Al pulsar: accion que se invoca cuando el usuario hace clic con el raton sobre el
´
´
elemento.
– Al mover: accion que se invoca cuando el usuario arrastra el elemento con el raton.
´
´
– Al soltar: accion que se invoca cuando se suelta el elemento.
´

Imagen
Elemento grafico que muestra una imagen gif o gif animada. El elemento se ubica en el
´
contenedor especificando su posicion en coordenadas cartesianas y su tamano segun cada
´
˜
´
uno de los ejes coordenados. En la Figura 6.13 se muestra su ventana de propiedades. A
continuacion se describen algunas de sus propiedades:
´
– X: coordenada x del elemento.
– Y: coordenada y del elemento.
– Z: coordenada z del elemento.
– Tama˜ o X: longitud del elemento en el eje x.
n
– Tama˜ o Y: longitud del elemento en el eje y.
n
– Tama˜ o Z: longitud del elemento en el eje z.
n
– Activo: indica si el elemento responde a la accion del usuario.
´
66

´
´
TEMA 6. CONCEPTOS BASICOS PARA LA DESCRIPCION DE LA VISTA

Figura 6.12: Propiedades del elemento Flecha.

Figura 6.13: Propiedades del elemento Imagen.

Figura 6.14: Propiedades del elemento Texto.
6.5. ALGUNAS CLASES DE ELEMENTOS DE TIPO DIBUJO

67

Figura 6.15: Propiedades del elemento Traza.

– Al pulsar: accion que se invoca cuando el usuario hace clic con el raton sobre el
´
´
elemento.
– Al mover: accion que se invoca cuando el usuario arrastra el elemento con el raton.
´
´
– Al soltar: accion que se invoca cuando se suelta el elemento.
´
– Imagen: Cualquier constante o variable de tipo String. El String indica la ruta hasta el
fichero de imagen correspondiente. Puede ser una ruta relativa al directorio de trabajo o
una URL (direccion) de Internet. La imagen ha de corresponder a una imagen GIF o GIF
´
animada.

Texto
Elemento grafico que muestra un texto en unas coordenadas determinadas del contenedor
´
donde esta ubicado. En la Figura 6.14 se muestra la ventana de propiedades del elemento. A
´
continuacion se describen algunas de sus propiedades:
´
– X: coordenada x del elemento.
– Y: coordenada y del elemento.
– Z: coordenada z del elemento.
– Activo: indica si el elemento responde a la accion del usuario.
´
– Al pulsar: accion que se invoca cuando el usuario hace clic con el raton sobre el
´
´
elemento.
– Al mover: accion que se invoca cuando el usuario arrastra el elemento con el raton.
´
´
– Al soltar: accion que se invoca cuando se suelta el elemento.
´
– Texto: texto a mostrar por el elemento, que puede ser cualquier constante o variable de
tipo String.
– Fuente: tipo de fuente a usar para el texto del elemento.

Traza
Elemento grafico que dibuja una serie de puntos en unas determinadas coordenadas del
´
contenedor donde esta ubicado. Los puntos se anaden secuencialmente, y pueden visualizar´
˜
se usando marcadores en cada puntos, segmentos de union entre puntos o ambos.
´
´
´
TEMA 6. CONCEPTOS BASICOS PARA LA DESCRIPCION DE LA VISTA

68

Figura 6.16: Propiedades del elemento Poligono.

En la Figura 6.15 se muestra la ventana de propiedades del elemento. A continuacion, se
´
describen algunas de sus propiedades:
–
–
–
–
–
–

–

–
–
–
–

X: coordenada x del nuevo punto que se anade a la traza.
˜
Y: coordenada y del nuevo punto que se anade a la traza.
˜
Z: coordenada z del nuevo punto que se anade a la traza.
˜
Puntos: numero de puntos a dibujar. Si se asigna el valor 0 a la propiedad, se dibujan
´
todos los puntos.
Saltar: numero de puntos que no se dibujan hasta que se vuelve a dibujar un punto.
´
Activo: cuando se le asigna el valor false esta propiedad, no se dibujan puntos. A esta
propiedad se le puede asignar una variable logica. De este modo, cuando la variable
´
tome el valor false no se dibujaran nuevos puntos de la traza.
´
No repetir: cuando se le asigna el valor true a esta propiedad, no se dibuja un punto si
este tiene las mismas coordenadas que el punto anterior. A esta propiedad se le puede
´
asignar una variable logica. De este modo, cuando tome la variable el valor true, no se
´
dibujara un punto cuando tenga las mismas coordenadas que el punto anterior.
´
Conectar: se le asigna una variable logica o las constantes true o false. Cuando esta
´
propiedad toma el valor false, no se conecta el nuevo punto con el anterior.
Al pulsar: accion que se invoca cuando el usuario hace clic con el raton sobre el
´
´
elemento.
Al mover: accion que se invoca cuando el usuario arrastra el elemento con el raton.
´
´
Al soltar: accion que se invoca cuando se suelta el elemento.
´

Pol´gono
ı
Elemento grafico que representa un prisma poligonal o un pol´gono. Cuando se trabaja en
´
ı
dos dimensiones, la posicion del pol´gono en el contenedor donde esta ubicado se especifica
´
ı
´
dando las coordenadas cartesianas de sus v´ rtices.
e
En la Figura 6.16 se muestra la ventana de propiedades del elemento. A continuacion se
´
describen algunas de sus propiedades:
– Puntos: numero de v´ rtices del pol´gono. Puede especificarse dando una constante o
´
e
ı
variable de tipo int.
6.5. ALGUNAS CLASES DE ELEMENTOS DE TIPO DIBUJO
–
–
–
–
–
–
–
–
–

–
–

69

X: coordenadas x de los v´ rtices del elemento.
e
Y: coordenadas y de los v´ rtices del elemento.
e
Z: coordenadas z de los v´ rtices del elemento.
e
Movible: si el elemento puede moverse al arrastrar sus v´ rtices.
e
Dimensionable: si pueden modificarse interactivamente las coordenadas de sus v´ rtie
ces.
Al pulsar: accion que se invoca cuando el usuario hace clic con el raton sobre el
´
´
elemento.
Al mover: accion que se invoca cuando el usuario arrastra el elemento con el raton.
´
´
Al soltar: accion que se invoca cuando se suelta el elemento.
´
Conectado: vector de dimension igual al numero de v´ rtices del pol´gono de valores
´
´
e
ı
logicos. Un valor logico true en la posicion i del vector indica que el v´ rtice i se conecta
´
´
´
e
con una l´nea al v´ rtice i-1.
ı
e
Cerrado: se le asigna a esta propiedad una variable o constante logica. Cuando esta a
´
´
true, el conjunto de v´ rtices representa un pol´gono cerrado.
e
ı
Vertices fijos: vector de dimension igual al numero de v´ rtices del pol´gono del tipo
´
´
e
ı
boolean. Un valor logico true en la posicion i del vector indica que no se pueden modificar
´
´
interactivamente las coordenadas del v´ rtice i.
e
70

´
´
TEMA 6. CONCEPTOS BASICOS PARA LA DESCRIPCION DE LA VISTA
Parte III

Casos de estudio

71
Texto base  euclides
Tema 7

´
Programacion de un osciloscopio
virtual con Ejs

Objetivos: Una vez estudiado el contenido del tema deber´a saber:
ı
´
´
´
• Crear una pagina de Introduccion con solo texto.
´
´
• Dise˜ ar el algoritmo de simulacion de un modelo estatico y programar
n
dicho modelo usando Ejs.
´
• El uso de las clases de elementos graficos: Ventana, PanelDibujo, Panel,
´
Traza y Boton.
´
• Programar metodos propios e invocarlos desde la vista.

En este tema se describe, de forma tutorial, como programar un laboratorio virtual con
´
Ejs. En concreto, como programar un osciloscopio virtual en el cual puedan visualizarse las
´
figuras de Lissajous1 . El objetivo de dicho laboratorio es permitir que el alumno pueda
modificar interactivamente el valor de las frecuencias de las senales, as´ como el desfase,
˜
ı
observando las correspondientes figuras de Lissajous.
Este laboratorio esta disponible en el CD del curso. Se trata del fichero lissajous.xml, que
´
esta grabado en el directorio laboratoriosTexto.
´

7.1. Las figuras de Lissajous
Las figuras de Lissajous fueron descubiertas por el f´sico franc´ s Jules Antoine Lissajous
ı
e
(vea la Figura 7.1). Lissajous empleaba sonidos de diferentes frecuencias para hacer vibrar un
espejo. La luz reflejada en el espejo trazaba una curva cuya forma depend´a de la frecuencia
ı
del sonido.
Las figuras de Lissajous se obtienen de la superposicion de dos movimientos armonicos
´
´
perpendiculares:
1 Las explicaciones dadas en este Tema acerca de la programacion del osciloscopio virtual estan basadas en el
´
´
Cap´tulo 3 de (Esquembre 2002b).
ı

73
´
TEMA 7. PROGRAMACION DE UN OSCILOSCOPIO VIRTUAL CON EJS

74

Figura 7.1: Jules Antoine Lissajous (1822–1880).

x

= A · cos (ω1 · t)

(movimiento horizontal)

(7.1)

y

= A · cos (ω2 · t + δ)

(movimiento vertical)

(7.2)

La trayectoria resultante, (x (t) , y (t)), depende de la relacion de las frecuencias,
´
diferencia de fase, δ.

ω2
ω1 ,

y de la

Una de las aplicaciones de las figuras de Lissajous fue determinar la frecuencia de sonidos
o senales de radio. Se aplicaba en el eje horizontal de un osciloscopio una senal de frecuencia
˜
˜
conocida, y la senal cuya frecuencia se deseaba medir se aplicaba en el eje vertical. La forma
˜
de la figura resultante es funcion del cociente de las dos frecuencias.
´
A continuacion se describen los pasos necesarios para programar el osciloscopio virtual con
´
Ejs. Para una mejor comprension de las explicaciones, se recomienda que los vaya realizando
´
por usted mismo. Para ello, comience por arrancar el entorno de simulacion Ejs (segun se
´
´
explica en la Seccion 4.5).
´

´
´
7.2. Descripcion de la introduccion
Al arrancar Ejs, aparece por defecto seleccionado el panel Introduccion. Dentro de este
´
panel deben crearse las paginas que componen la introduccion del laboratorio virtual. Para
´
´
crear una pagina, haga clic con el raton sobre la frase “Pulse para crear una pagina” (vea la
´
´
´
Figura 4.2).
Al hacerlo, se abre una ventana en la cual Ejs pregunta qu´ nombre se desea dar a la
e
nueva pagina. D´ le un nombre a la pagina de introduccion que esta a punto de crear, por
´
e
´
´
´
ejemplo: Figuras de Lissajous. Escriba en la zona de texto de la pagina lo que desee. Por
´
ejemplo (ver la Figura 7.2):
Las figuras de Lissajous se obtienen de la superposicion de dos movimientos armoni´
´
cos perpendiculares.
Lo que usted escriba en esta pagina, sera traducido por Ejs a codigo HTML. Para ver el
´
´
´
codigo HTML generado, seleccione Ver / Ver Codigo Fuente.
´
´
´
´
7.2. DESCRIPCION DE LA INTRODUCCION

Figura 7.2: Contenido de la pagina Figuras de Lissajous, del panel Introduccion.
´
´

Para desplegar el menú debe situar el ratón sobre la lengüeta de la ventana y pulsar el botón derecho del ratón

Figura 7.3: Menu para la gestion de las paginas.
´
´
´

Figura 7.4: El panel Introduccion contiene dos paginas: Figuras de Lissajous y Autores.
´
´

75
76

´
TEMA 7. PROGRAMACION DE UN OSCILOSCOPIO VIRTUAL CON EJS

Inspeccione las diferentes opciones de la barra de herramientas con el fin de familiarizarse
con ellas.
Para anadir una segunda pagina de introduccion, debe pulsar el boton derecho del raton
˜
´
´
´
´
sobre la lengueta de la pagina de introduccion que ha creado anteriormente (Figuras de
¨
´
´
Lissajous). Se despliega un menu, en el cual puede escoger realizar operaciones sobre las
´
paginas (vea la Figura 7.3).
´
Entre estas operaciones esta la creacion de paginas nuevas. Para ello debe hacer clic sobre
´
´
´
la opcion A˜ adir una pagina. De a esta segunda pagina de introduccion el nombre Autor, y
´
n
´
´
´
escriba su nombre en el espacio de texto de la pagina. En la Figura 7.4 se muestra un ejemplo.
´

´
7.3. El algoritmo de la simulacion
Como paso previo a programar el modelo de un laboratorio virtual empleando Ejs, deben
seguirse los dos pasos siguientes:
1. Clasificar las variables del modelo en conocidas y desconocidas. En el caso del modelo
del osciloscopio, que esta compuesto por las Ecuaciones (7.1) y (7.2):
– Las variables conocidas son los parametros (A, ω1 , ω2 , δ) y la variable tiempo (t).
´
– Las variables desconocidas son las dos variables algebraicas: x, y.
2. Aplicar el algoritmo de asignacion de la causalidad computacional, con el fin de decidir
´
como deben ordenarse las ecuaciones y qu´ variable debe evaluarse de cada ecuacion.
´
e
´
La aplicacion de dicho algoritmo es trivial en el caso del modelo del osciloscopio:
´

[x] =
[y] =

A · cos (ω1 · t)
A · cos (ω2 · t + δ)

(7.3)
(7.4)

En la Figura 5.1 se mostro el algoritmo de la simulacion de Ejs, que es el que emplea Ejs
´
´
para ejecutar cualquier laboratorio virtual.
En la Figura 7.5 se muestra una posible forma de programar el osciloscopio virtual.
Como se explicara mas adelante, los parametros maximo, minimo y n van a emplearse en
´
´
´
la definicion de la vista:
´
– Las variables maximo y minimo son de tipo double, y van a emplearse en la definicion de
´
los extremos de escala del osciloscopio.
– La variable n, de tipo entero (int), representa el numero de puntos de que va a constar
´
la traza de la figura de Lissajous. Es decir, representa la “memoria” de la pantalla del
osciloscopio.
El parametro deltaT iempo se emplea para incrementar la variable tiempo. Es decir, el valor
´
de este parametro determina el tamano del paso de avance en el tiempo en la simulacion.
´
˜
´
Esta situacion se produce frecuentemente: las variables del laboratorio virtual (que esta des´
´
crito mediante algoritmos codificados en los diferentes paneles) no solo son las variables
´
del modelo matematico (descrito mediante ecuaciones) sino ademas otras variables que se
´
´
emplean:
– En los metodos numericos. En el caso del osciloscopio, el parametro deltaT iempo no
´
´
´
interviene en el modelo matematico: se emplea para especificar el tamano del paso de
´
˜
avance en el tiempo de la simulacion. Esto significa que la simulacion consistira en
´
´
´
resolver el modelo (es decir, calcular el valor de sus variables) en los instantes de tiempo
0, deltaT iempo, 2 · deltaT iempo, 3 · deltaT iempo, . . .
– En la definicion de las acciones y de la vista. En este caso, los parametros maximo,
´
´
minimo y n se definen para personalizar las propiedades de la vista.
A continuacion se explica como declarar e inicializar las variables del modelo en Ejs.
´
´
´
7.3. EL ALGORITMO DE LA SIMULACION

77

Inicio
Declaración de variables
(Panel Variables)

tiempo, deltaTiempo, amplitud, frecuencia1,
frecuencia2, desfase, x, y,maximo, minimo, n

tiempo
deltaTiempo
amplitud
frecuencia1
frecuencia2
desfase

= 0.0;
= 0.05;
= 30.0;
= 1.05;
= 1.00;
= 0.0;

maximo = 1.2 * amplitud;
minimo = -1.2 * amplitud;
n
= 150;

Ventana
Variables
principales

Inicialización de variables
(columna Valor del panel
Variables)

Ventana
Variables
auxiliares

Ejecución de los algoritmos
del panel Inicialización
x = amplitud * Math.cos( frecuencia1 * tiempo );
y = amplitud * Math.cos( frecuencia2 * tiempo + desfase );

Ejecución de los
algoritmos del
panel Ligaduras

Representación gráfica de resultados
(comunicación modelo vista)

sí

¿Interacción del usuario?
(comunicación vista modelo)

Ejecución de la acción
ejercida por el usuario

no
Ejecución de los
algoritmos del
panel Evolución

tiempo =

tiempo + deltaTiempo;

Figura 7.5: Algoritmo de la simulacion del osciloscopio virtual.
´
78

´
TEMA 7. PROGRAMACION DE UN OSCILOSCOPIO VIRTUAL CON EJS

Figura 7.6: Seleccion del panel Variables.
´

Figura 7.7: Pagina Variables principales, dentro del panel Variables.
´

´
´
7.4. Declaracion e inicializacion de las variables
La declaracion de las variables se realiza en el panel Variables. Para acceder a este panel,
´
seleccione Modelo, en la regleta superior de la interfaz de Ejs, y Variables en la regleta situada
debajo (vea la Figura 7.6).
Dentro del panel Variables pueden crearse una o varias paginas, en las cuales se realiza
´
la declaracion de las variables y, opcionalmente, su inicializacion. En el caso del osciloscopio
´
´
virtual van a definirse dos paginas:
´
– En una pagina, a la que se dara el nombre Variables principales, se declaran las variables
´
´
que intervienen en el modelo matematico y las variables necesarias para su resolucion
´
´
num´ rica:
e
Modelo matematico
´

Modelo en Ejs

t
x
y
A
ω1
ω2
δ

tiempo
x
y
amplitud
frecuencia1
frecuencia2
desfase
deltaTiempo

– En la segunda pagina, se declaran las variables empleadas para la definicion de la vista:
´
´
maximo, minimo, n. A esta segunda pagina se le asignara el nombre: Variables auxiliares.
´
´
´
´
7.4. DECLARACION E INICIALIZACION DE LAS VARIABLES

79

Figura 7.8: Variables principales del modelo.

Figura 7.9: Variables auxiliares del modelo.

´
Creacion de la p´ gina Variables principales. Para crear una nueva pagina de definicion de
a
´
´
variables, pulse con el raton sobre la frase “Pulse para crear una pagina”, que aparece en el
´
´
panel Variables .
A consecuencia de ello, se abre una ventana, en la que debe asignar un nombre a la pagina
´
de variables que esta a punto de crear. D´ le el nombre Variables principales. Una vez hecho
´
e
esto, la interfaz de Ejs presenta el aspecto mostrado en la Figura 7.7.
´
Creacion de la p´ gina Variables auxiliares. Para anadir una nueva pagina de definicion
a
˜
´
´
de variables, debe pincharse con el boton derecho del raton sobre la lengueta de la pagina
´
´
¨
´
de variables ya existente y a continuacion, en el menu desplegable que aparece (como el
´
´
mostrado en la Figura 7.3), haga clic con el raton sobre A˜ adir una pagina.
´
n
´
Se abre una ventana en la cual debe especificar el nombre de la nueva pagina de definicion
´
´
de variables. Asigne a esta nueva pagina que esta creando el nombre Variables auxiliares.
´
´
´
´
Declaracion e inicializacion. En las Figura 7.8 y 7.9 se muestran la declaracion e iniciali´
zacion de las variables en las ventanas Variables principales y Variables auxiliares respectiva´
mente. El significado de cada uno de los campos se explico en la Seccion 5.4.
´
´
El panel Inicializacion. En el ejemplo del osciloscopio virtual, se ha asignado un valor inicial
´
(en la columna Valor) a cada una de las variables . El modelo ha quedado convenientemente
inicializado y por ello no es preciso introducir ninguna informacion en el panel Inicializacion.
´
´
´
TEMA 7. PROGRAMACION DE UN OSCILOSCOPIO VIRTUAL CON EJS

80

´
7.5. Programacion del modelo
´
Evolucion
De acuerdo con el algoritmo de la simulacion del osciloscopio virtual mostrado en la Figura
´
7.5, solo hay una ecuacion de evolucion:
´
´
´
tiempo = tiempo + deltaT iempo

(7.5)

El modelo del osciloscopio no contiene ecuaciones diferenciales, y por ese motivo el usuario
debe programar expl´citamente el avance en el tiempo de la simulacion.
ı
´
Para definir la ecuacion de evolucion (7.5), haga clic sobre el subpanel con el letrero Pulse
´
´
para crear una pagina.
´
Se abre un ventana, en la cual debe especificarse el nombre que se asigna a la nueva
pagina que se va a crear. Por ejemplo, dele a la pagina el nombre Avance en el tiempo. Escriba
´
´
la Ecuacion (7.5) tal como se muestra en la Figura 7.10. Observe que la ecuacion finaliza con
´
´
un punto y coma (;).
Deje el boton Arranque tal como esta por defecto: activado.
´
´

Ligaduras
Las ecuaciones de ligadura del modelo del osciloscopio virtual son (7.1) y (7.2). Deben
satisfacerse no solo durante la evolucion temporal de sistema, sino tambi´ n en caso de que
´
´
e
el usuario realice interactivamente (es decir, durante la ejecucion de la simulacion) cualquier
´
´
cambio en el valor de algunos de los parametros (la amplitud, las frecuencia, el desfase, etc.).
´
Para escribir los algoritmos de ligadura es preciso hacer clic sobre el boton Ligaduras. La
´
interfaz de Ejs muestra un panel que contiene la frase Pulse para crear una pagina. Haga clic
´
con el raton sobre esta frase, con el fin de crear una pagina en la cual describir las ecuaciones
´
´
(7.1) y (7.2). Asigne a esta pagina el nombre Calculo de la posicion. Una vez escritas las dos
´
´
´
ecuaciones de ligadura, la ventana tiene el aspecto mostrado en la Figura 7.11.

´
7.6. Programacion de la vista
En la Figura 7.12 se muestra el panel para la descripcion de la vista. La vista se crea
´
anadiendo elementos graficos, los cuales pueden estar alojados unos dentro de otros, con lo
˜
´
cual la vista tiene estructura de arbol. Los elementos graficos que pueden contener a otros
´
´
(hasta un maximo de 5) se denominan contenedores. Esta estructura de arbol se define en
´
´
´
la ventana superior izquierda del panel, que tiene el letrero Arbol de elementos (vea la Figura
7.12).
En la parte derecha del panel se encuentran las clases de elementos graficos. . Se en´
cuentran en una ventana que tiene el letrero Elementos para la vista, la cual, a su vez, se
encuentra subdividida en tres ventanas (vea la Figura 7.12):
– Contenedores.
– Basicos.
´
– Dibujo.
Inspeccione usted mismo el contenido de estas tres ventanas. Observe que situandose con
´
el raton sobre cualquiera de los elementos obtiene un mensaje con informacion acerca de su
´
´
finalidad.
Para anadir a la vista un objeto de una determinada clase debe:
˜
´
7.6. PROGRAMACION DE LA VISTA

Figura 7.10: Descripcion de la expresion que define el avance en el tiempo.
´
´

Figura 7.11: Ecuaciones de ligadura.

81
´
TEMA 7. PROGRAMACION DE UN OSCILOSCOPIO VIRTUAL CON EJS

82

En esta ventana
se compone el
Árbol de elementos
de la vista

Clases de
elementos gráficos

Figura 7.12: Panel para la descripcion de la vista.
´

Clase Ventana:
Una ventana de pantalla

Objeto de la clase Ventana, llamado Ventana_principal

´
Figura 7.13: Arbol de elementos.

Clase PanelDibujo:
Un contenedor 2D para
elementos de dibujo

Objeto de la clase PanelDibujo, llamado Pantalla
´
Figura 7.14: Arbol de elementos.
´
7.6. PROGRAMACION DE LA VISTA

83

1. Seleccionar la clase de objeto grafico. Para ello, debe hacer clic con el raton sobre el icono
´
´
de la clase de elemento grafico en cuestion. Este estara situado dentro de la ventana
´
´
´
Elementos para la vista. Al hacer esto, el icono queda inscrito en un recuadro oscuro,
que senaliza que esa clase de elemento ha sido seleccionada y que a continuacion van a
˜
´
crearse objetos graficos de esa clase.
´
2. Definir los objetos de la clase anteriormente seleccionada. Para ello, debe hacer clic con
el raton sobre el objeto grafico dentro del cual desee ubicar el objeto que esta a punto
´
´
´
´
de crear. Puede crear tantos objetos como desee. Debera hacerlo en la ventana Arbol
´
de elementos. Observe que al situar el raton sobre cualquier punto de esta ventana, el
´
cursor adquiere la forma de una varilla magica.
´
Al crear un nuevo objeto, debe definir el valor de determinadas propiedades, tales como
su nombre y su posicion espacial dentro del contenedor en el que esta ubicado.
´
´
Al definir los nombres, debe tenerse en cuenta que los nombres de variables, metodos y
´
elementos de la vista deben ser unicos en toda la simulacion.
´
´
A continuacion, se describe como crear la vista del osciloscopio virtual.
´
´
Observe que en el arbol de elementos hay siempre un elemento ra´z, denominado Vista de
´
ı
la simulacion, dentro del cual se ubican todos los objetos que componen la vista.
´
La vista del osciloscopio virtual va a consistir en una unica ventana, en la cual hay una
´
pantalla (donde se representa x frente a y) y los controles para la seleccion de las frecuencias
´
y el desfase.
Por tanto, el primer paso es definir esta ventana. Para ello, hay que ubicar un elemento de
la clase Ventana dentro del objeto Vista de la simulacion (vea la Figura 7.13). Los objetos de
´
la clase ventana son contenedores, dentro de cada uno de los cuales se pueden ubicar hasta
cinco objetos. La definicion del objeto se realiza de la forma siguiente:
´
1. Haga clic sobre la clase Ventana.
2. Haga clic sobre la frase Vista de la simulacion. Con ello esta indicando que el objeto que
´
´
esta a punto de crear (de la clase Ventana) debe ubicarse dentro del objeto ra´z de la
´
ı
vista.
Al hacerlo, se abre una ventana, en la cual debe escribir el nombre del nuevo objeto.
Dele el nombre Ventana principal.
A continuacion, debe anadirse un objeto de una clase que sea capaz de albergar elementos
´
˜
graficos: un objeto de la clase PanelDibujo (vea la Figura 7.14):
´
1. Haga clic sobre el icono de la clase PanelDibujo, lo cual indica a Ejs que van a crearse
objetos de esta clase.
2. A continuacion, haga clic con el raton sobre la frase Ventana principal. Al hacer esto,
´
´
se esta ubicando un objeto del tipo PanelDibujo dentro del objeto contenedor Ventana
´
principal.
Es preciso asignar valor a los siguientes parametros del objeto que esta creando:
´
´
– Nombre del objeto. Se abre una ventana en la cual debe escribir el nombre del objeto
que esta creando. Llamelo Pantalla.
´
´
– Posicion del objeto Pantalla dentro del contenedor Ventana principal. Se abre otra
´
pantalla, en la cual debe indicarse la posicion del objeto. Se ofrecen 5 posibilidades
´
(recuerde que un contenedor puede contener hasta 5 objetos): arriba, abajo, izquierda, derecha y centro. Acepte la opcion por defecto: centro. El arbol de elementos
´
´
tiene ahora el aspecto mostrado en la Figura 7.14
Situandose con el raton sobre el objeto reci´ n creado (es decir, sobre la palabra Pantalla)
´
´
e
y pulsando el boton derecho, se despliega un menu para la configuracion del objeto. Vea la
´
´
´
Figura 7.15.
Seleccionando Propiedades en el Menu para Pantalla, se abre una pantalla como la mos´
trada en la Figura 7.16. Los valores de las propiedades que se muestran en la Figura 7.16
son los que aparecen por defecto.
84

´
TEMA 7. PROGRAMACION DE UN OSCILOSCOPIO VIRTUAL CON EJS

Figura 7.15: Menu del objeto Pantalla.
´

Figura 7.16: Menu de propiedades del objeto Pantalla (con valores por defecto).
´
´
7.6. PROGRAMACION DE LA VISTA

Figura 7.17: Menu de propiedades del objeto Pantalla una vez configurado.
´

´
Figura 7.18: Arbol de elementos.

Figura 7.19: Propiedades del objeto Representacion grafica.
´
´

85
86

´
TEMA 7. PROGRAMACION DE UN OSCILOSCOPIO VIRTUAL CON EJS

Es posible asignar a una propiedad, o bien un determinado valor constante, o bien asociarla con una variable del modelo, de modo que en cada instante la propiedad y la variable
tomen el mismo valor.
En este ejemplo, los valores maximo y m´nimo de la grafica van a asociarse con las varia´
ı
´
bles del modelo maximo y minimo respectivamente. Pueden seguirse los pasos siguientes:
1. Con el fin de asociar el valor m´nimo del eje horizontal de la grafica con la variable
ı
´
minimo, pulse el icono con eslabones de cadena dibujados que esta situado a la derecha
´
de la propiedad M´nimo X. Se abre una ventana que muestra todas las variables del
ı
modelo. Haciendo doble clic sobre la variable minimo, queda asociada la propiedad
M´nimo X con la variable minimo.
ı
2. A continuacion, proceda de la misma forma, asociando la propiedad M´nimo Y con la
´
ı
variable minimo.
3. De forma completamente analoga, asocie las propiedades Maximo X y Maximo Y con la
´
´
´
variable maximo.
Una vez hechas las cuatro asociaciones propiedad – variable anteriormente descritas, la
pagina de propiedades del objeto Pantalla tiene el aspecto mostrado en la Figura 7.17.
´
Finalmente, una vez definido el objeto Pantalla (es decir, un contenedor 2D de objetos de
dibujo) es preciso ubicar en dicho contenedor un objeto de dibujo, que defina qu´ es lo que
e
debe dibujarse:
1. Seleccione la clase Traza. Se trata del sexto icono de la primera fila del panel Dibujo –
Basicos. Posicionando el raton sobre el, se obtiene informacion acerca de su finalidad:
´
´
´
´
Traza: una secuencia de puntos.
2. Haga clic con el raton sobre el objeto Pantalla. Con ello se crea un objeto del tipo Traza
´
y se ubica dentro del contenedor Pantalla. Dele al objeto del tipo Traza que esta creando
´
´
´
´
el nombre Representacion grafica. Una vez hecho esto, el arbol de elementos tendra el
´
aspecto mostrado en la Figura 7.18.
Para asignar valor a las propiedades del objeto Representacion grafica, situese con el
´
´
´
raton sobre el y pulse el boton derecho. Con ello se abre el menu para el objeto. Seleccione
´
´
´
´
Propiedades. Realice las siguientes asociaciones entre propiedades y variables:
– Indique que variables deben representarse. Para ello, enlace la propiedad X con la varia´
ble x y la propiedad Y con la variable y.
– Indique cuantos puntos deben dibujarse. Para ello, enlace la propiedad Puntos con la
´
variable n. De esta forma, al comenzar la simulacion, Ejs dibuja el valor inicial de las va´
riables x e y, es decir, el punto (x (t = 0) , y (t = 0)). A continuacion, avanza un paso en el
´
tiempo, ∆t, recalcula x e y, y dibuja el correspondiente punto: (x (t = ∆t) , y (t = ∆t)). De
esta forma, dibuja en la grafica n puntos: (x (t = 0) , y (t = 0)), (x (t = ∆t) , y (t = ∆t)), . . . ,
´
(x (t = (n − 1) · ∆t) , y (t = (n − 1) · ∆t)). Una vez dibujados estos primeros n puntos,por
cada nuevo punto que Ejs representa, borra el punto mas antiguo, de tal forma que en
´
todo momento la grafica consta de n puntos.
´
– Escoja el color de la l´nea. Puede definir que el color de la l´nea sea rojo, haciendo clic
ı
ı
con el raton sobre el icono, situado a la derecha de la propiedad Color l´nea, que tiene
´
ı
dibujado una mano sujetando un papel.
Una vez realizados estos cambios, la ventana de propiedades tiene el aspecto mostrado en
la Figura 7.19.
Ya puede ejecutar el laboratorio virtual. Para ello, haga clic sobre el boton de ejecucion de
´
´
la simulacion (el boton con el triangulo verde dibujado). En respuesta, se abre una ventana
´
´
´
en la que se representa la evolucion temporal de una figura de Lissajous (vea la Figura 7.20).
´
Observara que tal como se ha definido el laboratorio virtual hasta este punto, el usuario
´
no tiene ninguna posibilidad de interaccion con la simulacion. A continuacion, se describe
´
´
´
como anadir al laboratorio virtual algunas capacidades interactivas.
´
˜
´
7.7. PROGRAMACION DE LAS CAPACIDADES INTERACTIVAS

87

Figura 7.20: Traza de una figura de Lissajous.

Clase Panel:
Un panel contenedor
básico

Objeto de la clase Panel, llamado Panel_controles

Figura 7.21: Creacion del objeto Panel controles.
´

´
7.7. Programacion de las capacidades interactivas
En esta Seccion se explica como dotar al osciloscopio virtual de las dos capacidades
´
´
interactivas siguientes:
– Van a anadirse algunos botones que permitan al usuario seleccionar determinadas
˜
frecuencias y desfases, de entre un conjunto predeterminado de ellas, las cuales dan
lugar a figuras de Lissajous vistosas. Cada boton correspondera con una determinada
´
´
seleccion de las frecuencias y el desfase.
´
– Se colocaran casillas num´ ricas en las cuales el usuario podra escribir el valor de las
´
e
´
frecuencias y del desfase de las figuras que desea visualizar.
En primer lugar, debe crear un objeto de la clase Panel y ubicarlo dentro de Ventana principal. El proposito de este nuevo objeto de la clase Panel es contener en su interior:
´
– Los tres botones: A, B y C.
– Las casillas num´ ricas para seleccionar las dos frecuencias y el desfase.
e
Para ello:
1. Haga clic sobre el icono de la clase Panel.
2. Haga clic sobre la palabra Ventana principal. Llame Panel controles a este nuevo objeto
de la clase Panel, y situelo en la posicion izquierda (de este modo, los controles quedaran
´
´
´
situados a la izquierda de la pantalla).
88

´
TEMA 7. PROGRAMACION DE UN OSCILOSCOPIO VIRTUAL CON EJS

Figura 7.22: Ventana para la definicion de m´ todos “propios” del usuario.
´
e

Una vez hecho esto, el arbol de elementos graficos de la vista tiene el aspecto mostrado en
´
´
la Figura 7.21.

´
Botones para la seleccion de determinadas figuras
Para anadir un boton que realice una accion, tal como asignar determinados valores a las
˜
´
´
frecuencias y al desfase, es preciso realizar dos tareas:
1. Programar la accion a realizar cuando se pulse cada boton. Deben programarse m´ todos
´
´
e
en lenguaje Java (uno por cada boton) que realicen las acciones deseadas. La programa´
cion de estos m´ todos forma parte de la definicion del modelo.
´
e
´
2. Incluir los tres botones en la vista y asociarle a cada uno su metodo. De este modo, cuando
´
se haga clic sobre un boton se ejecutara el m´ todo asociado, con lo cual se realizara la
´
´
e
´
correspondiente accion.
´
Se pretenden programar los tres botones mostrados a continuacion:
´
Boton
´

ω1

ω2

∆t

n

A

0.06981

0.08744

1

2000

B

0.19198

0.24443

1

2000

C

0.54105

0.38397

1

300

´
La programacion de los m´ todos forma parte de la definicion del modelo. Pulse el boton
e
´
´
Modelo y a continuacion el boton Propio. La interfaz de Ejs adquiere al aspecto mostrado en
´
´
la Figura 7.22.
Para crear una pagina en la que definir un m´ todo, haga clic con el raton sobre la frase
´
e
´
Pulse para crear una pagina. Debe asignar un nombre a la nueva pagina. Por defecto, este
´
´
nombre asignado a la pagina coincidira con el nombre del m´ todo que va a definir (salvo
´
´
e
quiza que el nombre del m´ todo comenzara con minusculas).
´
e
´
´
´
7.7. PROGRAMACION DE LAS CAPACIDADES INTERACTIVAS

89

Llame A a la pagina y a al m´ todo. Este m´ todo asignara a las variables los valores
´
e
e
´
correspondientes al Boton A. En la Figura 7.23 se muestra la definicion del m´ todo.
´
´
e
De forma analoga, se definen otras dos paginas:
´
´
– El m´ todo b en la pagina B.
e
´
– El m´ todo c en la pagina C.
e
´
Estos dos m´ todos definen las acciones que seran asociadas al Boton B y al C respectivae
´
´
mente. En la Figura 7.24 se muestra el aspecto de la ventana tras definir los tres m´ todos.
e
´
Una vez definidos los m´ todos, puede procederse a la definicion de los botones. Esto
e
debe hacerse en la vista. Para ello (ver la Figura 7.25):
1. Primeramente, es preciso definir un nuevo objeto de la clase Panel, dentro del cual se
ubicaran los tres botones. A este nuevo objeto se le asigna el nombre de Panel botones,
´
y se situa en la posicion Arriba. La posicion de un objeto es su posicion dentro del
´
´
´
´
contenedor en el que se encuentra. As´ pues, el objeto Panel botones esta situado dentro
ı
´
del contenedor Panel controles, en la parte superior de este.
´
2. Seguidamente, se definen tres objetos del tipo Boton y se ubican dentro del contenedor
´
Panel botones. A los objetos se les asigna los nombres A, B y C, y las posiciones Arriba,
Centro y Abajo respectivamente.
´
Finalmente, debe realizarse la asociacion de los botones con las acciones. Situando
el raton sobre el objeto A y pulsando el boton derecho del raton, se abre la ventana de
´
´
´
propiedades del elemento A. A la derecha de la propiedad Accion hay dos botones. Uno de
´
ellos tiene dibujado dos ruedas dentadas engranadas. Haciendo clic sobre este boton se abre
´
una ventana en la que se muestran todas las acciones que se encuentran disponibles en el
modelo. Haciendo doble clic sobre a( ), se asocia el m´ todo a a la accion del boton. En la
e
´
´
Figura 7.26 se muestra la ventana de propiedades del elemento A.
De forma completamente analoga, deben asociarse los m´ todos b y c con las acciones de
´
e
los botones B y C respectivamente.
Ejecutando el modelo, se observa que la vista del osciloscopio virtual tiene la apariencia
mostrada en la Figura 7.27.

´
Inclusion de casillas num´ ricas
e
En este apartado se explica como anadir a la vista del osciloscopio virtual casillas num´ ri´
˜
e
cas, en las cuales el usuario pueda escribir los valores de las dos frecuencias y el desfase de
las figuras de Lissojous que desee visualizar.
Para ello, pueden seguirse los pasos siguientes (ver la Figura 7.28):
1. Crear un nuevo objeto de la clase Panel, ubicandolo dentro del contenedor Panel controles,
´
en la posicion Abajo. A este nuevo objeto se le llama Panel casillas.
´
2. Crear tres objetos de la clase CampoNumerico y ubicarlos dentro del contenedor Panel casillas. Se asigna a los tres objetos los nombres Frecuencia1, Frecuencia2 y Desfase.
Son situados en las posiciones Arriba, Centro y Abajo respectivamente.
Finalmente, es preciso configurar los elementos Frecuencia1, Frecuencia2 y Desfase, de
modo que cada uno de ellos quede enlazado a la correspondiente variable del modelo.
Situese sobre Frecuencia1 y pulse el boton derecho del raton. Se despliega un menu (Menu pa´
´
´
´
´
ra Frecuencia1) en el cual debe seleccionar Propiedades. Se abre una ventana (Propiedades
del elemento Frecuencia1) en la cual debe introducirse la informacion mostrada en la Figura
´
´
7.29. Esta es:
– El valor de la propiedad Variable indica qu´ variable del modelo esta enlazada con el
e
´
boton. Pulsando el boton con los eslabones dibujados, que se encuentra a la derecha
´
´
de dicha propiedad, se abre una ventana en la que se muestran todas las variables del
modelo. Haga doble clic sobre la variable frecuencia1, para enlazar el elemento grafico
´
con esta variable.
90

´
TEMA 7. PROGRAMACION DE UN OSCILOSCOPIO VIRTUAL CON EJS

Figura 7.23: M´ todo a, que se asociara con el Boton A.
e
´
´

Figura 7.24: M´ todos a, b y c, que se asociaran con los Botones A, B y C respectivamente.
e
´
´
´
7.8. EJECUCION Y DISTRIBUCION DEL LABORATORIO VIRTUAL

91

Clase Boton:
Un botón para acciones

Objetos de la clase Boton, llamados A, B y C

Figura 7.25: Botones A, B y C, ubicados dentro de Panel botones.

– El valor de la propiedad Formato determina el formato con el que se muestra en la casilla
el valor de la variable.
– La propiedad Accion permite especificar que se ejecute un determinado m´ todo (de los
´
e
predefinidos en Ejs o de los “propios” del usuario) cuando el usuario cambie interactivamente (es decir, durante la simulacion) el valor escrito en la casilla. Pulsando el boton
´
´
con los eslabones dibujados, situado a la derecha de la propiedad, se abre una ventana
mostrando los posibles m´ todos entre los cuales puede escoger. El m´ todo resetView()
e
e
limpia la vista.
De forma analoga pueden definirse las propiedades de los elementos Frecuencia2 y Desfa´
se.

´
´
7.8. Ejecucion y distribucion del laboratorio virtual
Ejecutando de nuevo la simulacion, se obtiene la vista mostrada en la Figura 7.30.
´
Asimismo, observe que Ejs ha generado el documento lissajous.html (vea la Figura 7.31)
en el directorio de trabajo (Simulations, por defecto).
Ademas de desde la ventana principal de Ejs, y como un applet incluido en una pagina
´
´
web, el laboratorio puede ejecutarse como una aplicacion Java independiente. Para ello,
´
habilite la opcion “Crear fichero BAT de ejecucion” en la ventana de configuracion de Ejs
´
´
´
(vea la Figura 4.7). Si una vez habilitada esta opcion vuelve a ejecutar la simulacion, vera que
´
´
´
Ejs ha creado en el directorio de trabajo el fichero lissajous.bat. Ejecute este fichero por lotes
y observara que arranca la ejecucion del laboratorio virtual, abri´ ndose una ventana con la
´
´
e
vista del mismo (que es la mostrada en la Figura 7.30).
Si desea distribuir este laboratorio, debe entregar, aparte de los ficheros mencionados
anteriormente, una copia del directorio library, que debe situar en el mismo sitio que las
simulaciones.
92

´
TEMA 7. PROGRAMACION DE UN OSCILOSCOPIO VIRTUAL CON EJS

Figura 7.26: Propiedades del elemento A.

Figura 7.27: Vista del osciloscopio virtual.

Clase Panel:
Un panel contenedor
básico

Clase CampoNumerico:
Un campo para mostrar
y modificar un valor
numérico

Objetos de la clase CampoNumerico, llamados Frecuencia1, Frecuencia2 y Desfase
Objeto de la clase Panel, llamado Panel_casillas

´
Figura 7.28: Arbol de elementos de la vista, con las tres casillas definidas.
´
´
7.8. EJECUCION Y DISTRIBUCION DEL LABORATORIO VIRTUAL

93

Figura 7.29: Menu para Frecuencia1: el boton se ha asociado con la variable frecuencia1.
´
´

Figura 7.30: Vista del osciloscopio virtual.

Figura 7.31: Documento lissajous.html visualizado con Netscape.
94

´
TEMA 7. PROGRAMACION DE UN OSCILOSCOPIO VIRTUAL CON EJS
Tema 8

Un laboratorio virtual para ilustrar
el concepto de ciclo l´mite
ı

Objetivos: Una vez estudiado el contenido del tema deber´a saber:
ı
´
´
´
• Incluir imagenes en las paginas de Introduccion.
´
´
• Dise˜ ar el algoritmo de simulacion de un modelo dinamico, compuesto
n
unicamente por ecuaciones diferenciales ordinarias, y programar dicho
´
modelo en Ejs.
´
• Usar las clases de elementos graficos: PanelConEjes, Selector y Deslizador.

8.1. Modelo de un ciclo l´mite
ı
En este Tema se explica la programacion de un laboratorio virtual cuya finalidad es ilustrar
´
el concepto de ciclo l´mite. Un ciclo l´mite en el plano XY esta descrito por las ecuaciones
ı
ı
´
siguientes1 :
K · x · 1 − x2 − y 2

dx
dt

=

y+

dy
dt

=

−x +

x2 + y 2
K · y · 1 − x2 − y 2
x2 + y 2

(8.1)
(8.2)

donde las condiciones iniciales son:

x (0) =

x0

(8.3)

y (0) =

y0

(8.4)

y donde K es un parametro del modelo, es decir, se supone que su valor no depende del
´
tiempo.
1 Este

modelo esta extra´do del texto (MGA 1995)
´
ı

95
96

´
TEMA 8. LABORATORIO VIRTUAL DEL CONCEPTO DE CICLO LIMITE

El ciclo l´mite es un c´rculo de radio 1.0. Es decir, cualquiera que sean las condiciones
ı
ı
iniciales para x e y (excepto x0 = y0 = 0), x2 + y 2 → 1 cuando t → ∞.
El laboratorio virtual debera permitir al alumno modificar interactivamente:
´
– El valor del parametro K.
´
– El valor de las variables x e y.
El laboratorio virtual debera mostrar la evolucion temporal del modelo en el plano XY
´
´
(tendente hacia el c´rculo unidad) y la evolucion de las variables x e y frente al tiempo.
ı
´
Este laboratorio esta disponible en el CD del curso. Se trata del fichero cicloLimite.xml, que
´
esta grabado en el directorio laboratoriosTexto.
´

´
´
8.2. Descripcion de la introduccion
En la Figura 8.1 se muestra la pagina de Introduccion del laboratorio. Las formulas se han
´
´
´
insertado en la pagina de Introduccion como imagenes. El procedimiento seguido en este caso
´
´
´
ha sido el siguiente:
1. Se ha escrito cada formula y se ha guardado como una imagen .gif. Las cuatro formulas
´
´
empleadas en la introduccion estan en el directorio Simulations/laboratoriosTexto/Imagenes.
´
´
2. Se ha insertado cada formula en la pagina de Introduccion seleccionando en el menu de
´
´
´
´
Ejs Insertar / Imagen... (vea la Figura 8.2).

´
8.3. El algoritmo de la simulacion
El paso previo a la programacion del modelo en Ejs es definir el algoritmo de la simulacion
´
´
del laboratorio virtual. Esto es equivalente a especificar qu´ codigo debera ejecutarse en cada
e ´
´
uno de los paneles, teniendo en cuenta que el algoritmo de ejecucion gen´ rico de Ejs es el
´
e
mostrado en la Figura 5.1.
El modelo matematico del ciclo l´mite en el plano XY, descrito por las Ecs. (8.1) y (8.2),
´
ı
esta compuesto por las variables siguientes:
´
– Dos variables de estado: x, y.
– Un parametro: K.
´
El algoritmo para la simulacion de este modelo es el mostrado en la Figura 8.3. Las dos
´
ecuaciones diferenciales se escriben en una pagina EDO, en el panel Evolucion. El motivo por
´
´
el cual la inicializacion de la variable tiempo y de las variables de estado se realiza en el panel
´
Inicializacion se explicara mas adelante, al describir la programacion de la vista.
´
´
´
´

´
´
8.4. Declaracion e inicializacion de las variables
Para inicializar el modelo es preciso asignar valor a sus parametros (K, x0 , y0 ), a sus
´
variables de estado (x, y) y a la variable tiempo (t).
En la Figura 8.4 se muestra la ventana del panel Variables, en la que se declaran las
variables el modelo y se inicializan algunas de ellas: K, x0 e y0 . En el panel Inicializacion se
´
inicializaran el resto: x, y y t.
´
´
´
8.4. DECLARACION E INICIALIZACION DE LAS VARIABLES

97

Figura 8.1: Pagina de Introduccion del laboratorio virtual.
´
´

Insertar una
imagen

Figura 8.2: Insercion de una imagen en la pagina de Introduccion.
´
´
´
´
TEMA 8. LABORATORIO VIRTUAL DEL CONCEPTO DE CICLO LIMITE

98

Inicio
t, K, x0, y0, x, y, derx, dery, aux

K =
x0 =
y0 =

1.0;
2.0;
2.0;

t
x
y

0;
x0;
y0;

=
=
=

Declaración de variables
(Panel Variables)

Inicialización de variables
(columna Valor del panel
Variables)
Ejecución de los algoritmos
del panel Inicialización
Ejecución de los algoritmos
del panel Ligaduras

Representación gráfica de resultados
(comunicación modelo vista)

sí

¿Interacción del usuario?
(comunicación vista modelo)

Ejecución de la acción
ejercida por el usuario

no
Ejecución de los
algoritmos del
panel Evolución

En una pagina EDO:
d x / d t = y + x * K*(1–x*x–y*y)/Math.sqrt(x*x+y*y);
d y / d t = -x + y * K*(1–x*x–y*y)/Math.sqrt(x*x+y*y);

Figura 8.3: Algoritmo de la simulacion del laboratorio virtual.
´

Figura 8.4: Declaracion de las variables del modelo.
´
´
´
8.5. PROGRAMACION DE LA EVOLUCION

99

Figura 8.5: Pagina para la definicion de Ecuaciones Diferenciales Ordinarias (EDO).
´
´

´
´
8.5. Programacion de la evolucion
En el panel Evolucion deben calcularse las variables de estado (x, y) mediante la integracion
´
´
de sus derivadas. Para ello, va a usarse uno de los m´ todos de integracion que proporciona
e
´
Ejs: el m´ todo del punto medio.
e
Recu´ rdese que en una pagina EDO de Ejs es preciso expresar las derivadas en funcion
e
´
´
unicamente de variables de estado, parametros y la variable tiempo. En este modelo, tal como
´
´
viene descrito mediante las Ecs. (8.1) y (8.2), se satisface esta condicion.
´
Para definir las ecuaciones diferenciales, hay que hacer clic sobre la frase Pulse para crear
una pagina EDO (vea la Figura 5.6). A continuacion hay que asignar un nombre a la pagina
´
´
´
EDO que acaba de crearse.
Para seleccionar la variable de estado de cada ecuacion hay que situar el raton sobre
´
´
la correspondiente casilla Estado, pulsar el boton de la derecha y, en el menu que aparece,
´
´
seleccionar la opcion Seleccionar variable de estado. Entonces, se abre una ventana con todas
´
las variables del modelo y debe seleccionarse una de ellas.
Una vez definidas las dos ecuaciones diferenciales del modelo matematico, la pagina EDO
´
´
tiene el aspecto mostrado en la Figura 8.5
Puesto que el modelo contiene ecuaciones diferenciales, que han sido definidas en una
pagina EDO, Ejs se encarga automaticamente de realizar los incrementos en la variable
´
´
tiempo y no debe hacerlo el usuario (como suced´a en el modelo del osciloscopio).
ı
100

´
TEMA 8. LABORATORIO VIRTUAL DEL CONCEPTO DE CICLO LIMITE

Figura 8.6: Seleccion del fichero StandardView2D.xml para abrirlo.
´

a)

b)
´
Figura 8.7: a) Arbol de elementos de la Vista tras abrir StandardView2D.xml; b) Vista.

´
8.6. Programacion de la vista
Para programar la vista, se va a emplear una vista gen´ rica que esta incluida en la
e
´
distribucion de Ejs2 . Pulsando el boton Abrir una simulacion existente (vea la Figura 3.1)
´
´
´
seleccione el fichero Simulations/ examples/TechnicalExamples/ StandardView2D.xml.
Los ficheros .xml cuyo nombre comienza con el caracter subrayado ( ), como por ejemplo
´
StandardView2D.xml, tienen la propiedad siguiente: cuando desde Ejs se abren estos ficheros, su contenido se anade en el entorno de Ejs a lo que hubiera definido en el entorno en
˜
ese instante. Esta capacidad de Ejs permite la reutilizacion del codigo para la definicion de
´
´
´
los laboratorios virtuales.
Al abrir el fichero StandardView2D.xml, se anaden elementos al arbol de elementos de la
˜
´
Vista, el cual hasta este momento estaba vac´o. El contenido del panel Vista se muestra en
ı
2 Las

explicaciones para la programacion de la Vista estan basadas en el Tema 7 del texto (Esquembre 2002b).
´
´
´
8.6. PROGRAMACION DE LA VISTA

101

la Figura 8.7a. Consiste en una ventana (objeto MainFrame), de la clase Ventana, dentro del
cual estan ubicados:
´
– Tres objetos (Play, Pause, Reset) de la clase Boton. Estos tres objetos estan ubicados
´
´
dentro de un objeto de la clase Panel (PanelButtons), que a su vez esta ubicado dentro
´
de otro objeto (panel) de la clase Panel.
– Un objeto (DrawingPanel) de la clase PanelDibujo, que es un contenedor 2D para elementos de dibujo.
Si llegado este punto se ejecuta el laboratorio virtual, la vista tiene el aspecto mostrado en
la Figura 8.7b.
A continuacion, se describen las operaciones realizadas sobre la vista con el fin de com´
pletar su definicion.
´

Gr´ ficas x vs t, y vs t
a
Un objeto de la clase PanelConEjes resulta mas adecuado como contendedor de un con´
junto de trazas que un objeto de la clase PanelDibujo. Con el fin de sustituir el objeto
DrawingPanel por un objeto de la clase PanelConEjes:
1. Se elimina el objeto DrawingPanel. Para ello debe situarse el raton sobre dicho objeto,
´
pulsar el boton derecho del raton y seleccionar Eliminar.
´
´
2. Se crea un objeto de la clase PanelConEjes. Para ello:
– Se hace clic con el raton sobre el icono de la clase PanelConEjes.
´
– A continuacion, se hace clic sobre el elemento contenedor de la Vista (mainFrame)
´
en cuyo interior se desea ubicar el nuevo objeto. A este nuevo objeto, de la clase
PanelConEjes, se le asigna el nombre: panel graficas vs tiempo.
En la Figura 8.8 se muestra el arbol resultante de los elementos de la Vista.
´
Para modificar las propiedades del objeto panel graficas vs tiempo hay que situar el raton
´
sobre dicho objeto y pulsar el boton derecho del raton. Se abre un menu, en el que hay
´
´
´
que seleccionar: Propiedades. En la Figura 8.9a se muestra la ventana de propiedades ya
particularizada a los valores adecuados, y en la Figura 8.9b la vista a que dan lugar.
Para obtener la representacion grafica de x frente al tiempo e y frente al tiempo, deben
´
´
crearse dos objetos de la clase Traza, a los que se asigna el nombre x vs t e y vs t, ubicados
dentro del objeto panel graficas vs tiempo. El arbol de elementos resultante se muestra en la
´
Figura 8.10.
En la Figura 8.11 se muestran las propiedades de los objetos x vs t e y vs t.

Gr´ fica y vs x
a
De forma completamente analoga, se define un nuevo objeto de la clase PanelConEjes
´
y se ubica dentro del contenedor mainFrame. A este nuevo objeto se le da el nombre: panel grafica y vs x.
Al igual que en el caso anterior, se crea un objeto de la clase Traza y se ubica dentro del
objeto contenedor panel grafica y vs x. A este nuevo objeto se le da el nombre: y vs x.
Al haber ubicado un nuevo objeto dentro del contenedor mainFrame, es preciso ampliar el
tamano de la ventana de dicho contenedor. Colocando el raton sobre mainFrame y pulsando
˜
´
el boton derecho del raton se abre un menu, en el cual hay que seleccionar Propiedades. Se
´
´
´
asigna a la propiedad Tama˜ o el valor mostrado en la Figura 8.12.
n
En la Figura 8.13a se muestra el arbol de los elementos de la Vista, y en la Figura 8.13b
´
la Vista del laboratorio, obtenida ejecutando la simulacion.
´
A continuacion se explica como anadir capacidades interactivas al laboratorio virtual.
´
´
˜
102

´
TEMA 8. LABORATORIO VIRTUAL DEL CONCEPTO DE CICLO LIMITE

PanelConEjes:
Un contenedor de
dibujo 2D con un
sistema de ejes.

Objeto panel_graficas_vs_tiempo, de la clase PanelConEjes.

´
Figura 8.8: Arbol de elementos de la Vista.

a)

b)
Figura 8.9: a) Propiedades del objeto panel graficas vs tiempo; b) Vista.

Traza:
Una secuencia de
puntos.

Objetos x_vs_t e y_vs_t, de la clase Traza.

´
Figura 8.10: Arbol de elementos de la Vista.
´
8.6. PROGRAMACION DE LA VISTA

a)

b)
Figura 8.11: Propiedades de los objetos: a) x vs t; b) y vs t.

Figura 8.12: Propiedades del objeto mainFrame.

103
104

a)

´
TEMA 8. LABORATORIO VIRTUAL DEL CONCEPTO DE CICLO LIMITE

b)
´
Figura 8.13: a) Arbol de elementos de la Vista; b) Vista del laboratorio.

´
8.7. Programacion de las capacidades interactivas
El objetivo de este laboratorio es mostrar al alumno que, con independencia de los valores
iniciales que asigne a x e y, la trayectoria del modelo en el plano XY tiende a describir una
circunferencia de radio unidad, centrada en el origen.
Para ello, el laboratorio debe permitir que el alumno detenga la simulacion, modifique los
´
valores de x e y, y reanude la simulacion.
´
Una forma de programar esta capacidad es:
1. Definir dos objetos de la clase Deslizador, que llamaremos slider x y slider y, de modo
que los valores que hay seleccionados en estos sliders se escriban en los parametros x0
´
e y0 respectivamente.
2. Definir un boton, que llamaremos Inicializa, cuya accion asociada es:
´
´
– Limpiar la Vista.
– Asignarle a la variable tiempo (t) el valor cero.
– Escribir los valores de los parametros x0 e y0 en las variables x e y respectivamente.
´
De esta forma, cuando el usuario pulse el boton Inicializa, los valores fijados en los
´
sliders slider x y slider y se escriben en las variables x e y respectivamente.
El procedimiento para programar en Ejs esta capacidad interactiva es el descrito a continuacion.
´
´
Definicion de los deslizadores (sliders). Los dos objetos de la clase Deslizador van a ubicarse
dentro de un objeto contenedor de la clase VentanaDialogo, que se situa dentro del elemento
´
ra´z del arbol de elementos: Vista de la simulacion. A este objeto contenedor se le da el
ı
´
´
nombre: VentanaDialogoSliders. De esta forma se pretende crear una ventana independiente
que contenga los dos sliders. En la Figura 8.14 se muestra el arbol de elementos de la vista.
´
En la ventana de propiedades del objeto VentanaDialogoSliders, se define (vea la Figura
8.15):
– Distribucion. La distribucion de la ventana de dialogo, que en este caso es una rejilla con
´
´
´
dos filas y una columna.
– Visible. La ventana es visible cuando el valor de esta propiedad es true. Si se escribe
el nombre de una variable en la casilla de la propiedad Visible, la ventana de dialogo
´
sera visible cuando dicha variable valga true.
´
– Situacion, Tama˜ o, etc.
´
n
´
8.7. PROGRAMACION DE LAS CAPACIDADES INTERACTIVAS

105

VentanaDialogo:
Una ventana de diálogo
Deslizador:
Un deslizador para
visualizar y modificar
un valor

Objetos slider_x, slider_y, de la clase Deslizador
Objeto VentanaDialogoSliders, de la clase VentanaDialogo

´
Figura 8.14: Arbol de elementos de la Vista.

Figura 8.15: Propiedades el objeto VentanaDialogoSliders, de la clase VentanaDialogo.

Figura 8.16: Propiedades el objeto slider x, de la clase Deslizador.
106

´
TEMA 8. LABORATORIO VIRTUAL DEL CONCEPTO DE CICLO LIMITE

Figura 8.17: Panel Inicializacion.
´

Muestra la lista de acciones predefinidas
y permite seleccionar una de ellas

a)

b)

Figura 8.18: a) Propiedades el objeto Inicializa, de la clase Boton; b) Acciones predefinidas.

En la Figura 8.16 se muestran las propiedades del objeto slider x, de la clase Deslizador.
Observe que la propiedad Variable del objeto es la variable con la que se “enlaza” el deslizador:
– Mientras el usuario no interacciona con el deslizador, este tiene en cada momento una
´
posicion que se corresponde con el valor que tiene la variable en ese instante. Si dicha
´
variable es un parametro, como es el caso de x0 e y0 , la posicion del deslizador no
´
´
cambia. Si fueran variables evaluadas del modelo (como x e y), la posicion del deslizador
´
cambiar´a en el tiempo siguiendo la evolucion de dichas variables.
ı
´
– Cuando el usuario interacciona con el deslizador, cambiando su posicion, el valor corres´
pondiente a dicha posicion se escribe en la variable asociada. En este caso, cuando
´
el usuario cambia la posicion del deslizador slider x, el nuevo valor se escribe en el
´
parametro x0 .
´
Las propiedades del objeto slider y son analogas a las del objeto slider x.
´
´
´
´
Programacion del codigo de la accion. Cuando el usuario pulse el boton Inicializa de´
bera ejecutarse la accion:
´
´
_resetView();
t = 0;
x = x0;
y = y0;
Puesto que la accion (t = 0, x = x0 , y = y0 ) se realiza tambi´ n durante la inicializacion del
´
e
´
modelo, pueden moverse estas tres asignaciones del panel Variables al panel Inicializacion.
´
Las variables t, x e y siguen siendo declaradas en el panel Variables, pero no se les signa
ningun valor.
´
´
8.7. PROGRAMACION DE LAS CAPACIDADES INTERACTIVAS

107

La ventaja de programar el codigo de la accion en el panel Inicializacion, en lugar de
´
´
´
programarla como un m´ todo propio del usuario, es que puede usarse (para definir la accion
e
´
asociada al boton Inicializa) uno de los m´ todos predefinidos de Ejs: initialize(). Este m´ todo
´
e
e
lee los valores de la Vista y ejecuta el panel Inicializacion.
´
En la Figura 8.17 se muestra el codigo del panel Inicializacion.
´
´
´
´
Definicion del boton Inicializa. Se anade un nuevo objeto de la clase Boton y se ubica
˜
dentro del contenedor panelButtons. En la ventana de propiedades de este nuevo boton, que
´
se llamara Inicializa, se da a la propiedad Accion el valor siguiente: initialize() (vea la Figura
´
´
8.18a).
Puede obtenerse una lista de las acciones predefinidas en Ejs haciendo clic sobre el icono
que esta situado a la derecha de la casilla de la propiedad Accion y que tiene el dibujo de dos
´
´
ruedas dentadas engranadas. En la Figura 8.18b se muestra esta lista de acciones.
Mostrar/Ocultar la ventana de di´ logo. Finalmente, se va a anadir debajo de los botones
a
˜
una casilla que permita mostrar y ocultar la ventana de dialogo que contiene los dos desliza´
dores.
En el menu de propiedades del objeto VentanaDialogoSliders (vea la Figura 8.15) aparece
´
la propiedad Visible, a la que se asigno el valor true.
´
Ahora va a declararse una variable boolena (muestraVentanaSliders), a la cual se asignara valor en la Vista (mediante un objeto de la clase Selector), y que se asignara a la
´
´
propiedad Visible del objeto VentanaDialogoSliders.
Los pasos seguidos son los siguientes:
1. Definir la variable muestraVentanaSliders en el panel Variables (vea la Figura 8.19).
La definicion se realiza en una nueva pagina, llamada Variables Vista. Es una buena
´
´
practica realizar la definicion de las variables del modelo matematico y de la Vista en
´
´
´
ventanas separadas, ya que facilita la comprension.
´
2. En la Vista, definir un objeto de la clase Selector y ubicarlo dentro del objeto panelButtons. A este nuevo objeto se le ha dado el nombre SelectorVentanaDialogoSliders. El arbol
´
de elementos resultante se muestra en la Figura 8.20.
3. En las propiedades del objeto SelectorVentanaDialogoSliders, asignar a la propiedad
Variable la variable muestraVentanaSliders (vea la Figura 8.21). Con ello, el objeto grafico
´
escribe en la variable el valor true o false, en funcion de que est´ seleccionado o no.
´
e
4. Finalmente, asignar la variable muestraVentanaSliders a la propiedad Visible del objeto
VentanaDialogoSliders.
Finalmente, la vista de la simulacion tiene el aspecto mostrado en la Figura 8.22.
´
108

´
TEMA 8. LABORATORIO VIRTUAL DEL CONCEPTO DE CICLO LIMITE

Figura 8.19: Declaracion e inicializacion de la variable muestraVentanaSliders.
´
´

Selector:
Un selector
para valores
booleanos

Objeto SelectorVentanaDialogoSliders, de la clase Selector

´
Figura 8.20: Arbol de elementos.

Figura 8.21: Propiedades del objeto SelectorVentanaDialogoSliders, de la clase Selector.
´
8.7. PROGRAMACION DE LAS CAPACIDADES INTERACTIVAS

Figura 8.22: Vista del laboratorio virtual del ciclo l´mite.
ı

109
110

´
TEMA 8. LABORATORIO VIRTUAL DEL CONCEPTO DE CICLO LIMITE
Tema 9

Principio de Arqu´medes
ı

Objetivos: Una vez estudiado el contenido del tema deber´a saber:
ı
´
´
• Dise˜ ar el algoritmo de simulacion de un modelo estatico y programar el
n
modelo usando Ejs.
´
• Usar el elemento grafico Poligono.

Este laboratorio virtual esta disponible en el CD del curso. Se trata de Arquimedes.xml, y
´
se encuentra en el directorio laboratoriosTexto.

´
9.1. Descripcion del modelo matem´ tico
a
Se pretende modelar el comportamiento de un objeto cubico, de lado L y masa m su´
mergido parcialmente en un l´quido de densidad L . En este modelo se van a despreciar las
ı
variaciones en la altura del l´quido que se producen al variar la proporcion del objeto que se
ı
´
encuentra sumergida. Las fuerzas ejercidas sobre el objeto cubico se representan en la Figura
´
9.1. Estas son:
P eso =
Empuje =

m·g
L2 · h ·

L

·g

(9.1)
(9.2)

Siendo g la aceleracion de la gravedad y h la longitud del lado del cubo que se encuentra su´
mergido en el l´quido. Para el calculo del empuje se ha empleado el principio de Arqu´medes.
ı
´
ı
En equilibrio la suma de fuerzas sobre el objeto es nula, es decir, el empuje es igual al
peso del objeto. La condicion de equilibrio es pues:
´
m·g

L2 · h ·

=

L

·g

(9.3)

El maximo valor del empuje se produce cuando el cuerpo est´ totalmente sumergido en el
´
e
l´quido (h = L). Si el peso del objeto es mayor que el valor de empuje para h = L, el objeto se
ı
hundira sometido a una aceleracion. Si el peso es menor que el valor de empuje para h = L el
´
´
cuerpo flotara. El cuerpo flotara mientras se cumpla la siguiente condicion:
´
´
´
m

≤

L

111

· L3

(9.4)
´
TEMA 9. PRINCIPIO DE ARQUIMEDES

112

ρ

Figura 9.1: Diagrama del modelo.

Ecuaciones del modelo:
Se ha elegido como variable interactiva del modelo la masa del solido (m). Al variar la masa
´
del solido variara el volumen del solido sumergido y, por tanto, el valor de h. Despejamos de
´
´
´
la Ec. (9.3) el valor de h:
m
2
L·L

h =

(9.5)

Ademas, se ha de satisfacer la condicion de la Ec. (9.4) para que el cuerpo flote. Para
´
´
que se cumpla esta condicion se va a limitar el valor maximo de la masa (mmax ) que puede
´
´
introducir el usuario. Este valor maximo se calcula aplicando la siguiente expresion:
´
´
mmax

=

L

· L3

(9.6)

´
9.2. El algoritmo de la simulacion
Antes de programar el modelo, vamos a agrupar las variables del modelo en parametros,
´
variables de estado y algebraicas. De este modo obtenemos la siguiente clasificacion:
´
– Parametros del modelo que no vamos a permitir que el usuario var´e en tiempo de
´
ı
simulacion: longitud del lado del cubo (L), densidad del l´quido ( L ). A partir de estos
´
ı
dos parametros se calcula un tercer parametro: la masa maxima del objeto (mmax ). Para
´
´
´
ello se emplea la Ec. (9.6).
– Parametros del modelo que vamos a permitir que el usuario var´e en tiempo de simula´
ı
cion: masa del solido (m).
´
´
– Variable algebraica del modelo: h. Esta variable algebraica se calcula a partir de la Ec.
(9.5).
Hay que inicializar, dando un valor adecuado, los parametros siguientes: L, L y m. El
´
resto de variables se calculan a partir de las anteriores variables y no precisan que se les de
un valor inicial.
En la Figura 9.2 se muestra una posible forma de programar el laboratorio.

´
´
9.3. Declaracion e inicializacion de las variables
Hemos creado una pagina de variables que hemos llamado variablesModelo donde se
´
declaran e inicializan todas las variables del modelo matematico. El valor de mmax se calcula
´
´
9.4. PROGRAMACION DE LAS LIGADURAS

113

Inicio
m, L,

Declaración de variables
(Panel Variables)

L, mmax, h

m
L

= 500;
= 1;
= 1000;
L
mmax
= L*L^3;

Inicialización de variables
(columna Valor del panel
Variables)
Ejecución de los algoritmos
del panel Inicialización

=

Ejecución de los
algoritmos del
panel Ligaduras

ρ ⋅

Representación gráfica de resultados
(comunicación modelo vista)

sí

¿Interacción del usuario?
(comunicación vista modelo)

no

Ejecución de la acción
ejercida por el usuario

Ejecución de los
algoritmos del
panel Evolución

Figura 9.2: Algoritmo de simulacion.
´

empleando para ello la Ec. (9.6). Solo se necesita calcular este valor una vez ya que depende
´
de parametros que no van a variar durante la simulacion. En la Figura 9.3 se muestra la
´
´
apariencia final de la ventana variablesModelo.

´
9.4. Programacion de las ligaduras
Vamos a crear una pagina de Ligaduras donde se va a calcular el valor de h empleando
´
para ello la Ec. (9.5). El aspecto final de la pagina se muestra en la Figura 9.4.
´

´
9.5. Programacion de la vista
´
Elementos del arbol de la vista del modelo:
Vamos a realizar en la vista una representacion del modelo en dos dimensiones similar a la
´
de la Figura 9.1. El objeto cubico y el l´quido se van a representar empleando dos cuadrados.
´
ı
El arbol de la vista del modelo va a contener los siguiente elementos (ver Figura 9.5):
´
– Elemento de la clase “Ventana”.
– Elemento de la clase “Panel” que contiene a su vez un elemento de la clase “Deslizador”
para permitir al usuario modificar el valor de la densidad de la masa del objeto.
114

´
TEMA 9. PRINCIPIO DE ARQUIMEDES

Figura 9.3: Ventana VariablesModelo, del panel Variables.

Figura 9.4: Ventana Pagina Ligaduras, del panel Ligaduras.
´

– Elemento de la clase “PanelDibujo” que contiene dos elementos de la clase “Poligono”
para representar el objeto cubico y el l´quido.
´
ı
A continuacion, se describen brevemente algunas de las propiedades del elemento grafico
´
´
Poligono.
Clase de elemento gr´ fico Poligono. Este elemento de la Vista se encuentra en el panel
a
de dibujo Grafos y cuerpos. Se trata de un pol´gono cerrado, que se especifica mediante
ı
las coordenadas de sus v´ rtices: (x, y, z) o (x, y), segun se est´ trabajando en tres o en dos
e
´
e
dimensiones.
Se han empleado dos pol´gonos usando dos objetos de la clase Poligono que se han ubicado
ı
dentro del objeto DrawingPanel.
Para cada uno de estos pol´gonos, se han especificado las propiedades siguientes:
ı
– El numero de sus v´ rtices.
´
e
– Dos vectores, con las posiciones x e y de los v´ rtices del pol´gono.
e
ı
En la Figura 9.8 se muestran las propiedades del poligono Liquido:
– En la propiedad Puntos se ha introducido el numero de v´ rtices del pol´gono.
´
e
ı
– En las propiedades X e Y, se han escrito las coordenadas x e y respectivamente de los
v´ rtices del pol´gono.
e
ı
´
Conjunto de variables necesarias para la definicion de la Vista del modelo:
Se ha creado una nueva pagina de Variables para definir las variables que necesitamos
´
emplear para confeccionar la vista del modelo. A esta pagina le hemos dado el nombre de
´
VariablesVisualizacion (ver Figura 9.6).
´
´
9.5. PROGRAMACION DE LA VISTA

115

´
Figura 9.5: Arbol de Elementos de la Vista.

Figura 9.6: Ventana variablesVisualizacion, del panel Variables.

Para definir los v´ rtices del cuadrado que representa al objeto necesitamos declarar dos
e
vectores de dimension 4. Usaremos un vector para especificar las coordenadas x de los
´
v´ rtices del pol´gono y otro para las coordenas y. Del mismo modo, necesitamos dos vectores
e
ı
de dimension 4 para especificar las coordenadas x e y de los v´ rtices del cuadrado que
´
e
representa el l´quido.
ı
Para inicializar estos vectores creamos una nueva pagina Inicializacion en la seccion
´
´
´
Modelo que hemos llamado “Pagina Inicio” (ver Figura 9.7).
´
En la ventana Pagina Ligaduras del panel Ligaduras anadimos el codigo necesario para
´
˜
´
calcular el valor de la coordenada y de los v´ rtices del pol´gono que representa el objeto en
e
ı
funcion de la variable h (ver Figura 9.4).
´
La vista del laboratorio se muestra en la Figura 9.9.
116

´
TEMA 9. PRINCIPIO DE ARQUIMEDES

Figura 9.7: Ventana Pagina Inicio, del panel Inicializacion.
´
´

Figura 9.8: Propiedades objeto Liquido, de la clase Poligono.

Figura 9.9: Vista del laboratorio virtual.
Tema 10

P´ ndulo simple
e

Objetivos: Una vez estudiado el contenido del tema deber´a saber:
ı
´
´
• Dise˜ ar el algoritmo de simulacion de un modelo dinamico que contiene
n
ecuaciones diferenciales ordinarias y ecuaciones algebraicas y programar el modelo usando Ejs.
´
• Usar las clases de elementos graficos: Etiqueta, Flecha, Particula.

Este laboratorio virtual esta disponible en el CD del curso. Se trata de PenduloSimple.xml,
´
y se encuentra en el directorio laboratoriosTexto.

´
10.1. Descripcion del modelo matem´ tico
a
El movimiento armonico simple (M.A.S.) en una dimension viene descrito matematicamen´
´
´
te por la siguiente ecuacion diferencial:
´
d2 x
dt2

= −K 2 · x

(10.1)

Este tipo de movimiento se produce siempre que una fuerza sea proporcional al desplazamiento y de sentido opuesto. Ejemplos de sistemas que describen este movimiento son el
formado por una masa unida a un resorte o un p´ ndulo simple siempre que el angulo que
e
´
forma la lenteja del p´ ndulo con la vertical no sea demasiado grande.
e
En este laboratorio virtual se estudia el movimiento de un p´ ndulo simple como ejemplo
e
de M.A.S. La lenteja del p´ ndulo tiene masa m y la longitud de la cuerda es L.
e
Para describir correctamente el modelo matematico establecemos un sistema de referencia
´
y un criterio de signos. Escogemos el eje y como el vertical y con su sentido positivo hacia
abajo y el eje x como horizontal como se muestra en la Figura 10.1. El modelo matematico del
´
p´ ndulo simple linealizado en torno a la posicion de equilibrio viene descrito por la siguiente
e
´
ecuacion:
´
d2 θ
dt2

= −K 2 · θ
117

(10.2)
´
TEMA 10. PENDULO SIMPLE

118

O

x

L

y

Figura 10.1: Diagrama p´ ndulo simple.
e

La posicion de la lenteja del p´ ndulo en coordenadas cartesianas conocido θ se calcula
´
e
empleando las siguientes ecuaciones:

x
y

= L · cos (θ)
= L · sin (θ)

(10.3)
(10.4)

´
´
10.2. Descripcion de la introduccion
En la Figura 10.2 se muestra la pagina de introduccion del laboratorio.
´
´

´
10.3. El algoritmo de la simulacion
El modelo matematico esta compuesto por las ecuaciones 10.2, 10.3 y 10.4. Se van
´
´
a emplear los algoritmos num´ ricos de resolucion de ecuaciones diferenciales ordinarias
e
´
(EDO) de Ejs. Para ello hay que transformar la ecuacion diferencial de 2o orden 10.2 en
´
dos ecuaciones diferenciales de primer orden.

dθ
dt
dω
dt

= ω

(10.5)

= −K 2 · θ

(10.6)

Este modelo consta de las siguientes variables:
– Variables de estado, es decir, aquellas variables que aparecen derivadas y que, por
tanto, necesitan inicializacion: θ y ω. El valor de estas variables se calcula mediante
´
integracion.
´
– Parametros, es decir, variables cuyo valor permanece constante durante la simulacion a
´
´
menos que sea modificado por el usuario: K, g y L. El parametro K se calcula a partir
´
de los parametros g y L.
´
– Variables algebraicas x e y. Las variables algebraicas son aquellas que, no apareciendo derivadas, dependen de su calculo en el instante de evaluacion del valor de otras
´
´
variables.
´
´
10.4. DECLARACION E INICIALIZACION DE VARIABLES

119

Figura 10.2: Pagina de Introduccion.
´
´

– Variable que representa el tiempo: time. En este laboratorio se usan los m´ todos de
e
resolucion de ODE de Ejs para realizar la integracion del sistema de EDO y obtener
´
´
as´ el valor de θ y ω en cada instante de tiempo. Al emplear los m´ todos de resolucion de
ı
e
´
ODE de Ejs, la gestion de la variable tiempo es llevada a cabo por este.
´
´
– Parametro dt: paso de integracion que sera utilizado por el algoritmo de resolucion de
´
´
´
´
ODE de Ejs.
El algoritmo de la simulacion se muestra en la Figura 10.3.
´

´
´
10.4. Declaracion e inicializacion de variables
Hemos seguido la metodolog´a de distinguir entre las variables empleadas en el modelo
ı
matematico y el resto. De este modo, la declaracion e inicializacion de las variables se ha
´
´
´
realizado en dos ventanas del panel Variables:
– VariablesModelo, en la que se han declarado las variables del modelo matematico (vea la
´
Figura 10.4).
– VariablesVisualizacion, en la que se han declarado las variables empleadas para la
definicion de la vista.
´

´
10.5. Programacion del modelo
El modelo matematico esta formado por un sistema de dos ecuaciones diferenciales y
´
´
dos ecuaciones algebraicas. El sistema de ecuaciones diferenciales se introduce en el panel
Evolucion. En el panel Ligaduras introducimos las ecuaciones algebraicas (10.3) y (10.4).
´
´
Panel Evolucion
En el panel Evolucion deben calcularse las variables de estado mediante la integracion de
´
´
sus derivadas. Para ello, va a usarse uno de los m´ todos de integracion que proporciona Ejs:
e
´
´
TEMA 10. PENDULO SIMPLE

120

Inicio
Declaración de variables
(Panel Variables)

m, L, g, dt, time, θ, ω, K, x, y

m
=
L
=
g
=
dt =
time

1;
1;
9.8;
0.1;
= 0;

θ = pi/8;
ω = 0;

Inicialización de variables
(columna Valor del panel
Variables)

=

Ejecución de los algoritmos
del panel Inicialización
x = L ⋅ cos(θ )
y = L ⋅ sen(θ )

Ejecución de los
algoritmos del
panel Ligaduras

Representación gráfica de resultados
(comunicación modelo vista)

sí

¿Interacción del usuario?
(comunicación vista modelo)

Ejecución de la acción
ejercida por el usuario

no
Ejecución de los
algoritmos del
panel Evolución
θ

=ω

ω

=−

⋅θ

Figura 10.3: Algoritmo de simulacion.
´

el m´ todo de Runge-Kutta de cuarto orden. La pagina EDO tiene el aspecto mostrado en la
e
´
Figura 10.5.
Puesto que el modelo contiene ecuaciones diferenciales, que han sido definidas en una
pagina EDO, Ejs se encarga automaticamente de realizar los incrementos en la variable
´
´
tiempo.
Panel Ligaduras
Una vez escritas las ecuaciones de ligadura, la ventana tiene el aspecto mostrado en la
Figura 10.6.

´
10.6. Programacion de la vista
La vista del laboratorio virtual disenada se compone de dos ventanas: una ventana prin˜
cipal y una ventana secundaria (vea Figura 10.7).
La parte central de la ventana principal contiene una representacion grafica del sistema.
´
´
La parte inferior de dicha ventana contiene elementos graficos que permiten al usuario
´
controlar la simulacion e interactuar con el modelo. La ventana secundaria contiene un
´
grafico mostrando la evolucion temporal de θ.
´
´
´
10.6. PROGRAMACION DE LA VISTA

Figura 10.4: Pagina VariablesModelo, del panel Variable.
´

Figura 10.5: Pagina de Evolucion.
´
´

Figura 10.6: Pagina de Ligaduras.
´

121
122

´
TEMA 10. PENDULO SIMPLE

Figura 10.7: Vista del laboratorio del p´ ndulo simple.
e

´
Figura 10.8: Arbol de elementos de la vista
´
10.6. PROGRAMACION DE LA VISTA

123

En la Figura 10.8 se muestra el arbol de elementos correspondiente a la vista del labora´
torio virtual.
Los elementos de la clase Boton nos permiten controlar la simulacion (parar, reanudar y
´
volver la simulacion a su estado inicial). Los elementos de la clase CampoNumerico permiten
´
al usuario introducir nuevos valores de parametros y variables. Los elementos de la clase
´
Selector se usan para fijar el valor de una variable logica a true o false segun est´ n o no
´
´
e
seleccionados. Al introducir dicha variable en la propiedad Visible de un elemento grafico se
´
muestra u oculta dicho elemento segun la variable est´ a true o false.
´
e
En la programacion del laboratorio virtual se han usado tres elementos nuevos: Particula,
´
Flecha y Texto. A continuacion se van a describir sus caracter´sticas fundamentales as´ como
´
ı
ı
las propiedades de estos elementos que hemos modificado para programar la vista.
Clase de elemento gr´ fico Etiqueta.
a
Se han empleado los objetos EtiquetaL y EtiquetaTheta, de la clase Etiqueta. Una Etiqueta
es un elemento basico que se usa para presentar un texto o una imagen (o ambos) con
´
proposito decorativo o informativo.
´
La clase Etiqueta se encuentra en el panel de dibujo llamado Basicos.
´
En la Figura 10.9 se muestran las propiedades del objeto EtiquetaL. A continuacion, se
´
describen algunas propiedades del objeto EtiquetaL:
– Texto: texto mostrado por el elemento. Puede ser una constante o cualquier variable de
tipo String.
– Imagen: ruta donde se localiza la imagen que deseamos que muestre el elemento. La
imagen debe tener formato gif o gif animado. La ruta puede ser una direccion de internet
´
o la relativa a un directorio de trabajo.
– Alineacion: indica la forma de alinear el texto en el elemento grafico. Puede ser left
´
´
(izquierda), center (centro) o right (derecha).
Clase de elemento gr´ fico Flecha.
a
Se ha empleado el objeto Cuerda, de la clase Flecha, para representar la cuerda del
p´ ndulo. La clase Flecha se encuentra en el panel de dibujo llamado Grafos y cuerpos.
e
En la Figura 10.10 se muestran las propiedades del objeto Cuerda. A continuacion, se
´
describen las propiedades del objeto Cuerda que se han especificado:
– X: coordenada x del origen del vector.
– Y: coordenada y del origen del vector.
– Tama˜ o X: tamano del vector segun el eje x.
n
˜
´
– Tama˜ o Y: tamano del vector segun el eje y.
n
˜
´
– Activo: indica mediante un valor booleano si este componente es interactivo o no.
– Estilo: tipo de vector a dibujar. Puede ser una flecha (flecha), un segmento (segmento) o
un segmento con un cuadrado en el punto final (cajita).
Clase de elemento gr´ fico Particula.
a
Se ha empleado el objeto Particula, de la clase Particula, para representar la lenteja del
p´ ndulo. La clase Particula se encuentra en el panel de dibujo llamado Basicos. Una Particula
e
´
es un elemento de dibujo que dibuja una forma geom´ trica sencilla, un rectangulo o una
e
´
elipse, en unas determinadas coordenadas del padre. La ubicacion de este elemento en el
´
padre se especifica dando las coordenadas de su centro y el tamano del objeto segun cada
˜
´
uno de los ejes coordenados.
En la Figura 10.11 se muestran las propiedades del objeto Particula. A continuacion, se
´
describen las propiedades del objeto Particula que se han especificado:
– X: coordenada x del centro del elemento.
– Y: coordenada y del centro del elemento.
– Tama˜ o X: tamano del vector segun el eje x.
n
˜
´
– Tama˜ o Y: tamano del vector segun el eje y.
n
˜
´
– Activo: indica mediante un valor booleano si este componente es interactivo o no.
124

´
TEMA 10. PENDULO SIMPLE

Figura 10.9: Propiedades del objeto EtiquetaL, de la clase Etiqueta.

Figura 10.10: Propiedades del objeto Cuerda, de la clase Flecha.

Figura 10.11: Propiedades del objeto Particula, de la clase Particula.
10.7. ALGUNAS ACTIVIDADES PROPUESTAS

125

– Estilo: forma grafica de dibujo del elemento. Haciendo clic sobre el boton senalado en la
´
´
˜
Figura 10.11 aparece una ventana que nos permite seleccionar entre 5 formas graficas
´
de dibujo para el elemento: elipse, elipse con ejes, rectangulo, rectangulo con bordes
´
´
redondeados y un punto.

10.7. Algunas actividades propuestas
A continuacion se describen alguna de las actividades que puede realizar el alumno
´
usando el laboratorio.
• Describe como depende la frecuencia de oscilacion del p´ ndulo de la masa y longitud
´
´
e
del mismo.
• ¿Depende la frecuencia de oscilacion de la amplitud del movimiento del p´ ndulo?
´
e
• Modifica las ecuaciones del modelo para tener en cuenta las no linealidades del modelo
del p´ ndulo simple. Para ello sustituya en la ecuacion (6) θ por sin θ. ¿Depende ahora la
e
´
frecuencia de oscilacion de la amplitud del movimiento del p´ ndulo?
´
e
• Anade una ventana con un grafico donde se visualice la trayectoria del p´ ndulo simple.
˜
´
e
126

´
TEMA 10. PENDULO SIMPLE
Tema 11

´
Conduccion de calor a trav´ s de
e
una pared multiple
´

Objetivos: Una vez estudiado el contenido del tema deber´a saber:
ı
´
´
• Dise˜ ar el algoritmo de simulacion de un modelo estatico y programar el
n
modelo usando Ejs.
´
• Usar las clases de elementos graficos: Poligono, Flecha y Texto.

Este laboratorio virtual esta disponible en el CD del curso. Se trata de ParedMulticapa.xml,
´
y se encuentra en el directorio laboratoriosTexto.

´
11.1. Descripcion del modelo matem´ tico
a
El objetivo de este laboratorio virtual es ilustrar el calculo del flujo de calor por conduccion
´
´
a trav´ s de la pared multiple de una camara frigor´fica1 . Se considera la conduccion de calor
e
´
´
ı
´
unicamente en una dimension y en el estado estacionario.
´
´
La pared de la camara frigor´fica esta compuesta de tres capas de diferente material, de
´
ı
´
espesores LA , LB y LC . La temperatura de la superficie interior de la pared de la camara se
´
denomina T1 y la temperatura de la superficie exterior T4 (vea la Figura 11.1).
Se supone que la transferencia de calor se produce en el estacionario y se desea calcular
el flujo de calor por unidad de superficie (qx ) y la temperatura en las interfaces entre los
diferentes materiales (T2 , T3 ). En la Figura 11.1 se representa el circuito t´ rmico equivalente.
e
En primera aproximacion, se supone que las conductividades t´ rmicas de los materiales
´
e
(κA , κB , κC ) son independientes de las demas variables del modelo. Son parametros, a los que
´
´
se asignan los valores siguientes al inicializar el modelo:
1 Este modelo matematico, correspondiente a la pared de una camara frigor´fica, esta extra´do del texto (Cutlip 
´
´
ı
´
ı
Shacham 1999).

127
´
´
´
TEMA 11. CONDUCCION DE CALOR A TRAVES DE UNA PARED MULTIPLE

i

h

ˆ…

g

†‡

j

„…

‚

sv wvuts r qp
de

•”

κ

“•
ˆ…

‰

˜

’
’

κ

fe

‰

†‡

ƒ
t €v t s y xv

‘
‘

„…

k

sv wvuts r qp

™

κ

t €vt sy s

128

j
–

k

—

Figura 11.1: Transferencia de calor a trav´ s de una pared multiple.
e
´

κA
κB

=
=

0.1510
0.0433

W · m−1 · K −1
W · m−1 · K −1

(11.1)
(11.2)

κC

=

0.7620

W · m−1 · K −1

(11.3)

Los espesores de las capas que componen la pared tambi´ n son parametros del modelo.
e
´
Se les asignan los valores siguientes:

LA
LB

=
=

0.015
0.100

m
m

(11.4)
(11.5)

LC

=

0.075

m

(11.6)

La superficie de la pared (S) se considera constante. Puesto que se desea calcular el flujo
de calor por unidad de superficie (qx ), el parametro S no interviene en las ecuaciones del
´
modelo, ya que
Qx
qx =
(11.7)
S
El modelo matematico esta descrito por las ecuaciones siguientes:
´
´

T1 − T2

=

T2 − T3

=

T3 − T4

=

LA
· qx
κA
LB
· qx
κB
LC
· qx
κC

(11.8)
(11.9)
(11.10)

´
´
11.2. Descripcion de la introduccion
En la Figura 11.2 se muestra la introduccion del laboratorio virtual. La figura y las
´
formulas que han sido incluidas en la introduccion son imagenes, en formato .gif, que estan
´
´
´
´
guardadas en el directorio Simulations/laboratoriosTexto/Imagenes.
´
11.3. EL ALGORITMO DE LA SIMULACION

129

Figura 11.2: Introduccion del laboratorio virtual.
´

´
11.3. El algoritmo de la simulacion
El modelo matematico esta compuesto por las Ecuaciones (11.8) – (11.10). Sus variables
´
´
se clasifican de la forma siguiente:
– Variables conocidas: los parametros del modelo (T1 , T4 , LA , LB , LC , κA , κB , κC ).
´
– Variables desconocidas: las variables algebraicas (T2 , T3 , qx ).
Por tratarse de un modelo en el estado estacionario, la variable tiempo no juega ningun
´
papel, y por ello no se incluye en el modelo.
Se comprueba que el sistema no es singular, ya que puede asociarse una incognita con
´
cada ecuacion:
´

T1 − T2

=

T2 − T3

=

T3 − T4

=

LA
· qx
κA
LB
· qx
κB
LC
· qx
κC

→

T2

(11.11)

→

T3

(11.12)

→

qx

(11.13)

Al asignar la causalidad computacional, se observa que cada ecuacion contiene dos incogni´
´
tas, es decir, que el modelo es un sistema de tres ecuaciones con tres incognitas que debe
´
ser resuelto. Resolviendo y ordenando las tres ecuaciones, de modo que las tres incognitas
´
puedan calcularse secuencialmente, una tras otra, se obtiene:
130

´
´
´
TEMA 11. CONDUCCION DE CALOR A TRAVES DE UNA PARED MULTIPLE

Inicio
Declaración de variables
(Panel Variables)

ka, kb, kc, La, Lb, Lc, T1, T2, T3, T4, qx

ka
kb
kc
La
Lb
Lc
T1
T4

= 0.151;
= 0.0433;
= 0.762;
= 0.015;
= 0.100;
= 0.075;
= -18;
= 25;

Inicialización de variables
(columna Valor del panel
Variables)

Ejecución de los algoritmos
del panel Inicialización
qx
T2
T3

Ejecución de los
algoritmos del
panel Ligaduras

= ( T1 – T4 ) / ( La/ka + Lb/kb + Lc/kc );
= T1 - La/ka * qx;
= T4 + Lc/kc * qx;

Representación gráfica de resultados
(comunicación modelo vista)

sí

¿Interacción del usuario?
(comunicación vista modelo)

no
Ejecución de los
algoritmos del
panel Evolución

Ejecución de la acción
ejercida por el usuario

Figura 11.3: Algoritmo de la simulacion.
´

T1 − T4
B
+ LB +
κ

[qx ]

=

[T2 ]

= T1 −

[T3 ]

LA
κA

LC
κC

LA
· qx
κA
LC
= T4 +
· qx
κC

(11.14)
(11.15)
(11.16)

La Ecuacion (11.14) se obtiene de forma sencilla sumando las tres Ecuaciones (11.8) –
´
(11.10). Se ha adoptado la notacion habitual: se escribe entre corchetes la variable a evaluar
´
de cada ecuacion.
´
Las Asignaciones (11.14) – (11.16) deben escribirse, en el modelo en Ejs, en el panel
Ligaduras. El algoritmo de la simulacion se muestra en la Figura 11.3.
´
´
´
11.4. DECLARACION E INICIALIZACION DE LAS VARIABLES

131

Figura 11.4: Ventana VariablesModeloMatematico, del panel Variables.

´
´
11.4. Declaracion e inicializacion de las variables
La declaracion e inicializacion de las variables se ha realizado en dos ventanas del panel
´
´
Variables:
– VariablesModeloMatematico, en la que se han declarado las variables del modelo matematico (vea la Figura 11.4).
´
– VariablesVisualizacion, en la que se han declarado las variables empleadas para la
´
definicion de la vista.
´
Es una practica muy recomendable separar la definicion de ambos tipos de variables, ya
´
´
que facilita la comprension del modelo.
´

´
11.5. Programacion de la vista
En la Figura 11.5 se muestra la vista del laboratorio virtual. A continuacion, se explica
´
qu´ elementos graficos componen la vista.
e
´
En la Figura 11.6 puede verse el arbol de los elementos de la vista. Se compone de:
´
– La ventana mainFrame (ventana principal), que contiene un panel con botones para
reinicializar la simulacion, y cambiar la temperatura interior (T1 ) y exterior de la pared
´
multicapa (T4 ). Tambi´ n, contiene elementos que permiten mostrar y ocultar las dos
e
ventanas de dialogo VentanaParam y VentanaPlots.
´
En la parte central de la ventana principal esta representada esquematicamente la pared
´
´
y se muestran los valores de la temperatura de las caras interior (T1 ) y exterior (T4 ) de la
pared, as´ como el flujo de calor por unidad de superficie (qx ).
ı
– Dos ventanas de dialogo:
– La ventana de dialogo VentanaParam, que permite modificar los valores de los
´
parametros del modelo (conductividades t´ rmicas y espesores de las capas de la
´
e
pared).
132

´
´
´
TEMA 11. CONDUCCION DE CALOR A TRAVES DE UNA PARED MULTIPLE

Figura 11.5: Vista del laboratorio virtual.

´
Figura 11.6: Arbol de elementos de la vista.

Figura 11.7: Propiedades del objeto ParedA, de la clase Poligono.
´
11.5. PROGRAMACION DE LA VISTA

133

– La ventana de dialogo VentanaPlots, que muestra un grafico del perfil de tempera´
´
turas a lo largo de la pared.
A continuacion, se explican los aspectos mas relevantes de la programacion de cada una
´
´
´
estas ventanas. Las explicaciones se centraran en las clases de elementos graficos que no se
´
´
han empleado en los laboratorios virtuales explicados en los temas precedentes.

´
Programacion de la ventana mainFrame
En la programacion de la ventana mainFrame se han empleado tres clases de elementos
´
graficos de la vista que no han sido explicados hasta el momento: Poligono, Flecha, y Texto.
´
Clase de elemento gr´ fico Poligono. Este elemento de la vista se encuentra en el panel
a
de dibujo Grafos y cuerpos. Se trata de un pol´gono cerrado, que se especifica mediante
ı
las coordenadas de sus v´ rtices: (x, y, z) o (x, y), segun se est´ trabajando en tres o en dos
e
´
e
dimensiones.
Se han empleado tres pol´gonos con el fin de dibujar las tres capas que forman la pared.
ı
Estos tres objetos de la clase Poligono se han ubicado dentro del objeto DrawingPanel.
Para cada uno de estos pol´gonos, se han especificado las propiedades siguientes:
ı
– El numero de sus v´ rtices.
´
e
– Dos vectores, con las posiciones x e y de los v´ rtices del pol´gono.
e
ı
En la Figura 11.7 se muestran las propiedades del poligono ParedA:
– En la propiedad Puntos se ha introducido el numero de v´ rtices del pol´gono.
´
e
ı
– En las propiedades X e Y, se han escrito las coordenadas x e y respectivamente de los
v´ rtices del pol´gono.
e
ı
Clase de elemento gr´ fico Flecha. Se ha empleado el objeto Flechax, de la clase Flecha,
a
para representar el sentido del flujo de calor cuando el signo de este es positivo. La clase
´
Flecha se encuentra en el panel de dibujo llamado Grafos y cuerpos.
En la Figura 11.11 se muestran las propiedades del objeto Flechax. A continuacion, se
´
describen las propiedades del objeto Flechax que se han especificado:
– X: coordenada x del origen del vector.
– Y: coordenada y del origen del vector.
– Tama˜ o X: tamano del vector segun el eje x.
n
˜
´
– Tama˜ o Y: tamano del vector segun el eje y.
n
˜
´
– Activo: indica mediante un valor booleano si este componente es interactivo o no.
– Estilo: tipo de vector a dibujar. Puede ser una flecha (flecha), un segmento (segmento) o
un segmento con un cuadrado en el punto final (cajita).
Clase de elemento gr´ fico Texto. Esta clase de elemento se encuentra en el panel de dibujo
a
Basicos. Los objetos de esta clase muestran un conjunto de caracteres en una posicion que
´
´
se especifica al definir el objeto. Dicha cadena de caracteres puede ser una constante o una
variable, pero en cualquier caso debe ser del tipo String.
Los objetos de la clase Texto deben ubicarse en el interior de un contenedor. Por ejemplo,
de la clase PanelDibujo o PanelConEjes.
Para mostrar el valor de la variable qx , se ha creado un objeto de la clase Texto, al que se
ha dado el nombre TextoQ y se ha ubicado dentro del objeto drawingPanel.
En la Figura 11.8 se muestran las propiedades de este elemento de la vista:
– Las propiedades X e Y indican las coordenadas x e y respectivamente donde se va a
mostrar la cadena de caracteres. Estos campos se han enlazado con variables definidas
en la ventana de variables VariablesVisualizacion.
´
– La propiedad Texto contiene la variable de tipo String (QxText) que ha sido definida en
la ventana de variables VariablesDibujo.
134

´
´
´
TEMA 11. CONDUCCION DE CALOR A TRAVES DE UNA PARED MULTIPLE

Figura 11.8: Propiedades del objeto TextoQ, de la clase Texto.

´
Figura 11.9: Arbol de elementos de la vista.

Figura 11.10: Propiedades del objeto PerfilTemp, de la clase Poligono.

Figura 11.11: Propiedades del objeto Flechax, de la clase Flecha.
´
11.5. PROGRAMACION DE LA VISTA

135

´
Programacion de la ventana de di´ logo VentanaPlots
a
La venta de dialogo VentanaPlots muestra un grafico con el perfil de temperatura (vea la
´
´
Figura 11.5).
Para crear este grafico se han incorporado en la vista los elementos que se muestran en la
´
Figura 11.9.
Como el perfil de temperaturas no depende del tiempo de evolucion, se ha empleado el
´
objeto PerfilTemp, de la clase Poligono, para realizar la grafica. Las propiedades de dicho
´
objeto se muestran en la Figura 11.10:
– En la propiedad Puntos se ha introducido el numero de v´ rtices del pol´gono, que es
´
e
ı
igual al numero de capas mas uno.
´
´
– En las propiedades X e Y, se han escrito las coordenadas x e y respectivamente de los
v´ rtices del pol´gono. En este caso, dos vectores (x, T) que contienen las posiciones de
e
ı
inicio y finalizacion de cada capa y la temperatura en dichas posiciones.
´
– Se ha asignado a la propiedad Cerrado el valor false, para que Ejs no conecte el primer
punto del pol´gono con el ultimo.
ı
´
136

´
´
´
TEMA 11. CONDUCCION DE CALOR A TRAVES DE UNA PARED MULTIPLE
Tema 12

Laboratorio virtual de un sistema
mec´ nico
a

Objetivos: Una vez estudiado el contenido del tema deber´a saber:
ı
´
• Realizar modelos matematicos sencillos con estructura variable y analizar
su causalidad computacional.
• Declarar e inicializar variables de tipo array.
´
• Discutir algunos conceptos fundamentales acerca de la deteccion de
´
eventos en la simulacion de modelos h´bridos.
ı
• Discutir el concepto de modelo con ´ndice superior.
ı
• Definir elementos en la vista de las clases Cubo, Muelle, Part´cula,
ı
Pol´gono y Flecha.
ı
´
• Definir metodos propios sencillos.

Los laboratorios virtuales explicados en este tema estan disponibles en el CD del curso. Se
´
trata de los ficheros SistemaMecanicoSimplificado.xml y SistemaMecanicoCompleto.xml, que
se encuentran en el directorio laboratoriosTexto.

´
´
12.1. Descripcion del sistema e hipotesis de modelado
En la Figura 12.1a se muestra la representacion esquematica del sistema mecanico a
´
´
´
modelar. Esta compuesto por los componentes siguientes:
• Un muelle de masa despreciable, muelle1, que esta unido por su extremo izquierdo a
´
una pared inmovil y por su extremo derecho al objeto masa1.
´
• Un amortiguador: amortiguador.
• Dos objetos con masa:
– Un objeto, masa1, de masa constante M1 , que desliza sobre el suelo sin rozamiento.
– Un segundo objeto, masa2, de masa constante M2 , que desliza con rozamiento sobre
la superficie superior el objeto masa1.
El objetivo planteado en este tema es el modelado del sistema mecanico mostrado en la
´
Figura 12.1a, y la programacion de un laboratorio virtual que ilustre su funcionamiento.
´

137
´
TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO

138

pared fija

pared fija
fricción

masa 2

muelle 1

muelle 1

masa 1

masa 1

amortiguador

amortiguador
rozamiento
despreciable

mn

suelo, permanece fijo

suelo, permanece fijo

rozamiento
despreciable

ml

Figura 12.1: a) Sistema mecanico a modelar; b) Un subsistema de este.
´
´

Para hacer mas sencillas las explicaciones, en primer lugar se va a estudiar una version
´
´
simplificada del sistema, que es la mostrada en la Figura 12.1b. Obs´ rvese que este subsise
tema del sistema original no contiene el objeto masa2.

12.2. Modelado f´sico de los componentes
ı
En esta seccion se describe el modelado de los componentes del sistema mostrado en la
´
Figura 12.1b. Estos son: la pared, el muelle, el amortiguador y el objeto masa1.

Modelado del muelle
Se supone que el muelle tienen masa despreciable, y que se comporta de forma elastica,
´
obedeciendo la Ley de Hooke. Esta ley establece que:
la fuerza (F ) que ejerce el muelle sobre cualquiera de sus extremos es igual a una
constante de proporcionalidad, k, multiplicada por la diferencia entre su elongacion
´
(x) y su elongacion natural (x0 ).
´

F = k · (x − x0 )

(Ley de Hooke)

(12.1)

La constante de proporcionalidad, k, se denomina constante del muelle, y tiene unidades
de fuerza dividida por distancia: N/m.
La elongacion natural (x0 ) del muelle es su longitud cuando la fuerza ejercida es cero.
´
Obs´ rvese, que la fuerza que ejerce el muelle tiene el sentido tendente a restablecer su
e
elongacion natural (vea la Figura 12.2).
´
El muelle es un componente almacenador de energ´a:
ı
– Cuando su elongacion se aleja de la elongacion natural, acumula energ´a.
´
´
ı
– Cuando su elongacion tiende a la elongacion natural, cede energ´a.
´
´
ı

Modelado del amortiguador
Se supone que el amortiguador no tiene masa y que presenta un comportamiento lineal:
– La magnitud de la fuerza ejercida por el amortiguador (F ) en cada uno de sus extremos
es proporcional a la velocidad relativa entre ambos extremos, es decir, a la derivada de
la elongacion (v = dx ).
´
dt
´
12.2. MODELADO FISICO DE LOS COMPONENTES

(elongación natural)

o

p

o

r

=

r



u

u
q

r

u
q

r

p

r



r

=

q

st

=

139

u

Figura 12.2: La fuerza ejercida por el muelle tiende a restablecer su elongacion natural.
´

xw
zw

v

y
xw
zw

v

=

=

v
y
v

{

(elongación)

}~

}|

Figura 12.3: Amortiguador: a) elongacion; b) fuerza ejercida sobre sus extremos.
´

⋅

=

‚

 €
ƒ

=


m

…†

…„

Figura 12.4: Relacion constitutiva de: a) el objeto masa1; b) la pared.
´

‡

ˆ

=

‰

Figura 12.5: Sistema de referencia y criterio de signos.
140

´
TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO

– El sentido de la fuerza es aquel que se opone a que se produzca el cambio en la
elongacion.
´
La relacion constitutiva del amortiguador es:
´
F =b·

dx
dt

(12.2)

La elongacion del amortiguador (x) es la distancia que existe en cada instante entre sus
´
extremos (vea la Figura 12.3a).
Para ilustrar el comportamiento del amortiguador, consideremos que tiene uno de sus
extremos unido a una pared fija. En la Figura 12.3b se muestra el sentido de la fuerza
ejercida por el amortiguador sobre sus extremos. Obs´ rvese que:
e
– En el extremo libre, la velocidad del mismo y la fuerza aplicada por el amortiguador
llevan sentido opuesto.
– La fuerza que ejerce el amortiguador sobre la pared tiene la misma magnitud, pero
sentido opuesto, a la fuerza que ejerce el amortiguador sobre su extremo libre.
– Por otra parte, la fuerza que ejerce la pared sobre el extremo del amortiguador es igual,
y de sentido opuesto, a la que ejerce el extremo fijo del amortiguador sobre la pared.
Al contrario de lo que sucede con el muelle, que es un elemento almacenador de energ´a
ı
potencial, el amortiguador es un componente que disipa energ´a, es decir, transforma la
ı
energ´a cin´ tica en calor.
ı
e

Modelado del objeto masa1
La masa del objeto permanece constante. En consecuencia, la fuerza neta aplicada sobre
el objeto (F ) es igual a su masa (m) multiplicada por la aceleracion (a) que adquiere (ver la
´
Figura 12.4a):
F =m·a

(12.3)

Modelado de la pared
La fuerza que ejerce la pared sobre el punto de conexion a ella de cualquier componente
´
es la necesaria para que este permanezca en reposo (ver la Figura 12.4b). Por tanto, este
´
componente se describe mediante la ecuacion:
´
v=0

(12.4)

12.3. Modelo matem´ tico del sistema simplificado
a
En primer lugar, se va a establecer el sistema de referencia y el criterio de signos para
la posicion, la velocidad, la aceleracion y la fuerza. A continuacion, se formulara el modelo
´
´
´
´
matematico del sistema.
´

Referencia y criterio de signos
Debe fijarse el sistema de referencia para la coordenada espacial: se considera que el
origen de coordenadas se encuentra en la pared (vea la Figura 12.5).
La coordenada espacial de los puntos situados a la derecha de la pared tiene signo positivo,
mientras que los puntos situados a la izquierda de la pared tienen signo negativo.
´
12.3. MODELO MATEMATICO DEL SISTEMA SIMPLIFICADO

141

Š

Œ

Ž

Š‹

Figura 12.6: La coordenada del punto de conexion se denomina x1 .
´

La velocidad y la fuerza se consideraran positivas cuando lleven el sentido creciente de la
´
coordenada espacial.

Modelo matem´ tico
a
Sean x1 , v1 y a1 la posicion, la velocidad y la aceleracion respectivamente del punto
´
´
de conexion entre el muelle, el amortiguador y el objeto masa1. Este punto se encuentra
´
senalado mediante un c´rculo negro en la Figura 12.6.
˜
ı
En el punto de conexion entre el muelle, el amortiguador y el objeto masa1, se verifica
´
que la fuerza ejercida sobre masa1 (Fmasa1 ) es igual a la suma de las fuerzas ejercidas por el
muelle (Fmuelle1 ) y por el amortiguador (Famortiguador ) sobre dicho punto de conexion:
´

Fmasa1
Fmuelle1
Famortiguador

= Fmuelle1 + Famortiguador

(12.5)

= −k1 · (x1 − x0,muelle1 )
= −b · v1

(12.6)
(12.7)

Asimismo, la fuerza ejercida sobre el objeto masa1 y la aceleracion que adquiere este,
´
´
estan relacionadas de la forma siguiente:
´
Fmasa1 = m1 · a1

(12.8)

El modelo se completa, teniendo en cuenta que la velocidad es la derivada de la posicion,
´
y que la aceleracion es la derivada de la velocidad.
´
El modelo matematico del sistema mostrado en la Figura 12.1a es el siguiente:
´

Fmasa1
Fmuelle1
Famortiguador
Fmasa1
dx1
dt
dv1
dt

= Fmuelle1 + Famortiguador
= −k1 · (x1 − x0,muelle1 )
= −b · v1

(12.10)
(12.11)

= m 1 · a1

(12.12)

= v1

(12.13)

= a1

(12.14)

Las variables de este modelo pueden clasificarse de la manera siguiente:
– Parametros: m1 , k1 , b, x0,muelle1 .
´

(12.9)
´
TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO

142

– Variables de estado: x1 , v1 .
– Variables algebraicas: a1 , Fmasa1 , Fmuelle1 , Famortiguador .
Obs´ rvese que el modelo esta compuesto por 6 ecuaciones y 6 incognitas: las 4 variables
e
´
´
algebraicas mas las 2 derivadas de los estados (derx1 y derv1).
´

´
12.4. El algoritmo de la simulacion
El primer paso para plantear el algoritmo de la simulacion del modelo es asignar su
´
causalidad computacional. Esto permitira determinar en qu´ orden debe resolverse el modelo.
´
e

´
Asignacion de la causalidad computacional
La asignacion de la causalidad computacional consiste en decidir qu´ incognita se evalua
´
e
´
´
de cada ecuacion del modelo, y en qu´ orden deben resolverse las ecuaciones del modelo.
´
e
La causalidad computacional de un modelo se decide siguiendo las dos reglas siguientes:
– Regla 1: Si una ecuacion posee una unica incognita, debe emplearse para calcularla.
´
´
´
– Regla 2: Si una incognita aparece solo en una ecuacion, debe calcularse de ella.
´
´
´
Si el modelo matematico esta correctamente planteado (es decir, no es singular), entonces
´
´
aplicando estas dos reglas se llega a una de estas dos posibles situaciones:
1. Todas las incognitas pueden ser resueltas una tras otra, en secuencia.
´
2. Se llega a un punto en que todas las ecuaciones tienen al menos 2 incognitas, y todas las
´
incognitas aparecen al menos en dos ecuaciones. Es decir, el modelo contiene sistemas
´
de ecuaciones que deben resolverse simultaneamente. Estos sistemas de ecuaciones se
´
denominan lazos algebraicos.
Asignemos la causalidad computacional al modelo formado por las Ecs. (12.9) – (12.14).
Para ello, en primer lugar, sustituimos las derivadas de las variables de estado por variables
auxiliares:
– Sustituimos
– Sustituimos

dx1
dt
dv1
dt

por la variable derx1 .
por la variable derv1 .

Realizada esta sustitucion, se obtiene el modelo siguiente:
´

Fmasa1
Fmuelle1
Famortiguador
Fmasa1
derx1
derv1

= Fmuelle1 + Famortiguador

(12.15)

= −k1 · (x1 − x0,muelle1 )
= −b · v1

(12.16)
(12.17)

= m 1 · a1
= v1

(12.18)
(12.19)

= a1

(12.20)

Las incognitas a calcular son las variables: a1 , Fmasa1 , Fmuelle1 , Famortiguador , derx1 , derv1 .
´
A continuacion, se aplican las dos reglas anteriormente descritas a las Ecs. (12.15) –
´
(12.20). A medida que se asigna la causalidad computacional, se va senalando la variable a
˜
evaluar de cada ecuacion incluy´ ndola entre corchetes.
´
e
1. La variable Fmuelle1 es la unica incognita de la Ec. (12.16). Por tanto:
´
´
[Fmuelle1 ] = −k1 · (x1 − x0,muelle1 )

(12.21)

2. La variable Famortiguador es la unica incognita de la Ec. (12.17):
´
´
[Famortiguador ] = −b · v1

(12.22)
´
12.4. EL ALGORITMO DE LA SIMULACION

143

3. La variable derx1 es la unica incognita de la Ec. (12.19):
´
´
[derx1 ] = v1

(12.23)

4. Una vez Fmuelle1 y Famortiguador han sido calculadas de las Ecs. (12.16) y (12.17) respectivamente, la unica incognita que hay en la Ec. (12.15) es Fmasa1 :
´
´
[Fmasa1 ] = Fmuelle1 + Famortiguador

(12.24)

5. Una vez calculada Fmasa1 , la unica incognita de la Ec. (12.18) es a1 :
´
´
Fmasa1 = m1 · [a1 ]

(12.25)

6. Una vez calculada a1 , la unica incognita de la Ec. (12.20) es derv1 .
´
´
[derv1 ] = a1

(12.26)

As´ pues, despejando al lazo izquierdo de la igualdad la variable a evaluar de cada ecuaı
cion, y ordenando las ecuaciones de modo que puedan ser resueltas en secuencia, se obtiene
´
el modelo ordenado y resuelto:

[Fmuelle1 ] = −k1 · (x1 − x0,muelle1 )
[Famortiguador ] = −b · v1
[derx1 ] = v1
[Fmasa1 ] = Fmuelle1 + Famortiguador
Fmasa1
[a1 ] =
m1
[derv1 ] = a1

(12.27)
(12.28)
(12.29)
(12.30)
(12.31)
(12.32)

´
El algoritmo de la simulacion
Para escribir las ecuaciones diferenciales (12.29) y (12.32) en una pagina EDO del panel
´
Evolucion de Ejs, es preciso expresar las derivadas en funcion de las variables de estado, los
´
´
parametros y el tiempo.
´
A partir del modelo ordenado y resuelto (es decir, de las Ecs. (12.27) – (12.32)), es muy
sencillo expresar las derivadas de la forma anteriormente indicada. Se obtiene:

[derx1 ] =
[derv1 ] =

v1
−k1 · (x1 − x0,muelle1 ) − b · v1
m1

(12.33)
(12.34)

El algoritmo para la simulacion del modelo empleando Ejs es el mostrado en la Figura
´
12.7.
Obs´ rvese que las variables derx1 y derv1 , que se han introducido sustituyendo a las
e
derivadas, han resultado utiles para realizar la asignacion de la causalidad computacional
´
´
y para expresar las derivadas en funcion de los estados, los parametros y el tiempo. Sin
´
´
embargo, puesto que en este ejemplo estas dos variables no son necesarias para calcular
ninguna de las variables relevantes del sistema, las Ecs. (12.29) y (12.32) no se incluyen en
el modelo en Ejs (ver las ecuaciones del panel Ligaduras en la Figura 12.7).
La variable incremento t es el tamano del paso en el tiempo del m´ todo de integracion. Esta
˜
e
´
variable debe ser definida (en el panel Variables e introducida en la casilla Incremento de la
pagina EDO (vea la Figura 12.9.b).
´
´
TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO

144

Inicio
t, incremento_t,
b, k1, m1, x0_muelle1,
x1, v1,
a1, Famortiguador, Fmasa1, Fmuelle1

t
incremento_t
b
k1
m1
x0_muelle1
x1
v1

=
=
=
=
=
=
=
=

0.0
0.01
1.5
5.0
3.5
2.0
x0_muelle1 + 0.5
0.0

Declaración de variables
(Panel Variables)

Inicialización de variables
(columna Valor del panel
Variables)

Ejecución de los algoritmos
del panel Inicialización
Ejecución de los
algoritmos del
panel Ligaduras

Fmuelle1 = - k1 * ( x1 – x0_muelle1 );
Famortiguador = - b * v1;
Fmasa1 = Fmuelle1 + Famortiguador;
a1 = Fmasa1 / m1;

Representación gráfica de resultados
(comunicación modelo vista)

sí

¿Interacción del usuario?
(comunicación vista modelo)

Ejecución de la acción
ejercida por el usuario

no
Ejecución de los
algoritmos del
panel Evolución

En una página ODE:
d x1 / d t = v1;
d v1 / d t = ( - k1*(x1–x0_muelle1) - b*v1 ) / m1;

Figura 12.7: Algoritmo de la simulacion del sistema mostrado en la Figura 12.1b.
´
´
´
12.5. DECLARACION E INICIALIZACION DE LAS VARIABLES EN EJS

145

Figura 12.8: Paginas de definicion e inicializacion de las variables del modelo en Ejs.
´
´
´

Una vez planteado el algoritmo de la simulacion, la programacion del modelo en Ejs es
´
´
inmediata. En las siguientes secciones se describe como hacerlo.
´

´
´
12.5. Declaracion e inicializacion de las variables en Ejs
Existen multiples formas de definir las variables en el panel Variables de Ejs. Una de ellas
´
es definir las paginas de modo que agrupen los diferentes tipos de variables:
´
–
–
–
–

tiempo
parametros
´
estados
variables algebraicas

En la Figura 12.8 se muestran las paginas con la definicion de las variables del modelo.
´
´
Obs´ rvese que se ha asignado valor inicial a la variable tiempo, a los parametros y a las
e
´
variables de estado.
´
TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO

146

a)

b)

Figura 12.9: Paneles: a) Ligaduras; b) Evolucion.
´

El valor inicial de las variables algebraicas se calculara al ejecutar el algoritmo del panel
´
Ligaduras. Por ello, no es preciso escribirlo en los paneles Variables o Inicializacion.
´

´
12.6. Definicion del modelo en Ejs
Como se ha indicado anteriormente, una vez que se ha planteado el algoritmo de la
simulacion para el modelo (vea la Figura 12.7), la definicion del modelo en Ejs se realiza
´
´
de forma inmediata. En la Figura 12.9 se muestra el contenido de los paneles Ligaduras y
Evolucion.
´

´
12.7. Definicion de la vista
En esta seccion se describen los pasos a seguir para la programacion de la vista del
´
´
laboratorio virtual, que es mostrada en la Figura 12.13.
´
12.7. DEFINICION DE LA VISTA

147

š
’
™



”

§ ¦ ¬ ¤ « ª© ¨ § ¦ ¥ ¤
­
Ÿ ¡¢¡   £
® ±²² ± ° ¯ ³
´

•

ž


b)

–

ž

›œ

a)

—

−

˜

“

‘

−

Figura 12.10: Variables necesarias para la definicion de la vista.
´

Figura 12.11: Definicion de las variables de la vista.
´

3
5

2
1

4
6

9
a)

7

8

b)

Figura 12.12: Variables para la definicion de la parte fija del amortiguador.
´
´
TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO

148

a)

b)

´
Figura 12.13: a) Vista del laboratorio virtual; b) Arbol de elementos de la vista.

Variables de la vista
Frecuentemente, la programacion de la vista requiere del empleo de variables que no
´
intervienen en el modelo matematico. Estas variables se introducen espec´ficamente para
´
ı
definir la posicion y las dimensiones de los elementos graficos que componen la vista.
´
´
En este caso, la programacion de la vista requiere de la definicion de las variables mostra´
´
das en la Figura 12.10.
En la Figura 12.10a se muestran las variables que definen la posicion vertical del amor´
tiguador (yamortiguador ), de la masa (ymasa1 ) y del muelle (ymuelle1 ). Tambi´ n, se establecen las
e
dimensiones de la pared, y la posicion horizontal del punto de union de los tres elementos
´
´
(x1 ).
En la Figura 12.10b se muestran las variables empleadas para la definicion de la vista del
´
amortiguador.
Finalmente, en la Figura 12.11 se muestra el panel de Ejs en el que se definen e inicializan
las variables descritas anteriormente. Obs´ rvese que se han definido dos variables vectoriales:
e
xamortiguadorF ijo e yamortiguadorF ijo . En la columna Dimension se ha escrito 9. Esto indica que
´
cada una de estas variables vectoriales esta compuesta de 9 valores. Estos valores definen
´
las coordenadas de pol´gono que representa la parte fija del amortiguador. La inicializacion
ı
´
de las variables vectoriales debe realizarse en el panel Inicializacion (vea la Figura 12.12).
´

Componentes de la vista
En la Figura 12.13b se muestra el arbol de elementos de la vista. A continuacion, se
´
´
describen las propiedades de los elementos que lo componen.
´
12.7. DEFINICION DE LA VISTA

149

En la Figura 12.14 se muestran las propiedades de los elementos VentanaAnimacion,
Botones y ControlSimulacion. El elemento VentanaAnimacion contiene a todos los demas
´
elementos de la vista (vea la Figura 12.13a), los cuales a su vez estan distribuidos en los
´
dos elementos siguientes:
– Botones: que da lugar a la regleta con los botones situada en la parte izquierda de la
vista.
– PanelDibujoAnimacion: que da lugar al diagrama animado del sistema, mostrado en la
´
parte central de la vista.

´
Control de la simulacion
El elemento ControlSimulacion contiene los elementos BotonPlay, BotonPause y BotonReset, que estan situados en la posicion arriba, centro y abajo respectivamente. Estos tres
´
´
elementos pertenecen a la clase Boton. Sus propiedades se muestran en la Figura 12.15.
´

´
Componentes de la animacion
En la Figura 12.16 se muestran las propiedades del elemento PanelDibujoAnimacion, que
es de la clase PanelDibujo. Como se indica en la figura, los campos M´nimo X, Maximo X,
ı
´
M´nimo Y y Maximo Y determinan las coordenadas del extremo inferior izquierdo (punto x) y
ı
´
del extremo superior derecho (punto Y ) del area de dibujo del elemento PanelDibujo.
´
Obs´ rvese que el elemento Botones esta situado en la posicion izquierda, dentro del elee
´
´
mento VentanaAnimacion, y que elemento PanelDibujoAnimacion esta situado en el centro.
´
´
´

El elemento Pared
En las Figura 12.17 se muestran las propiedades del elemento Pared, de la clase Cubo. Los
campos Origen X y Origen Y definen las coordenadas horizontal y vertical respectivamente del
v´ rtice inferior izquierdo del cubo. Los campos Tama˜ o X y Tama˜ o Y determinan la anchura
e
n
n
y la altura del cubo respectivamente.

El elemento Muelle1
En la Figura 12.18 se muestran las propiedades del elemento Muelle1, que es de la clase
Muelle. Los campos X e Y especifican las coordenadas de uno de los extremos del muelle
(en este caso, del extremo unido a la pared). Los campos Tama˜ o X y Tama˜ o Y especifican
n
n
la coordenada horizontal y vertical de la distancia entre el otro extremo del muelle (el que
esta unido a la masa1) y el extremo definido anteriormente (unido a la pared).
´

El elemento Masa1
En la Figura 12.19 se muestran las propiedades del elemento Masa1, de la clase Part´cula.
ı
Las coordenadas horizontal y vertical de la posicion del elemento, vienen determinadas por
´
las variables x1 e ymasa1 respectivamente, segun se especifica en los campos X e Y de la
´
ventana de propiedades. El punto del objeto al que hace referencia su posicion se define en
´
el campo Posicion. En este caso, el punto empleado para determinar la posicion del objeto es
´
´
el punto central de su lado izquierdo (vea la parte superior derecha de la Figura 12.19).
Se pretende que el objeto Masa1 sea interactivo, es decir, que en cualquier instante de
la simulacion pueda cambiarse su posicion pinchando sobre el y arrastrandolo con el raton.
´
´
´
´
´
Para ello, debe escribirse el valor true en el campo Activo (vea la Figura 12.19).
150

´
TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO

Pos:
izqda

Pos:
arriba

Figura 12.14: Propiedades de los elementos VentanaAnimacion, Botones, ControlSimulacion.

Figura 12.15: Propiedades de los elementos BotonPlay, BotonPause y BotonReset.
´
12.7. DEFINICION DE LA VISTA

151

» º ¹¸

(
Pos:
izqda

¶µ

(−

−

·

Área de dibujo:

)

Pos:
centro

Figura 12.16: Propiedades del elemento PanelDibujoAnimacion.

×
ÈÈ Ç Í Å Ì ËÊÊ ÉÉ ÈÈ Ç Æ Å Î
ÇÍÅÌ Ë Ç ÆÅ Î
ÀÀ Â Ã Â Á Ä
ÏÏ Ò Ó Ó Ò Ñ Ð Ô
Õ
Õ
¿
¾

¿

−

¼½

Ö

−

Figura 12.17: Propiedades del elemento Pared, de la clase Cubo.

)
´
TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO

Figura 12.18: Propiedades del elemento Muelle1, de la clase Muelle.

Tamaño X

(

Ø
Ú Ù

152

)

Tamaño Y

Figura 12.19: Propiedades del elemento Masa1, de la clase Part´cula.
ı
´
12.7. DEFINICION DE LA VISTA

153

a)
ä

ÿ
ÿ
û ûú ù
ø û üü üü û ú ù

Ý

ý

ñ ð ö î õ ôó ò ñ ð ï î
÷
÷
é
é ëìë ê í
í
þ
þ
è

ã

Û

Þ

ß

à

á

b)

ç

â

Ü

Ü

−

åæ

−

Figura 12.20: a) M´ todo mover masa1(), definido en el panel Propio; b) Significado de las
e
variables empleadas.

Las acciones a realizar cuando el usuario pulsa sobre el objeto, lo arrastra con el raton,
´
y deja de pulsar sobre el objeto se indican en los campos Al Pulsar, Al Mover y Al Soltar
respectivamente. En estos campos se escribe el nombre del m´ todo de Java que debe ejecue
tarse en cada caso. Ejs proporciona algunos m´ todos predefinidos, como son pause(), que
e
detiene la simulacion, y play(), que la continua partiendo del punto en el cual se detuvo.
´
Puede obtenerse una lista de los m´ todos proporcionados por Ejs pulsando sobre el icono
e
que representa dos engranajes y que esta situado a la derecha del campo correspondiente.
´
Ademas de los m´ todos proporcionados por Ejs, puede asociarse a una accion (pulsar,
´
e
´
mover o soltar) cualquier m´ todo que haya sido definido en el panel Propio. En la Figura
e
12.20a se muestra el codigo del m´ todo mover masa1(), que sera ejecutado cada vez que se
´
e
´
arrastre el objeto Masa1 con el raton. Para facilitar la comprension del codigo, en la Figura
´
´
´
12.20b se muestra el significado de las variables que definen las dimensiones f´sicas y la
ı
posicion de los elementos del sistema.
´
El codigo del m´ todo mover masa1() es el mostrado a continuacion (vea la Figura 12.20).
´
e
´
Su proposito es limitar el tipo de desplazamientos del objeto masa1 que pueden realizarse
´
arrastrandolo con el raton. Se han numerado las l´neas de codigo con el fin de facilitar la
´
´
ı
´
referencia a las mismas en las explicaciones siguientes.
1
2

public void mover_masa1 () {
yMasa1 = 0;
´
TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO

154
3
4
5
6

if ( x1  LB + LP ) { x1 = LB + LP; }
if ( x1  LA + LP ) { x1 = LA + LP; }
if ( x1  LB
) { x1 = LB;
}
}

En la l´nea 2 se establece que la coordenada vertical del objeto Masa1 siempre sea cero.
ı
Con ello se impide que el objeto se desplace verticalmente al ser arrastrado con el raton. Es
´
decir, unicamente se permiten desplazamientos horizontales.
´
La finalidad de las l´neas 3 y 4 es impedir que el embolo del amortiguador quede fuera de
ı
´
la caja en la que esta contenido. Finalmente, la l´nea 5 del codigo impide que la masa penetre
´
ı
´
dentro de la caja del amortiguador.

El amortiguador: elementos AmortiguadorFijo y AmortiguadorMovil
En las Figuras 12.21 y 12.22 se muestran las propiedades de los dos elementos empleados
para representar el amortiguador. El elemento AmortiguadorFijo representa la caja, que se
encuentra unida solidariamente a la pared, y el elemento AmortiguadorMovil, que representa
el embolo movil.
´
´
El elemento AmortiguadorFijo es de la clase Pol´gono. Se trata de un pol´gono no cerrado.
ı
ı
Las coordenadas de los puntos de los v´ rtices del pol´gono estan definidas por los vectores
e
ı
´
x amortiguadorFijo e y amortiguadorFijo. Recu´ rdese que estos dos vectores se definieron en
e
el panel Variables (vea la Figura 12.11) y se les asigno valores en el panel Inicializacion (ver la
´
´
Figura 12.12).
El elemento AmortiguadorMovil es de la clase Flecha. En la Figura 12.22 se muestran las
propiedades del elemento. Estas incluyen las coordenadas horizontal y vertical del punto base
de la flecha (campos X e Y ), la dimension horizontal y vertical de la flecha (campos Tama˜ o
´
n
X y Tama˜ o Y), el estilo de la flecha (campo Estilo) y sus propiedades de interactividad.
n

12.8. Modelo matem´ tico del sistema completo
a
El sistema mecanico a modelar es el mostrado en la Figura 12.1a. El objeto masa2 desliza
´
sobre el objeto masa1, existiendo una fuerza de friccion entre ambos.
´

´
Modelo de la friccion
En la Figura 12.23a se muestra el modelo de la friccion1 . Se observa que en el modelo
´
intervienen las dos variables siguientes: la velocidad relativa entre los cuerpos (v) y la fuerza
de friccion (Ff ).
´
El modelo contempla las dos situaciones siguientes:
– Friccion dinamica. Cuando la velocidad relativa entre ambos cuerpos es diferente de
´
´
cero (v = 0), se produce una fuerza de friccion dinamica que viene dada por la expresion
´
´
´
siguiente:
Ff =

Rv · v + Rm
Rv · v − Rm

si v  0
si v  0

(12.35)

– Friccion estatica. Cuando la velocidad relativa entre ambas superficies es cero (v = 0), la
´
´
fuerza de friccion estatica se opone a que la velocidad se haga diferente de cero, siempre
´
´
que para ello sea preciso una fuerza de magnitud menor o igual que R0 .
1 El

modelo de la friccion esta extra´do de (Elmqvist, Cellier  Otter 1993).
´
´
ı
´
12.8. MODELO MATEMATICO DEL SISTEMA COMPLETO

155

Figura 12.21: Propiedades del elemento AmortiguadorFijo.




¦ ¥  £  ©¨ § ¦ ¥ ¤ £



¡
 
¢

Figura 12.22: Propiedades del elemento AmortiguadorMovil.
´
TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO








$

#

%

%
1
1




0

masa1
(

)

6
5

−




%

−

−




2

pendiente

=

masa2




'
3

pendiente

4'

Modelo de
la fricción:

!
!

156

a)

b)

Figura 12.23: a) Relacion constitutiva de la friccion; b) Ejemplo.
´
´

modo
deslizante



U IH



P

T
R

Q
Q

⋅ −

TW

U

TY
X

U

S

F

V

B
A

C
7

8

se calcula de las restantes
ecs. del modelo.

=

T

⋅ +

R

E

[ ]=

=

U IH

G

modo
acoplado

P

D



es función de variables de estado (ley de
Newton), luego de la relación constitutiva de
la fricción se calcula la fuerza.

9

@

Figura 12.24: Modelo de la friccion como un automata con dos modos.
´
´

Ejemplo 12.8.1. En la Figura 12.23b se muestra un ejemplo de friccion dinamica. La velocidad
´
´
del objeto masa1 es mayor que la velocidad del objeto masa2. Es decir: v1  v2 . Tal como se
muestra en la Figura 12.23b, ambas velocidades tienen la misma direccion y sentido.
´
Puesto que la velocidad relativa es mayor que cero (v = v1 − v2  0), aparece una fuerza
de friccion entre los objetos masa1 y masa2. La fuerza ejercida sobre masa1 tiene la misma
´
magnitud, pero sentido opuesto, a la fuerza ejercida sobre masa2.
Estas fuerzas de friccion tienden a reducir la velocidad relativa entre los objetos. Es decir, la
´
fuerza de friccion que actua sobre masa1 tiene a reducir la velocidad de masa1, mientras que
´
´
la fuerza que actua sobre masa2 tiende a aumentar la velocidad de masa2.
´
Obs´ rvese que, cuando se produce la transicion entre el reposo relativo y el movimiento
e
´
relativo de los dos cuerpos, se produce un cambio discontinuo en la magnitud de la fuerza de
friccion, que pasa de valer R0 a valer Rm .
´
La friccion puede modelarse como se muestra en la Figura 12.24. Se distinguen dos modos
´
diferentes de operacion del sistema:
´
– Modo acoplado. En este caso, la fuerza de friccion entre masa1 y masa2 es tal que la
´
velocidad relativa entre ambos objetos es cero. As´ pues, el fenomeno f´sico de la friccion
ı
´
ı
´
se modela mediante la ecuacion:
´
´
12.8. MODELO MATEMATICO DEL SISTEMA COMPLETO

v

157

s r q h pi dh h f dg fe dc

t

t
ba`

`

t

Figura 12.25: La variable v pasa por cero, sin valer exactamente cero en ninguno de los
instantes de evaluacion del modelo: ti y ti+1 .
´

v=0

(12.36)

En esta ecuacion solo interviene una variable: la velocidad relativa (v). Por tanto, la
´
´
Ec. (12.36) se empleara para calcular v. Este hecho se representa en la Figura 12.24
´
incluyendo la variable v entre corchetes cuadrados.
Puesto que de la ecuacion constitutiva de la friccion, la Ec. (12.36), se calcula v, la fuerza
´
´
de friccion (Ff ) debera calcularse de las restantes ecuaciones del modelo.
´
´
– Modo deslizante. Cuando existe movimiento relativo entre masa1 y masa2, la fuerza de
friccion viene dada por la Ec. (12.35).
´
En la Figura 12.24 se muestran las condiciones de conmutacion entre ambos modos de
´
funcionamiento:
– Cuando el sistema esta en modo acoplado, y el modulo de la fuerza de friccion supera el
´
´
´
valor R0 , entonces se produce la conmutacion al modo deslizante.
´
– Cuando el sistema esta en modo deslizante y la velocidad relativa entre los objetos se
´
hace cero, entonces se produce la conmutacion al modo acoplado.
´
El modelo de la friccion descrito anteriormente representa satisfactoriamente la f´sica del
´
ı
problema. Sin embargo, no es un modelo valido para simulacion, ya que presenta los dos
´
´
problemas descritos a continuacion.
´

´
Problema I: Deteccion de los eventos
La condicion de conmutacion entre el modo deslizante y el modo acoplado es que la
´
´
velocidad relativa entre masa1 y masa2 valga cero (v = 0). En general, al describir un modelo
para simulacion, una condicion del tipo “cuando v valga cero, entonces . . . ” no debe ser escrita
´
´
empleando expresiones de igualdad.
Esto es debido a que la condicion v = 0 se comprobara en los instantes de tiempo en los
´
´
que se evalua el modelo, los cuales vienen determinados por el tamano del paso del m´ todo
´
˜
e
de integracion. As´ pues, si el corte por cero de la variable v se produce en un instante de
´
ı
tiempo que no coincide con un instante de evaluacion, entonces no se detectara el evento. En
´
´
la Figura 12.25 se ilustra esta situacion.
´
Para evitar que no se detecte el corte por cero de la variable, es preciso expresar adecuadamente la condicion, empleando para ello expresiones de desigualdad, en lugar de expresiones
´
de igualdad. Las condiciones del tipo “cuando v valga cero, entonces . . . ” deben expresarse de
la forma siguiente: “cuando v pase de ser positiva a ser menor o igual que cero, o cuando v
pase de ser negativa a ser mayor o igual que cero, entonces . . . ”.
Volviendo al ejemplo mostrado en la Figura 12.25, obs´ rvese que esta forma de expresar
e
la condicion permite detectar correctamente el cruce por cero: en el instante ti , la variable v
´
´
TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO

ˆ
„

ˆ
… ‡

ˆ

€



v
t

… †
x

158

y
w
t
t
‚

u

ƒ

Figura 12.26: Representacion esquematica del sistema.
´
´

es mayor que cero, y en el instante ti+1 es menor que cero, con lo cual, en el instante ti+1 se
verifica la condicion de disparo del evento.
´

Problema II: ´ndice superior
I
El segundo problema que presenta el modelo mostrado en la Figura 12.24 esta originado
´
por la formulacion del modelo de la friccion cuando las dos masas estan acopladas. En esa
´
´
´
situacion, la friccion viene descrita mediante la ecuacion:
´
´
´
(12.37)

v=0

Esta ligadura reduce en uno el numero de grados de libertad del modelo, ya que impone
´
que las velocidades de los dos objetos (que son variables de estado) sean iguales. Veamos
esto mas detenidamente. Para ello, a continuacion se escriben las ecuaciones que describen
´
´
cada uno de los componentes del sistema. En la Figura 12.26 se muestra el sistema, con
los parametros asociados a cada componente, y con el significado de las variables x1 y x2
´
indicado.
Ecuacion dinamica de masa1:
´
´

Fmasa1
dv1
dt
dx1
dt

=

m 1 · a1

(12.38)

=

a1

(12.39)

=

v1

(12.40)

Fuerza que actua sobre la masa1:
´
Fmasa1 = Fmuelle1 + Famortiguador − Ff
Ecuacion dinamica de masa2:
´
´

(12.41)
´
12.8. MODELO MATEMATICO DEL SISTEMA COMPLETO

Fmasa2
dv2
dt
dx2
dt

159

=

m 2 · a2

(12.42)

=

a2

(12.43)

=

v2

(12.44)

Fuerza que actua sobre la masa2:
´
Fmasa2 = Ff

(12.45)

Fmuelle1 = −k1 · (x1 − x0,muelle1 )

(12.46)

Ecuacion dinamica del muelle:
´
´

Ecuacion dinamica del amortiguador:
´
´
(12.47)

Famortiguador = −b · v1
Definicion de la velocidad relativa entre las masas:
´

(12.48)

v = v1 − v2
Modelo de la fuerza de friccion:
´




Modo deslizante:

Ff =

Modo acoplado:

Rv · v + Rm
Rv · v − Rm

si v  0
si v  0

v=0

(12.49)

El modelo esta compuesto por 12 ecuaciones, Ecs. (12.38) – (12.49), y tiene las 12 incogni´
´
tas siguientes:
Fmasa1 , Fmasa2 , Famortiguador , Fmuelle1 , Ff , a1 , a2 , v, derx1 , derx2 , derv1 , derv2

(12.50)

donde puede observarse que las derivadas han sido sustituidas por las variables auxiliares
derx1 , derx2 , derv1 y derv2 .
Las variables
x1 , x2 , v1 , v2

(12.51)

aparecen derivadas en el modelo, con lo cual son variables de estado. Esto implica que el
valor inicial de cada una de ellas puede especificarse independientemente del valor inicial de
las demas, y que la evolucion de cada una de ellas se calcula mediante integracion num´ rica
´
´
´
e
de su derivada (es decir, de derx1 , derx2 , derv1 y derv2 respectivamente).
En la Figura 12.27 se muestra las ecuaciones del modelo para cada uno de los dos modos,
con la causalidad computacional senalada (se incluye entre corchetes la variable a evaluar
˜
de cada ecuacion), y con las ecuaciones ordenadas y resueltas (es decir, con la incognita a
´
´
evaluar despejada al lado izquierdo de la igualdad).
Para realizar la asignacion de la causalidad computacional se parte de que los parametros
´
´
del modelo y las variables de estado son conocidas. A continuacion, se aplican las dos reglas
´
enunciadas en la Seccion 12.4.
´
Como se observa en la parte izquierda de la Figura 12.27, las ecuaciones del modelo,
cuando se emplean las ecuaciones de la friccion en modo deslizante, pueden ser resueltas
´
una tras otra y permiten evaluar todas las incognitas.
´
Figura 12.28: Asignacion de la causalidad computacional del modelo modificado para el modo
´
acoplado.
µ

Î

]=
µ

¬

³
­

­«

³

µ
ÊÈÇÆ

Ï

µ ½Ä ½ ¹

¸ ´

Î

´

Ë

±

[

=

µ

Î

¸

5 ecuaciones.
5 incógnitas:

Ë

´ »¼¼ » º ¹
Ë

Ê

Ê

É

Í

´

ÊÈÇÆ

Î

µ ½Ä ½ ¹
Ë

Ë
Î

´
Ê

´

Î

Ê

¿ ¾ Ã ½ º ÂÁ À ¿ ¾ ¹ ½
Ó
Ñ

Ë Ò
Ð
´ »¼¼ » º ¹

´

É

Ì

Ë

¸´

µ

´

´ ½Ä ½ ¹

µ

µ

´

´ »¼¼ » º ¹ · ¶

−

]=

)

Ê

´

Ë
Å
Ë

²

¿ ¾ Ã ½ º ÂÁ À ¿ ¾ ¹ ½

Ï

´ ½Ä½ ¹

²
­ « ¯°¯ ®
²

Ë

−

Å

+

­ ¬ ¯°¯ ®

]=
=

−

=− ⋅

]= [
] = − ⋅(

µ

[

=

=

=

[ ]=

ÉÈ Ç Æ

´

Ê

ÉÈ Ç Æ

[
[

Figura 12.27: Asignacion de la causalidad computacional del modelo en modo deslizante
´
(izquierda) y acoplado (derecha).

Sobra una ecuación y falta una ecuación.

{

‚
|

|z

€

t

‚

]=

| z ~~ }




pn m l

“‰

t

‰

u

 ™j™ •



[



]=

q

=



t

“

„

‰
pn m l

u

‰ ™j™ •
k


e d i ™ – hg f e d • ™
q

q

‰

‰ ™j™ •

q

 ™j™ •

q
k
q

−

| { ~~ }

=

=

+

4 ecuaciones.
5 incógnitas:

‰ —˜˜ — – •

”


‰
p
‰ —˜˜ — – • ’ ‘
o

s

‰

‰

o

p

‰

p

¢

„

£

„
› š ™

„

„ ˜ ‹

ž

‡ƒ

on m l



‹

‰ˆ

¡
‹

‰ˆ

¡


ƒ Ž Ž  Œ ‹ † …

„



œ

œ

ž

ƒ  ŽŽ  Œ ‹

ž

–

ž

ƒ
› š ™

ƒ

„ ˜ ‹
ƒ ˜ ‹

¢

ž

ž

–
¡ª
©



ƒ



—

ž ¦
¤



ž ¦
¤

ƒ ŽŽ  Œ ‹

Ÿ

‡ ƒ

œ› š ™

§
¥

¡¨



ƒ

‘  •  Œ ”“ ’ ‘  ‹ 

§
¥

 

ƒ

„

£

ƒ ˜ ‹

—
‘  •  Œ ”“ ’ ‘  ‹ 
ž




ƒ

q x
v
q

‰

p

¢
ƒ

‡

¢

t

—

ž

q

Š

q

Š

p

„

p

e d i ™ – hgf e d • ™

y
w

‰ —˜˜ — – •

r

]=

[
−

=

Una de estas dos
ecuaciones sobra

−

“‰

+



=

−

=− ⋅

]= [
] = − ⋅(

on m l

⋅ −



)

[
[



[

[ ]=

⋅ +

[ ]=
−

]=

]=

)

p

]=
]=
]=

=

−

=− ⋅

]= [
] = − ⋅(



[

[ ]=
[
[

[ ]=



ƒ

ž

œ› š ™

[
[

Causalidad computacional del
modelo en modo acoplado

Causalidad computacional del
modelo en modo deslizante

´
TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO

160
´
12.8. MODELO MATEMATICO DEL SISTEMA COMPLETO

161

Sin embargo, al realizar la asignacion de la causalidad computacional empleando la ecua´
cion de la friccion para el modo acoplado (es decir, v = 0), se llega a la conclusion de que
´
´
´
una de las ecuaciones es redundante y, a la vez, falta una ecuacion para poder calcular las
´
incognitas Fmasa1 , Fmasa2 , Ff , a1 y a2 . V´ ase la parte derecha de la Figura 12.27.
´
e
Esta situacion esta motivada porque:
´
´
– Por una parte, v1 y v2 aparecen derivadas en el modelo. Esto implica que estas dos
variables son variables de estado, con lo cual su causalidad computacional debe ser:
d[v1 ]
dt
d[v2 ]
dt

=

derv1

(12.52)

=

derv2

(12.53)

– Por otra lado, en la ecuacion que describe la friccion
´
´
(12.54)

v1 = v2

solo intervienen las variables v1 y v2 , con lo cual debe emplearse esta ecuacion para cal´
´
cular una de ellas. Es posible una de las dos causalidades computacionales siguientes:
[v1 ] = v2

v1 = [v2 ]

(12.55)

En consecuencia, en el modelo existen tres ecuaciones, Ecs. (12.52), (12.53) y (12.54), para
calcular dos incognitas, v1 y v2 , con lo que se produce una sobredeterminacion. Asimismo,
´
´
data esta sobredeterminacion y puesto que el modelo tiene el mismo numero de ecuaciones
´
´
que de incognitas, no es posible calcular una de las variables del modelo.
´
Otra forma de entender el problema es darse cuenta de que al tener 4 variables de estado
(x1 , x2 , v1 y v2 ) el modelo tiene 4 grados de libertad. Sin embargo, al imponer la ligadura v1 = v2
se esta eliminando un grado de libertad, con lo cual el sistema queda con solo 3 grados de
´
´
libertad. La consecuencia de ello es que el modelo no puede tener 4 variables de estado, sino
solo 3. Cuando se produce esta circunstancia se dice que el modelo tiene ´ndice superior, y
´
ı
debe ser reformulado antes de simularlo con Ejs.

´
´
´
Revision del modelo de la friccion: reduccion del ´ndice
ı
Una solucion para el Problema II (es decir, para reducir el ´ndice del modelo) consiste en
´
ı
reemplazar la ecuacion
´
v=0

(12.56)

a1 = a2

(12.57)

por la ecuacion
´

y ademas, cuando se produce la conmutacion del modo deslizante al modo acoplado, imponer
´
´
que en ese instante la velocidad relativa entre ambos cuerpos sea cero: v = 0. Esto ultimo es
´
necesario, ya que, en general, en el instante en que se produce la conmutacion, el valor de v
´
estara proximo a cero, pero no valdra exactamente cero.
´
´
´
En la Figura 12.28 se muestra la causalidad computacional del modelo, para el modo
acoplado, modificado segun se ha indicado anteriormente. Las incognitas Fmasa1 , Fmasa2 , Ff ,
´
´
a1 y a2 deben ser calculadas de un sistema simultaneo de ecuaciones. Despejando estas
´
incognitas, se obtiene que la causalidad computacional del sistema completo es la mostrada
´
en la Figura 12.29.
´
TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO

162

Modelo ordenado y resuelto, válido para ambos modos:
−

ç

)

Ô

è

ç

Ô

ØÔ

è

ê

Ô

=− ⋅

Ô ÛÜÜ Û Ú Ù × Ö

çæ å ä
ë

Ô

çæ å ä

Ô ÛÜ Ü Û Ú Ù

ï
í

ß Þ ã Ý Ú âá à ß Þ Ù Ý
Õ

è

−

Õ

Ô

é

éî
ì

[ ]=

]=

è

]= [
] = − ⋅(

Õ

[
[

è

è

(

+

)



ñ

−

þ

+

ð

þ

)

 

ÿ¢

)

   ¨      § ¨

¤     §


){

=

U

b

!

S C IF T S R I

→

¥

]=

¥

¥

¥

!

%$ #

¦

[



[ ]=

¥ ¨© ¨ §

¤ ¨© ¨ §
¤
¦¤

!

D Q P I HGF E D C

4 ('
4 ('

¤ ¨©¨ §
¥ ¨©¨ §
¤



]=
(

ò

1
1

3
3

4
4

0
0

36
3B
9

A
8

2

5@
7

¤

!

%$ #

[

£
¡

[ ]=

+

þ

]=
]=

ð

[
[

=

ÿ



õ öö õ ô ó

⋅ −



ñ

⋅ +

ÿ

=

modo acoplado
ù ø ý ÷ ô üû ú ù ø ó ÷

modo deslizante

}

a `YXWV

Figura 12.29: Asignacion de la causalidad computacional del modelo completo modificado.
´

Figura 12.30: Definicion e inicializacion de las variables Detras, Adelante y Acoplo.
´
´

Figura 12.31: Ecuaciones para el calculo de las variables de estado.
´
´
12.8. MODELO MATEMATICO DEL SISTEMA COMPLETO

163

En la pagina EDO de Ejs, las derivadas de las variables de estado deben expresarse unica´
´
mente en funcion de parametros, variables de estado y la variable tiempo. Una vez asignada
´
´
la causalidad computacional del modelo, expresar las derivadas de la forma anteriormente
indicada es sencillo. Para ello, basta con tener en cuenta que:

dx1
dt
dx2
dt
dv1
dt
dv2
dt

= derx1

(12.58)

= derx2

(12.59)

= derv1

(12.60)

= derv2

(12.61)

Realizando las sustituciones, se obtiene:

dx1
dt
dx2
dt
dv1
dt
dv2
dt

=

v1

(12.62)

=

v2




(12.63)

=

=









−k1 ·(x1 −x0,muelle1 )−b·v1 −(Rv ·(v1 −v2 )+Rm )
m1
−k1 ·(x1 −x0,muelle1 )−b·v1 −(Rv ·(v1 −v2 )−Rm )
m1
1
m1 +m2 · (−k1 · (x1 − x0,muelle1 ) − b · v1 )

si “deslizante” y v  0
si “deslizante” y v  0
si “acoplado”

(12.64)

Rv ·(v1 −v2 )+Rm
m2
Rv ·(v1 −v2 )−Rm
m2

si “deslizante” y v  0
si “deslizante” y v  0
si “acoplado”

(12.65)

1
m1 +m2

· (−k1 · (x1 − x0,muelle1 ) − b · v1 )

´
´
Es posible escribir la ecuacion para dv1 como una unica expresion, e igualmente para dv2 .
´
dt
dt
Para ello, se definen tres variables, Detras, Adelante y Acoplo, las cuales solo pueden tomar el
´
valor 0 o 1. En cada instante, solo una de estas tres variables tomara el valor 1, y sera aquella
´
´
´
´
que se corresponda con el modo en el que se encuentra el sistema:
– Detras valdra 1 si y solo si el sistema esta en el modo “deslizante” y v1  v2 .
´
´
´
– Adelante valdra 1 si y solo si el sistema esta en el modo “deslizante” y v1  v2 .
´
´
´
– Acoplo, valdra 1 si el sistema esta en el modo “acoplado”.
´
´
Con ayuda de estas tres variables, puede escribirse:

dv1
dt

=
+
+

dv2
dt

=
+
+

−k1 · (x1 − x0,muelle1 ) − b · v1 − (Rv · (v1 − v2 ) + Rm )
m1
−k1 · (x1 − x0,muelle1 ) − b · v1 − (Rv · (v1 − v2 ) − Rm )
Adelante ·
m1
1
Acoplo ·
· (−k1 · (x1 − x0,muelle1 ) − b · v1 )
m1 + m2
Rv · (v1 − v2 ) + Rm
Detras ·
m2
Rv · (v1 − v2 ) − Rm
Adelante ·
m2
1
Acoplo ·
· (−k1 · (x1 − x0,muelle1 ) − b · v1 )
m1 + m2
Detras ·

Estas dos expresiones, pueden simplificarse de la forma siguiente:

(12.66)

(12.67)
´
TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO

164

dv1
dt

(Detras + Adelante) ·

+
dv2
dt

=

−k1 · (x1 − x0,muelle1 ) − b · v1 − (Rv · (v1 − v2 ) + (Detras − Adelante) · Rm )
m1

Acoplo ·

=
+

1
· (−k1 · (x1 − x0,muelle1 ) − b · v1 )
m1 + m2
Rv · (v1 − v2 ) + (Detras − Adelante) · Rm
(Detras + Adelante) ·
m2
1
· (−k1 · (x1 − x0,muelle1 ) − b · v1 )
Acoplo ·
m1 + m2

(12.68)

(12.69)

En la Figura 12.30 se muestra como se realiza la definicion de las variables Detras,
´
´
Adelante y Acoplo, en el panel Variables. Las tres variables son inicializadas al valor 0. Se
trata de variables discretas, ya que su valor solo se modifica en determinados instantes de
´
tiempo: cuando se produce la transicion entre los modos del sistema.
´
Las transiciones en el modo del sistema solo se producen en los instantes de evaluacion del
´
´
modelo. Es decir, en los instantes del tipo ti y ti+1 mostrados en la Figura 12.25. Esto implica
que, en el intervalo de tiempo entre instantes de evaluacion consecutivos, el valor de estas
´
variables permanece constante. A efectos del m´ todo de integracion, estas variables pueden
e
´
considerarse constantes dentro de cada paso de integracion, y por ello pueden incluirse en la
´
expresion de la derivada en el panel EDO de Ejs (vea la Figura 12.31).
´
El modelo debe describir el cambio de valor de estas tres variables (Detras, Adelante y
Acoplo), en funcion de las transiciones en el modo del sistema. Asimismo, las condiciones
´
de disparo de estas transiciones deben estar formuladas en t´ rminos de desigualdades, de
e
modo que no se obtenga un modelo erroneo como el descrito al comentar el Problema I. A
´
continuacion, se propondra una manera de hacerlo.
´
´

´
´
´
Revision del modelo de la friccion: los modos y su conmutacion
Una posible solucion consiste en modelar el funcionamiento del sistema como un automa´
´
ta determinista, tal como se muestra en la Figura 12.32. En ella, se indica en qu´ panel se
e
codifica cada una de las condiciones de transicion entre modos. A continuacion, se realiza
´
´
una explicacion detallada de ello.
´
Al comienzo de la simulacion, el modelo se encuentra en el modo Inicio. En ese mismo
´
instante inicial, y en funcion del valor inicial que se haya asignado a la velocidad de cada una
´
de las masas (v1 y v2 ), el modo del sistema cambia a:
– Detras, si v1  v2 .
´
– Adelante, si v1  v2 .
– Acoplo, si no se satisface ninguna de las dos condiciones anteriores. Es decir, si v1 = v2 .
Estas condiciones de conmutacion entre modos, que han de ejecutarse en el instante
´
inicial de la simulacion, se codifican en el panel Inicializacion de Ejs (vea la Figura 12.33).
´
´
Como se muestra en la Figura 12.32, la conmutacion desde los modos Detras y Adelante al
´
modo Acoplo se produce en funcion del valor de las variables de estado v1 y v2 . As´ pues, esas
´
ı
condiciones de conmutacion son comprobadas una vez es calculado el valor de las variables
´
de estado, en el panel Evolucion (vea la Figura 12.34).
´
Finalmente, la conmutacion desde el modo Acoplo a los modos Detras y Adelante se
´
produce en funcion del valor que tenga la fuerza de friccion. Tanto la fuerza de friccion,
´
´
´
que es una variable algebraica, como estas condiciones de conmutacion se calculan en el
´
panel Ligaduras (vea la Figura 12.35).
´
12.8. MODELO MATEMATICO DEL SISTEMA COMPLETO

(1)



h

h

f

(1)

g

d

e



165

c

e

Inicio
y
ƒ

(2)

€

)

„

• ” ™ “  ˜— – • ” ‰ “

e

+



r
‡

‘’’ ‘  ‰

e

d

†
†

d

+

(

…

iqp i

x

‡

d

=

Adelante
= ⋅ −

„

w

u

s

t

Acoplo
ˆ

e

(2)

‚

−

v

‚

„

Detrás
= ⋅ +



…



„

(3)
c

e

g

h

ƒ

f

h

(1) Inicialización

(2) Ligaduras

≥

e

≤

d

€

(3)

(3) Evolución

Figura 12.32: Conmutacion entre los modos de funcionamiento del sistema. Se indica el panel
´
en el cual se programa la conmutacion entre modos.
´

k



j

i

k

g

h



f

h

Inicio
l nm l
r

)

o

~ } ‚ | y €  ~ } x |

„

+

s

v

z{{ z y x

„

(

p

u
u

ƒ

ƒ

+

t

v

ƒ

=

Adelante
= ⋅ −

s

Acoplo

q

w

„

q

s

Detrás
= ⋅ +
t

p

s

o

r

Figura 12.33: Modo inicial del sistema, en funcion de la velocidad relativa entre las masas.
´
´
TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO

166

Inicio

)

‹
†

‡

≥

ˆ

…

— – › • ’ š™ ˜ — – ‘ •



+

Œ



“”” “ ’ ‘



(

‰

Ž
Ž

œ

œ

+





œ





Š

‡

†

‡

≤

=

Adelante
= ⋅ −

Œ

Acoplo

Š

…

Œ

Detrás
= ⋅ +


‰

Œ

ˆ

‹

‡

Figura 12.34: Conmutacion entre los modos tras el calculo de las variables de estado.
´
´

§

¦

)

©

µ ´ ¹ ³ ° ¸· ¶ µ ´ ¯ ³

»

­

±²² ± ° ¯

»

(

Adelante
= ⋅ −

¨

ž
¬
¬

º

º

+

+

ª

¤
­

º

=

«

£

¡

Ÿ

 

Acoplo

ª

¥

−

¢

®

»

¨

ª

Detrás
= ⋅ +



«

§

ª

¦

©

Figura 12.35: Conmutacion entre los modos tras el calculo de la fuerza de friccion.
´
´
´
´
´
12.9. INCLUSION DE MASA2 EN EL PANEL DE ANIMACION

167

´
´
12.9. Inclusion de masa2 en el panel de animacion
La inclusion del objeto masa2 en la ventana de animacion se realiza anadiendo un nuevo
´
´
˜
elemento al arbol de la vista: el elemento Masa2, de la clase Particula (vea la Figura 12.36).
´
Las propiedades de este elemento, cuya posicion puede ser cambiada interactivamente, son
´
completamente analogas a las del elemento Masa1:
´
– Las variables yMasa2 y LMasa2 representan la coordenada vertical de la posicion del
´
objeto y el tamano horizontal del mismo respectivamente. Son definidos e inicializados
˜
en el panel Variables, de forma completamente analoga a yMasa1 y LMasa1. Su valor
´
permanece constante durante la simulacion.
´
– El m´ todo mover masa2() se muestra en la Figura 12.37. Su finalidad es doble. Por una
e
parte, garantizar que la coordenada vertical de la posicion del objeto no var´a cuando se
´
ı
modifica interactivamente la posicion del mismo. Por otra, impedir que interactivamente
´
pueda situarse el objeto masa2 fuera de la superficie superior del objeto masa1.
En la Figura 12.38 se muestra la ventana de animacion del modelo del sistema completo.
´

´
12.10. Ligadura en la posicion de masa2
´
El m´ todo mover masa2() impide que, producto de un cambio interactivo en la posicion de
e
masa2, esta quede fuera de la superficie de masa1. Sin embargo, no hay nada en el modelo
´
que impida que durante su simulacion se produzca esta situacion. Es decir, que la posicion
´
´
´
del objeto masa2 se mueva fuera de la superficie del objeto masa1 y, en consecuencia, quede
“flotando” en el aire.
Para evitar esta situacion, una vez se ha calculado el valor de x2 , se comprueba si se
´
encuentra fuera del rango [x1, x1 + Lmasa1]. Si se verifica que x2  x1 , entonces se modifica el
valor de x2 , igualandolo a x1 . Igualmente, si x2  x1 + Lmasa1, entonces se modifica el valor
´
de x2 , igualandolo a x1 + Lmasa1. Estas acciones se programan en el panel Evolucion, tal y
´
´
como se muestra en la Figura 12.39.

´
12.11. Visualizacion del modo del sistema
Ejs permite, de manera sencilla, representar la evolucion temporal de las variables del
´
sistema. En esta seccion se describe como anadir a la vista una ventana que contenga tres
´
´
˜
graficas, en las que se represente la evolucion temporal de las variables Detras, Adelante y
´
´
Acoplo.
Para ello, se anade al arbol de elementos de la vista un objeto de la clase Ventana, al que se
˜
´
asigna el nombre Modos. Colgando de el se anaden tres elementos de la clase PanelConEjes,
´
˜
situados en la posicion arriba, centro y abajo respectivamente (Modo Detras, Modo Adelante
´
y Modo Acoplo). Con ello, queda definida la ventana que contendra las graficas y los ejes
´
´
coordenados de las tres graficas.
´
Finalmente, se anade un elemento de la clase Traza colgando de cada elemento de la clase
˜
PanelConEjes. El elemento de la clase Traza define cual es la variable a representar.
´
En la Figura 12.40 se muestra el arbol de elementos de la vista y las propiedades de los
´
elementos Modos, Modo Detras y traza Detras. De forma analoga se definen las propiedades
´
de los restantes elementos. La vista del laboratorio virtual es mostrada en la Figura 12.41.

12.12. A˜
nadiendo interactividad al laboratorio
Llegado este punto, el laboratorio virtual permite modificar de forma interactiva la posicion
´
de los objetos masa1 y masa2. En esta seccion se explica como anadir a la vista del laboratorio
´
´
˜
168

´
TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO

Figura 12.36: Elemento Masa2.

Figura 12.37: M´ todo mover masa2().
e

Figura 12.38: Ventana de animacion de la vista del sistema completo.
´
˜
12.12. ANADIENDO INTERACTIVIDAD AL LABORATORIO

169

Figura 12.39: Ligadura en la posicion de Masa2.
´

½¾

½¼
½À
½¿

´
Figura 12.40: a) Arbol de elementos de la vista. Propiedades del elemento: b) Modos; c)
Modo Detras; y d) traza Detras;
170

´
TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO

Figura 12.41: Vista del laboratorio virtual.

deslizadores que permitan visualizar y modificar el valor de los siguientes parametros del
´
modelo:
–
–
–
–

Constante de proporcionalidad (k1 ) y elongacion natural (x0,muelle1 ) del muelle.
´
Constante de proporcionalidad (b) del amortiguador.
Masas (m1 y m2 ).
Parametros caracter´sticos de la fuerza de friccion (Rm , R0 y Rv ).
´
ı
´

Para ello, se anade al arbol de la vista un nuevo objeto de la clase Ventana (llamado
˜
´
Deslizadores), dentro del cual se incluyen tres elementos de la clase Panel: Panel1, Panel2 y
Panel3, cuya posicion es arriba, centro y abajo respectivamente. Dentro de cada elemento de
´
la clase Panel se incluyen elementos de la clase Deslizador.
El arbol de la vista se muestra en la parte izquierda de la Figura 12.42. Tambi´ n se
´
e
muestran las propiedades de los elementos Panel1 y deslizador k1. Obs´ rvese que:
e
– En la casilla Variable se indica qu´ variable del sistema se enlaza con el elemento
e
Deslizador.
– Las casillas M´nimo y Maximo permiten definir el intervalo de valores que puede tomar
ı
´
la variable.
– En la casilla Marcas se indica el numero de marcas que se dibujaran en el deslizador.
´
´
– En la casilla Formato M se indica el formato del numero que se escribe bajo cada marca.
´
Por ejemplo, si se escribe 0 en la casilla Formato M, entonces el numero se escribe sin
´
cifras decimales. Si se escribe 0.0 en la casilla Formato M, entonces el numero se escribe
´
con una cifra decimal. As´ sucesivamente.
ı
– En la casilla Formato se indica como debe visualizarse el valor actual de la variable. Al
´
escribir k1=0.0 se esta indicando que debe escribirse k1= y a continuacion el valor de la
´
´
variable con una cifra decimal.
En la Figura 12.43 se muestra la vista completa del laboratorio.
˜
12.12. ANADIENDO INTERACTIVIDAD AL LABORATORIO

171

´
Figura 12.42: Arbol de la vista y propiedades de los elementos Panel1 y deslizador k1.

Figura 12.43: Vista del laboratorio virtual.
172

´
TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO
Tema 13

C´ lculo del numero π por el
a
´
m´ todo de Monte Carlo
e

Objetivos: Una vez estudiado el contenido del tema deber´a saber:
ı
´
´
´
• Dise˜ ar el algoritmo de simulacion de un modelo estatico y estocastico,
n
y programarlo usando Ejs.
´
• Programar metodos propios, que son invocados desde los paneles Inicia´
lizacion y Vista.
´
• Usar las clases de elementos graficos ConjuntoParticulas y CampoNumerico.

13.1. Simulaciones de Monte Carlo
Bajo el nombre gen´ rico de “simulaciones de Monte Carlo” suelen englobarse todas las
e
simulaciones que emplean numeros aleatorios para resolver problemas estaticos, es decir,
´
´
problemas en los cuales el tiempo no juega un papel relevante.
El t´ rmino “Monte Carlo” proviene del nombre en clave de un trabajo secreto en el que von
e
Neumann y Ulam emplearon esta t´ cnica matematica (que ya era conocida anteriormente).
e
´
´
Este trabajo se realizo en Los Alamos, durante el conocido proyecto para la fabricacion de la
´
´
bomba atomica.
´
En esta t´ cnica se generan artificialmente datos mediante el uso de un generador de numee
´
ros aleatorios y la funcion de probabilidad de inter´ s. El generador de numeros aleatorios se
´
e
´
emplea para generar variables seudo aleatorias distribuidas uniformemente en el intervalo
[0, 1]. La funcion de probabilidad a muestrear puede ser una distribucion teorica (normal,
´
´
´
exponencial, etc.) o puede ser emp´rica, es decir, puede estar basada en observaciones del
ı
sistema real.
La t´ cnica de Monte Carlo se emplea no solo para simular sistemas estocasticos, sino
e
´
´
tambi´ n para resolver problemas completamente deterministas (t´picamente aquellos que no
e
ı
pueden ser resueltos anal´ticamente). Un ejemplo es la estimacion del valor del numero π
ı
´
´
mediante el procedimiento descrito a continuacion.
´

173
174

´
´
´
TEMA 13. CALCULO DEL NUMERO π POR EL METODO DE MONTE CARLO

´
13.2. Estimacion del valor de π
Suponga que se lanza un dardo al azar sobre una superficie cuadrada, cuyo lado tiene dos
metros. Inscrito en el cuadrado, hay un c´rculo de un metro de radio. Si el dardo se lanza de
ı
forma aleatoria, la probabilidad de dar dentro del c´rculo (acierto) es igual a π/4.
ı
As´ pues, puede obtenerse una estimacion del numero π siguiendo el procedimiento siı
´
´
guiente:
1. Se lanza el dardo de forma aleatoria un numero ntotal de veces. Sea naciertos el numero
´
´
de veces que el dardo ha quedado dentro del c´rculo.
ı
2. El numero π se estima de la forma siguiente:
´
π ≈4·

naciertos
ntotal

(13.1)

A mayor numero de tiradas se espera una mejor aproximacion.
´
´
A continuacion se describe el algoritmo de la simulacion del laboratorio para la estimacion
´
´
´
del valor de π y como se ha programado usando Ejs.
´

´
13.3. El algoritmo de la simulacion
En la Figura 13.1 se muestra el algoritmo de la simulacion.
´
Inicialmente se asigna al numero de lanzamientos (ntotal ) el valor 100. Empleando el
´
m´ todo calculaPI (definido en el panel Propio), que se muestra en la Figura 13.2, se realiza
e
una estimacion del valor de π:
´
1. Se realizan ntotal lanzamientos aleatorios.
2. Se calcula naciertos .
3. Se estima el valor del numero π aplicando la Ecuacion (13.1).
´
´
Mientras el usuario no cambie el valor de ntotal , la simulacion progresa sin realizar nuevos
´
calculos. Cuando el usuario cambia ntotal , vuelve a ejecutarse el m´ todo calculaPI, con lo que
´
e
se obtiene una nueva estimacion del valor de π.
´
Puesto que cada vez que se realiza una r´ plica de la simulacion se emplea una semilla
e
´
diferente para el generador de numeros aleatorios, se obtienen diferentes estimaciones del
´
numero π aun si se escoge para las diferentes r´ plicas un mismo valor de ntotal .
´
e

´
13.4. Programacion de la vista
En la Figura 13.3 se muestra la Vista del laboratorio virtual, que esta compuesta de una
´
unica ventana. En la parte inferior de esta ventana hay una botonera, con una casilla para
´
introducir el valor de ntotal y un boton (Reset) para reinicializar la simulacion.
´
´
Cada vez que el usuario introduce un nuevo valor de ntotal y pulsa Enter se realiza una
nueva estimacion del valor de π: se ejecuta el m´ todo calculaPI.
´
e
En el centro de la ventana se muestra la mitad superior del c´rculo inscrito en el cuadrado
ı
y se senalan mediante puntos las posiciones en las cuales se ha ca´do el dardo. Para ello,
˜
ı
se ha empleado el objeto Puntos, de la clase ConjuntoParticulas. El arbol de elementos de la
´
Vista se muestra en la Figura 13.4.
Los valores de las propiedades mas relevantes del objeto Puntos son las siguientes (vea la
´
Figura 13.5):
– Propiedad Elementos, que es el numero de part´culas (en este caso ntotal ).
´
ı
– Propiedades X e Y, que son vectores que almacenan las coordenadas (x, y) de las part´cuı
las.
´
13.4. PROGRAMACION DE LA VISTA

175

Inicio
nTotal, nAciertos, PI

nTotal

= 100;

Declaración de variables
(Panel Variables)

Inicialización de variables
(columna Valor del panel Variables)

Realizar nTotal lanzamientos;
Calcular nAciertos;
PI = 4 * nAciertos / nTotal;

Ejecución de los algoritmos
del panel Inicialización
Ejecución de los
algoritmos del
panel Ligaduras

Representación gráfica de resultados
(comunicación modelo vista)

sí

¿Interacción del usuario?
(comunicación vista modelo)

no
Ejecución de los
algoritmos del
panel Evolución

Interactividad:
El usuario cambia nTotal.
Acción asociada:
Realizar nTotal lanzamientos;
Calcular nAciertos;
PI = 4 * nAciertos / nTotal;

Figura 13.1: Algoritmo de la simulacion.
´

Figura 13.2: M´ todo calculaPI. Estima el valor de π para un determinado ntotal .
e
´
´
´
TEMA 13. CALCULO DEL NUMERO π POR EL METODO DE MONTE CARLO

Figura 13.3: Vista del laboratorio virtual.

Î Í È Ì Å Ë Ê Æ É È Ç Â Æ Ã Å ÄÃ Â Á
Ò Õ Ð Ô ÓÐ Ò Ñ Ð Ï
× Û Ò ÚÖÕÑ Ù Ø× Õ ÐÖ
ß ÙÞ Ô ÑÝÕØÙ Ü
ë ô ø ç ÷ ö é õ ô æ ê é è ç óè ê ò ã ñ ï î ð ï î ã í ì ë ê é è ç æ å ä ã â á à

176

´
Figura 13.4: Arbol de elementos de la Vista.

Figura 13.5: Propiedades del elemento Puntos, de la clase ConjuntoParticulas.
´
13.4. PROGRAMACION DE LA VISTA

177

– Propiedad Tama˜ os X, que es tamano en la direccion del eje X de cada part´cula. La
n
˜
´
ı
propiedad Tama˜ os Y es tamano en la direccion del eje Y de cada part´cula.
n
˜
´
ı
– Propiedad Activo, que es una variable booleana que indica si el elemento es interactivo.
178

´
´
´
TEMA 13. CALCULO DEL NUMERO π POR EL METODO DE MONTE CARLO
Tema 14

´
Simulacion interactiva de un globo
aerost´ tico
a

Objetivos: Una vez estudiado el contenido del tema deber´a saber:
ı
´
´
• Dise˜ ar el algoritmo de simulacion de un modelo dinamico que contiene
n
ecuaciones diferenciales ordinarias y ecuaciones algebraicas, y programarlo usando Ejs.
´
• Programar metodos propios, que son invocados desde el panel Evolu´
cion.
´
• Usar la clase de elementos graficos Imagen.

El objetivo de este laboratorio virtual es ilustrar el funcionamiento de un globo aerostatico
´
y constituye un bonito ejemplo de aplicacion del principio de Arqu´medes.
´
ı
Este laboratorio virtual esta incluido en el CD del curso. Se trata del fichero GloboAeros´
tatico.xml, que esta grabado en el directorio laboratoriosTexto.
´

14.1. Modelo de un globo aerost´ tico
a
El globo aerostatico obtiene su fuerza de sustentacion mediante el calentamiento de aire
´
´
dentro de una cavidad. La diferencia de densidades entre el aire caliente dentro de la cavidad
y el aire fr´o del exterior origina una fuerza debida al empuje de Arqu´medes que compensa el
ı
ı
peso total de globo (teniendo en cuenta el peso de los ocupantes y el lastre).
Sobre el globo actuan dos fuerzas de sentido contrario:
´
– La fuerza del flotacion (Fl ).
´
Fl = ρ · V · g

(14.1)

donde V es el volumen del globo, ρ es la densidad del aire atmosf´ rico y g es la acelerae
cion gravitatoria.
´
– El peso total del globo (w) es la suma de tres t´ rminos:
e
1. El peso del gas del globo (ρdg · V · g).
2. El peso total (ws ) de la tela del globo, la barquilla del globo y los pasajeros.
3. El peso del lastre (wl ).
179
´
´
TEMA 14. SIMULACION INTERACTIVA DE UN GLOBO AEROSTATICO

ù

180

ú

ü
û

Figura 14.1: Diagrama de cuerpo libre del globo aerostatico.
´

Es decir, el peso total del globo es:
w = ρdg · V · g + ws + wl

(14.2)

donde ρdg es la densidad del aire contenido dentro del globo.
Dado que la fuerza neta que actua sobre el globo es Fl − w, aplicando la Ley de Newton se
´
obtiene:

Fl − w

=

m·

v

=

dv
dt

dh
dt

(14.3)
(14.4)

donde h es la posicion vertical del globo respecto al nivel del mar, v es la velocidad de ascenso
´
del globo y m es el peso total del globo:
m=

w
g

(14.5)

Para obtener la fuerza de sustentacion (Fl ) se ha aplicado el principio de Arqu´medes (vea
´
ı
la Ecuacion (14.1)), considerando que el volumen del globo (V ) es constante y teniendo en
´
cuenta la dependencia de la densidad del aire (ρ) con la presion (P ) y la temperatura (T ).
´
Se ha modelado el aire como un gas perfecto, por lo que se puede calcular su densidad
aplicando la ecuacion de estado de los gases perfectos. As´ pues, la densidad del aire at´
ı
mosf´ rico (ρ) y la la densidad del aire contenido dentro del globo (ρdg ) se calculan de la forma
e
siguiente:

ρ

=

ρdg

=

P ·M
R·T
P ·M
R · Tdg

(14.6)
(14.7)

siendo R la constante de los gases ideales y M el peso molecular del aire.
Obs´ rvese que se ha considerado que la presion del aire dentro del globo es la misma en
e
´
todo momento que la presion del aire atmosf´ rico.
´
e
La dependencia de la temperatura y de la presion del aire de la atmosfera con la altura se
´
´
ha obteniendo considerando el modelo de la atmosfera estandar hasta los 11 Km de altura,
´
´
que establece que la temperatura (T ) desciende 6.5 grados cada kilometro:
´
´
14.2. EL ALGORITMO DE LA SIMULACION

181

T = T0 − 6.5 · 10−3 grados/metro · h

(14.8)

y que la presion (P ) obedece a la formula siguiente:
´
´
P = P0 ·

T0
T

−5.256

(14.9)

donde T0 y P0 son la temperatura y la presion al nivel del mar respectivamente.
´
Finalmente, la variacion en la temperatura del aire contenido dentro del globo (Tdg ) de´
pende de que el quemador est´ apagado (apagado = 1) o encendido (apagado = 0). Cuando el
e
quemador esta apagado, existe un flujo de calor por conveccion entre el aire del globo y el
´
´
aire atmosf´ rico. Cuando el quemador esta encendido, el flujo de calor procedente del mismo
e
´
hace que aumente la temperatura del aire contenido dentro del globo.
La ecuacion que describe la variacion de la temperatura Tdg en ambas situaciones es:
´
´
dTdg
= apagado · K · (T − Tdg ) + (1 − apagado) · q
dt

(14.10)

´
14.2. El algoritmo de la simulacion
Resumiendo la descripcion del modelo realizada en la Seccion 14.1, el modelo consta de
´
´
las diez ecuaciones siguientes:

= ρ·V ·g
= ρdg · V · g + ws + wl
dv
= m·
dt
dh
=
dt
w
=
g
P ·M
=
R·T
P ·M
=
R · Tdg

(14.11)
(14.12)

T

= T0 − 6.5 · 10−3 · h

(14.18)

P

T0
T

(14.19)

Fl
w
Fl − w
v
m
ρ
ρdg

dTdg
dt

= P0 ·

(14.13)
(14.14)
(14.15)
(14.16)
(14.17)

−5.256

= apagado · K · (T − Tdg ) + (1 − apagado) · q

Las variables se clasifican de la forma siguiente:
Variables conocidas. Par´ metros:
a
– Temperatura al nivel del mar (T0 ).
– Presion al nivel del mar (P0 ).
´
– Volumen del globo (V ).
– Peso molecular del aire (M ).
– Aceleracion gravitatoria (g).
´
– Peso de la tela del globo, la barquilla y los ocupantes (ws ).
– Peso del lastre (wl ).

(14.20)
182

´
´
TEMA 14. SIMULACION INTERACTIVA DE UN GLOBO AEROSTATICO

– Constante de los gases ideales (R).
– Estado del calentador (apagado).
– Variacion de la temperatura cuando el calentador esta encendido (q).
´
´
– Coeficiente de transferencia de calor entre el aire del globo y la atmosfera (K).
´
Variables conocidas. Tiempo y variables de estado:
– Tiempo (t).
– Altura a la que esta situado el globo (h), tomando como referencia el nivel del mar.
´
– Velocidad ascendente del globo (v).
– Temperatura del gas contenido dentro del globo (Tdg ).
Variables desconocidas. Variables algebraicas del modelo:
– Presion del aire atmosf´ rico (P ).
´
e
– Temperatura del aire atmosf´ rico (T ).
e
– Densidad del aire atmosf´ rico a la altura a la que esta situado el globo (ρ).
e
´
– Densidad del aire contenido dentro del globo (ρdg ).
– Fuerza de sustentacion (Fl ).
´
– Peso total del globo (w).
– Masa total del globo (m).
Variables desconocidas. Variables auxiliares que sustituyen a las derivadas de las
variables de estado:
– Derivada de la altura del globo (derh).
– Derivada de la velocidad de ascenso del globo (derv).
– Derivada de la temperatura del aire contenido dentro del globo (derTdg ).
Asignando la causalidad computacional a las Ecuaciones (14.11) – (14.20), ordenandolas
´
y despejando la variable a evaluar de cada una de ellas (que se senala incluy´ ndola entre
˜
e
corchetes) se obtiene:

[T ] =
[P ] =
[ρ] =
[Fl ] =
[ρdg ] =
[w] =
[m] =
[derv]

=

[derh] =
[derTdg ] =

T0 − 6.5 · 10−3 · h
P0 ·

T0
T

(14.21)

−5.256

(14.22)

P ·M
R·T
ρ·V ·g
P ·M
R · Tdg
ρdg · V · g + ws + wl
w
g
Fl − w
m
v

(14.29)

apagado · K · (T − Tdg ) + (1 − apagado) · q

(14.30)

(14.23)
(14.24)
(14.25)
(14.26)
(14.27)
(14.28)

En una pagina de EDO, en el panel Evolucion, deben calcularse las variables de estado (h,
´
´
v, Tdg ) en funcion de sus derivadas. Para ello, se va a usar uno de los m´ todos de integracion
´
e
´
que proporciona Ejs: el m´ todo Runge-Kutta de cuarto orden.
e
Para el calculo de las derivadas se han programado dos m´ todos propios en la pagina
´
e
´
Propio de Ejs (ver Figura 14.4). Estos m´ todos propios son invocados desde el panel Evolucion
e
´
de Ejs para calcular las derivadas (ver Figura 14.5).
Como estos m´ todos son invocados para el calculo de las derivadas desde una pagina Edo
e
´
´
de Ejs, unicamente pueden ser funcion de variables de estado, parametros y de la variable
´
´
´
tiempo.
´
14.3. PROGRAMACION DE LA VISTA

183

A continuacion, se describen brevemente los dos m´ todos programados:
´
e
• M´ todo Flcalc: Devuelve el valor de Fl y tiene como argumentos h, P0 y T0 . El valor de
e
Fl es calculado en funcion de los valores de h, P0 , T0 y otros parametros que no var´an
´
´
ı
durante la simulacion.
´
La expresion para el calculo de Fl se obtiene combinando las Ecs. (14.21) – (14.24):
´
´
P0 ·

T0
(T0 −6.5·10−3 ·h)

−5.256

·M

·V ·g
(14.31)
R · (T0 − 6.5 ·
· h)
• M´ todo wcalc: Devuelve el valor de w y tiene como argumentos P0 , T0 , h, Tdg y wl . El
e
valor de w es calculado en funcion de los valores de P0 , T0 , h, Tdg , wl y otros parametros
´
´
que no var´an durante la simulacion.
ı
´
Fl =

10−3

La expresion para el calculo de w se obtiene combinando las Ecs. (14.21), (14.22), (14.25)
´
´
y (14.26):

w=

P0 ·

T0
(T0 −6.5·10−3 ·h)

−5.256

·M

R · Tdg

· V · g + ws + wl

(14.32)

Dentro del panel Evolucion, se crea una segunda pagina, que se situa a la derecha de la
´
´
´
pagina EDO (es decir, se ejecuta a continuacion de la pagina de EDO). Esta segunda pagina
´
´
´
´
tiene como finalidad evitar que el globo descienda por debajo de h = 0.
El codigo de esta pagina de evolucion es el siguiente:
´
´
´
if ( h  0  ( Fl - w )  0 ) {
h = 0;
v = 0;
}

´
14.3. Programacion de la vista
En la Figura 14.2 se muestra la vista del laboratorio virtual.
La vista se compone de una ventana principal (mainFrame) y una ventana de dialogo (Ven´
tanaDialogoPlot). Esta ultima contiene graficas de la evolucion temporal de ciertas variables
´
´
´
de inter´ s: la altura del globo (h), la presion y la temperatura del aire a dicha altura (P , T ) , y
e
´
la temperatura del gas del globo (Tdg ).
En la parte inferior de la ventana principal hay botones para controlar la simulacion
´
(Pause, Reset y Play), un selector que permite mostrar y ocultar la ventana de dialogo (Venta´
naDialogoPlot), botones que permiten encender y apagar el quemador, y casillas que permiten
introducir la temperatura y la presion al nivel del mar (T0 , P0 ), y la masa del lastre (ml ).
´
El arbol de elementos de la vista se muestra en la Figura 14.3. Se ha introducido en la
´
vista un elemento de la clase Imagen, que se explica a continuacion al ser la primera vez que
´
aparece en este texto.
La clase Imagen es un elemento grafico que muestra una imagen .gif o .jpg con el tamano y
´
˜
posicion especificados en sus propiedades. Las propiedades mas relevantes de la clase Imagen
´
´
son:
– X: coordenada X de la posicion de la imagen.
´
– Y: coordenada Y de la posicion de la imagen.
´
– Tama˜ o X: tamano de la imagen segun el eje X.
n
˜
´
– Tama˜ o Y: tamano de la imagen segun el eje Y.
n
˜
´
– Activo: indica si el elemento es interactivo.
– Posicion: indica la situacion del “punto sensitivo” de la imagen respecto de las coorde´
nadas especificadas para dicha imagen.
´
´
TEMA 14. SIMULACION INTERACTIVA DE UN GLOBO AEROSTATICO

Figura 14.2: Vista del laboratorio virtual.

 ¨§ ¦¥ ¤ £
!   $  #  !
 ¡  %  ¡ !
¨ § ¦ ¥ ¤ £              © ¨ § ¦ ¥ ¤ £ ¢ ¡   ÿþ ý

184

´
Figura 14.3: Arbol de elementos de la vista.
´
14.3. PROGRAMACION DE LA VISTA

Figura 14.4: Panel Propio.

Figura 14.5: Panel Evolucion.
´

185
186

´
´
TEMA 14. SIMULACION INTERACTIVA DE UN GLOBO AEROSTATICO
Tema 15

Laboratorio virtual del sistema
bola y varilla

Objetivos: Una vez estudiado el contenido del tema deber´a saber:
ı
´
• Dise˜ ar el algoritmo de simulacion de un modelo con una parte de
n
tiempo continuo y otra de tiempo discreto, y programarlo usando Ejs.
´
• Usar las clases de elementos graficos: Particula y BotonRadio.

Este laboratorio virtual esta grabado en el CD del curso. Se trata del fichero Balland´
Beam.xml, que esta en el directorio laboratoriosTexto.
´

15.1. Modelo del sistema bola y varilla
Este sistema esta compuesto de una varilla, un motor y una bola. La varilla esta unida a
´
´
un motor que permite variar el angulo θ que forma la varilla con respecto a la horizontal. La
´
bola esta situada sobre la varilla y es libre de rodar bajo la accion de la gravedad (un pequeno
´
´
˜
canal en la varilla impide que la bola ruede hacia un lado).
El modelo que describe el movimiento de la bola, considerando que la bola rueda sobre la
varilla, es:

dx
dt
dv
dt

= v

(15.1)

5
= − · g · sin (θ)
7

(15.2)

donde x es la posicion de la bola (vea la Figura 15.1), v es su velocidad, θ es el angulo de la
´
´
varilla y g la aceleracion gravitatoria.
´
Este modelo es inestable y constituye un buen ejemplo para aprender a aplicar t´ cnicas de
e
control automatico de sistemas. El objetivo de control es mover la bola a la posicion deseada,
´
´
cambiando el angulo de la varilla. As´ pues, la variable controlada es la posicion de la pelota
´
ı
´
(x) y la variable manipulada es el angulo de la varilla (θ).
´
187
TEMA 15. LABORATORIO VIRTUAL DEL SISTEMA BOLA Y VARILLA

188

'

θ
1) 0) (

Figura 15.1: Diagrama del sistema bola y varilla.

En este laboratorio virtual el sistema se ha controlado mediante un controlador PID
discreto, cuyos parametros pueden ser modificados interactivamente durante la simulacion.
´
´
Tambi´ n pueden ser modificados interactivamente la posicion de la bola (x), la inclinacion de
e
´
´
la varilla (θ) y el valor de consigna para la posicion de la bola. A continuacion se describe el
´
´
modelo del controlador PID empleado.

Controlador PID discreto
Se ha programado un controlador PID discreto con dos grados de libertad y anti-windup.
En la descripcion del algoritmo del controlador se emplea la notacion siguiente:
´
´
– El valor de la consigna, en el instante de tiempo tn , es la posicion en la que se desea
´
situar la bola. Se denomina refn .
– El valor de la salida del sistema en el instante tn es la posicion de la bola en dicho
´
instante, que se denomina xn .
– La salida del controlador, en el instante de tiempo tn , es el angulo de la varilla en dicho
´
instante: θn .
El algoritmo que describe el controlador es el siguiente1 :
1. Inicializacion del controlador:
´
n

= 0

(15.3)

I0
D0

= 0
= 0

(15.4)
(15.5)

Al inicializar el modelo de la planta debe asignarse valor a x0 .
2. n = n + 1
3. Leer el valor de la referencia (refn ) y de la variable controlada (xn ).
4. Calculo de Pn :
´
Pn = Kp · (b · refn − xn )

(15.6)

5. Calculo de Dn :
´
Dn = Ad · Dn−1 − Bd · (xn − xn−1 )

(15.7)

un = Pn + In + Dn

(15.8)

6. Calculo de un :
´
7. Calculo del valor saturado de la senal de control:
´
˜
θn = m´ (um´x , m´x (um´ , un ))
ın
a
a
ın

(15.9)

8. Calculo del t´ rmino integral en el instante tn+1 :
´
e
In+1 = In + Bi · (refn − xn ) + Ar · (θn − un )
1 El

modelo de este controlador esta extra´do del texto (Astrom  Wittenmark 1997).
´
ı

(15.10)
´
15.2. EL ALGORITMO DE LA SIMULACION

189

9. Saltar al Paso 2.
Como puede observarse en el algoritmo anterior, el controlador tiene los parametros si´
guientes:
–
–
–
–
–
–
–
–
–

La constante proporcional (Kp ).
La fraccion del valor de consigna en el t´ rmino proporcional (b).
´
e
Valor m´nimo de la senal de control (um´ ).
ı
˜
ın
Valor maximo de la senal de control (um´x ).
´
˜
a
Tiempo de muestreo (Ts ).
Constante de tiempo integral (Ti ).
Constante de tiempo derivativa (Td ).
Constante de tiempo de reinicio (Tt ).
Ganancia maxima derivativa (N ).
´

Asimismo, los parametros Bi , Ar , Ad y Bd se calculan, a partir de los parametros anterio´
´
res, de la forma siguiente:

Bi

=

Ar

=

Ad

=

Bd

=

Kp · Ts
Ti
Ts
Tt
Td
Td + N · Ts
Kp · N · Ad

(15.11)
(15.12)
(15.13)
(15.14)

´
15.2. El algoritmo de la simulacion
En la Figura 15.2 se muestra el algoritmo de la simulacion del laboratorio virtual.
´
El calculo de las variables de estado continuas (x, v) y de la variable de estado discreta (I)
´
se realiza en el panel Evolucion.
´
El periodo de muestreo del controlador debe ser un multiplo entero del tamano del paso
´
˜
de integracion de las ecuaciones diferenciales ordinarias. Para sincronizar la solucion de la
´
´
parte discreta del modelo con la integracion de la parte continua, se ha definido la variable
´
tSampleCounter:
– Cada vez que el m´ todo de integracion avanza un paso, se incrementa el valor de
e
´
tSampleCounter.
– Cuando tSampleCounter alcanza el valor tSample (Ts ), se ejecuta la parte discreta del
modelo y a continuacion se pone a cero el valor de tSampleCounter.
´
Las incognitas algebraicas, tanto de tiempo continuo (derx, dery) como de tiempo discreto
´
(P , D, u, θ) de calculan en el panel Ligaduras.
En las Figura 15.3 se muestra la ventana del panel Ligaduras en la que se calculan las
variables algebraicas de tiempo discreto.
En las Figuras 15.4 y 15.5 se muestran las ventanas de Evolucion para el calculo de las
´
´
variables de estado discretas y continuas del modelo respectivamente.

´
15.3. Programacion de la vista
La Vista del laboratorio virtual, que se muestra en la Figura 15.6, se compone de:
– Una ventana principal (mainFrame).
TEMA 15. LABORATORIO VIRTUAL DEL SISTEMA BOLA Y VARILLA

190

Inicio
t, dt, x, x0, v, θ, g, I0, D0, P, I, D, u, Kp,
b, umín, umáx, Ts, Ti, Td, Tt, N, derx, derv
t
= 0;
dt = 0.01;
x
= 0;
x0 = 0;
v
= 0;
θ
= 0;
g
= 9.81;
I0 = 0;
D0 = 0;
b
= 1;

Kp
b
umín
umáx
Ts
Ti
Td
Tt
N

= -2
= 1;
= -0.1745;
= 0.7145;
= 0.05;
= 10;
= 0.2;
= 100;
= 50;

Declaración de variables
(Panel Variables)

Inicialización de variables
(columna Valor del panel
Variables)

Ejecución de los algoritmos
del panel Inicialización
derx = v;
derv = -5/7 * g * Math.sin(θ)
Si t es un múltiplo de Ts, entonces calcular P, D, u, θ;

Ejecución de los
algoritmos del
panel Ligaduras

Representación gráfica de resultados
(comunicación modelo vista)

sí

¿Interacción del usuario?
(comunicación vista modelo)

Ejecución de la acción
ejercida por el usuario

no
Ejecución de los
algoritmos del
panel Evolución

Cálculo de x y v;
Si t es un múltiplo de Ts:
Calcular I;
x0 = x;

Figura 15.2: El algoritmo de la simulacion.
´
´
15.3. PROGRAMACION DE LA VISTA

Figura 15.3: Calculo de las variables algebraicas de tiempo discreto.
´

Figura 15.4: Calculo de la variable de estado de tiempo discreto.
´

191
192

TEMA 15. LABORATORIO VIRTUAL DEL SISTEMA BOLA Y VARILLA

Figura 15.5: Calculo de las variables de estado de tiempo continuo.
´

Figura 15.6: Vista del laboratorio virtual.
Figura 15.8: Propiedades del objeto Ball, de la clase Particula.
´
Figura 15.7: Arbol de elementos de la Vista del laboratorio virtual.
bP e 9 d c bI b 8 5 F DC E DC 5 B A@ 9 R c 9 h g bII R 8 76 5 43 2

9@ R QP I H 9 G 5 F D C E D C 5 B A @@ 9 8 7 6 5 43 2

D a`6 E D W 5 6 U`
DC Y EX6W D V D U T
S 9@ R QPI H 9 G

F 7 U D 5C 7 7 3 F 5 W 7C D a
D WD V 7` B D W 5 B U f6 7 3 U T
S bP e 9 d c bI b 8

´
15.3. PROGRAMACION DE LA VISTA

193
194

TEMA 15. LABORATORIO VIRTUAL DEL SISTEMA BOLA Y VARILLA

Figura 15.9: Propiedades del objeto ButtonManual, de la clase BotonRadio.

– La ventana de dialogo dialogPlots, donde se muestra la evolucion temporal de las varia´
´
bles relevantes del sistema.
– La ventana de dialogo dialogC, donde se encuentran casillas y deslizadores (sliders) que
´
permiten modificar los valores de los parametros del controlador.
´
El arbol de la Vista de este laboratorio se muestra en la Figura 15.7. La ventana principal
´
contiene en el centro una representacion esquematica del sistema bola y varilla. En la parte
´
´
inferior de esta ventana hay botones que permiten controlar la simulacion (Play, Pause y
´
Reset), radio-botones que permiten pasar de control manual a automatico o viceversa, y
´
selectores que permiten mostrar y ocultar las dos ventanas de dialogo.
´
En la programacion de la Vista se han empleado dos nuevas clases de elementos graficos
´
´
que no hab´an sido usadas anteriormente en este texto:
ı
– Particula.
– Radioboton.
A continuacion se describen algunas propiedades relevantes de cada una de ellas.
´

La clase de elemento gr´ fico Particula
a
Las propiedades del objeto Ball, de la clase Part´cula se muestran en la Figura 15.8. Las
ı
propiedades mas relevantes de esta clase son:
´
– X: coordenada X de la posicion de la part´cula.
´
ı
– Y: coordenada Y de la posicion de la part´cula.
´
ı
– Tama˜ o X: tamano de la part´cula segun el eje X.
n
˜
ı
´
– Tama˜ o Y: tamano de la part´cula segun el eje Y.
n
˜
ı
´
– Visible: indica si el elemento es visible o no.
– Activo: indica si el elemento es interactivo.
– Al pulsar: accion que se produce cuando el boton del raton se presiona sobre el objeto.
´
´
´
– Al mover: accion que se produce cuando se mueve el objeto con el raton.
´
´
– Al soltar: accion que se produce cuando se deja de presionar el boton del raton.
´
´
´

La clase de elemento gr´ fico BotonRadio
a
Las propiedades del objeto ButtonManual, de la clase BotonRadio, se muestran en la Figura
15.9. La clase BotonRadio se encuentra en el panel Basicos. Esta clase se usa para mostrar y
´
modificar un valor booleano.
´
15.3. PROGRAMACION DE LA VISTA

195

Cuando mas de un objeto de la clase BotonRadio esta en el mismo contenedor, solo
´
´
´
uno puede ser seleccionado en cada momento, aunque es posible que no haya ninguno
seleccionado.
Las propiedades mas relevantes de esta clase son las siguientes:
´
–
–
–
–
–

Variable: valor que se muestra y modifica al accionar el boton.
´
Seleccionada: valor inicial de la variable.
Accion: accion que se produce cuando se pulsa el boton.
´
´
´
Accion Si: accion que se produce cuando se selecciona el elemento.
´
´
Accion No: accion que se produce cuando se deselecciona el elemento.
´
´
196

TEMA 15. LABORATORIO VIRTUAL DEL SISTEMA BOLA Y VARILLA
Parte IV

Ap´ ndices
e

197
Texto base  euclides
Ap´ ndice A
e

Java para el desarrollo de
laboratorios virtuales en Ejs

´
Objetivos: Una vez estudiado el contenido de este apendice, deber´a conoı
cer:
´
´
• Cuales son los tipos de datos del lenguaje Java y cuales encuentran
´
aplicacion en Ejs.
´
• Como se declaran e inicializan las variables, vectores y matrices en Ejs.
´
´
• Cuales son los operadores de Java mas comunmente empleados en la
´
´
descripcion del modelo en Ejs.
• Las sentencias if y for de Java.
´
´
• Algunos fundamentos de la programacion de metodos en Java.
´
´
• Algunos de los metodos de la clase Math de Java y como emplearlos.

´
A.1. Introduccion
Para poder sacar el maximo partido a Ejs es necesario tener algunos conocimiento basicos
´
´
del lenguaje de programacion Java. Esto es debido a que el programador del laboratorio
´
virtual debe describir en lenguaje Java el modelo matematico, y la interaccion entre la vista y
´
´
el modelo.
Este ap´ ndice pretende servir como introduccion y como gu´a rapida de referencia de
e
´
ı
´
aquellos aspectos del lenguaje Java que resultan de utilidad a la hora de realizar laboratorios
virtuales usando Ejs.
En Internet esta disponible abundante informacion acerca del lenguaje Java: cursos,
´
´
documentacion, ejemplos, foros, paginas de preguntas frecuentes, etc. Tambi´ n existe un
´
´
e
gran numero de libros1 y manuales de Java, algunos de los cuales se encuentran disponibles
´
gratuitamente en la red2 . Todo ello puede servir para profundizar en el tema, a aquellas
personas que est´ n interesadas en ello.
e
1 En la escritura de este Ap´ ndice se ha empleado como referencia el texto “Java 2. Manual de Referencia. Cuarta
e
Edicion”, escrito por Herbert Schildt y publicado en 2001 por la editorial McGraw-Hill. En nuestra opinion se trata
´
´
de un magn´fico libro, que recomendamos a todo aquel que est´ interesado en aprender Java desde cero.
ı
e
2 Por ejemplo, el libro ”Thinking in Java”, de Bruce Eckel.

199
´
200 APENDICE A. JAVA PARA EL DESARROLLO DE LABORATORIOS VIRTUALES EN EJS

Figura A.1: Opciones para la declaracion del tipo de las variables.
´

A.2. Tipos de datos
Al definir las variables del laboratorio virtual es preciso especificar a qu´ tipo pertenece
e
cada una de ellas. Esto se hace seleccionado el tipo en la columna Tipo del panel Variables
(v´ ase la Figura A.1). Ejs ofrece cinco opciones: boolean, int, double, String y Object. Las
e
tres primeras (boolean, int, double) corresponden a tipos simples de datos de Java. La
cuarta, String, es el tipo empleado para definir cadenas de caracteres. En esta seccion se
´
explicaran cuales son los tipos simples de datos y qu´ son las cadenas de caracteres en Java.
´
´
e

A.2.1. Tipos simples de datos
Java posee ocho tipos simples de datos, que se definen mediante las palabras reservadas
byte, short, int, long, char, float, double y boolean. Estos ocho tipos pueden clasificarse
en:
– Tipos enteros: byte, short, int y long. La diferencia entre estos cuatro tipos es el rango
de valores admisibles. Por ejemplo, una variable del tipo byte solo puede tomar valores
´
enteros comprendidos entre −128 y 127, ambos inclusive. En la Tabla A.1 se muestra el
rango de valores que pueden tomar las variables de cada tipo. El tipo entero utilizado en
Ejs es int.
– Tipos en coma flotante: float y double. Representan numeros en simple y doble precision
´
´
respectivamente. El rango de valores para numeros positivos se muestra en la Tabla A.2.
´
Ademas, ambos tipos comprenden los correspondientes numeros negativos y el cero.
´
´
Por motivo de precision en los calculos, cuando se emplea Java para la simulacion por
´
´
´
ordenador de modelos matematicos, el tipo double es la mejor eleccion para representar
´
´
numeros en coma flotante. Por otra parte, todas las funciones matematicas transcen´
´
dentes (por ejemplo, sin, cos, sqrt) devuelven valores del tipo double. El tipo en coma
flotante que usa Ejs es double.
´
– Tipo caracter: char. Este es el tipo de datos que utiliza Java para almacenar caracteres.
´
Java emplea Unicode3 , que es un juego de caracteres que comprende todos los caracteres
que se pueden encontrar en todas las lenguas de la humanidad. Puesto que las variables
en Ejs no pueden ser del tipo char, las variables de tipo caracter pueden definirse en
´
Ejs como cadenas de caracteres, es decir, como variables del tipo String.
– Tipo booleano: boolean. Las variables de este tipo pueden tomar dos valores: true y false.
Estos valores no se convierten a ninguna representacion num´ rica. Es decir, el literal
´
e
3 Se

puede obtener mas informacion sobre Unicode en http://www.unicode.org/
´
´
A.2. TIPOS DE DATOS

201

true en Java no es igual a 1, ni el literal false es igual a 0. En Java estos dos literales
solo pueden asignarse a las variables declaradas como boolean y ser empleadas en
´
expresiones con operadores booleanos.
Tabla A.1: Rango de los tipos enteros.
Tipo de variable

Rango de valores

byte
short
int
long

-128
-32,768
-2,147,483,648
-9,223,372,036,854,775,808

a
a
a
a

127
32,767
2,147,483,547
9,223,372,036,854,775,807

Tabla A.2: Rango de los tipos en coma flotante.
Tipo de variable

Rango de valores

float
double

3.4 · 10−38
1.7 · 10−308

a
a

3.4 · 10+38
1.7 · 10−308

A.2.2. Cadenas de caracteres
Las cadenas de caracteres no son tipos simples de Java, sino objetos de la clase String.
Las cadenas de caracteres se especifican en Java encerrando la secuencia de caracteres
entre dobles comillas. Por ejemplo:
Hola mundo
Algunos caracteres especiales, que pueden ser incluidos en las cadenas de caracteres, son
los dos siguientes:
(salto de l´nea)
ı
(tabulador)

n
t
Por ejemplo:

Primera lineanSegunda linea
Por otra parte, como la comilla doble senala en principio y el fin de la cadena de caracteres,
˜
si se desea incluir el caracter comilla doble en la cadena de caracteres no puede incluirse tal
´
cual, sino que debe escribirse:
”
Algo similar sucede con la comilla simple: si se desea incluir un caracter comilla simple
´
en la cadena de caracteres debe anteponerse el caracter barra inclinada, es decir:
´
’
Si se desea incluir un caracter barra inclinada en la cadena de caracteres debe escribirse:
´
´
202 APENDICE A. JAVA PARA EL DESARROLLO DE LABORATORIOS VIRTUALES EN EJS

A.3. Variables
En esta seccion se explican las restricciones que impone el lenguaje Java respecto a
´
la forma de nombrar las variables. Asimismo, se explica brevemente como se definen e
´
inicializan en Ejs las variables multidimensionales (vectores y matrices). No entraremos en
detalles acerca de como habr´a que realizar esta definicion directamente en Java, puesto que
´
ı
´
no es necesario conocerlo para programar laboratorios virtuales en Ejs.

A.3.1. Nombre de las variables
El nombre de una variable puede ser cualquier identificador valido en Java. En Java, un
´
identificador comienza con una letra, un subrayado ( ) o un s´mbolo de dolar ($). Los siguienı
´
tes caracteres pueden ser letras o d´gitos. Se distinguen las mayusculas de las minusculas,
ı
´
´
y no hay longitud maxima. Por ejemplo, dos identificadores validos son: longPendulo2 y
´
´
long Pendulo 2.
´
Las palabras clave de Java no pueden ser usadas como identificadores. Estas son:
abstract
boolean
break
byte
byvalue
case
catch
char
class
const

continue
default
do
double
else
extends
false
final
finally
float

for
goto
if
implements
import
instanceof
int
interface
long
native

new
null
package
private
protected
public
return
short
static
super

switch
synchronized
this
threadsafe
throw
transient
true
try
void
while

Ademas de estas palabras clave, hay palabras reservadas que tampoco pueden emplearse
´
´
como identificadores. Estas son:
cast
operator

future
outer

generic
rest

inner
var

A.3.2. Vectores y matrices
En la columna Dimension del panel Variables de Ejs puede especificarse la dimension de
´
las variables. En la Figura A.2 se muestra un ejemplo. La variable posicion planeta es
un vector de tres componentes de tipo double. La variable nombres es un vector de cuatro
componentes de tipo String.
La inicializacion de estas variables vectoriales puede hacerse en el panel Inicializacion de
´
´
Ejs. En la Figura A.3 se muestra un ejemplo. Obs´ rvese que el ´ndice de los vectores comienza
e
ı
en cero. Por ejemplo, el vector nombres, de dimension 4, posee los componentes siguientes:
´
nombres[0]

nombres[1]

nombres[2]

nombres[3]

A.4. Operadores
La mayor parte de los operadores de Java pueden clasificarse en los cuatro grupos siguientes: aritm´ ticos, a nivel de bit, relacionales y logicos. En esta seccion se explicaran algunos
e
´
´
´
de los operadores aritm´ ticos, relacionales y booleanos mas comunmente usados.
e
´
´
A.4. OPERADORES

203

Figura A.2: Declaracion del nombre, tipo y dimension de variables vectoriales.
´
´

Figura A.3: Inicializacion de variables vectoriales.
´

A.4.1. Operadores aritm´ ticos
e
Los operadores aritm´ ticos se utilizan el expresiones matematicas, debi´ ndose aplicar
e
´
e
sobre operandos de tipo num´ rico (es decir, en el caso de Ejs, sobre variables de los tipos
e
int y double). A continuacion, se muestran los mas comunmente empleados:
´
´
´
+
*
/
++
-+=
-=
*=
/=

Suma
Resta
Multiplicacion
´
Division
´
Incremento
Decremento
Suma y asignacion
´
Resta y asignacion
´
Producto y asignacion
´
Division y asignacion
´
´

Los operandos aritm´ ticos basicos (suma, resta, multiplicacion y division) se comportan
e
´
´
´
de la forma habitual. No obstante, hay que tener en cuenta que cuando se opera el operador
division a un tipo entero se pierde la componente decimal del resultado.
´
Java proporciona operadores especiales que permiten combinar una operacion aritm´ tica
´
e
con una asignacion. Se denominan operadores de asignacion. Por ejemplo, una sentencia
´
´
como la siguiente:
a = a + 5;
´
204 APENDICE A. JAVA PARA EL DESARROLLO DE LABORATORIOS VIRTUALES EN EJS
puede escribirse de la forma siguiente:
a += 5;
Ambas sentencias realizan la misma accion: incrementar el valor de a en 5. Analogamente,
´
´
existen operadores de asignacion para todos los operadores que se aplican sobre dos operan´
dos. Cualquier sentencia de la forma:
variable = variable operador expresi´n;
o
puede escribirse de la forma siguiente:
variable operador= expresi´n;
o
Otro tipo de operadores aritm´ ticos son los operadores incremento (--) y decremento (++).
e
El operador incremento incrementa en una unidad su operando, mientras que el operador
decremento lo reduce en una unidad. Por ejemplo, esta sentencia:
a = a + 1;
puede escribirse de la forma siguiente:
a++;
Analogamente, esta sentencia:
´
a = a - 1;
puede escribirse de la forma siguiente:
a--;

A.4.2. Operadores relacionales
Los operadores relacionales determinan la relacion que un operando tiene con otro, dando
´
como resultado un booleano. A continuacion se muestran los operadores relacionales:
´
==
!=


=
=

Igual a
Distinto que
Mayor que
Menor que
Mayor o igual que
Menor o igual que

La aplicacion mas frecuente de estos operandos es es la obtencion de expresiones que
´
´
´
controlan la sentencia if y las sentencias de bucles (for, while y do-while).

´
A.4.3. Operadores logicos booleanos
Los operadores logicos que se muestran a continuacion solo operan sobre operandos del
´
´
´
tipo boolean. Todos ellos combinan dos valores boolean para dar como resultado un valor
boolean.
A.4. OPERADORES

205
AND logico
´
AND en cortocircuito
OR logico
´
OR en cortocircuito
NOT logico unario
´
Igual a
Distinto de



|
||
!
==
!=

El operador NOT logico (!) invierte el estado booleano:
´
!true = false

!false = true

Con el fin de definir el significado de ambos operadores, en la siguiente tabla se muestra
el resultado obtenido de realizar la operacion logica OR y la operacion logica AND entre dos
´
´
´
´
operandos booleanos A y B.
A
false
false
true
true

B
false
true
false
true

A OR B
false
true
true
true

A AND B
false
false
false
true

Java proporciona dos versiones del operador AND: el AND logico () y el AND en cortocir´
cuito (). Lo mismo sucede con el operador OR. Existen dos versiones en Java: el OR logico
´
(|) y el OR en cortocircuito (||).
En la tabla anterior puede observarse que el operador OR da como resultado true cuando
el operando A vale true, con independencia del valor que tome B. Del mismo modo, el
operador AND da como resultado false cuando el operando A vale false, con independiencia
del valor que tome B.
Cuando se utilizan las formas  y || de estos operadores, en lugar de  y |, Java no
evalua el operando de la derecha si el resultado de la operacion ya queda determinado por el
´
´
valor que toma el operando de la izquierda.
Los operadores en cortocircuito ( y ||) resultan utiles en situaciones como la que se
´
muestra en la expresion logica siguiente:
´
´
denom != 0  num/denom 10
Si la variable denom vale cero, la expresion num/denom produce un error en tiempo de
´
ejecucion. Para evitar que esto suceda, se emplea el operador AND en cortocircuito. Con ello,
´
en primer lugar se evalua la expresion logica denom != 0, y solo en caso de que sea true se
´
´
´
´
evalua la expresion num/denom 10.
´
´

´
A.4.4. Operador de asignacion
El operador de asignacion es un solo signo igual (=). Se emplea en sentencias del tipo
´
siguiente:
variable = expresi´n;
o
donde el tipo de la variable situada al lado izquierdo de la igualdad debe ser compatible con el
tipo resultante de evaluar la expresion escrita en el lazo derecho. El efecto de una sentencia
´
como la anterior es evaluar la expresion del lado derecho y asignar el resultado obtenido a la
´
variable del lado izquierdo de la igualdad.
´
206 APENDICE A. JAVA PARA EL DESARROLLO DE LABORATORIOS VIRTUALES EN EJS

A.5. Control del flujo del programa
Java proporciona dos sentencias de seleccion: if y switch. Mediante estas sentencias se
´
controla el flujo del programa en funcion de condiciones conocidas durante el tiempo de
´
ejecucion.
´
Ademas, Java proporciona sentencias de iteracion: for, while y do-while. Mediante estas
´
´
sentencias se crean lo que comunmente se denomina bucles. Un bucle ejecuta repetidas
´
veces un mismo conjunto de sentencias hasta que se satisface una determinada condicion de
´
finalizacion.
´
En esta seccion se explicara unicamente el funcionamiento de las sentencias if y for, por
´
´ ´
ser las mas frecuentemente empleadas.
´

A.5.1. if
La sentencia if-else es la sentencia de bifurcacion condicional en Java. La forma general
´
de la sentencia es:
if ( condici´n booleana ) {
o
sentencias1;
}
else {
sentencias2;
}
donde la clausula else el opcional. Es decir, es valido escribir:
´
´
if ( condici´n booleana ) {
o
sentencias1;
}
La sentencia if funciona de la forma siguiente. Si el resultado de evaluar la expresion
´
booleana es true, entonces se ejecutan las sentencias sentencias1. Si el resultado es false,
entonces se ejecutan las sentencias sentencias2 (si es que existen). En ningun caso se
´
ejecutaran ambos grupos de sentencias.
´
Por ejemplo, el funcionamiento de la sentencia:
if ( a = b ) {
a = 0;
} else {
b = 0;
}
es el siguiente. Si a es mayor o igual que b, entonces se asigna el valor cero a la variable a.
Por el contrario, si a no es mayor o igual que b, entonces se asigna el valor cero a la variable
b. En ningun caso se asignara el valor cero a ambas variables.
´
´

A.5.2. for
La forma general de la sentencia for es la siguiente:
for(expresi´n inicializaci´n; expresi´n condici´n; expresi´n iteraci´n) {
o
o
o
o
o
o
sentencias;
}
A.6. COMENTARIOS

207

Si solamente se repite una sentencia en el bucle, no es necesario utilizar las llaves. En
este caso, se escribir´a:
ı
for(expresi´n inicializaci´n; expresi´n condici´n; expresi´n iteraci´n)
o
o
o
o
o
o
sentencia;
El bucle for funciona como se describe a continuacion.
´
– En primer lugar, se ejecuta la expresi´n de inicializaci´n. Generalmente, esta
o
o
expresion declara e inicializa la variable de control del bucle.
´
– A continuacion, se evalua la expresi´n de condici´n, que debe ser una expresion
´
´
o
o
´
booleana. Si la expresion es verdadera, se ejecutan las sentencias del bucle. Si es falsa,
´
el bucle finaliza. Generalmente, en esta expresion se compara la variable de control del
´
bucle con algun valor en concreto.
´
– En caso de que el bucle no haya finalizado, se ejecuta la expresi´n de iteraci´n.
o
o
Habitualmente, esta es la expresion en la que se incrementa o se reduce el valor de la
´
´
variable de control.
– Cada vez que se recorre el bucle, en primer lugar se vuelve a evaluar la expresion
´
condicional, a continuacion se ejecuta las sentencias del cuerpo del bucle y despu´ s
´
e
la expresion de iteracion. El proceso se repite hasta que la expresi´n de condici´n
´
´
o
o
sea falsa.
Por ejemplo, el siguiente bucle for calcula la suma de los cinco primeros numeros enteros
´
y almacena el resultado en la variable n. Una vez finalizada la ejecucion del bucle, n guarda
´
el valor obtenido de evaluar 1 + 2 + 3 + 4 + 5.
for (int i = 0; i  6; i++)
n += i;
Obs´ rvese que en el ejemplo anterior, la variable que controla el bucle (i) es declarada e
e
inicializada en la expresi´n de inicializaci´n. Esto se hace frecuentemente en aquellos
o
o
casos en los cuales la variable que controla el bucle solo se usa en el bucle. En el ejemplo
´
anterior, se supone que la variable n ha sido previamente declarada.

A.6. Comentarios
Es una buena practica introducir comentarios en el codigo de cualquier programa, con
´
´
el fin de facilitar su comprension. En el codigo Java que se escribe en los paneles de Ejs
´
´
tambi´ n es conveniente introducir comentarios. Pueden escribirse los dos tipos siguientes de
e
comentarios:
// comentarios para una sola l´nea
ı
/*

comentarios de una o
m´s l´neas
a
ı

*/

A.7. M´ todos
e
En el panel Propio de Ejs es posible definir metodos de Java. La forma general de un metodo
´
´
es la siguiente:
tipo nombre_del_m´todo ( lista de par´metros ) {
e
a
cuerpo del m´todo
e
}
´
208 APENDICE A. JAVA PARA EL DESARROLLO DE LABORATORIOS VIRTUALES EN EJS
donde:
– tipo especifica el tipo de dato que devuelve el m´ todo. En concreto, tipo puede ser
e
cualquier tipo basico de Java (por ejemplo, int y double), el nombre de una clase de
´
objetos (por ejemplo, String), o el tipo void en caso de que no devuelva ningun dato.
´
– El nombre del m´ todo puede ser cualquier identificador valido que sea distinto de los
e
´
que ya estan siendo utilizados por otros elementos del programa.
´
– La lista de parametros es una lista de pares de tipo e identificador separados por comas.
´
Si el m´ todo no tiene parametros, la lista de parametros estara vac´a.
e
´
´
´
ı
Los m´ todos que devuelven un tipo diferente del tipo void devuelven el control a la rutina
e
llamante mediante la siguiente forma de la sentencia return:
return valor;
Por ejemplo, el m´ todo siguiente calcula el cuadrado de un numero entero:
e
´
int cuadrado ( int i ) {
return i * i;
}
Para obtener el cuadrado del numero 5, basta con realizar la llamada al m´ todo de la
´
e
forma siguiente:
cuadrado ( 5 );
Por ejemplo, puede programarse el m´ todo siguiente para calcular el volumen de un cubo:
e
double volumen(double ancho, double alto, double largo) {
double volumenCubo;
volumenCubo = ancho * alto * largo;
return volumenCubo;
}
o de forma mas concisa:
´
double volumen(double ancho, double alto, double largo) {
return ancho * alto * largo;
}

A.8. String
Una de las clases incluidas en la biblioteca de Java es String, la cual esta destinada al
´
almacenamiento y manipulacion de cadenas de caracteres. De hecho, cualquier cadena de
´
caracteres, incluso aunque sea una constante (por ejemplo, la cadena Hola), es un objeto
del tipo String. Esto implica que pueden aplicarse a dicha cadena todos los m´ todos definidos
e
en la clase String.
Los objetos de la clase String (es decir, las cadenas de caracteres) pueden concatenarse
empleando el operador +. Por ejemplo, el fragmento de codigo siguiente:
´
String
String
String

str1
str2
str3

= Primera cadena;
= Segunda cadena;
= str1 +  y  str2;
A.9. LA CLASE MATH DE JAVA

209

declara tres objetos de la clase String: str1, str2 y str3. La cadena de caracteres de la
variable str3 es:
Primera cadena y Segunda cadena
La clase String contiene varios m´ todos. Entre los mas frecuentemente usados se encuene
´
tran los tres siguientes:
– El m´ todo equals() comprueba la igualdad entre dos cadenas de caracteres. Por ejemplo,
e
puede compararse las cadenas de caracteres de str1 y str2 de la forma siguiente:
str1.equals(str2)
– El m´ todo length() devuelve la longitud de la cadena de caracteres. Por ejemplo,
e
str1.length()
devuelve el numero de caracteres de la cadena de str1.
´
– Se puede obtener el caracter que ocupa una posicion determinada en la cadena de
´
´
caracteres llamando al m´ todo charAt(). Por ejemplo,
e
str3.charAt(3)
devuelve el caracter situado en la posicion 3 de la cadena de caracteres de la variable
´
´
str3.

A.9. La clase Math de Java
La clase Math de Java posee m´ todos que implementan las funciones matematicas mas
e
´
´
comunmente usadas, tales como la funcion ra´z cuadrada (sqrt), valor absoluto (abs), funcio´
´
ı
nes trigonom´ tricas (sin, cos, tan), trigonom´ tricas inversas (asin, acos, atan), exponencial
e
e
(exp), potencia (pow), logaritmo (log), etc.
Por ejemplo, el m´ todo siguiente calcula la hipotenusa de un triangulo rectangulo a partir
e
´
´
de la longitud de sus dos catetos.
double pitagoras(double cateto1, double cateto2) {
return Math.sqrt( Math.pow(cateto1,2) + Math.pow(cateto2,2) );
}

A.10. Ejemplos
En esta seccion se muestran dos ejemplos. El primero de ellos ilustra el uso de la sentencia
´
if y de variables del tipo String. El segundo ilustra el uso de la sentencia for y el empleo de
la clase Math de Java.

A.10.1. Ejemplo 1
La vista del laboratorio virtual que va a desarrollarse en este ejemplo se muestra en la
Figura A.4. Consta de una ventana donde se visualiza solo un objeto, que puede ser o bien
´
de la clase Flecha o bien de la clase Particula, segun seleccione el usuario del laboratorio
´
virtual en una lista desplegable situada en la parte inferior de la vista. En concreto, el objeto
de la clase Flecha se hace visible si la palabra seleccionada en la lista desplegable es Flecha.
Analogamente sucede para el objeto de la clase Particula.
´
En la Figura A.5 se muestra la ventana de variables del laboratorio.
En la Figura A.6 se muestra el m´ todo que permite seleccionar que se muestre el objeto de
e
la clase Flecha o de la clase Particula. Segun el valor de la variable seleccion, que es de la
´
´
210 APENDICE A. JAVA PARA EL DESARROLLO DE LABORATORIOS VIRTUALES EN EJS

Figura A.4: Vista del laboratorio virtual explicado en el Ejemplo 1.

Figura A.5: Ventana para la definicion de las variables.
´

Figura A.6: Definicion del m´ todo propio.
´
e
A.10. EJEMPLOS

211

Figura A.7: Ventana de propiedades del objeto Particula.

Figura A.8: Ventana de propiedades del objeto Flecha.

clase String, sea Particula o Flecha, se asigna el correspondiente valor a las variables
booleanas Particula y Flecha.
En este m´ todo se muestra un ejemplo de uso de la sentencia if, donde la variable de cone
trol es la variable denominada seleccion. As´, si la variable seleccion es igual a Particula,
ı
entonces se pone la variable Particula a true y la variable Flecha a false. Las variables
Particula y Flecha estan asociadas respectivamente a la propiedad Visible de los objetos
´
Particula y Flecha (ver las Figuras A.7 y A.8).

A.10.2. Ejemplo 2
En la Figura A.9 se muestra la vista de un laboratorio virtual, que consiste en un pol´gono
ı
con n v´ rtices. En la Figura A.10 se muestra el arbol de elementos de la vista.
e
´
En la Figura A.11 se muestra la declaracion de las variables del laboratorio. Las variables
´
son las siguientes: una variable entera (n) y dos vectores de n componentes (VerticesX y
VerticesY).
Las variables n, VerticesX y VerticesY estan enlazadas, respectivamente, con las pro´
piedades Puntos, X e Y del objeto Poligono (v´ ase la Figura A.12).
e
´
212 APENDICE A. JAVA PARA EL DESARROLLO DE LABORATORIOS VIRTUALES EN EJS

Figura A.9: Vista del laboratorio virtual explicado en el Ejemplo 2.

´
Figura A.10: Arbol de elementos de la vista.

Figura A.11: Declaracion de las variables.
´
A.10. EJEMPLOS

213

Figura A.12: Propiedades del objeto de la clase Poligono.

Figura A.13: Ventana de inicializacion de las variables.
´

En la Figura A.13 se muestra la pagina de inicializacion, donde se usa un bucle for para
´
´
inicializar los valores de las componentes de los vectores VerticesX y VerticesY.
´
214 APENDICE A. JAVA PARA EL DESARROLLO DE LABORATORIOS VIRTUALES EN EJS
Bibliograf´a
ı
Astrom, K. J.  Wittenmark, B. (1997), Computer Controlled Systems. Theory and Design,
Prentice Hall.
Cellier, F. C. (1991), Continuous System Modeling, Springer-Verlag.
Christian, W.  Belloni, M. (2004), Physlet Physics, Pearson Education.
Cutlip, M. B.  Shacham, M. (1999), Problem Solving in Chemical Engineering with Numerical
Methods, Prentice Hall.
Dormido, S.  Esquembre, F. (2003), The quadruple-tank process: An interactive tool for
control education, in ‘Procc. 2003 European Control Conference’.
Elmqvist, H. (1978), A Structured Model Language for Large Continuous Systems, PhD thesis,
Lund Institute of Technology. Suecia.
Elmqvist, H., Cellier, F. E.  Otter, M. (1993), Object-oriented modeling of hybrid systems, in
‘ESS’93, European Simulation Symposium’, Delft, The Netherlands, pp. xxxi–xli.
*citeseer.ist.psu.edu/elmqvist93objectoriented.html
Esquembre, F. (2002a), Easy Java Simulations. Apendices for the manual, for version 3.1.
Disponible en http://www.fem.um.es/Ejs y en el CD del curso (documento Appendices3.2.pdf).
Esquembre, F. (2002b), Easy Java Simulations. The manual for version 3.1. Disponible en
http://www.fem.um.es/Ejs y en el CD del curso (documento EjsManual3.1.pdf).
Esquembre, F. (2004a), Creacion de Simulaciones Interactivas en Java. Aplicacion a la
´
´
Ense˜ anza de la F´sica, Prentice Hall.
n
ı
Esquembre, F. (2004b), Creation of Interactive Simulations in Java. Application to the teaching
of physics. Disponible en http://www.fem.um.es/Ejs y en el CD del curso (documento
EjsManual3.3beta040918.pdf).
Esquembre, F. (2004c), ‘Easy Java Simulations: a software tool to create scientific simulations
in Java’, Computer Physics Communications 156, 199–204.
Esquembre, F.  Sanchez, J. (2004), How to use Ejs with Matlab and Simulink, for version
´
3.3. Disponible en http://www.fem.um.es/Ejs y en el CD del curso (documento
EjsManual3.3beta040918.pdf).
Johansson, K. H. (2000), ‘The quadruple-tank process: A multivariable laboratory process
with an adjustable zero’, IEEE Transactions on Control Systems Technology 8(3), 456–
465.
Ljung, L.  Torkel, G. (1994), Modeling of Dynamic Systems, Prentice-Hall.
Martin, C., Urquia, A.  Dormido, S. (2004), JARA 2i - A Modelica library for interactive
simulation of physical-chemical processes, in ‘European Simulation and Modelling
Conference’, pp. 128–132.
215
216

´
BIBLIOGRAFIA

Martin, C., Urquia, A., Sanchez, J., Dormido, S., Esquembre, F., Guzman, J. L.  Berenguel,
M. (2004), Interactive simulation of object-oriented hybrid models, by combined use
of Ejs, Matlab/Simulink and Modelica/Dymola, in ‘Proc. 18th European Simulation
Multiconference’, pp. 210–215.
MGA (1995), ACSL Reference Manual, MGA Software, Conconrd, MA, USA.
Schildt, H. (2001), Java 2. Manual de Referencia. Cuarta Edicion, McGraw-Hill.
´
Urquia, A. (2000), Modelado Orientado a Objetos y Simulacion de Sistemas H´bridos en el
´
ı
´
Ambito del Control de Procesos Qu´micos, PhD thesis, Dept. Informatica y Automatica,
ı
´
´
UNED, Madrid, Spain.
van den Bosch, P. P. J.  van der Klauw, A. C. (1994), Modeling, Identification and Simulation
of Dynamical Systems, CRC Press.
´ndice alfab´ tico
I
e
acciones predefinidas en Ejs, 107
algoritmo, 40
boton
´
Arranque, 49
Evolucion, 48, 80
´
Inicializacion, 46
´
Introduccion, 74
´
Ligaduras, 49, 80
Modelo, 48, 80
Propio, 49, 88
Variables, 78
Vista, 80
causalidad computacional, 14
asignacion, 18, 19
´
ciclo l´mite, 95
ı
Consola de Ejs, 32
constante del muelle, 138
directorio
examples, 33
TechnicalExamples, 100
library, 33, 91
data, 32
de trabajo, 33
laboratoriosTexto, 33, 73, 96
Simulations, 32
discretizacion temporal, 7
´
distribucion del laboratorio virtual, 91
´
EDO, 48
Ejs
algoritmo de simulacion, 39
´
arranque, 32
condiciones de uso, 23
configuracion, 36
´
instalacion, 31
´
en Windows, 31
introduccion, 25, 74
´
modelo, 25
proposito, 23
´
publicar en Internet, 36
sitio web, 23
vista, 25, 80
elemento
hijo, 56
padre, 56
elemento grafico
´

Boton, 89, 101
´
CampoNumerico, 89
clase de elemento, 80
ConjuntoParticulas, 174
contenedor, 80
Etiqueta, 123
Flecha, 123, 133
Imagen, 183
Panel, 88, 89, 101
panel, 58
PanelConEjes, 101
PanelDibujo, 83, 101
Particula, 123
Poligono, 114, 133
Selector, 107
Texto, 133
Traza, 86, 101
Ventana, 56, 83
VentanaDialogo, 56, 104
experimento, 4
fichero
.bat, 33, 37
.html, 33
.jar, 33, 37
.java, 37
.xml, 33, 100
EjsConsole.jar, 32
jdk-1 5 0 09-windows-i586-p.exe, 31
figuras de Lissajous, 73
friccion
´
dinamica, 154
´
estatica, 154
´
gas perfecto
constante, 180
ecuacion de estado, 180
´
indice superior, 161
integracion
´
m´ todo de Euler, 11, 50
e
m´ todo de Euler-Richardson, 51
e
m´ todo de Runge-Kutta, 51
e
m´ todo de Runge-Kutta-Fehlberg, 52
e
tamano del paso, 11
˜
Java
cadenas de caracteres, 201
caracteres especiales, 201
217
´
´
INDICE ALFABETICO

218
identificador, 202
metodo, 207
operadores, 202
aritm´ ticos, 203
e
de asignacion, 203
´
decremento, 204
en cortocircuito, 205
incremento, 204
logicos booleanos, 204
´
relacionales, 204
sentencia
de iteracion, 206
´
de seleccion, 206
´
do-while, 206
for, 206
if, 206
return, 208
switch, 206
while, 206
String, 208
concatenacion, 208
´
m´ todo charAt, 209
e
m´ todo equals, 209
e
m´ todo length, 209
e
Tipos
byte, 200
double, 200
float, 200
int, 200
long, 200
short, 200
void, 208
laboratorio
cicloLimite.xml, 96
lissajous.xml, 73
lazo algebraico, 142
Ley
de Bernoulli, 29
de Hooke, 138
de Newton, 5, 180
de Ohm, 5, 15
m´ todo, 88
e
initialize(), 107
play(), 49
m´ todo experimental, 4
e
marco experimental, 7
matriz, 47
modelo, 3
de tiempo continuo, 6
de tiempo discreto, 6
determinista, 6
estocastico, 6
´
f´sico, 5
ı
h´bridos, 7
ı
matematico, 5, 9
´
mental, 4

verbal, 4
Open Source Physics, 27
osciloscopio virtual, 73
paginas ocultas, 37
´
panel
Introduccion, 74
´
Modelo, 48, 80
Evolucion, 48, 80
´
Inicializacion, 46
´
Ligaduras, 49, 80
Propio, 49, 88
Variables, 78
Vista, 55, 80
´
Arbol de elementos, 55
Basicos, 80
´
Contenedores, 80
Dibujo, 55, 80
Dibujo - Basicos, 55, 80
´
Dibujo - Campos, 55, 80
Dibujo - Grafos y cuerpos, 55, 80
Elementos para la vista, 55
paradigma modelo-vista-control, 24
parametro, 10
particion, 14
´
principio de Arqu´medes, 179
ı
reutilizacion, 100
´
simulacion, 5
´
condicion de terminacion, 11
´
´
de Monte Carlo, 173
singularidad estructural, 19
sistema, 3
de cuatro tanques, 28
experto, 4
slider (deslizador), 104
variable
algebraica, 10, 17
clasificacion, 10
´
conocida, 16
de estado, 10, 16
declaracion, 46
´
desconocida, 17
Dimension, 47
´
inicializacion, 46
´
Nombre, 46
Tipo, 47
boolean, 47
double, 47
int, 47
String, 47
Valor, 47
vector, 47

Más contenido relacionado

DOCX
06. analisis matematico
DOCX
06. analisis matematico
DOCX
Segundo Avance Proyecto Final Blgl Version 1 De La Tarde
PDF
Programación en Lenguajes Estructurados 2012. Parte I
DOC
E182112
PPTX
Enseñanza Asistida por Ordenador
PDF
Computacion
PPT
Fase Planificación
06. analisis matematico
06. analisis matematico
Segundo Avance Proyecto Final Blgl Version 1 De La Tarde
Programación en Lenguajes Estructurados 2012. Parte I
E182112
Enseñanza Asistida por Ordenador
Computacion
Fase Planificación

La actualidad más candente (14)

PPSX
Rgbr_U2_M5_proyecto_TIC_documento_integrado
PPTX
Expo nidia y katherinne
DOCX
Investigacion word y exel
PDF
Proyecto avance 1 matlab keniia
DOCX
Informatica 2 tarea 1
DOCX
Informatica 2 tarea 1 corregida
DOCX
Syllabus física ii (2)
PDF
Taller de hotpotatoes, aproximación. carlín gonzález, carmen parra y jaime ro...
PDF
Encuesta 1
DOCX
PDF
Proyecto kenia gisse miguel aby
DOC
11022020 102608t3tra
DOCX
SOFTWARE:RAZONAMIENTO-ABSTRACTO
PDF
Encuadre curso propedeutico
Rgbr_U2_M5_proyecto_TIC_documento_integrado
Expo nidia y katherinne
Investigacion word y exel
Proyecto avance 1 matlab keniia
Informatica 2 tarea 1
Informatica 2 tarea 1 corregida
Syllabus física ii (2)
Taller de hotpotatoes, aproximación. carlín gonzález, carmen parra y jaime ro...
Encuesta 1
Proyecto kenia gisse miguel aby
11022020 102608t3tra
SOFTWARE:RAZONAMIENTO-ABSTRACTO
Encuadre curso propedeutico
Publicidad

Destacado (20)

PPTX
Alimentos que mejoran la vista
ODP
Trabajo tecnologia
DOCX
Curiosidades
PPT
Powerpoint tecnología
PPT
Iva
PPTX
Victormanuel
PDF
Buscadores
PPTX
Prehistòria de les matemàtiques
PPTX
Nuevo mono
PPT
Telefonía
DOCX
Tablas de exce1 bd
PPTX
Integrar Adecuadamente la Pérdida
PDF
Guia Storify
DOCX
Noticias tecnologias ajuste texto
DOC
Plan evaluacion eloisa_florian
PPTX
Programacion didactica
PPTX
Tic aplicadas a la educación
PDF
Marketing Online
DOCX
Fotoreportaje
Alimentos que mejoran la vista
Trabajo tecnologia
Curiosidades
Powerpoint tecnología
Iva
Victormanuel
Buscadores
Prehistòria de les matemàtiques
Nuevo mono
Telefonía
Tablas de exce1 bd
Integrar Adecuadamente la Pérdida
Guia Storify
Noticias tecnologias ajuste texto
Plan evaluacion eloisa_florian
Programacion didactica
Tic aplicadas a la educación
Marketing Online
Fotoreportaje
Publicidad

Similar a Texto base euclides (20)

DOCX
Software para análisis matemático
PDF
Herramienta docente en la asignatura de instalaciones fotovoltaicas (Design S...
PPT
Campus Virtuales
PDF
Www.cch.unam.mx sites default_files_plan_estudio_mapa_ptcoficial
DOC
Programacion visual II
PDF
Laboratorio de Escritorio
PPT
Programa Capacitacion Tic Los Efe
PDF
Diseño logico 5°
PPT
CENTRO DE INNOVACIÓN TECNOLÓGICO
PPT
CENTRO DE INNOVACIÓN TECNOLÓGICO
PPT
CENTRO DE INNOVACIÓN TECNOLÓGICO
PPT
curso online abc excel
PDF
Portafolio programacion
PDF
Sistema Inteligente Generador de Modelos, software SIGEM®.
PPT
PráCtica 3
 
PPT
Programa de Capacitación docente en TIC para el IUTEB
PPT
Diapositivas Proyecto
PDF
PDF
Silaboprogramacinorientadaaobjetosmarzojulio2014 140718113816-phpapp01
PDF
Silaboprogramacinorientadaaobjetosmarzojulio2014 140718113816-phpapp01
Software para análisis matemático
Herramienta docente en la asignatura de instalaciones fotovoltaicas (Design S...
Campus Virtuales
Www.cch.unam.mx sites default_files_plan_estudio_mapa_ptcoficial
Programacion visual II
Laboratorio de Escritorio
Programa Capacitacion Tic Los Efe
Diseño logico 5°
CENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICO
curso online abc excel
Portafolio programacion
Sistema Inteligente Generador de Modelos, software SIGEM®.
PráCtica 3
 
Programa de Capacitación docente en TIC para el IUTEB
Diapositivas Proyecto
Silaboprogramacinorientadaaobjetosmarzojulio2014 140718113816-phpapp01
Silaboprogramacinorientadaaobjetosmarzojulio2014 140718113816-phpapp01

Texto base euclides

  • 1. ´ ´ APLICACION DE LA SIMULACION POR ORDENADOR A LA ˜ ENSENANZA DE LAS CIENCIAS Programa de Formacion del Profesorado ´ y Formacion Continua de la UNED ´ Curso 2007-08 Alfonso Urqu´a ı Carla Mart´n ı Departamento de Informatica y Automatica ´ ´ Escuela T´ cnica Superior de Ingenier´a Informatica, UNED e ı ´ Juan del Rosal 16, 28040 Madrid, Espana ˜ {aurquia,carla}@dia.uned.es http://www.euclides.dia.uned.es/
  • 3. ´ Presentacion El Equipo Docente le da la bienvenida al curso “Aplicacion de la simulacion por ordenador ´ ´ a la ense˜ anza de las Ciencias”, perteneciente al Programa de Formacion del Profesorado y n ´ Formacion Continua de la UNED. ´ Encontrara que la materia impartida en este curso tiene importantes aplicaciones practi´ ´ cas. Una de ellas es la programacion de laboratorios virtuales: herramientas docentes que, ´ adecuadamente empleadas, resultan extremadamente eficaces. Se trata de programas informaticos ideados para reproducir algunos aspectos del comportamiento de un sistema real, ´ permitiendo que el alumno interaccione con el modelo simulado de forma analoga a como ´ lo har´a con el sistema real. Una de las ventajas fundamentales de este enfoque es que el ı alumno desempena un papel activo en su proceso de aprendizaje, con lo cual este le resulta ˜ ´ mas ameno y motivador. ´ El entorno de simulacion que se emplea en este curso es “Easy Java Simulations” (abrevia´ do: Ejs), el cual ha sido ideado y desarrollado por el Prof. Dr. Francisco Esquembre1 . Como quedara patente a lo largo del curso, la eleccion de este entorno responde a motivos bien ´ ´ fundamentados. Tres de las caracter´sticas por la cuales Ejs es adecuado para la docencia ı son las siguientes. En primer lugar, su gran facilidad de instalacion y manejo: es un entorno ´ concebido para ser usado por educadores y alumnos sin profundos conocimientos de programacion. En segundo lugar, Ejs puede ser descargado, usado y distribuido gratuitamente. ´ Finalmente, Ejs genera automaticamente el laboratorio virtual como una aplicacion o como un ´ ´ applet de Java. En este ultimo caso, el laboratorio virtual puede ser publicado en una pagina ´ ´ web para su uso a trav´ s de Internet. e Le animamos, por tanto, a que instale Ejs en su propio ordenador y a que vaya realizando por si mismo los ejemplos que vamos proponiendo a lo largo de este texto. Asimismo, nos gustar´a que ideara y realizara sus propias simulaciones interactivas, acordes con sus intereses y ı con la actividad docente que usted realiza. Esperamos, en definitiva, que encuentre aplicables los conocimientos adquiridos en este curso, as´ como el material que en el le proporcionamos, ı ´ a su labor docente cotidiana. Para finalizar esta presentacion, nos gustar´a invitarle a que env´e sus dudas y sugerencias ´ ı ı de mejora al profesor Alfonso Urqu´a (e-mail: aurquia@dia.uned.es) y a la profesora Carla ı Mart´n (e-mail: carla@dia.uned.es), de modo que podamos atenderlas. ı El Equipo Docente. 1 Prof. Dr. Francisco Esquembre, Dpto. de Matematicas, Universidad de Murcia, Campus de Espinardo, 30071 ´ Murcia (Espana). E-mail: fem@um.es ˜
  • 5. Sitio web del curso En el sitio web http://www.euclides.dia.uned.es/simulab-pfp/ puede encontrar informacion y noticias referentes al curso. ´ Tambi´ n, puede acceder a un curso online gratuito, escrito en ingl´ s, sobre programacion e e ´ de laboratorios virtuales con Easy Java Simulations. Se trata de una version muy resumida ´ del curso que aqu´ le presentamos. ı Este curso online recibio el segundo premio al “Curso mejor disenado” (Best Designed ´ ˜ Course Award) en la competicion internacional celebrada con motivo de la 6th Int. Conference ´ Virtual University, que tuvo lugar en Bratislava (Eslovaquia), en diciembre de 2005. Finalmente, en el sitio web puede visualizar los laboratorios virtuales explicados en el curso y algunos de los laboratorios virtuales mas destacados programados por nuestros ´ alumnos de anos anteriores. ˜
  • 7. Registro de alumnos El Negociado del Programa de Formacion del Profesorado de la UNED facilita a los Equipos ´ Docentes la direccion postal y el numero de tel´ fono de cada alumno, pero no la direccion de ´ ´ e ´ e-mail. Si dispone de correo electronico y desea que, en caso de que surja la necesidad, nos ponga´ mos en contacto con usted mediante e-mail, env´enos al Equipo Docente (aurquia@dia.uned.es, ı carla@dia.uned.es) un correo electronico indicandonos simplemente que esta matriculado en ´ ´ ´ el curso. De esta manera, tambi´ n sabremos que ha recibido este material. e
  • 9. ´ ´ Orientacion metodologica Objetivos docentes En este curso se pretende que el alumno aprenda a hacer un uso eficaz de la simulacion ´ interactiva por ordenador como herramienta docente. Para ello, debe adquirir la capacidad de disenar y programar laboratorios virtuales utiles para la ensenanza de las Ciencias, emplean˜ ´ ˜ do para ello el entorno de simulacion Ejs. ´ Contenidos Los contenidos del curso van siendo expuestos gradualmente, a trav´ s de una sucesion de e ´ casos de estudio. Estos contenidos son: 1. Diseno, programacion y distribucion a trav´ s de Internet de laboratorios virtuales, usan˜ ´ ´ e do el entorno de simulacion Easy Java Simulations (Ejs). ´ 2. Fundamentos de la aplicacion de la simulacion dinamica interactiva por ordenador a la ´ ´ ´ ensenanza de las Ciencias. Metodolog´a docente. Preparacion del material docente. ˜ ı ´ 3. Ejemplos de aplicacion de laboratorios virtuales, programados con Ejs, a la ensenanza ´ ˜ de las Ciencias. Material did´ ctico a Al comienzo del curso se entregara al alumno el siguiente material: ´ – Una copia impresa del Texto Base del curso: Aplicacion de la Simulacion por Ordenador a la Ense˜ anza de las Ciencias ´ ´ n Alfonso Urqu´a y Carla Mart´n ı ı En este texto no solo se realiza una introduccion tutorial al manejo de Ejs, sino que tam´ ´ bi´ n se explican los fundamentos y la aplicacion de una metodolog´a para el modelado e ´ ı orientado a la simulacion interactiva usando Ejs. ´ – Un CD-ROM, que contiene: • El Texto Base del curso en formato electronico. ´ • El entorno de simulacion Ejs. ´ • El entorno de desarrollo de Java. • El codigo de los laboratorios virtuales explicados en el Texto Base del curso. ´ • Manuales y otra documentacion de Ejs. ´ El alumno debera emplear como material didactico del curso, tanto el Texto Base, como ´ ´ los manuales y ap´ ndices de Ejs incluidos en el CD-ROM. e Asimismo, es muy recomendable la lectura del libro: Creacion de Simulaciones Interactivas en Java ´ Francisco Esquembre Editorial: Pearson Prentice-Hall
  • 10. Metodolog´a y actividades ı El curso tiene un enfoque eminentemente aplicado. Se entregara al alumno el software ´ Ejs, un texto en el que se explica paso a paso su manejo, ilustrado mediante una coleccion ´ de ejemplos de aplicacion a la ensenanza de las Ciencias. El alumno podra realizar estos ´ ˜ ´ ejemplos en su propio ordenador y desarrollar su propio material docente. Nivel del curso Iniciacion. ´ Alumnado Este curso esta destinado a profesores de materias de Ciencias (f´sica, qu´mica, biolog´a, ´ ı ı ı matematicas, econom´a, etc.) que est´ n interesados en el empleo de la simulacion interactiva ´ ı e ´ por ordenador como herramienta docente. Para poder realizar el curso, el alumno debe disponer de ordenador y de conexion a Internet. ´ ´ ´ Duracion y dedicacion 6 meses, 120 horas (12 cr´ ditos) e ´ ´ Criterios de evaluacion y calificacion El alumno debera realizar individualmente un trabajo en el cual aplique eficazmente la ´ simulacion interactiva por ordenador a la docencia. Para ello, debera emplear el entorno de ´ ´ simulacion Ejs. ´ Dicho trabajo consistira en la realizacion de dos laboratorio virtuales, uno sencillo y otro ´ ´ mas complejo, cuyos contenidos quedan a la eleccion del alumno. ´ ´ El alumno debera entregar el fichero .xml de cada laboratorio, as´ como todos los ficheros ´ ı de imagenes que haya usado para la descripcion de la Introduccion y la Vista de los dos ´ ´ ´ laboratorios. Con el fin de facilitar la revision de los trabajos, debera guardar todas las figuras ´ ´ de los dos laboratorios en un mismo directorio, y env´arnoslo junto con los dos ficheros .xml. ı Es necesario que los dos laboratorios virtuales funcionen correctamente y que est´ n ame pliamente documentados, empleando para ello el panel Introduccion. Esta documentacion ´ ´ debe incluir cinco ventanas, con los nombres y el contenido que se detalla a continuacion: ´ 1. Objetivo. Objetivo docente del laboratorio: qu´ concepto se pretende ilustrar mediante e el laboratorio. 2. Modelo matem´ tico. Explicacion detallada del modelo matematico: descripcion de las a ´ ´ ´ variables y las ecuaciones. ´ 3. Algoritmo de la simulacion. Clasificacion de las variables en conocidas y desconoci´ das. Asignacion de la causalidad computacional. Diagrama de flujo del algoritmo de la ´ simulacion. ´ 4. Actividades. Actividades que se proponen al alumno, a realizar con el laboratorio virtual. Para ello, debe realizarse un descripcion de todas las capacidades interactivas que ´ posee el laboratorio virtual (solo una descripcion de la funcionalidad, no la explicacion ´ ´ ´ de como se ha programado). ´ 5. Autor. Nombre del autor.
  • 11. El alumno debera enviar los dos laboratorios virtuales adjuntos en un correo electronico, ´ ´ a las direcciones: aurquia@dia.uned.es carla@dia.uned.es antes del 20 de junio. El “asunto” (subject) del mensaje debera ser: Trabajo Curso Formacion Profesorado. ´ ´ En el cuerpo del mensaje debera indicar su nombre y apellidos. ´ ´ Atencion al alumno Las consultas deben dirigirse a los profesores Alfonso Urqu´a y Carla Mart´n, y pueden ı ı realizarse por cualquiera de los tres m´ todos siguientes: e – Llamando a los numeros de tel´ fono 91 398 84 59 / 82 53, cualquier lunes lectivo, de ´ e 16h a 20h. – Enviando un correo electronico a las direcciones: ´ aurquia@dia.uned.es carla@dia.uned.es – Acudiendo personalmente, cualquier lunes lectivo, entre las 16h y las 20h, al despacho 5.15 de la E.T.S. de Ingenier´a Informatica de la UNED. En este caso, ser´a muy ı ´ ı recomendable que enviara un correo electronico a los profesores Alfonso Urqu´a y Carla ´ ı Mart´n, manifestandoles su intencion de venir, con el fin de concertar una cita y poder ı ´ ´ atenderle adecuadamente.
  • 13. ´ndice I ´ I Fundamentos del modelado y la simulacion 1. 1 ´ Conceptos b´ sicos del modelado y la simulacion a 3 1.1. 3 1.2. Tipos de modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3. Modelos matematicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ´ 5 1.4. 2. Sistemas y modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . El marco experimental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 ´ Simulacion de modelos de tiempo continuo 9 2.1. Variables y ecuaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2. Parametros, variables de estado y variables algebraicas . . . . . . . . . . . . . . 10 ´ 2.3. Un algoritmo para la simulacion de modelos de tiempo continuo ´ 2.4. Causalidad computacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.5. Variables conocidas y desconocidas . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.6. Asignacion de la causalidad computacional . . . . . . . . . . . . . . . . . . . . . 18 ´ . . . . . . . . 11 II Easy Java Simulations 21 3. 23 Fundamentos de Ejs 3.1. 3.2. Paradigma modelo-vista-control . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.3. Definicion del modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 ´ 3.4. Definicion de la vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 ´ 3.5. 4. ¿Qu´ es Easy Java Simulations? . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 e Ejecucion y distribucion del laboratorio virtual . . . . . . . . . . . . . . . . . . . 29 ´ ´ ´ Instalacion y arranque de Ejs 31 4.1. 4.2. Instalacion de Ejs para Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 ´ 4.3. El directorio de instalacion de Ejs . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 ´ 4.4. Seleccion del directorio de trabajo ´ 4.5. Arranque de Ejs y ejecucion de un laboratorio virtual . . . . . . . . . . . . . . . 33 ´ 4.6. 5. Requisitos para la instalacion de Ejs . . . . . . . . . . . . . . . . . . . . . . . . . 31 ´ Opciones de configuracion de Ejs . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 ´ . . . . . . . . . . . . . . . . . . . . . . . . . . 33 ´ Conceptos b´ sicos para la descripcion del modelo a I 39
  • 14. 5.1. 5.2. Descripcion algor´tmica del modelo . . . . . . . . . . . . . . . . . . . . . . . . . . 40 ´ ı 5.3. El algoritmo de simulacion de Ejs . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 ´ 5.4. Declaracion e inicializacion de las variables . . . . . . . . . . . . . . . . . . . . . 46 ´ ´ 5.5. Descripcion de la evolucion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 ´ ´ 5.6. Descripcion de las ligaduras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 ´ 5.7. M´ todos propios del usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 e 5.8. 6. Componentes del modelo escrito en Ejs . . . . . . . . . . . . . . . . . . . . . . . 39 Los algoritmos de integracion de Ejs . . . . . . . . . . . . . . . . . . . . . . . . . 50 ´ ´ Conceptos b´ sicos para la descripcion de la vista a 55 6.1. ´ Arbol de elementos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 6.2. Clases de elementos de la vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 6.3. Algunas clases de elementos de tipo Contenedor . . . . . . . . . . . . . . . . . . 57 6.4. Algunas clases de elementos de tipo Basicos . . . . . . . . . . . . . . . . . . . . 62 ´ 6.5. Algunas clases de elementos de tipo Dibujo . . . . . . . . . . . . . . . . . . . . . 63 III Casos de estudio 7. 71 ´ Programacion de un osciloscopio virtual con Ejs 73 7.1. 7.2. Descripcion de la introduccion ´ ´ 7.3. El algoritmo de la simulacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 ´ 7.4. Declaracion e inicializacion de las variables . . . . . . . . . . . . . . . . . . . . . 78 ´ ´ 7.5. Programacion del modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 ´ 7.6. Programacion de la vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 ´ 7.7. Programacion de las capacidades interactivas . . . . . . . . . . . . . . . . . . . . 87 ´ 7.8. 8. Las figuras de Lissajous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Ejecucion y distribucion del laboratorio virtual . . . . . . . . . . . . . . . . . . . 91 ´ ´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Laboratorio virtual del concepto de ciclo l´mite ı 95 8.1. 8.2. Descripcion de la introduccion ´ ´ 8.3. El algoritmo de la simulacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 ´ 8.4. Declaracion e inicializacion de las variables . . . . . . . . . . . . . . . . . . . . . 96 ´ ´ 8.5. Programacion de la evolucion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 ´ ´ 8.6. Programacion de la vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 ´ 8.7. 9. Modelo de un ciclo l´mite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 ı Programacion de las capacidades interactivas . . . . . . . . . . . . . . . . . . . . 104 ´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Principio de Arqu´medes ı 111 9.1. Descripcion del modelo matematico ´ ´ . . . . . . . . . . . . . . . . . . . . . . . . . 111 9.2. El algoritmo de la simulacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 ´ 9.3. Declaracion e inicializacion de las variables . . . . . . . . . . . . . . . . . . . . . 112 ´ ´ II
  • 15. 9.4. Programacion de las ligaduras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 ´ 9.5. Programacion de la vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 ´ 10. P´ ndulo simple e 117 10.1. Descripcion del modelo matematico ´ ´ 10.2. Descripcion de la introduccion ´ ´ . . . . . . . . . . . . . . . . . . . . . . . . . 117 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 10.3. El algoritmo de la simulacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 ´ 10.4. Declaracion e inicializacion de variables . . . . . . . . . . . . . . . . . . . . . . . 119 ´ ´ 10.5. Programacion del modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 ´ 10.6. Programacion de la vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 ´ 10.7. Algunas actividades propuestas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 ´ 11. Conduccion de calor a trav´ s de una pared multiple e ´ 11.1. Descripcion del modelo matematico ´ ´ 11.2. Descripcion de la introduccion ´ ´ 127 . . . . . . . . . . . . . . . . . . . . . . . . . 127 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 11.3. El algoritmo de la simulacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 ´ 11.4. Declaracion e inicializacion de las variables . . . . . . . . . . . . . . . . . . . . . 131 ´ ´ 11.5. Programacion de la vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 ´ 12. Laboratorio virtual de un sistema mec´ nico a 137 12.1. Descripcion del sistema e hipotesis de modelado . . . . . . . . . . . . . . . . . . 137 ´ ´ 12.2. Modelado f´sico de los componentes . . . . . . . . . . . . . . . . . . . . . . . . . 138 ı 12.3. Modelo matematico del sistema simplificado . . . . . . . . . . . . . . . . . . . . 140 ´ 12.4. El algoritmo de la simulacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 ´ 12.5. Declaracion e inicializacion de las variables en Ejs . . . . . . . . . . . . . . . . . 145 ´ ´ 12.6. Definicion del modelo en Ejs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 ´ 12.7. Definicion de la vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 ´ 12.8. Modelo matematico del sistema completo . . . . . . . . . . . . . . . . . . . . . . 154 ´ 12.9. Inclusion de masa2 en el panel de animacion . . . . . . . . . . . . . . . . . . . . 167 ´ ´ 12.10. Ligadura en la posicion de masa2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 ´ 12.11. Visualizacion del modo del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . 167 ´ 12.12. Anadiendo interactividad al laboratorio . . . . . . . . . . . . . . . . . . . . . . . 167 ˜ 13. C´ lculo del numero π por el m´ todo de Monte Carlo a ´ e 173 13.1. Simulaciones de Monte Carlo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 13.2. Estimacion del valor de π . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 ´ 13.3. El algoritmo de la simulacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 ´ 13.4. Programacion de la vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 ´ ´ 14. Simulacion interactiva de un globo aerost´ tico a 179 14.1. Modelo de un globo aerostatico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 ´ 14.2. El algoritmo de la simulacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 ´ III
  • 16. 14.3. Programacion de la vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 ´ 15. Laboratorio virtual del sistema bola y varilla 187 15.1. Modelo del sistema bola y varilla . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 15.2. El algoritmo de la simulacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 ´ 15.3. Programacion de la vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 ´ IV Ap´ ndices e A. 197 Java para el desarrollo de laboratorios virtuales en Ejs 199 A.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 ´ A.2. Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 A.2.1. Tipos simples de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 A.2.2. Cadenas de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 A.3. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 A.3.1. Nombre de las variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 A.3.2. Vectores y matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 A.4. Operadores . . . . . . . . . . . . . . . A.4.1. Operadores aritm´ ticos . . . . e A.4.2. Operadores relacionales . . . A.4.3. Operadores logicos booleanos ´ A.4.4. Operador de asignacion . . . . ´ A.5. Control del flujo del programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 A.5.1. if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 A.5.2. for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 A.6. Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 A.7. M´ todos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 e A.8. String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 A.9. La clase Math de Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 203 204 204 205 A.10. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 A.10.1. Ejemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 A.10.2. Ejemplo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 IV
  • 17. Parte I Fundamentos del modelado y la ´ simulacion 1
  • 19. Tema 1 Conceptos b´ sicos del modelado y a ´ la simulacion Objetivos: Una vez estudiado el contenido del tema deber´a saber: ı ´ • Discutir los conceptos “sistema”, “modelo”, “simulacion” y “marco experimental”. • Describir y comparar los diferentes tipos de modelos. ´ • Comparar y reconocer los distintos tipos de modelos matematicos. 1.1. Sistemas y modelos El concepto de modelo puede ser definido de varias maneras. En el sentido amplio del t´ rmino, puede considerarse que un modelo es “una representacion de un sistema desarrollae ´ da para un proposito espec´fico”. ´ ı Puesto que la finalidad de un modelo es ayudarnos a responder preguntas sobre un determinado sistema, el primer paso en la construccion de un modelo es definir cual es ´ ´ el sistema y cuales son las preguntas. ´ En este contexto, puede entenderse que un sistema es “cualquier objeto o conjunto de objetos cuyas propiedades se desean estudiar”. Con una definicion tan amplia, cualquier ´ fuente potencial de datos puede considerarse un sistema. Algunos ejemplos de sistema son: • Un conjunto de planetas, que giran alrededor de una estrella. • Una maquina fotocopiadora. ´ • El servicio de emergencias de un hospital, incluyendo el personal, las salas, el equipamiento y los medios para el transporte de los pacientes. • Un circuito, compuesto por una fuente y una resistencia. • El ecosistema de una determinada selva tropical. Es caracter´stico de la naturaleza humana plantearse cuestiones acerca de las propiedades ı de los sistemas. Por ejemplo, para el sistema formado por el conjunto de planetas y la estrella, una pregunta t´pica es: ¿Cual es el periodo de giro de cada uno de los planetas? Para la ı ´ maquina fotocopiadora: ¿Como debo ajustar los mecanismos de la maquina a fin de obtener ´ ´ ´ 3
  • 20. 4 ´ ´ TEMA 1. CONCEPTOS BASICOS DEL MODELADO Y LA SIMULACION copias de calidad optima? Para el servicio de emergencias: ¿Como puedo organizar el servicio, ´ ´ de modo que el tiempo de espera de los pacientes sea m´nimo? ı Muchas cuestiones de este tipo pueden ser resueltas mediante experimentacion. De hecho, ´ este ha sido el m´ todo empleado durante siglos para avanzar en el conocimiento: basta con ´ e conectar la fuente a la resistencia y observa qu´ ocurre. e Un experimento puede definirse como “el proceso de extraer datos de un sistema sobre el cual se ha ejercido una accion externa”. ´ Cuando es posible trabajar directamente con el sistema real, el metodo experimental pre´ senta indudables ventajas, ya que esta basado en solidos fundamentos cient´ficos. Sin em´ ´ ı bargo, tambi´ n presenta sus limitaciones, ya que en ocasiones es imposible o desaconsejable e experimentar con el sistema real. Algunas de estas razones son las siguientes: • Quiza la mas evidente de ellas es que el sistema aun no exista f´sicamente. Esta si´ ´ ı tuacion se plantea frecuentemente en la fase de diseno de nuevos sistemas, cuando ´ ˜ el ingeniero necesita predecir el comportamiento de los mismos antes de que sean construidos. • Otra posible razon es el elevado coste economico del experimento. ´ ´ • El experimento puede producir perjuicio o incomodidad. Por ejemplo, experimentar con un nuevo sistema de facturacion en un aeropuerto puede producir retrasos y problemas ´ imprevisibles que perjudiquen al viajero. • En ocasiones el tiempo requerido para la realizacion del experimento lo hace irrealiza´ ble. Casos extremos pueden encontrarse en los estudios geologicos o cosmologicos, de ´ ´ evolucion de las especies, sociologicos, etc. ´ ´ • Algunos experimentos son peligrosos, y por tanto es desaconsejable realizarlos. Por ejemplo, ser´a inapropiado usar el sistema real para adiestrar a los operarios de una ı central nuclear acerca de como deben reaccionar ante situaciones de emergencia. ´ • En ocasiones el experimento requiere modificar variables que en el sistema real o bien no estan accesibles o no pueden ser modificadas en el rango requerido. Con un modelo ´ matematico adecuado, se pueden ensayar condiciones de operacion extremas que son ´ ´ impracticables en el sistema real. En cualquiera de los casos anteriores, el modelado y la simulacion son las t´ cnicas ade´ e cuadas para el analisis del sistema. A excepcion de la experimentacion con el sistema real, la ´ ´ ´ simulacion es la unica tecnica disponible que permite analizar sistemas arbitrarios de forma ´ ´ ´ precisa, bajo diferentes condiciones experimentales. 1.2. Tipos de modelos Los seres humanos, en nuestra vida cotidiana, empleamos continuamente modelos para comprender y predecir el comportamiento de sistemas (ver la Figura 1.1). Por ejemplo, considerar que alguien es “amable” constituye un modelo del comportamiento de esta persona. Este modelo nos ayuda a responder, por ejemplo, a la pregunta: “¿como reaccionara si le ´ ´ pedimos un favor?”. Tambi´ n disponemos de modelos de los sistemas t´ cnicos que estan e e ´ basados en la intuicion y en la experiencia. Todos estos se llaman modelos mentales . ´ Por ejemplo, aprender a conducir un coche consiste parcialmente en desarrollar un modelo mental de las propiedades de la conduccion del coche. Asimismo, un operario trabajando en ´ determinado proceso industrial sabe como el proceso reacciona ante diferentes acciones: el ´ operario, mediante el entrenamiento y la experiencia, ha desarrollado un modelo mental del proceso. Otro tipo de modelos son los modelos verbales, en los cuales el comportamiento del sistema es descrito mediante palabras: si se aprieta el freno, entonces la velocidad del coche se reduce. Los sistemas expertos son ejemplos de modelos verbales formalizados. Es importante diferenciar entre los modelos mentales y los verbales. Por ejemplo, nosotros usamos un modelo mental de la dinamica de la bicicleta cuando la conducimos, sin embargo no es ´ sencillo convertirlo a un modelo verbal.
  • 21. ´ 1.3. MODELOS MATEMATICOS 5 SISTEMA EXPERIMENTAR CON EL SISTEMA REAL MODELO MENTAL EXPERIMENTAR CON EL MODELO DEL SISTEMA MODELO VERBAL MODELO FÍSICO SOLUCIÓN ANALÍTICA MODELO MATEMÁTICO SIMULACIÓN Figura 1.1: Formas de estudiar un sistema. Ademas de los modelos mentales y verbales, existe otro tipo de modelos que tratan de ´ imitar al sistema real. Son los modelos f´sicos, como las maquetas a escala que construyen ı los arquitectos, disenadores de barcos o aeronaves para comprobar las propiedades est´ ticas, ˜ e aerodinamicas, etc. ´ Finalmente, existe un cuarto tipo de modelos, los modelos matematicos. En ellos, las rela´ ciones entre las cantidades que pueden ser observadas del sistema (distancias, velocidades, flujos, etc.) estan descritas mediante relaciones matematicas. En este sentido, la mayor´a de ´ ´ ı las leyes de la naturaleza son modelos matematicos. En esencia, la Ciencia consiste en la ´ construccion de modelos de una porcion de la realidad y en el estudio de sus propiedades. ´ ´ Por ejemplo, para el sistema “masa puntual”, la Ley de Newton del movimiento describe la relacion entre la fuerza y la aceleracion. Asimismo, para el sistema “resistencia el´ ctrica”, la ´ ´ e Ley de Ohm describe la relacion entre la ca´da de tension y el flujo de corriente. ´ ı ´ En algunos casos, las relaciones matematicas que constituyen los modelos son sencillas ´ y pueden resolverse anal´ticamente. Sin embargo, en la mayor´a de los casos, los modelos ı ı no pueden resolverse anal´ticamente y deben estudiarse, con ayuda del ordenador, aplicando ı m´ todos num´ ricos. Este experimento num´ rico realizado sobre el modelo matematico, recibe e e e ´ el nombre de simulacion. ´ 1.3. Modelos matem´ ticos a La finalidad de un estudio de simulacion (es decir, las preguntas que debe responder) con´ diciona las hipotesis empleadas en la construccion del modelo, y estas a su vez determinan ´ ´ ´ qu´ tipo de modelo resulta mas adecuado al estudio. De hecho, un mismo sistema puede e ´ ser modelado de multiples formas, empleando diferentes tipos de modelos, dependiendo de la ´ finalidad perseguida en cada caso. Existen diferentes clasificaciones de los modelos matematicos, atendiendo a diferentes cri´ terios. A continuacion se describen algunas de las clasificaciones mas comunmente usadas. ´ ´ ´
  • 22. 6 ´ ´ TEMA 1. CONCEPTOS BASICOS DEL MODELADO Y LA SIMULACION Determinista vs Estoc´ stico a Un modelo matematico es determinista cuando todas sus variables de entrada son deter´ ministas, es decir, el valor de cada una de ellas es conocido en cada instante. Por el contrario, un modelo es estocastico cuando alguna de sus variables de entrada es ´ aleatoria. Las variables del modelo calculadas a partir de variables aleatorias son tambi´ n e aleatorias. Por ello, la evolucion de este tipo de sistemas debe estudiarse en t´ rminos proba´ e bil´sticos. ı Por ejemplo, consid´ rese el modelo de un parking, en el cual las entradas y salidas de e coches se producen en instantes de tiempo aleatorios. La aleatoriedad de estas variables se propaga a trav´ s de la logica del modelo, de modo que las variables dependientes de ellas e ´ tambi´ n son aleatorias. Este ser´a el caso, por ejemplo, del tiempo que transcurre entre que e ı un cliente deja aparcado su veh´culo y lo recoge (tiempo de aparcamiento), el numero de ı ´ veh´culos que hay aparcados en un determinado instante, etc. ı Es importante tener en cuenta que realizar una unica r´ plica de una simulacion estocasti´ e ´ ´ ca es equivalente a realizar un experimento f´sico aleatorio una unica vez. ı ´ Por ejemplo, si se realiza una simulacion del comportamiento del parking durante 24 ´ horas, es equivalente a observar el funcionamiento del parking real durante 24 horas. Si se repite la observacion al d´a siguiente, seguramente los resultados obtenidos seran diferentes, ´ ı ´ y lo mismo sucede con la simulacion: si se realiza una segunda r´ plica independiente de la ´ e primera, seguramente los resultados seran diferentes. ´ La consecuencia que debe extraerse de ello es que el diseno y el analisis de los experimen˜ ´ tos de simulacion estocasticos debe hacerse teniendo en cuenta esta incertidumbre en los ´ ´ resultados, es decir, debe hacerse empleando t´ cnicas estad´sticas. e ı Las dificultades asociadas a la simulacion de modelos estocasticos pueden invitarnos en ´ ´ ocasiones a realizar hipotesis adicionales, con el fin de eliminar la incertidumbre en el valor ´ de las variables de entrada. Un ejemplo t´pico consiste en sustituir cada variable de entrada ı aleatoria por otra determinista, cuyo valor sea la media de la distribucion de probabilidad de ´ aquella. Este modelo determinista, obtenido de eliminar la incertidumbre en el valor de las variables de entrada, proporcionara resultados no aleatorios. Sin embargo, esta simplificacion ´ ´ hara que probablemente el modelo ya no sea una representacion del sistema valida para el ´ ´ ´ objetivo del estudio. Est´ tico vs Din´ mico a a Un modelo de simulacion estatico es una representacion de un sistema en un instante ´ ´ ´ de tiempo particular, o bien un modelo que sirve para representar un sistema en el cual el tiempo no juega ningun papel. Ejemplo de simulaciones estaticas son las simulaciones de ´ ´ Monte Carlo. Por otra parte, un modelo de simulacion dinamico representa un sistema que evoluciona ´ ´ con el tiempo. De tiempo continuo vs De tiempo discreto vs H´brido ı Un modelo de tiempo continuo esta caracterizado por el hecho de que el valor de sus ´ variables de estado puede cambiar infinitas veces (es decir, de manera continua) en un intervalo finito de tiempo. Un ejemplo es el nivel de agua en un deposito. ´ Por el contrario, en un modelo de tiempo discreto los cambios pueden ocurrir unicamente ´ en instantes separados en el tiempo. Sus variables de estado pueden cambiar de valor solo ´ un numero finito de veces por unidad de tiempo. ´
  • 23. 1.4. EL MARCO EXPERIMENTAL 7 Pueden definirse modelos con algunas de sus variables de estado de tiempo continuo y las restantes de tiempo discreto. Este tipo de modelos, con parte de tiempo continuo y parte de tiempo discreto, de llama modelos h´bridos. ı Tal como se ha indicado al comienzo de la seccion, la decision de realizar un modelo conti´ ´ nuo o discreto depende del objetivo espec´fico del estudio y no del sistema en s´. Un ejemplo de ı ı ello lo constituyen los modelos del flujo de trafico de veh´culos. Cuando las caracter´sticas y el ´ ı ı movimiento de los veh´culos individuales son relevantes puede realizarse un modelo discreto. ı En caso contrario, puede resultar mas sencillo realizar un modelo continuo. ´ En este punto es conveniente realizar una consideracion acerca de los modelos de tiempo ´ continuo y discreto. Al igual que las variables continuas (aquellas que pueden tomar cualquier valor intermedio en su rango de variacion) son una idealizacion, tambi´ n lo son los modelos ´ ´ e de tiempo continuo. Cualquiera que sea el procedimiento de medida que se emplee para medir el valor de una variable, tendra un l´mite de precision. Este l´mite marca la imposibilidad ´ ı ´ ı de dar una medida continua y supone que, en la practica, todas las medidas son discretas. ´ Igualmente, los ordenadores trabajan con un numero finito de cifras decimales. Sin embargo, ´ para los razonamientos teoricos, conviene considerar ciertas variables como continuas. ´ Al simular mediante un computador digital un modelo de tiempo continuo, debe discretizarse el eje temporal a fin de evitar el problema de los infinitos cambios en el valor de los estados. Esta discretizacion constituye una aproximacion (con su error asociado) que ´ ´ transforma el modelo de tiempo continuo en un modelo de tiempo discreto. Por ejemplo, si se discretiza el eje temporal del modelo de tiempo continuo dx = f (x, u, t) dt (1.1) con un intervalo de discretizacion ∆t, se obtiene (empleando el m´ todo de Euler expl´cito) el ´ e ı siguiente modelo de tiempo discreto: xK+1 − xK = f (xK , uK , tK ) −→ xK+1 = xK + ∆t · f (xK , uK , tK ) ∆t (1.2) 1.4. El marco experimental Al igual que se distingue entre el sistema real y el experimento, es conveniente distinguir entre la descripcion del modelo y la descripcion del experimento. Esto es as´ tanto desde el ´ ´ ı punto de vista conceptual como practico. Sin embargo, en el caso del modelo esta separacion ´ ´ implica cierto riesgo: su empleo en unas condiciones experimentales para las cuales no es valido. ´ Por supuesto, cuando se trabaja con sistemas reales este riesgo nunca existe, ya que un sistema real es valido para cualquier experimento. Por el contrario, cualquier modelo esta fun´ ´ damentado en un determinado conjunto de hipotesis. Cuando las condiciones experimentales ´ son tales que no se satisfacen las hipotesis del modelo, este deja de ser valido. Para evitar este ´ ´ ´ problema, la descripcion del modelo debe ir acompanada de la documentacion de su marco ´ ˜ ´ ´ experimental. Este establece el conjunto de experimentos para el cual el modelo es valido. ´
  • 24. 8 ´ ´ TEMA 1. CONCEPTOS BASICOS DEL MODELADO Y LA SIMULACION
  • 25. Tema 2 ´ Simulacion de modelos de tiempo continuo Objetivos: Una vez estudiado el contenido del tema deber´a saber: ı ´ • Clasificar las variables de un modelo matematico de tiempo continuo ´ en: parametros, variables de estado y variables algebraicas. ´ ´ • Aplicar el metodo de integracion expl´cito de Euler. ı ´ • Realizar la asignacion de la causalidad computacional. ´ • Plantear el algoritmo de la simulacion de modelos de tiempo continuo sencillos. En este tema se explican algunos aspectos fundamentales de la simulacion de los modelos ´ matematicos de tiempo continuo. Estas explicaciones constituyen la base para la compren´ sion del algoritmo para la simulacion interactiva que emplea Ejs, que se describe en el Tema 5. ´ ´ 2.1. Variables y ecuaciones Los modelos matematicos estan compuestos por ecuaciones, que describen la relacion en´ ´ ´ tre las magnitudes relevantes del sistema. Estas magnitudes reciben el nombre de variables. Ejemplo 2.1.1. Sobre un objeto de masa constante (m) actuan dos fuerzas: la fuerza de la ´ gravedad (m · g) y una fuerza armonica de amplitud (F0 ) y frecuencia (ω) constantes. La fuerza ´ total aplicada sobre el objeto (F ) es: F = m · g + F0 · sin (ω · t) (2.1) donde g la aceleracion gravitatoria, que se considera constante. Se aplica el criterio siguiente: ´ la aceleracion tiene signo positivo cuando tiene sentido vertical ascendente. Por ejemplo, la ´ aceleracion gravitatoria terrestre ser´a g = −9.8 m · s−2 ´ ı La fuerza neta (F ) aplicada sobre el objeto hace que este adquiera una aceleracion (a), que ´ ´ viene determinada por la relacion siguiente: ´ m·a=F 9 (2.2)
  • 26. ´ TEMA 2. SIMULACION DE MODELOS DE TIEMPO CONTINUO   i ¢£ i ¥ u C i ¡¤ u R ¡ R ¦ 10 Figura 2.1: Circuito RC. La posicion y la velocidad del objeto pueden calcularse teniendo en cuenta que la derivada ´ respecto al tiempo de la posicion es la velocidad, y que la derivada respecto al tiempo de la ´ velocidad es la aceleracion. El modelo obtenido es el siguiente: ´ F m·a dx dt dv dt = m · g + F0 · sin (ω · t) (2.3) = F (2.4) = v (2.5) = a (2.6) Este modelo esta compuesto por cuatro ecuaciones, Ecs. (2.3) – (2.6), las cuales describen ´ la relacion existente entre las magnitudes relevantes del sistema, que son las variables del ´ modelo: – La aceleracion gravitatoria (g), ´ – La amplitud (F0 ) y frecuencia (ω) de la fuerza armonica, ´ – La fuerza neta (F ) aplicada sobre el objeto – La masa (m), posicion (x), velocidad (v) y aceleracion (a) del objeto. ´ ´ 2.2. Par´ metros, variables de estado y variables algebraicas a El punto de partida para la simulacion del modelo consiste en clasificar sus variables de ´ acuerdo al criterio siguiente: – Par´ metros. Son aquellas variables cuyo valor permanece constante durante la simua lacion. ´ – Variables de estado. Son las variables que estan derivadas respecto al tiempo. ´ – Variables algebraicas. Son las restantes variables del modelo. Es decir, aquellas que no aparecen derivadas en el modelo y que no son constantes. Ejemplo 2.2.1. De acuerdo con la clasificacion anterior, el modelo descrito en el Ejemplo 2.1.1 ´ tiene: – Cuatro parametros: g, m, F0 , ω. ´ – Dos variables de estado: x, v. – Dos variables algebraicas: a, F . Observese que la variable tiempo (t) no se incluye en la clasificacion. ´ ´
  • 27. ´ 2.3. UN ALGORITMO PARA LA SIMULACION DE MODELOS DE TIEMPO CONTINUO 11 Ejemplo 2.2.2. Considerese el circuito electrico mostrado en la Figura 2.1, el cual esta com´ ´ ´ puesto por un generador de tension, dos resistencias y un condensador. El modelo de este ´ circuito consta de las ecuaciones siguientes: u iR1 u − uC duC C· dt uC = u0 · sin (ω · t) (2.7) = iR2 + iC = R1 · iR1 (2.8) (2.9) = iC (2.10) = iR2 · R2 (2.11) La Ec. (2.7) es la relacion constitutiva del generador de tension. La amplitud (u0 ) y la fre´ ´ cuencia (ω) son independientes del tiempo (t). Las Ecs. (2.9) y (2.11) son las relaciones constitutivas de las resistencias. La Ec. (2.10) es la relacion constitutiva del condensador. Los valores de la capacidad (C) y de las resistencias (R1 , ´ R2 ) son independientes del tiempo. Finalmente, la Ec. (2.8) impone que la suma de las corrientes entrantes a un nodo debe ser igual a la suma de las corrientes salientes del mismo. Las variables de este modelo se clasifican de la manera siguiente: – Parametros: u0 , ω, C, R1 , R2 . ´ – Variable de estado: uC . – Variables algebraicas: u, iR1 , iR2 , iC . ´ 2.3. Un algoritmo para la simulacion de modelos de tiempo continuo En la Figura 2.2 se muestra un algoritmo para la simulacion de modelos de tiempo ´ continuo. Puede comprobarse que la clasificacion de las variables del modelo en parametros, ´ ´ variables de estado y variables algebraicas constituye la base para la simulacion del modelo: ´ – Al comenzar la simulacion, se asignan valores a los parametros. Estos valores permane´ ´ cen constantes durante toda la simulacion. ´ – Las variables de estado son calculadas mediante la integracion num´ rica de sus deri´ e vadas. Por ejemplo, la funcion de paso del m´ todo expl´cito de Euler para la ecuacion ´ e ı ´ diferencial ordinaria dx = f (x, t) (2.12) dt es la siguiente: xi+1 = xi + f (xi , ti ) · ∆t (2.13) donde xi y xi+1 representan el valor de la variable de estado x en los instantes ti y ti + ∆t respectivamente, y f (xi , ti ) representa el valor de la derivada de x (es decir, dx ) en el dt instante ti . – El valor de las variables algebraicas se calcula, en cada instante de tiempo, a partir de valor de las variables de estado en ese instante y del valor de los parametros. ´ La condicion de terminacion de la simulacion depende del estudio en concreto que vaya ´ ´ ´ a realizarse sobre el modelo. Puede ser, por ejemplo, que se alcance determinado valor de la variable tiempo, o que una determinada variable satisfaga cierta condicion. ´ El valor del tama˜ o del paso de integracion (∆t) debe escogerse alcanzando un compromiso n ´ entre precision y carga computacional. Cuanto menor sea el valor de ∆t, menor es el error ´
  • 28. ´ TEMA 2. SIMULACION DE MODELOS DE TIEMPO CONTINUO 12 Inicio Asignar valor al incremento en el tiempo ( t) § t=0 Asignar valor a los parámetros Asignar valor inicial a las variables de estado Calcular el valor, en el instante t, de las variables algebraicas y de las derivadas Terminar t=t+ t sí Fin § no Calcular el valor, en instante t+ t, de las variables de estado § Figura 2.2: Algoritmo de la simulacion de los modelos matematicos de tiempo continuo. ´ ´ Inicio 4"13 #% % © ¨ 2 #% 6 5 t=0 m = 10, F0 = 15, w = 10, g = -9.8 x(0) = 10, v(0) = 7 F(t) = m*g + F0 * sin(w*t) a(t) = F(t) / m derx(t) = v(t) derv(t) = a(t) ! © ! © © © ¨ © ! ! © ! ) © © © ! ( © ( ' #% % 5 2 x(t) 0 sí Fin no x(t+ t) = x(t) + derx(t) * t v(t+ t) = v(t) + derv(t) * t 2 2 © %$ # © © ¨ t=t+ t t = 0.01 ! © ! © © ! ( 10 © ( ' 2 2 Figura 2.3: Algoritmo de la simulacion del modelo descrito en el Ejemplo 2.1.1. ´
  • 29. ´ 2.3. UN ALGORITMO PARA LA SIMULACION DE MODELOS DE TIEMPO CONTINUO 13 que se comete en el calculo de las variables del modelo, pero mayor es el tiempo de ejecucion ´ ´ de la simulacion. ´ Un procedimiento para estimar el error cometido al escoger un determinado valor de ∆t es comparar los resultados obtenidos usando ese valor y los obtenidos usando un valor menor, por ejemplo, ∆t . Si la diferencia entre ambos resultados es aceptable para los propositos del ´ 2 estudio de simulacion que se esta realizando, entonces el valor ∆t es adecuado. En caso ´ ´ contrario, se comparan los resultados obtenidos usando ∆t y ∆t . Si el error es aceptable, de 2 4 ı emplea ∆t . Si el error es demasiado grande, se investigan los valores ∆t y ∆t , y as´ sucesiva2 4 8 mente. Ejemplo 2.3.1. En la Figura 2.3 se muestra el algoritmo de la simulacion del modelo descrito ´ en el Ejemplo 2.1.1. Observese que: ´ – Las derivadas de las variables de estado se han sustituido por variables auxiliares, cuyo nombre es igual al de la variable de estado, pero anteponiendole el prefijo “der”: ´ dx dt dv dt → derx (2.14) → derv (2.15) – Para realizar el calculo de las variables algebraicas y las derivadas, se ha despejado de ´ cada ecuacion la variable a calcular y se han ordenado las ecuaciones, de modo que sea ´ posible resolverlas en secuencia. Se ha obtenido la siguiente secuencia de asignaciones: F a derx derv = m · g + F0 · sin (ω · t) F = m = v = a (2.16) (2.17) (2.18) (2.19) La secuencia de calculos, segun se muestra en la Figura 2.3, es la siguiente: ´ ´ t=0 t = 0.01 t = 0.02 m = 10, F0 = 15, ω = 10, g = −9.8 x(0) = 10, v(0) = 7 F (0) = m · g + F0 · sin (ω · t) → F (0) = 10 · (−9.8) + 15 · sin(10 · 0) = −98 a(0) = F (0)/m → a(0) = −98/10 = −9.8 derx(0) = v(0) → derx(0) = 7 derv(0) = a(0) → derv(0) = −9.8 x(0.01) = x(0) + derx(0) · ∆t → x(0.01) = 10 + 7 · 0.01 = 10.07 v(0.01) = v(0) + derv(0) · ∆t → v(0.01) = 7 + −9.8 · 0.01 = 6.902 F (0.01) = m · g + F0 · sin (ω · t) → F (0.01) = 10 · (−9.8) + 15 · sin(10 · 0.01) = −96.5025 a(0.01) = F (0.01)/m → a(0.01) = −96.5025/10 = −9.65025 derx(0.01) = v(0.01) → derx(0.01) = 6.902 derv(0.01) = a(0.01) → derv(0.01) = −9.65025 x(0.02) = x(0.01) + derx(0.01) · ∆t → x(0.02) = 10.07 + 6.902 · 0.01 = 10.139 v(0.02) = v(0.01) + derv(0.01) · ∆t → v(0.02) = 6.902 + −9.65025 · 0.01 = 6.8055 Y as´ sucesivamente ... ı En la Figura 2.4 se muestra la evolucion de la posicion, la velocidad y la aceleracion del ´ ´ ´ objeto, obtenidas ejecutando el algoritmo mostrado en la Figura 2.3. En el eje horizontal de ambas graficas se representa el tiempo. ´ La condicion de finalizacion de la simulacion es que el objeto toque el suelo. Es decir, que se ´ ´ ´ satisfaga la condicion: x 0. ´
  • 30. ´ TEMA 2. SIMULACION DE MODELOS DE TIEMPO CONTINUO 14 x 14 v 10 12 a 5 10 0 8 -5 6 -10 4 -15 2 -20 0 0 1 0 2 1 2 Figura 2.4: Resultado de la ejecucion del algoritmo mostrado en la Figura 2.3. ´ {x con t=0.005} – {x con t=0.01} 7 7 0.01 0.00 -0.01 -0.02 -0.03 -0.04 -0.05 -0.06 0 1 2 Figura 2.5: Diferencia en la evolucion temporal de la posicion para dos valores de ∆t. ´ ´ Cabe plantearse si el valor 0.01 para el tama˜ o del paso de integracion (∆t) es adecuado. En n ´ la Figura 2.5 se muestra la diferencia entre la posicion del objeto, calculada usando ∆t = 0.005, ´ y la posicion calculada usando ∆t = 0.01. En el eje horizontal esta representado el tiempo. Esta ´ ´ grafica permite obtener una idea de como va acumulandose el error y cual es la magnitud de ´ ´ ´ ´ este. Dependiendo cual sea el objetivo del estudio de simulacion, esta magnitud del error (y ´ ´ ´ consecuentemente, el valor ∆t = 0.01) sera o no aceptable. ´ 2.4. Causalidad computacional Como se ha mostrado en el Ejemplo 2.3.1, para realizar el calculo de las variables alge´ braicas y las derivadas, es preciso despejar de cada ecuacion la variable a calcular y ordenar ´ las ecuaciones, de modo que sea posible resolverlas en secuencia. Esto tiene un caracter general. Para plantear el algoritmo de la simulacion de un modelo, ´ ´ es preciso realizar las tareas siguientes: 1. Decidir qu´ variable debe calcularse de cada ecuacion y como deben ordenarse las e ´ ´ ecuaciones del modelo, de modo que puedan ser resueltas en secuencia. A esta decision ´ se la denomina asignacion de la causalidad computacional. ´ 2. Una vez se ha decidido qu´ variable debe evaluarse de cada ecuacion, debe manipularse e ´ simbolicamente la ecuacion a fin de despejar dicha variable. ´ ´
  • 31. 2.4. CAUSALIDAD COMPUTACIONAL ⋅ (ϖ ⋅ ) [ ]= R E V T U D BA @ 9 C C a) ⋅ G F [ ]= R [ ]= QP I H (ϖ ⋅ ) S ⋅ 8 [ ]= 15 b) Figura 2.6: La causalidad computacional es una propiedad del modelo completo. Ejemplo 2.4.1. Supongase que se desea modelizar una resistencia electrica mediante la Ley ´ ´ de Ohm. La Ley de Ohm establece que la ca´da de potencial, u, entre los bornes de una ı resistencia es igual al producto de un parametro caracter´stico de la resistencia, R, por la ´ ı intensidad de la corriente electrica, i, que circula a traves de la resistencia: ´ ´ u=i·R (2.20) (Ley de Ohm) Esta ecuacion constituye una relacion entre las tres variables u, R e i, que es valida para ´ ´ ´ cualquiera de las tres posibles causalidades computacionales admisibles de la ecuacion: ´ [u] = i · R [i] = u R [R] = u i (2.21) donde se ha se˜ alado la variable a evaluar de cada ecuacion incluyendola entre corchetes y se n ´ ´ ha despejado escribiendola en el lado izquierdo de la igualdad. ´ La consideracion fundamental que debe hacerse llegado este punto es que: ´ la causalidad computacional de una determinada ecuacion del modelo no solo ´ ´ depende de ella misma, sino que tambi´ n depende del resto de las ecuaciones e del modelo. Es decir, la causalidad computacional es una propiedad global del modelo completo. Ejemplo 2.4.2. La casualidad computacional de la ecuacion de la resistencia (vea Ejemplo ´ 2.4.1) depende del resto de las ecuaciones del modelo. Si la resistencia se conecta a un generador de tension senoidal, las ecuaciones del modelo ´ son: u = [u] = [i] · R u0 · sin ( · t) (Relacion constitutiva de la resistencia) ´ (2.22) (Relacion constitutiva del generador de tension) (2.23) ´ ´ donde R, u0 y son parametros del modelo, es decir, su valor se supone conocido y no es ´ preciso evaluarlos de las ecuaciones del modelo. En las Ecuaciones (2.22) y (2.23) se ha se˜ alado entre corchetes la variable que debe n evaluarse de cada ecuacion. ´ Para simular el modelo es preciso ordenar las ecuaciones y despejar la variable a evaluar en cada una de ellas. Realizando la ordenacion y la manipulacion simbolica, se obtiene (vea la ´ ´ ´ Figura 2.6a): [u] = [i] = u0 · sin ( u R · t) (2.24) (2.25)
  • 32. 16 ´ TEMA 2. SIMULACION DE MODELOS DE TIEMPO CONTINUO Como puede verse, en primer lugar debe calcularse el valor de la ca´da de tension, a partir ı ´ de la relacion constitutiva del generador, y a continuacion debe calcularse la corriente, a partir ´ ´ de la relacion constitutiva de la resistencia (para lo cual debe usarse el valor de la tension que ´ ´ ha sido previamente calculado). En cambio, si esta misma resistencia se conecta a un generador sinusoidal de corriente, las ecuaciones del modelo, una vez ordenadas y manipuladas simbolicamente, seran (vea la ´ ´ Figura 2.6b): [i] = i0 · sin ( [u] = i·R · t) (2.26) (2.27) En este caso, en primer lugar debe calcularse el valor de la corriente, a partir de la relacion ´ constitutiva del generador, y a continuacion debe calcularse la ca´da de tension, a partir de la ´ ı ´ relacion constitutiva de la resistencia (para lo cual debe usarse el valor de la corriente que se ´ ha sido previamente calculado). Se observa que en el caso de la Ecuacion (2.25) la relacion constitutiva de la resistencia ´ ´ se usa para calcular la corriente, mientras que en el caso de la Ecuacion (2.27) se usa para ´ calcular la ca´da de tension. La variable a evaluar depende no solo de la relacion constitutiva ı ´ ´ ´ de la resistencia, sino tambien del resto del modelo. ´ A continuacion, se describe un procedimiento sistematico para asignar la causalidad ´ ´ computacional de un modelo1 . Sin embargo, para aplicarlo deben previamente clasificarse las variables del modelo en conocidas y desconocidas, segun sean conocidas o desconocidas ´ en el instante de evaluacion. En primer lugar, por tanto, se explicara como realizar esta ´ ´ ´ clasificacion. ´ 2.5. Variables conocidas y desconocidas A efectos de la asignacion de la causalidad computacional, las variables del modelo se ´ clasifican en desconocidas (o incognitas) y conocidas. Dicha clasificacion se realiza en funcion ´ ´ ´ de que el valor de la variable deba o no ser evaluado de las ecuaciones del modelo. Variables conocidas: – La variable tiempo. – Los parametros del modelo. La persona que formula el modelo decide qu´ variables ´ e son parametros. La caracter´stica distintiva de este tipo de variables es que no son ´ ı calculadas de las ecuaciones del modelo, sino que se les asigna valor al inicio de la simulacion (en la llamada fase de ”inicializacion del modelo”) y este permanece constante ´ ´ ´ durante toda la simulacion. Puesto que los parametros no deben ser calculados de las ´ ´ ecuaciones del modelo, a efectos de la asignacion de la causalidad computacional, se ´ considera que los parametros son variables conocidas. ´ – Las entradas globales al modelo, es decir, aquellas variables cuyo valor se especifica, independientemente del de las demas variables, para cada instante de la simulacion. ´ ´ – Las variables que aparecen derivadas en el modelo, ya que son consideradas variables de estado, es decir, se asume que se calculan mediante la integracion num´ rica de su ´ e derivada. El motivo es evitar tener que derivar num´ ricamente en tiempo de simulacion. e ´ Por tanto, toda variable que aparece derivada en el modelo se clasifica como una variable de estado. Con el fin de formular el modelo de manera adecuada para su simulacion, se ´ sustituye la derivada de cada variable de estado, all´ donde aparezca, por una variable auxiliar ı (por ejemplo, de nombre igual al de la variable de estado, pero anteponiendo el prefijo “der”). 1 Esta explicacion esta extra´da del texto (Elmqvist 1978) ´ ´ ı
  • 33. 2.5. VARIABLES CONOCIDAS Y DESCONOCIDAS 17 Estas variables auxiliares se clasifican como desconocidas y se anade al modelo la condicion ˜ ´ de que cada variable de estado se calcula por integracion num´ rica de su correspondiente ´ e variable auxiliar. Variables desconocidas: – Las variables auxiliares introducidas, de la forma descrita anteriormente, sustituyendo a las derivadas de las variables de estado. – Las restantes variables del modelo, es decir, aquellas que, no apareciendo derivadas, dependen para su calculo en el instante de evaluacion del valor de otras variables. Estas ´ ´ variables se denominan variables algebraicas. Ejemplo 2.5.1. Considerese el circuito mostrado en la Figura 2.1. El modelo esta compuesto ´ ´ por las ecuaciones siguientes: u iR1 u − uC duC C· dt uC = u0 · sin (ω · t) (2.28) = iR2 + iC = R1 · iR1 (2.29) (2.30) = iC (2.31) = iR2 · R2 (2.32) La variable uC aparece derivada, con lo cual es una variable de estado del modelo. Con el fin de realizar la asignacion de la causalidad computacional, se sustituye en el modelo ´ por la variable auxiliar deruC . Realizando esta sustitucion ( duC por deruC ), se obtiene el ´ dt modelo siguiente: duC dt u = u0 · sin (ω · t) (2.33) iR1 u − uC = = iR2 + iC R1 · iR1 (2.34) (2.35) C · deruC uC = = iC iR2 · R2 (2.36) (2.37) A efectos de la asignacion de la causalidad computacional, se considera que: ´ – La variable de estado, uC , es conocida. – La derivada de la variable de estado, deruC , es desconocida. Al realizar la simulacion, uC se calculara integrando deruC . ´ ´ Descontando del numero total de ecuaciones, el numero de variables de estado, se obtiene ´ ´ el numero de ecuaciones disponibles para el calculo de variables algebraicas. Este numero ´ ´ ´ determina el numero de variables algebraicas del modelo. El resto de las variables deberan ser ´ ´ parametros. La persona que realiza el modelo debera decidir, de entre las variables que no son ´ ´ estados, cuales son las variables algebraicas y cuales los parametros. ´ ´ ´ En este ejemplo solo hay una variable de estado: uC . As´ pues, debe emplearse una de las ´ ı ecuaciones del modelo para evaluar su derivada: deruC . Puesto que deruC solo interviene en la ´ Ec. (2.36), debe emplearse esta ecuacion para calcular deruC . ´ Las restantes cuatro ecuaciones permiten calcular cuatro variables algebraicas. Una posible eleccion de las variables algebraicas es la siguiente: u, iR1 , iR2 , iC . En consecuencia, las ´ variables desconocidas son las siguientes: u, iR1 , iR2 , iC y deruC . El resto de las variables del modelo deberan ser parametros: u0 , ω, R1 , R2 y C. ´ ´ Este modelo tiene solo 5 ecuaciones y 5 incognitas, con lo cual la causalidad computacional ´ ´ puede asignarse de manera sencilla (en el siguiente ep´grafe se explica un metodo sistematico ı ´ ´ para hacerlo). Asignar la causalidad computacional es decidir en que orden deben evaluarse ´ las ecuaciones y que incognita debe evaluarse de cada ecuacion, a fin de calcular las incognitas ´ ´ ´ ´ u, iR1 , iR2 , iC y deruC del conjunto de Ecuaciones (2.33) – (2.37).
  • 34. 18 ´ TEMA 2. SIMULACION DE MODELOS DE TIEMPO CONTINUO A continuacion, se se˜ ala en cada ecuacion del modelo que incognita debe calcularse de ´ n ´ ´ ´ ella. Para ello, se incluye entre corchetes la incognita a evaluar de cada ecuacion: ´ ´ [u] = iR1 = u − uC = C · [deruC ] = uC = u0 · sin (ω · t) iR2 + [iC ] (2.38) (2.39) R1 · [iR1 ] iC (2.40) (2.41) [iR2 ] · R2 (2.42) Ordenando las ecuaciones del modelo, se obtiene: [u] = uC = u − uC iR1 = = C · [deruC ] = u0 · sin (ω · t) [iR2 ] · R2 (2.43) (2.44) R1 · [iR1 ] iR2 + [iC ] (2.45) (2.46) iC (2.47) Finalmente, despejando en cada ecuacion la incognita que debe ser evaluada de ella, se ´ ´ obtiene el modelo ordenado y resuelto: [u] = [iR2 ] = [iR1 ] = [iC ] = [deruC ] = u0 · sin (ω · t) uC R2 u − uC · R1 iR1 − iR2 iC C (2.48) (2.49) (2.50) (2.51) (2.52) Ademas, debe realizarse el calculo de la variable de estado mediante la integracion de su ´ ´ ´ derivada: d [uC ] = deruC dt (2.53) Observese que, en general, la clasificacion de las variables en algebraicas y parametros ´ ´ ´ puede realizarse de varias maneras, en funcion de cual sea el experimento que desee realizarse ´ ´ sobre el modelo. Para comprobar si una determinada clasificacion es valida, es preciso realizar la asigna´ ´ cion de la causalidad computacional, y comprobar que efectivamente las variables algebraicas ´ seleccionadas pueden evaluarse de las ecuaciones del modelo. Una seleccion de las variables algebraicas alternativa a la anterior consistir´a en escoger R1 ´ ı y R2 como variables algebraicas, en lugar de iR1 e iR2 . En este caso, iR1 e iR2 ser´an parametros. ı ´ ´ 2.6. Asignacion de la causalidad computacional En esta seccion se describe un procedimiento sistematico para asignar la causalidad ´ ´ computacional de un modelo. Consta de dos pasos. En primero consiste en comprobar que el modelo no es estructuralmente singular. El segundo paso es la asignacion en s´ de la ´ ı causalidad.
  • 35. ´ 2.6. ASIGNACION DE LA CAUSALIDAD COMPUTACIONAL 19 Singularidad estructural del modelo Antes de realizar la particion se comprueba la no singularidad estructural del modelo. Es ´ decir, se comprueba: – que el numero de ecuaciones y de incognitas (obtenido siguiendo el criterio anterior de ´ ´ clasificacion de las variables en conocidas y desconocidas) es el mismo; y ´ – que cada incognita puede emparejarse con una ecuacion en que aparezca y con la cual ´ ´ no se haya emparejado ya otra incognita. ´ Si alguna de estas dos condiciones no se verifica, se dice que el modelo es singular y es necesario reformularlo para poder simularlo. Si el modelo no es singular, se procede a asignar la casualidad computacional. Ejemplo 2.6.1. Considere un modelo con tres variables: x, y, z. El modelo esta compuesto por ´ tres ecuaciones, en cada una de las cuales intervienen las variables siguientes: f2 f1 (x, y, z) dx x, ,y dt f3 (x, z) = 0 (2.54) = 0 (2.55) = 0 (2.56) Sustituyendo la derivada de la variable x por la variable auxiliar (derx), se obtiene un modelo compuesto por las tres ecuaciones siguientes: f1 (x, y, z) = 0 (2.57) f2 (x, derx, y) = f3 (x, z) = 0 0 (2.58) (2.59) Dicho modelo tiene tres incognitas: derx, y, z. La variable x, por aparecer derivada, se supone ´ que es una variable de estado: se calcula integrando derx, y no de las ecuaciones del modelo. Se comprueba que este modelo no es singular, ya que cada ecuacion puede asociarse con una ´ incognita que interviene en ella y que no se ha asociado con ninguna otra ecuacion (observese ´ ´ ´ que, en general, esta asociacion puede no ser unica): ´ ´ → y (2.60) f1 (x, y, z) = 0 f2 (x, derx, y) = 0 → derx (2.61) f3 (x, z) = 0 → z (2.62) Ejemplo 2.6.2. Considere un modelo con tres variables: x, y, z. El modelo esta compuesto por ´ tres ecuaciones, en cada una de las cuales intervienen las variables siguientes: f2 f1 (z) = dx ,y = dt f3 (x) = 0 (2.63) 0 (2.64) 0 (2.65) Dicho modelo tiene tres incognitas: derx, y, z. Observe que la tercera ecuacion (f3 (x) = 0) no ´ ´ contiene ninguna incognita, mientras que la segunda ecuacion contiene dos incognitas que no ´ ´ ´ aparecen en ninguna otra ecuacion del modelo (f2 (derx, y) = 0). En consecuencia, el modelo es ´ singular y por tanto es necesario reformularlo. ´ Asignacion de la causalidad computacional Una vez se ha comprobado que el modelo no es singular, se realiza la asignacion de ´ causalidad computacional siguiendo las tres reglas siguientes:
  • 36. 20 ´ TEMA 2. SIMULACION DE MODELOS DE TIEMPO CONTINUO 1. Las variables que aparecen derivadas se consideran variables de estado y se suponen conocidas, ya que se calculan por integracion a partir de sus derivadas. Las derivadas ´ de las variables de estado son desconocidas y deben calcularse de las ecuaciones en que aparezcan. 2. Las ecuaciones que poseen una unica incognita deben emplearse para calcularla. ´ ´ 3. Aquellas variables que aparecen en una unica ecuacion deben ser calculadas de ella. ´ ´ Aplicando las tres reglas anteriores a sistemas no singulares pueden darse dos situaciones: 1. Se obtiene una solucion que permite calcular todas las incognitas usando para ello todas ´ ´ las ecuaciones. Esto significa que las variables pueden ser resueltas, una tras otra, en secuencia. En este caso, el algoritmo proporciona una ordenacion de las ecuaciones tal ´ que en cada ecuacion hay una y solo una incognita que no haya sido previamente cal´ ´ ´ culada. En ocasiones sera posible despejar la incognita de la ecuacion. En otros casos, ´ ´ ´ la incognita aparecera de forma impl´cita y deberan emplearse m´ todos num´ ricos para ´ ´ ı ´ e e evaluarla. 2. Se llega a un punto en que todas las ecuaciones tienen al menos dos incognitas y ´ todas las incognitas aparecen al menos en dos ecuaciones. Corresponde al caso en que ´ hay sistema de ecuaciones. Si en este sistema las incognitas intervienen linealmente, ´ sera posible despejarlas resolviendo el sistema simbolicamente. Si al menos una de ´ ´ las incognitas interviene de forma no lineal, deberan emplearse m´ todos num´ ricos ´ ´ e e para evaluar las incognitas. El algoritmo de particion asegura que la dimension de los ´ ´ ´ sistemas de ecuaciones obtenidos es m´nima. ı Ejemplo 2.6.3. A continuacion va a realizarse la particion del modelo descrito en el Ejemplo ´ ´ 2.6.1. Indicando unicamente las incognitas que intervienen en cada ecuacion se obtiene: ´ ´ ´ = 0 = 0 (2.66) (2.67) f3 (z) = 0 (2.68) f1 (y, z) f2 (derx, y) La variable z es la unica incognita que aparece en la ecuacion f3 , por tanto debe emplearse ´ ´ ´ esta ecuacion para calcular z. Las ecuaciones que quedan por emplear, y las incognitas que ´ ´ quedan por evaluar son: (2.69) (2.70) f1 (y) = 0 f2 (derx, y) = 0 Debe emplearse f1 para calcular y. Seguidamente, debe emplearse f2 para calcular derx. Las ecuaciones ordenadas, con la causalidad computacional se˜ alada, son las siguientes: n f3 (x, [z]) = f1 (x, [y] , z) = 0 0 (2.71) (2.72) f2 (x, [derx] , y) = 0 (2.73)
  • 37. Parte II Easy Java Simulations 21
  • 39. Tema 3 Fundamentos de Ejs Objetivos: Una vez estudiado el contenido del tema deber´a saber: ı ´ ´ • Quien y con que finalidad ha desarrollado Ejs. ´ ´ • Cual es la metodolog´a de Ejs para la creacion de laboratorios virtuales. ı 3.1. ¿Qu´ es Easy Java Simulations? e Easy Java Simulations (abreviado: Ejs) es un entorno de simulacion que ha sido disenado ´ ˜ y desarrollado por el profesor Francisco Esquembre1 . Segun indica el Prof. Esquembre, Ejs ´ ha sido especialmente ideado para el desarrollo de aplicaciones docentes, permitiendo a profesores y alumnos crear de forma sencilla sus propios laboratorios virtuales, sin que para ello requieran de conocimientos avanzados de programacion. ´ El entorno de simulacion Ejs, as´ como su documentacion y algunos casos de estudio, ´ ı ´ puede ser descargado gratuitamente del sitio web http://fem.um.es/Ejs. Para su comodidad, todo este material ha sido incluido en el CD que se le ha entregado como material de este curso. En el Tema 4 se explicara como realizar la instalacion de Ejs. ´ ´ ´ Condiciones de uso de Ejs Las condiciones de uso de Ejs y el copyright de los ejemplos de simulaciones disponibles en el sitio web http://fem.um.es/Ejs, son las indicadas en dicho sitio web (en diciembre de 2004), y que a continuacion se reproducen textualmente: ´ Easy Java Simulations es propiedad exclusiva de su autor, Francisco Esquembre, que lo distribuye bajo licencia Open Source. Los ejemplos de simulaciones contenidos en este servidor son propiedad de sus autores. Copyright del Software Easy Java Simulations 1 Prof. Dr. Francisco Esquembre, Dpto. de Matematicas, Universidad de Murcia, Campus de Espinardo, 30071 ´ Murcia (Espana). E-mail: fem@um.es ˜ 23
  • 40. TEMA 3. FUNDAMENTOS DE EJS 24 Easy Java Simulations y sus archivos JAR de librer´a pueden copiarse y distribuirı se sin l´mite alguno y sin solicitar permiso previo, siempre que se trate de fines ı no comerciales. En cualquier caso, debe mantenerse siempre la referencia al autor que aparece en el programa. Pueden distribuirse cualesquiera nuevas simulaciones creadas con Easy Java Simulations, siempre que se incluya una referencia a este hecho, junto con un enlace a la pagina Web oficial de Easy Java Simulations, http://fem.um.es/Ejs. No es ´ preciso hacer esto en todas las paginas de simulaciones de una unidad educativa, ´ bastara con incluir una referencia para todo el conjunto en un lugar claramente ´ visible. Cualquier publicacion que resulte del uso de Easy Java Simulations debe referen´ ciar el servidor Web original de Ejs, http://fem.um.es/Ejs. Por ultimo, animamos a cualquier autor que haya escrito nuevos ejemplos con ´ Easy Java Simulations a enviarnos un breve correo electronico con un enlace a ´ sus ejemplos. 3.2. Paradigma modelo-vista-control La metodolog´a para la creacion de laboratorios virtuales de Ejs esta basada en una simı ´ ´ plificacion del paradigma “modelo-vista-control”. Este paradigma2 establece que el laboratorio ´ virtual se compone de las tres partes siguientes: 1. El modelo: describe los fenomenos bajo estudio. Esta compuesto por un conjunto de ´ ´ variables y por las relaciones entre estas variables. 2. El control: define las acciones que el usuario puede realizar sobre la simulacion. ´ 3. La vista: representacion grafica de los aspectos mas relevantes del fenomeno simulado. ´ ´ ´ ´ Estas tres partes estan interrelacionadas entre s´: ´ ı – El modelo afecta a la vista, ya que debe mostrarse al usuario cual es la evolucion del ´ ´ valor de las variables del modelo. – El control afecta al modelo, ya que las acciones ejercidas por el usuario pueden modificar el valor de las variables del modelo. – La vista afecta al modelo y al control, ya que la interfaz grafica puede contener elementos ´ que permitan al usuario modificar el valor de las variables o realizar ciertas acciones. ´ Simplificacion del paradigma modelo-vista-control realizada por Ejs Ejs se basa en una simplificacion del paradigma modelo-vista-control, suprimiendo la ´ parte del control como tal, e integrando sus funciones tanto en la vista como en el modelo. Esta simplificacion se basa en el hecho de que el usuario puede usar la interfaz grafica del ´ ´ laboratorio virtual (es decir, la vista) para interaccionar con la simulacion, empleando para ´ ello el raton, el teclado, etc. ´ As´ pues, en un laboratorio virtual programado usando Ejs, el usuario interacciona con ı el modelo a trav´ s de la vista. Por tanto, al programar el modelo es preciso especificar de e qu´ forma las acciones realizadas por el usuario durante la simulacion sobre los componentes e ´ graficos o los controles de la vista afectan al valor de las variables del modelo. ´ Las propiedades de los elementos graficos de la vista (posicion, tamano, etc.) pueden ´ ´ ˜ asociarse con las variables del modelo, dando lugar a un flujo de informacion bidireccional ´ entre la vista y el modelo. Cualquier cambio en el valor de una variable del modelo es automaticamente representado en la vista. Rec´procamente, cualquier interaccion del usuario ´ ı ´ con la vista de laboratorio virtual, modifica el valor de la correspondiente variable del modelo. 2 Esta discusion esta extra´da de la Seccion 3.1 del documento EjsManual3.1.pdf, que puede encontrar en el CD ´ ´ ı ´ del curso.
  • 41. ´ 3.3. DEFINICION DEL MODELO 25 Botones para la selección del panel: definición de la introducción, el modelo o la vista Crear una simulación nueva Abrir una simulación existente Grabar a disco Grabar con un nombre distinto Ejecutar la simulación Cambiar la fuente Editar opciones Versión y autores Ventana en la que Ejs muestra los mensajes al usuario Figura 3.1: Interfaz de usuario de Ejs. Ademas del modelo y la vista, Ejs permite incluir en el laboratorio virtual paginas HTML ´ ´ que realicen las funciones de documentacion, informando acerca de la finalidad del labora´ torio, sus instrucciones de uso, recomendaciones pedagogicas, etc. Este conjunto de paginas ´ ´ recibe el nombre de Introduccion. ´ Resumiendo lo anterior, la definicion de un laboratorio virtual mediante Ejs se estructura ´ en las siguientes tres partes: ´ – Introduccion: paginas html que incluyen los contenidos educativos relacionados con el ´ laboratorio virtual. – Modelo: modelo dinamico cuya simulacion interactiva es la base del laboratorio virtual. ´ ´ – Vista: interfaz entre el usuario y el modelo. La vista del laboratorio virtual tiene dos funciones. Por una parte, proporciona una representacion visual del comportamiento ´ dinamico del modelo. Por otra parte, proporciona los mecanismos para que el usuario ´ pueda interaccionar con el modelo durante la simulacion. ´ En la Figura 3.1 se muestra la interfaz de usuario de Ejs. Se trata de la pantalla que aparece al arrancar Ejs. Como puede verse, en la parte superior hay tres botones: Introduccion, ´ Modelo, Vista. Mediante estos botones puede seleccionarse el panel para la definicion de las ´ paginas de la introduccion, el panel para la definicion del modelo o el panel para la definicion ´ ´ ´ ´ de la vista.
  • 42. TEMA 3. FUNDAMENTOS DE EJS 26 Botones para la selección de los paneles de definición del modelo Figura 3.2: Panel para la definicion del modelo. ´ ´ 3.3. Definicion del modelo Ejs proporciona un procedimiento sencillo para la definicion del modelo: un conjunto de ´ paneles que el usuario debe completar para especificar las variables y los algoritmos que componen el modelo. En la Figura 3.2 se muestra el panel para la definicion del modelo, dentro del cual, a su ´ vez, puede accederse a cinco paneles: Variables, Inicializacion, Evolucion, Ligaduras y Propio. ´ ´ La finalidad de cada uno de estos paneles se explicara en el Tema 5. ´ Ademas de este m´ todo para definir el modelo, Ejs soporta la opcion de describir y simular ´ e ´ el modelo usando Matlab/Simulink3 : – En cualquier punto de la definicion del modelo en Ejs pueden incluirse codigo Matlab, ´ ´ as´ como llamadas a cualquier funcion de Matlab, tanto las funciones propias de Matlab ı ´ como cualquier funcion definida en un fichero M. ´ – El modelo puede ser descrito parcial o completamente usando bloques de Simulink. El modelado y la simulacion combinando el uso de Ejs y Matlab/Simulink excede los ´ objetivos planteados en este curso. ´ 3.4. Definicion de la vista Ejs proporciona un conjunto de elementos predefinidos que pueden usarse de manera sencilla para componer la vista. 3 Puede encontrar informacion acerca de Matlab y Simulink en el sitio web http://www.mathworks.com/ ´
  • 43. ´ 3.4. DEFINICION DE LA VISTA 27 Figura 3.3: Panel para la definicion de la vista. ´ ´ En la Figura 3.3 se muestra el panel para la definicion de la vista. Esta se realiza emplean´ do las dos ventanas siguientes: – La ventana situada en la parte derecha del panel, que tiene el letrero Elementos para la vista. Los elementos se encuentran clasificados en tres grupos: Contenedores, Basicos y ´ Dibujo. Estos elementos son clases de componentes graficos que Ejs tiene predefinidas ´ y que el usuario va a emplear para componer la vista. ´ – La ventana que esta situada en la parte izquierda del panel, y tiene el letrero Arbol de ´ elementos. En esta ventana el usuario va componiendo la vista, usando para ello los elementos de la ventana Elementos para la vista. Los elementos graficos proporcionados por Ejs estan programados usando la librer´a ´ ´ ı Swing de Java y las herramientas creadas en el proyecto Open Source Physics. Puede encontrar informacion acerca de este proyecto en el sitio web http://www.opensourcephysics.org/ ´ Como ilustracion de qu´ tipo de laboratorios virtuales puede programarse empleando ´ e Ejs, y en particular, qu´ capacidades de visualizacion e interactividad tienen, se muestra e ´ a continuacion un laboratorio virtual que ha sido programado para la ensenanza del control ´ ˜ automatico. ´
  • 44. 28 TEMA 3. FUNDAMENTOS DE EJS Figura 3.4: Vista de un laboratorio virtual programado con Ejs. Ejemplo 3.4.1. En la Figura 3.4 se muestra la vista de un laboratorio virtual programado con Ejs. El modelo consta de una planta4 , compuesta por cuatro depositos de l´quido, y de su ´ ı sistema de control. Este laboratorio virtual se emplea para ilustrar diferentes aspectos de la teor´a del control automatico. El objetivo es controlar el nivel de los dos depositos inferiores ı ´ ´ mediante dos bombas. Para ello, pueden emplearse dos estrategias de control - manual y automatico (PID descentralizado)- entre las cuales el alumno puede conmutar en tiempo de ´ simulacion. ´ Dos bombas hacen circular el l´quido desde la cubeta inferior a los tanques. En el diagraı ma de la planta, mostrado en la parte superior izquierda de la Figura 3.4, cada bomba se representa mediante un triangulo inscrito en un c´rculo. ´ ı Una valvula de doble via distribuye el causal suministrado por cada una de las bombas. La ´ primera de estas valvulas determina que proporcion del l´quido suministrado por la bomba va ´ ´ ´ ı al Tanque 1 y que proporcion (la restante) va al Tanque 4. Igualmente, una segunda valvula ´ ´ ´ determina como se reparte el flujo entre los Tanques 2 y 3. ´ En la base de los Tanques 3 y 4 existen sendos agujeros, a traves de los cuales se vierte ´ l´quido a los Tanques 1 y 2 respectivamente. Igualmente, a traves de los agujeros situados en ı ´ 4 Puede encontrarse informacion adicional acerca de esta planta en (Johansson 2000). La programacion y el ´ ´ manejo del laboratorio virtual se explican en (Dormido Esquembre 2003, Martin, Urquia, Sanchez, Dormido, Esquembre, Guzman Berenguel 2004).
  • 45. ´ ´ 3.5. EJECUCION Y DISTRIBUCION DEL LABORATORIO VIRTUAL 29 la base de los Tanques 1 y 2 se vierte l´quido a la cubeta inferior. Estos flujos son modelados ı usando la relacion de Bernoulli5 . ´ La vista del laboratorio virtual, mostrada en la Figura 3.4, consta de: – La ventana principal, situada en la parte izquierda, que contiene la representacion es´ quematica del proceso (en la parte superior) y los botones de control (en la parte inferior). ´ Ambos permiten al alumno experimentar con el modelo. En la representacion esquematica ´ ´ del sistema, pueden modificarse (haciendo clic y arrastrando el raton) los niveles del ´ l´quido en los tanques, la forma y la seccion de los tanques y los valores de consigna ı ´ para el nivel de l´quido. Los deslizadores y botones situados en la parte inferior permiten ı modificar interactivamente el valor de los parametros del controlador PID y el valor de ´ la seccion de los agujeros realizados en la base de los tanques. Asimismo, los botones ´ permiten seleccionar las variables de estado del modelo (el volumen o el nivel del l´quido), ı abrir y cerrar ventanas graficas, etc. ´ – En la parte izquierda, se muestran seis ventanas en las cuales se representa graficamente ´ la evolucion en el tiempo de las variables relevantes del sistema: altura del l´quido en cada ´ ı tanque y voltaje aplicado a cada una de las bombas por el sistema de control. ´ ´ 3.5. Ejecucion y distribucion del laboratorio virtual Una vez que el usuario ha definido el modelo, la vista y la introduccion del laboratorio ´ virtual, Ejs genera automaticamente el codigo Java del programa, lo compila, empaqueta ´ ´ los ficheros resultantes en un fichero comprimido, y genera paginas html que contienen la ´ introduccion y la simulacion como un applet. ´ ´ Entonces, existen tres posibles formas de ejecutar el laboratorio virtual: – Como un applet, abriendo con un navegador web (Internet Explorer, Netscape, etc.) el documento html generado por Ejs para el laboratorio. Esta opcion permite publicar el ´ laboratorio virtual en Internet. Una vez han sido generadas por Ejs, puede usted (si lo desea) editar las paginas html ´ del laboratorio virtual y anadirles otros contenidos. Debera usar para ello un editor de ˜ ´ paginas web. ´ Es importante tener en cuenta que, por motivos de seguridad, los applets de Java no pueden escribir datos en el disco (pero si pueden leer datos del disco o de Internet). Por ello, si ha programado la simulacion de modo que escriba datos en el disco, no ´ podra ejecutarla como un applet, sino que debera usar cualquiera de las dos formas de ´ ´ ejecucion siguientes. ´ – Ejecucion desde el entorno Ejs. ´ – Ejecucion como una aplicacion Java independiente. ´ ´ 5 El flujo de l´quido (F ) se relaciona con la seccion recta del orificio (a), el nivel del l´quido en el tanque (h) y la ı ´ ı √ aceleracion gravitatoria (g) mediante la relacion de Bernoulli: F = a · 2 · g · h. ´ ´
  • 47. Tema 4 ´ Instalacion y arranque de Ejs Objetivos: Una vez estudiado el contenido del tema deber´a saber: ı ´ • Como instalar Ejs. ´ • Como ejecutar un laboratorio virtual ya existente. ´ • Como acceder a los ejemplos que incluye Ejs. ´ 4.1. Requisitos para la instalacion de Ejs Ejs ha sido probado en las plataformas siguientes: Windows 95, 98, ME, 2000 y XP; Apple MacIntosh bajo Mac OS X; y PC-compatibles bajo Linux. Ejs es un programa escrito en lenguaje Java, que compila programas escritos en Java. Por ello, Ejs requiere para su funcionamiento que previamente se haya instalado el Kit de Desarrollo de Software de Java 2 (Java 2 SDK). Dependiendo de la version de Ejs, es aconsejable instalar una version del Java 2 SDK u ´ ´ otra. En el caso de Ejs 3.4, se recomienda usar la version 1.5.0 09 del kit de desarrollo de ´ Java 2. Una vez haya instalado Java 2 SDK, debera instalar Ejs. La instalacion bajo Windows se ´ ´ explica en la Seccion 4.2. La instalacion bajo Linux y Mac OS X, que no explica en este texto, ´ ´ esta explicada detalladamente en el sitio web de Ejs (http://fem.um.es/Ejs/Ejs es/index.html) ´ y en el manual de Ejs que se incluye en el CD-ROM del curso. La documentacion de Ejs consiste en ficheros con formato pdf. Si no dispone de un visua´ lizador de pdf, puede descargar uno gratuitamente del sitio web http://www.adobe.com/. ´ 4.2. Instalacion de Ejs para Windows ´ Instalacion del Java SDK Ejecute el fichero de instalacion de Java SDK, jdk-1 5 0 09-windows-i586-p.exe, y siga las ´ instrucciones del mismo. Este fichero se encuentra en el CD-ROM del curso. 31
  • 48. ´ TEMA 4. INSTALACION Y ARRANQUE DE EJS 32 Figura 4.1: Consola de Ejs version 3.4. ´ En realidad, la unica eleccion importante que debe hacer es el directorio donde debe ´ ´ instalarse el software. La recomendacion que hacemos es que acepte el directorio que la ´ instalacion proporciona por defecto. ´ ´ Instalacion de Easy Java Simulations Mueva el directorio Ejs desde el CD-ROM al disco duro de su ordenador. Es recomendable que ni dicho de los directorios del path contenga espacios en blanco en su nombre. ´ 4.3. El directorio de instalacion de Ejs El directorio Ejs contiene: – El fichero EjsConsole.jar. Debe ejecutarlo para arrancar la consola de Ejs (v´ ase la e Figura 4.1). Desde dicha consola podra especificar en qu´ directorio se encuentra insta´ e lado Java2SDK, cual es el directorio de trabajo de Ejs, podra arrancar Ejs, seleccionar ´ ´ el idioma de la interfaz grafica de usuario de Ejs,etc. Asimismo, en la parte inferior de ´ la consola hay una pantalla en la cual Ejs muestra los mensajes de error generados al compilar y ejecutar los laboratorios virtuales. – El directorio data. Contiene el codigo de la aplicacion Ejs, con lo cual usted no debe ´ ´ modificar el contenido de este directorio. – El directorio Simulations. Es el directorio de trabajo por defecto: donde arranca la ejecucion de Ejs, donde Ejs espera encontrar la definicion de los laboratorios virtuales ´ ´
  • 49. ´ 4.4. SELECCION DEL DIRECTORIO DE TRABAJO 33 y donde Ejs almacena los resultados de las simulaciones. En la Seccion 4.4 se explica ´ como escoger otro directorio de trabajo. ´ A su vez, el directorio Simulations contiene los tres subdirectorios siguientes: – El directorio examples. Contiene ejemplos de uso de Ejs, que usted puede inspeccionar y modificar si lo desea. – El directorio library. Contiene ficheros necesarios para el funcionamiento de Ejs, por tanto, usted tampoco debe modificar el contenido de este directorio. – El directorio laboratoriosTexto, que contiene los laboratorios virtuales descritos en el presente texto. ´ 4.4. Seleccion del directorio de trabajo Ejs toma por defecto el directorio Simulations como directorio de trabajo. Si desea cambiar el directorio de trabajo, puede hacerlo desde la consola de Ejs. Para ello, debe ademas copiar ´ el directorio completo library en su directorio de trabajo. ´ 4.5. Arranque de Ejs y ejecucion de un laboratorio virtual Para arrancar el entorno de simulacion Ejs debe arrancar la consola de Ejs, ejecutando el ´ fichero EjsConsole.jar. Pulse entonces el boton con la etiqueta “Ejecutar Easy Java Simula´ tions” que hay en la consola (vea la Figura 4.1). Con ello, se abrira la ventana mostrada en las Figura 4.2, que es la interfaz de usuario del ´ entorno de simulacion Ejs, en la cual se definen las tres partes que componen el laboratorio ´ virtual: la introduccion, el modelo y la vista. ´ Para comprobar que la instalacion se ha realizado correctamente, abra alguno de los ´ laboratorios contenidos en el directorio Simulations examples. Para ello: 1. Pulse el segundo boton de la regleta de botones situada en la parte derecha de la interfaz ´ de Ejs (ver la Figura 4.2). Dicho boton representa una carpeta abierta, y si se situa ´ ´ sobre el aparece el mensaje: “Abrir una simulacion existente”. Al pulsar dicho boton se ´ ´ ´ muestra una ventana, en la que debe escoger qu´ laboratorio virtual desea abrir. e 2. Entre en el directorio examples. 3. Los ficheros en los que Ejs guarda la definicion del laboratorio virtual tienen extension ´ ´ xml. Seleccione el fichero EarthSunAndMoon.xml y abralo (vea la Figura 4.3). Al abrir el ´ fichero EarthSunAndMoon.xml se abren las dos ventanas mostradas en la Figura 4.4. En la ventana situada a la derecha puede ver la introduccion del laboratorio. Si pulsa los ´ botones Modelo o Vista accedera a la definicion del modelo y de la vista respectivamente. ´ ´ 4. Para iniciar la ejecucion de la simulacion, debe pulsar el boton que tiene un triangulo ´ ´ ´ ´ de color verde dibujado. Si se situa con el raton sobre el, aparece el mensaje “Ejecutar ´ ´ ´ la simulacion” (vea la Figura 4.2). Pulselo para arrancar la simulacion ´ ´ ´ Al arrancar la simulacion, Ejs genera varios ficheros en el directorio de trabajo: ´ – earthSunAndMoon.jar, en el cual Ejs ha empaquetado todos los ficheros Java necesarios para la ejecucion del laboratorio virtual. ´ – EarthSunAndMoon.html, documento html que recoge la introduccion del laboratorio y ´ la simulacion. Esta ultima como un applet. Ademas, Ejs genera otros documentos ´ ´ ´ html a los que se enlaza desde EarthSunAndMoon.html. Estos son: EarthSunAndMoon Activities.html, EarthSunAndMoon Author.html, etc. – EarthSunAndMoon.bat, fichero por lotes que arranca la ejecucion del laboratorio virtual ´ como una aplicacion Java independiente. Por defecto, Ejs no genera este fichero. En la ´ Seccion 4.6 se explicara como configurar Ejs para que lo haga. ´ ´ ´ – Posiblemente Ejs almacene algun fichero en el directorio library. Recuerde que, si ´ cambia el directorio de trabajo, debe copiar en el nuevo directorio de trabajo el directorio library con todo su contenido.
  • 50. 34 ´ TEMA 4. INSTALACION Y ARRANQUE DE EJS Crear una simulación nueva Abrir una simulación existente Grabar a disco Grabar con un nombre distinto Ejecutar la simulación Cambiar la fuente Editar opciones Versión y autores Figura 4.2: Interfaz de usuario de Ejs. Figura 4.3: Seleccion del fichero EarthSunAndMoon.xml, que se encuentra dentro del ´ directorio examples.
  • 51. ´ 4.5. ARRANQUE DE EJS Y EJECUCION DE UN LABORATORIO VIRTUAL Figura 4.4: Ventanas del laboratorio virtual EarthSunAndMoon.xml. Figura 4.5: Vista del laboratorio EarthSunAndMoon.xml. Figura 4.6: Pagina web del laboratorio virtual: EarthSunAndMoon.html. ´ 35
  • 52. 36 ´ TEMA 4. INSTALACION Y ARRANQUE DE EJS Figura 4.7: Ventana de configuracion de Ejs version 3.4. ´ ´ La ejecucion del laboratorio virtual hace que se abra una nueva ventana, en la cual se ´ muestra la evolucion de la tierra y de la luna en sus respectivas orbitas (vea la Figura 4.5). ´ ´ Si detiene la simulacion pulsando el boton “Pause”, observara que situando el raton sobre ´ ´ ´ ´ cualquiera de los tres objetos celestes (el sol, la tierra o la luna), pulsando y arrastrando, podra cambiar su posicion. Pulsando el boton “Play”, reinicia la simulacion partiendo de las ´ ´ ´ ´ nuevas posiciones. Si lo desea, puede publicar el laboratorio virtual en Internet. Como se ha indicado anteriormente, Ejs ha creado en el directorio de trabajo los ficheros necesarios para ello. Abra el fichero EarthSunAndMoon.html con un navegador web, y observara la pagina web mostrada ´ ´ en la Figura 4.6. ´ 4.6. Opciones de configuracion de Ejs Para asignar valor a las opciones de configuracion de Ejs, debe pulsar el boton “Editar ´ ´ opciones”, que tiene dibujada una mano que sujeta un papel. Se trata del penultimo boton ´ ´ de la regleta lateral izquierda de botones de Ejs (vea la Figura 4.2). Pulsando dicho boton se abre la ventana mostrada en la Figura 4.7. En ella el usuario ´ puede indicar sus preferencias acerca de: – La posicion en la que aparece la ventana principal de Ejs cuando se arranca la aplica´ cion. ´ – El estilo, tamano, etc. de la fuente de caracteres. ˜
  • 53. ´ 4.6. OPCIONES DE CONFIGURACION DE EJS 37 – La creacion o no de determinados ficheros, entre ellos el fichero .bat al que se hac´a ´ ı referencia en la Seccion 4.5. ´ – Eliminar o no el fichero fuente de Java que contiene el codigo para la ejecucion del ´ ´ laboratorio virtual. Por defecto, Ejs elimina este fichero una vez lo ha compilado y ha generado el fichero .jar. En este fichero con extension .jar estan empaquetados y ´ ´ comprimidos los ficheros obtenidos de la compilacion del fichero fuente .java. ´ – Mostrar o no las paginas “ocultas” del laboratorio. ´
  • 54. 38 ´ TEMA 4. INSTALACION Y ARRANQUE DE EJS
  • 55. Tema 5 Conceptos b´ sicos para la a ´ descripcion del modelo Objetivos: Una vez estudiado el contenido del tema deber´a saber: ı ´ • Cuales son los componentes de un modelo en Ejs. ´ ´ • Cual es el algoritmo de simulacion de Ejs. ´ • Como se declaran variables y se inicializan en Ejs. ´ ´ • Cual es la utilidad de los paneles Evolucion y Ligaduras. ´ ´ • Como definir metodos propios. ´ ´ • Cuales son los algoritmos para la integracion de ODE que soporta Ejs. En este tema se explica cual es el algoritmo para la simulacion que emplea Ejs. Su ´ ´ comprension es esencial para poder describir correctamente los modelos usando Ejs. ´ Las explicaciones se fundamentan en los conceptos expuestos en el Tema 2, apareciendo dos elementos adicionales: – Ejs esta disenado para permitir la interactividad del usuario sobre el modelo durante la ´ ˜ simulacion. ´ – La descripcion de como debe Ejs realizar el calculo de los parametros y de las varia´ ´ ´ ´ bles algebraicas debe realizarse mediante fragmentos de codigo escritos empleando el ´ lenguaje de programacion Java. ´ A continuacion, se explica detalladamente todo ello. ´ 5.1. Componentes del modelo escrito en Ejs Para definir un modelo interactivo en Ejs, es preciso proporcionar la informacion siguiente: ´ – Declarar las variables que intervienen en el modelo. – Describir los algoritmos necesarios para calcular el valor de las variables: – En el instante inicial de la simulacion. ´ – En funcion del tiempo. ´ – Cuando el usuario realiza sobre la vista del laboratorio virtual alguna accion inter´ activa. 39
  • 56. 40 ´ ´ TEMA 5. CONCEPTOS BASICOS PARA LA DESCRIPCION DEL MODELO Ejs proporciona un procedimiento sencillo para introducir esta informacion. En concreto, ´ la definicion del modelo en Ejs se compone de las partes siguientes: ´ – La inicializacion de las variables realizada al declararlas. A tal fin, la expresion cuyo valor ´ ´ debe asignarse a la variable debe escribirse en la columna Valor del panel Variables, en la fila correspondiente a la declaracion de la variable. ´ – Los algoritmos para la inicializacion de las variables, que se definen en el panel Iniciali´ zacion. ´ – Los algoritmos escritos en el panel Evolucion. ´ – Los algoritmos escritos en el panel Ligaduras. – Los m´ todos definidos en el panel Propio, que pueden ser invocados desde cualquier e punto de la descripcion del modelo o de la vista. Se emplean t´picamente para describir ´ ı las acciones interactivas del usuario. En este tema se explica como debe introducirse esta informacion en los cinco paneles ´ ´ (Variables, Inicializacion, Evolucion, Ligaduras y Propio) que componen el panel Modelo de Ejs ´ ´ (vea la Figura 3.2). ´ 5.2. Descripcion algor´tmica del modelo ı Como se ha indicado anteriormente, el modelo se describe en Ejs mediante fragmentos de codigo en lenguaje Java, los cuales deben ser escritos en los diferentes paneles que ´ proporciona Ejs para la descripcion del modelo: Inicializacion, Evolucion, Ligaduras y Propio. ´ ´ ´ Esto implica que el modelo matematico debe ser manipulado por el usuario, previamente ´ a escribirlo en los paneles de Ejs, con el fin de formularlo como una secuencia ordenada de asignaciones. Para ello, es conveniente emplear las t´ cnicas para la asignacion de la e ´ causalidad computacional descritas en el Tema 2. Las ecuaciones del modelo deben reescribirse como asignaciones, de la forma siguiente: variable = expresion; ´ (5.1) Ejs realiza la ejecucion de una asignacion como la mostrada en (5.1) de la forma siguiente: ´ ´ 1. Se evalua la expresion del lado derecho de la igualdad, empleando para ello el valor que ´ ´ en ese punto de la ejecucion tengan las variables que intervienen en dicha expresion. ´ ´ 2. Se asigna el resultado obtenido a la variable situada al lazo izquierdo de la igualdad. Ademas de asignaciones, para la descripcion del modelo pueden usarse las clausulas que ´ ´ ´ proporciona Java para el control del flujo del programa. Por ejemplo, en la Figura 5.5 se muestra un ejemplo de uso de la clausula for. ´ Al uso conjunto de estas clausulas y de asignaciones lo denominaremos algoritmo. ´ ´ 5.3. El algoritmo de simulacion de Ejs Para poder entender como estructurar la definicion del modelo en los diferentes paneles, ´ ´ es preciso previamente comprender el algoritmo de simulacion de Ejs. ´ En este contexto, se entiende por algoritmo de simulacion de Ejs el orden en el que Ejs ´ ejecuta los diferentes paneles y las diferentes ventanas dentro de cada panel. El orden es el siguiente: 1. Ejs ejecuta los diferentes paneles que componen la descripcion del modelo en el orden ´ mostrado en la Figura 5.1.
  • 57. ´ 5.3. EL ALGORITMO DE SIMULACION DE EJS 41 Inicio Declaración de variables (panel Variables) Inicialización de variables (columna Valor del panel Variables) Ejecución de los algoritmos del panel Inicialización Ejecución de los algoritmos del panel Ligaduras Representación gráfica de resultados (comunicación modelo vista) sí ¿Interacción del usuario? (comunicación vista modelo) Ejecución de la acción ejercida por el usuario no Ejecución de los algoritmos del panel Evolución Figura 5.1: Algoritmo de simulacion de Ejs. ´ 2. Si un determinado panel consta de varias paginas, estas se ejecutan siguiendo el orden ´ ´ relativo en que estan dispuestas1 , empezando por la que esta situada mas a la izquierda ´ ´ ´ y terminando con la que esta mas a la derecha. ´ ´ Por ejemplo, en la Figura 7.9 se observa que el panel Variables consta de dos ventanas: – Variables principales, que esta situada mas a la izquierda, y que por tanto se ejecuta ´ ´ en primer lugar. – Variables auxiliares, situada mas a la derecha, y que por ello se ejecuta en segundo ´ lugar. 3. Ejs ejecuta los algoritmos de una pagina siguiendo el orden en que estan escritos, ´ ´ comenzando por la parte superior de la pagina y finalizando por su parte inferior, de ´ forma completamente analoga a como si se tratara de la ejecucion de un fragmento de ´ ´ codigo de un programa escrito en Java. ´ En la Figura 5.1 se muestra el algoritmo de simulacion de Ejs, es decir, la secuencia de ´ ´ tareas que realiza Ejs para ejecutar cualquier laboratorio virtual. Estas son las siguientes2 : 1. Ejs crea las variables y les asigna sus correspondientes valores de inicializacion. Para ´ ello, primero realiza las asignaciones descritas en el panel Variables y a continuacion ´ ejecuta los algoritmos descritos en el panel Inicializacion. ´ 1 Ejs permite cambiar la posicion relativa de una pagina respecto a las demas paginas del panel. Es decir, permite ´ ´ ´ ´ desplazarla hacia la izquierda o hacia la derecha. Esta opcion aparece en el menu para la gestion de paginas (vea ´ ´ ´ ´ la Figura 7.3). Para desplegar este menu es preciso situar el raton sobre la lengueta de la ventana que se desea ´ ´ ¨ desplazar y pulsar el boton derecho del raton. ´ ´ 2 Esta explicacion esta extra´da de la Seccion 3.3 del texto (Esquembre 2004b) ´ ´ ı ´
  • 58. 42 ´ ´ TEMA 5. CONCEPTOS BASICOS PARA LA DESCRIPCION DEL MODELO Inicio Declaración de variables (Panel Variables) tiempo, deltaTiempo, u0, w, u, i tiempo deltaTiempo u0 w = 0.0; = 0.05; = 10.0; = 100.0; Inicialización de variables (columna Valor del panel Variables) Ejecución de los algoritmos del panel Inicialización u = u0 * Math.sin( w * tiempo ); i = u / R; Ejecución de los algoritmos del panel Ligaduras Representación gráfica de resultados (comunicación modelo vista) sí ¿Interacción del usuario? (comunicación vista modelo) Ejecución de la acción ejercida por el usuario no Ejecución de los algoritmos del panel Evolución tiempo = tiempo + deltaTiempo; Figura 5.2: Algoritmo de simulacion del modelo mostrado en la Figura 2.6a. ´ 2. Ejs ejecuta los algoritmos contenidos en el panel Ligaduras. 3. Ejs crea la vista de la simulacion y la muestra en pantalla, estableciendo las asociaciones ´ entre las propiedades de los elementos graficos y las variables del modelo, as´ como la ´ ı forma en la que debe reaccionarse ante las acciones del usuario sobre el modelo. En este punto, el modelo se encuentra en su estado inicial, y la vista refleja los valores de las variables en este estado. 4. Ejs examina si el usuario ha interaccionado con la vista. Pueden darse dos situaciones: a) Si el usuario interacciona con la vista, Ejs ejecuta los algoritmos asociados a dicha interaccion y, a continuacion, ejecuta los algoritmos del panel Ligaduras. ´ ´ b) Si el usuario no interacciona con la vista, se ejecutan los algoritmos del panel Evolucion y seguidamente los del panel Ligaduras. ´ 5. Ejs representa en la vista del laboratorio el nuevo estado del modelo que acaba de evaluarse en el paso anterior. 6. Ejs salta al Paso 4. Ejemplo 5.3.1. En el caso del modelo mostrado en la Figura 2.6a, que esta compuesto por un ´ generador de tension y una resistencia, el algoritmo de la simulacion podr´a ser el mostrado en ´ ´ ı la Figura 5.2. El modelo ordenado y resuelto, y con la causalidad computacional se˜ alada es n el representado por las Ecs. (2.24 – 2.25).
  • 59. ´ 5.3. EL ALGORITMO DE SIMULACION DE EJS 43 Una vez que se ha realizado la asignacion de la causalidad computacional del modelo, la ´ descripcion del mismo empleando los paneles de Ejs es un proceso sistematico: ´ ´ – La asignacion de valor a los parametros se realiza en el panel Variables, al declararlos, o ´ ´ bien en el panel Inicializacion. ´ – En el modelo de este ejemplo no hay variables de estado. Si las hubiera, se fijar´a su valor ı inicial de forma analoga a como se asigna valor a los parametros: en el panel Variables, ´ ´ al declararlas, o bien en el panel Inicializacion. ´ – La secuencia ordenada de asignaciones que realiza el calculo de las variables algebraicas ´ se escribe en el panel Ligaduras. – En el panel Evolucion se describe como debe realizarse el calculo de las variables de ´ ´ ´ estado. – Cuando el panel Evolucion contiene alguna pagina EDO, Ejs realiza automaticamente el ´ ´ ´ incremento de la variable tiempo, de acuerdo con los parametros del metodo de integracion ´ ´ ´ fijados por el usuario. Cuando no hay ningun panel EDO, como en este caso, el usuario ´ del modelo debe ocuparse de escribir el codigo de avance de la variable tiempo: ´ • Se define un parametro (en este ejemplo, deltaT iempo), que representa el tama˜ o ´ n del paso de avance en el tiempo. Cambiando el valor asignado a este parametro, ´ el usuario puede controlar en que instantes de tiempo evalua Ejs el modelo. ´ ´ • Se escribe la ecuacion de avance en el tiempo (tiempo = tiempo + deltaT iempo). ´ Ejemplo 5.3.2. La simulacion del modelo del circuito electrico representado en la Figura 2.1 ´ ´ puede realizarse empleando Ejs. La asignacion de la causalidad computacional de este modelo ´ se explico en el Ejemplo 2.5.1. El modelo ordenado, resuelto, y con la causalidad computacional ´ se˜ alada es el siguiente: n [u] = [iR2 ] = [iR1 ] = [iC ] = [deruC ] = d [uC ] dt = u0 · sin (ω · t) uC R2 u − uC · R1 iR1 − iR2 iC C (5.2) deruC (5.7) (5.3) (5.4) (5.5) (5.6) Si se desea emplear uno de los metodos de integracion de Ejs para el calculo de las variables ´ ´ ´ de estado, es preciso: – Expresar la derivada de cada una de las variables de estado en funcion unicamente ´ ´ de variables de estado, parametros y la variable tiempo. Puesto que se ha asignado la ´ causalidad computacional del modelo, las manipulaciones necesarias para ello se pueden realizar de manera sencilla. En este ejemplo: d [uC ] iC iR1 − iR2 = deruC = = = dt C C u−uC R1 − uC R2 C = u0 ·sin(ω·t)−uC R1 C − uC R2 (5.8) Es decir, para calcular uC debe emplearse la expresion siguiente: ´ u0 ·sin(ω·t)−uC u − RC d [uC ] R1 2 = (5.9) dt C – Deben escribirse las expresiones calculadas anteriormente para la derivada de las variables de estado en una pagina ODE, dentro del panel Evolucion. En este ejemplo, habr´a ´ ´ ı que escribir la Ec. (5.9) en una pagina EDO del panel Evolucion. ´ ´
  • 60. ´ ´ TEMA 5. CONCEPTOS BASICOS PARA LA DESCRIPCION DEL MODELO 44 Inicio tiempo, deltaTiempo, u0, w, R1, R2, C, uC, u, iR1, iR2, iC, deruC tiempo deltaTiempo u0 w R1 R2 C uC = 0.0; = 0.05; = 10.0; = 100.0; = 1.0; = 2.0; = 0.00001; = 3.5; Declaración de variables (Panel Variables) Inicialización de variables (columna Valor del panel Variables) Ejecución de los algoritmos del panel Inicialización u iR1 iR2 iC deruC = = = = = u0 * Math.sin( w * tiempo ); ( u – uC ) / R1; uC / R2; iR1 – iR2; iC / C; Ejecución de los algoritmos del panel Ligaduras Representación gráfica de resultados (comunicación modelo vista) sí ¿Interacción del usuario? (comunicación vista modelo) Ejecución de la acción ejercida por el usuario no Ejecución de los algoritmos del panel Evolución En una página EDO: d uC / d tiempo = ((u0 * Math.sin( w * tiempo ) – uC ) / R1 – uC / R2) / C Figura 5.3: Algoritmo de simulacion del modelo del circuito RC de la Figura 2.1. ´
  • 61. ´ 5.3. EL ALGORITMO DE SIMULACION DE EJS 45 El algoritmo de la simulacion se muestra en la Figura 5.3. Observe que: ´ – Las asignaciones que permiten calcular las variables algebraicas y las derivadas de las variables de estado, se incluyen en el panel Ligaduras. – Es preciso asignar la causalidad computacional a las ecuaciones del modelo para saber como deben ordenarse dentro del panel Ligaduras y que variable debe despejarse de cada ´ ´ ecuacion. ´ – El calculo de las variables de estado, mediante integracion de sus derivadas, debe incluir´ ´ se en el panel Evolucion. Si se desea emplear uno de los metodos de integracion de Ejs, ´ ´ ´ debe emplearse una pagina EDO y expresar la derivada de cada variable de estado en ´ funcion unicamente de variables de estado, parametros y la variable tiempo. ´ ´ ´ – Cuando se emplea una pagina EDO, Ejs gestiona automaticamente el incremento de la ´ ´ variable tiempo a lo largo de la simulacion. ´ Los calculos que realiza Ejs para ejecutar la simulacion son los indicados a continuacion, ´ ´ ´ suponiendo que no se produce ninguna interaccion por parte del usuario, y que se emplea el ´ metodo de integracion de Euler expl´cito con un tama˜ o del paso igual al valor del parametro ´ ´ ı n ´ deltaT iempo. 1. Asignacion de valor a la variable tiempo: ´ tiempo = 0.0; 2. Asignacion de valor a los parametros del modelo: ´ ´ deltaTiempo = 0.05; u0 = 10.0; w = 100.0; R1 = 1.0; R2 = 2.0; C = 0.00001; 3. Asignacion de valor inicial a la variable de estado: ´ uC = 3.5; 4. Calculo del valor inicial de las variables algebraicas: ´ u = u0 * Math.sin( w * tiempo ); iR1 = ( u - uC ) / R1; iR2 = uC / R2; iC = iR1 - iR2; deruC = iC / C; 5. Comunicacion de los valores de las variables y los parametros a la vista del laboratorio ´ ´ virtual para su representacion grafica. ´ ´ 6. Calculo del valor de la variable de estado en el instante tiempo + deltaT iempo (aplicando el ´ metodo de Euler expl´cito): ´ ı uC = uC + deltaTiempo * ( (u0*Math.sin(w*tiempo)-uC)/R1 - uC/R2 ) / C; 7. Incremento de la variable tiempo: tiempo = tiempo + deltaTiempo; 8. Calculo de las variables algebraicas en el instante tiempo: ´ u = u0 * Math.sin( w * tiempo ); iR1 = ( u - uC ) / R1; iR2 = uC / R2; iC = iR1 - iR2; deruC = iC / C; 9. Volver al Paso 5. Si se produce interaccion por parte del usuario, t´picamente sera para modificar el valor ´ ı ´ de alguno de los parametros o de las variables de estado del modelo. Una vez realizado ´ el cambio, se ejecuta el panel Ligaduras: se recalcula el valor de las variables algebraicas correspondientes a ese nuevo valor de los parametros y de las variables de estado. Una vez ´ hecho esto, se establece la comunicacion con la vista, para representar los valores calculados, ´ y se continua con la integracion del modelo (es decir, se ejecuta el panel Evolucion). ´ ´
  • 62. 46 ´ ´ TEMA 5. CONCEPTOS BASICOS PARA LA DESCRIPCION DEL MODELO Figura 5.4: Ejemplo de declaracion e inicializacion de variables. ´ ´ ´ ´ 5.4. Declaracion e inicializacion de las variables De las explicaciones anteriores, se concluye que es preciso declarar y asignar valor inicial a los siguientes tipos de variables del modelo: – La variable tiempo, que t´picamente se inicializara al valor cero. ı ´ – Las constantes y parametros. ´ – Las variables de estado, tanto continuas como discretas. Es preciso declarar, pero no inicializar, los siguientes tipos de variables: – Las variables algebraicas. – Las derivadas de las variables de estado (variables auxiliares que se han introducido al analizar la causalidad computacional del modelo). No es preciso inicializar estas variables debido a que su valor en el instante inicial de la simulacion lo calcula Ejs de ejecutar el codigo del panel Ligaduras (vea la Figura 5.1). ´ ´ En cualquier caso, si se inicializa alguna de estas variables, este valor sera sobreescrito al ´ ejecutar el panel Ligaduras. La inicializacion de las variables se realiza en dos paneles: Variables e Inicializacion (vea ´ ´ nuevamente la Figura 5.1): – En primer lugar, Ejs ejecuta las asignaciones que el usuario haya escrito en el panel Variables. – A continuacion, Ejs ejecuta los algoritmos que el usuario haya definido en el panel ´ Inicializacion ´ A continuacion se describe cada uno de ellos. ´ El panel Variables En la Figura 5.4 se muestra un ejemplo de declaracion e inicializacion de variables. A ´ ´ continuacion, se explica el significado de cada uno de los campos. ´ El nombre de la variable debe escribirse en la correspondiente casilla de la columna Nombre.
  • 63. ´ ´ 5.4. DECLARACION E INICIALIZACION DE LAS VARIABLES 47 Figura 5.5: Ejemplo de inicializacion de una variable vectorial. ´ Al asignar nombres, debe tenerse en cuenta que no puede asignarse el mismo nombre a dos variables diferentes. Para evitar que, por error, se asigne el mismo nombre a dos variables diferentes del laboratorio virtual (por ejemplo, a una variable del modelo y a una variable definida en la vista), es recomendable asignar a las variables nombres descriptivos de su funcion. ´ En la columna Tipo debe indicarse el tipo de cada variable. En Ejs las variables pueden ser de los tipos siguientes: – boolean: cuando solo puede tomar dos valores: true o false. ´ – int: variable de tipo entero. – double: variables de tipo real. – String: variables del tipo cadena de caracteres. En la columna Dimension debe indicarse la dimension de la variable. Si es una variable ´ ´ escalar (es decir, no es un vector ni una matriz), la casilla debe dejarse vac´a. Si alguna de las ı variables es un vector o una matriz, debe indicarse su dimension. ´ Ejemplo 5.4.1. Si se escribe [10] en la casilla Dimension de la variable q, se esta declarando ´ ´ un vector de 10 componentes: q [0], q [1], · · · , q [9]. Si se escribe [10] [20], se esta declarando una ´ matriz de 10 filas (de la 0 a la 9) y 20 columnas (de la 0 a la 19). En la columna Valor, puede introducirse el valor inicial de la variable (es opcional), que puede ser un valor constante o una expresion. Este “valor inicial” es el valor que se asigna a ´ la variable al comienzo de la simulacion. Cuando se asigna un valor inicial a una variable ´ vectorial o matricial, Ejs inicializa todos los elementos de la variable igualandolos a ese ´ determinado valor. El panel Inicializacion ´ En algunos modelos es preciso realizar determinados calculos para asignar valor inicial a ´ alguna de las variables. El codigo Java que describe como han de realizarse estos calculos ´ ´ ´ puede escribirse en el panel Inicializacion. ´ Ejemplo 5.4.2. Cuando se quiere asignar un valor inicial diferente a cada uno de los elementos de una variable vectorial o matricial, debe hacerse en el panel Inicializacion. ´ En la Figura 5.5 se muestra el codigo para realizar la inicializacion de los componentes de ´ ´ un vector mediante la formula: ´
  • 64. 48 ´ ´ TEMA 5. CONCEPTOS BASICOS PARA LA DESCRIPCION DEL MODELO Figura 5.6: Panel para la descripcion de la Evolucion. ´ ´ q[0] = 1 n−1 q[i] = −q[i − 1] + (5.10) 2·i n−1 para i : 1, . . . , n − 1 (5.11) donde se supone que la variable q es un vector de n componentes: q [0] , . . . , q [n − 1]. ´ ´ 5.5. Descripcion de la evolucion En la Figura 5.6 de muestra el panel Evolucion. Observe que el panel se encuentra dividido ´ en las tres partes siguientes: – En la parte superior derecha, hay un subpanel con el letrero Pulse para crear una pagina. ´ Pulsando se crea una pagina en la cual el usuario puede escribir los algoritmos que ´ desee, por ejemplo, puede programar sus propios m´ todos de integracion para calcular e ´ las variables de estado. – En la parte inferior derecha, hay un subpanel con el letrero Pulse para crear una pagina ´ de EDO (EDO es el acronimo de Ecuacion Diferencial Ordinaria). Esta pagina es un ´ ´ ´ asistente para la definicion de ecuaciones diferenciales ordinarias. Ejs genera automati´ ´ camente el codigo para integrar num´ ricamente las EDO definidas en esta pagina. Ejs ´ e ´ soporta cuatro m´ todos de integracion, entre los cuales el usuario puede escoger. Estos e ´ son: – Euler
  • 65. ´ 5.6. DESCRIPCION DE LAS LIGADURAS 49 – Punto medio (Euler-Richardson) – Runge-Kutta (4o orden) – Runge-Kutta-Fehlberg (4o -5o orden) En la Seccion 5.8 se describen brevemente los fundamentos de estos algoritmos. En ´ cualquier caso, el codigo que genera Ejs para una pagina EDO realiza las dos tareas ´ ´ siguientes: 1. Calcula el valor de las variables de estado, aplicando para ello el algoritmo correspondiente al m´ todo de integracion que ha seleccionado el usuario. Si el valor actual e ´ de la variable tiempo es t, y el tamano del paso de integracion es ∆t, este valor ˜ ´ calculado de las variables de estado es el valor de las mismas en el instante de tiempo t + ∆t. 2. Incrementa el valor de la variable tiempo en ∆t. Puesto que el codigo generado por Ejs para una pagina EDO incrementa el valor de la ´ ´ variable tiempo, en un laboratorio virtual no puede haber m´ s de una p´ gina de a a EDO. Igualmente, si el laboratorio no tiene ninguna pagina EDO, el usuario debe gestionar ´ por s´ mismo el incremento de la variable tiempo. Este es el caso del laboratorio virtual ı descrito en la Seccion 7. ´ – En la parte izquierda, hay un subpanel que contiene el letrero Imagenes por segundo ´ (abreviado: IPS), debajo del cual hay un indicador que el usuario puede desplazar verticalmente arrastrandolo con el raton. Con ello puede regular la velocidad de ejecucion de ´ ´ ´ la simulacion. En concreto, determina el numero de pasos en el tiempo que avanzara la ´ ´ ´ simulacion en un segundo de tiempo real3 . Cuanto mayor sea el numero de imagenes ´ ´ ´ por segundo, mayor sera la velocidad con que se visualizara la evolucion del sistema. ´ ´ ´ En la parte inferior se encuentra el boton Arranque. Cuando esta activado, la simulacion ´ ´ ´ comienza tan pronto como es ejecutado el laboratorio virtual. Si esta desactivado la simulacion no comenzara cuando se ejecute el laboratorio virtual. ´ ´ ´ La utilidad de ello es permitir que el usuario realice ciertas tareas antes de que comience la simulacion (por ejemplo, cambiar el valor de ciertas variables). En este caso, es ´ preciso definir un boton de arranque (en la vista del laboratorio virtual) que el usuario ´ debera pulsar para que se inicie la simulacion. Este boton de arranque debera tener ´ ´ ´ ´ asociada como accion una llamada al m´ todo play(). Se trata de un m´ todo predefinido ´ e e de Ejs que hace que comience la ejecucion de la simulacion. ´ ´ ´ 5.6. Descripcion de las ligaduras En general, en el panel Ligaduras se escriben los algoritmos para el calculo de las variables ´ algebraicas del modelo. Como puede verse en la Figura 5.1, las ecuaciones de ligadura son aquellas que describen el comportamiento del modelo, no solo durante su evolucion en el tiempo, sino tambi´ n en el ´ ´ e caso de que el usuario realice cualquier cambio interactivo en el valor de alguna variable. Esta es una de las diferencias conceptuales entre las ecuaciones de evolucion y las ecuaciones de ´ ligadura. 5.7. M´ todos propios del usuario e El usuario puede definir, en el panel Propio, todos aquellos metodos en lenguaje Java que ´ precise para la definicion del modelo o de la vista. T´picamente, los m´ todos se emplean para ´ ı e definir acciones sobre el modelo que son activadas desde la vista (por ejemplo, cuando el usuario pulsa un boton). ´ 3 La simulacion avanza a pasos ∆t en el tiempo simulado, con lo cual, en un segundo de tiempo real el tiempo ´ simulado avanzara IPS · ∆t. ´
  • 66. ´ ´ TEMA 5. CONCEPTOS BASICOS PARA LA DESCRIPCION DEL MODELO 50 Estos m´ todos pueden ser invocados desde cualquier parte de la simulacion, y esta es e ´ ´ su unica finalidad. Es decir, a excepcion de los puntos donde son invocados, durante la ´ ´ simulacion no se realiza ninguna otra llamada a estos m´ todos. ´ e ´ 5.8. Los algoritmos de integracion de Ejs Como se ha indicado anteriormente, Ejs soporta cuatro algoritmos para la integracion de ´ las ecuaciones diferenciales ordinarias: – – – – Euler expl´cito ı Punto medio (Euler-Richardson) Runge-Kutta (4o orden) Runge-Kutta-Fehlberg (4o -5o orden) A continuacion se describe cada uno de ellos. ´ M´ todo de Euler expl´cito e ı La funcion de paso del m´ todo de Euler para la ecuacion diferencial ordinaria ´ e ´ dx = f (x, t) dt (5.12) xi+1 = xi + f (xi , ti ) · ∆t (5.13) es la siguiente: que corresponde con un desarrollo de Taylor truncado en el primer orden. Ejemplo 5.8.1. El modelo cinematico de una masa puntual (m), sobre la que actua una fuerza ´ ´ (F ), consta de las ecuaciones siguientes: v a = a dy dt dv dt F (y, v, t) m = = (5.14) (5.15) (5.16) El algoritmo para integrar este modelo, empleando el metodo de Euler expl´cito, es el siguien´ ı te: 1. Deben conocerse los valores de las variables de estado (y, v) en el instante inicial de la simulacion (t0 ). Sean estos valores: y0 , v0 . ´ Tambien debe fijarse el tama˜ o del paso de integracion (∆t). ´ n ´ 2. Calculo de la aceleracion de la part´cula (ai ), que es una variable algebraica: ´ ´ ı ai = F (yi , vi , ti ) m (5.17) 3. Se calcula el valor de las variables de estado en el nuevo instante de tiempo: vi+1 = vi + ai · ∆t (5.18) yi+1 = yi + vi · ∆t (5.19) La velocidad al final del intervalo (vi+1 ) se calcula de la aceleracion al principio del intervalo ´ (ai ). Igualmente, la posicion al final del intervalo (yi+1 ) se calcula de la aceleracion al ´ ´ principio del intervalo (vi ).
  • 67. ´ 5.8. LOS ALGORITMOS DE INTEGRACION DE EJS 51 4. Avance de un paso en el tiempo e incremento del ´ndice i: ı ti+1 i = = (5.20) (5.21) ti + ∆t i+1 5. Volver al Paso 2. M´ todo de Euler-Richardson e El algoritmo de Euler-Richardson usa la derivada en el principio del intervalo para estimar ´ el valor de la variable de estado en el punto medio del intervalo (tmed = t + ∆t ). A continuacion, 2 emplea la derivada en este punto medio para calcular la variable de estado al final del intervalo. Este algoritmo tambi´ n se conoce como algoritmo de Runge-Kutta de 2o orden o del punto e medio. La funcion de paso del m´ todo de Euler-Richardson para la ecuacion diferencial ordinaria ´ e ´ dx = f (x, t) dt (5.22) es la siguiente: xmed = xi + f (xi , ti ) · xi+1 = xi + f ∆t 2 xmed , ti + (5.23) ∆t 2 · ∆t (5.24) Ejemplo 5.8.2. El modelo de la masa puntual descrito en el Ejemplo 5.8.1 puede integrarse, empleando el algoritmo de Euler-Richardson, de la forma siguiente: vmed ymed amed ∆t 2 ∆t = yi + vi · 2 F ymed , vmed , ti + = m (5.25) = vi + ai · (5.26) ∆t 2 (5.27) y vi+1 = vi + amed · ∆t (5.28) yi+1 = yi + vmed · ∆t (5.29) M´ todo de Runge-Kutta (4o orden) e Este m´ todo se emplea con mucha frecuencia. Requiere cuatro evaluaciones de la derivada e por cada paso en el tiempo. Se denomina de 4o orden porque considera el desarrollo de Taylor hasta 4o orden. La funcion de paso para la ecuacion diferencial ordinaria ´ ´ dx = f (x, t) dt (5.30)
  • 68. ´ ´ TEMA 5. CONCEPTOS BASICOS PARA LA DESCRIPCION DEL MODELO 52 es la siguiente: k1 k2 k3 k4 xi+1 = ∆t · f (xi , ti ) k1 ∆t , ti + 2 2 k2 ∆t = ∆t · f xi + , ti + 2 2 = ∆t · f (xi + k3 , ti + ∆t) k1 k2 k3 k4 + + + = xi + 6 3 3 6 = ∆t · f xi + (5.31) (5.32) (5.33) (5.34) (5.35) M´ todo de Runge-Kutta-Fehlberg (4o -5o orden) e Se trata de un m´ todo de 4o orden embebido dentro de un m´ todo de 5o orden. El error e e cometido al aplicar el m´ todo de cuarto orden se obtiene restando las funciones paso de e 5 ambos m´ todos, y correspondera con el t´ rmino de 5o orden del desarrollo de Taylor ( ddtxi · e ´ e 5 5 ∆t ). 5! La funcion de paso para la ecuacion diferencial ordinaria ´ ´ dx = f (x, t) dt (5.36) es la siguiente: k1 = (5.37) ∆t · f (xi , ti ) k2 = ∆t · f xi + k3 = ∆t · f xi + k4 = ∆t · f xi + k5 = ∆t · f xi + k6 = ∆t · f xi − ∆t k1 , ti + 4 4 3 9 3 · k1 + · k2 , ti + · ∆t 32 32 8 1932 7200 7296 12 · k1 − · k2 + · k3 , ti + · ∆t 2197 2197 2197 13 439 3680 845 · k1 − 8 · k2 + · k3 − · k4 , ti + ∆t 216 513 4104 8 3544 1859 11 ∆t · k1 + 2 · k2 − · k3 + · k4 − · k5 , ti + 27 2565 4104 40 2 (5.38) (5.39) (5.40) (5.41) (5.42) La formula de paso de 4o orden es: ´ 25 1408 2197 k5 · k1 + · k3 + · k4 − 216 2565 4104 5 (5.43) 16 6656 28561 9 2 · k1 + · k3 + · k4 − · k5 + · k6 135 12825 56430 50 55 (5.44) xi+1, 4o orden = xi + y la de 5o orden es: xi+1, 5o orden = xi + ´ Descripcion de las ecuaciones diferenciales en la p´ gina EDO a Anteriormente se ha indicado que, en una pagina EDO, la descripcion de las derivadas de ´ ´ las variables de estado debe hacerse unicamente en funcion de: ´ ´ – variables de estado, – constantes y parametros, y ´ – la variable tiempo.
  • 69. ´ 5.8. LOS ALGORITMOS DE INTEGRACION DE EJS 53 A la vista de los algoritmos de los m´ todos de integracion de Euler-Richardson, R-K y Re ´ K-F, la razon de ello es comprensible: estos m´ todos requieren la evaluacion de la derivada ´ e ´ en instantes intermedios del paso de integracion. ´ Por la forma de trabajar del algoritmo de Ejs, para posibilitar la evaluacion de la derivada ´ en los instantes intermedios del paso de integracion, es necesario que esta se exprese uni´ ´ ´ camente en funcion de variables de estado, variables que permanezcan constantes durante ´ el paso de integracion (es decir, las constantes y los parametros del modelo), y la variable ´ ´ tiempo. Lo anterior es equivalente a decir que la expresion de la derivada que se introduce en una ´ pagina EDO no puede contener variables algebraicas. ´
  • 70. 54 ´ ´ TEMA 5. CONCEPTOS BASICOS PARA LA DESCRIPCION DEL MODELO
  • 71. Tema 6 Conceptos b´ sicos para la a ´ descripcion de la vista Objetivos: Una vez estudiado el contenido del tema deber´a saber: ı ´ • Realizar las acciones basicas para configurar la vista de un laboratorio virtual. ´ ´ • Cual es la utilidad del panel Arbol de elementos. ´ • Cual es la utilidad del panel Elementos para la vista. • Reconocer las caracter´sticas fundamentales de algunas clases de eleı ´ mentos graficos. La vista del laboratorio virtual es la interfaz entre el usuario y el modelo. Mediante la manipulacion de los controles de la vista, el usuario puede: ´ – Controlar la ejecucion de la simulacion, por ejemplo, deteni´ ndola o reiniciandola. ´ ´ e ´ – Cambiar el valor de los parametros, de las variables de entrada y de las variables de ´ estado del modelo. La definicion de la vista de un laboratorio virtual se realiza en el panel Vista (vea la Figura ´ ´ 6.1). Este panel se subdivide en dos paneles: el panel Arbol de elementos y el panel Elementos para la vista. El panel Elementos para la vista se divide en tres areas, donde se encuentran los iconos de ´ todas las clases que se pueden usar para componer la vista. Estas tres areas se denominan ´ Contenedores, Basicos y Dibujo. A su vez, el area de elementos llamada Dibujo contiene tres ´ ´ paneles con iconos que representan clases de elementos graficos: Basicos, Grafos y cuerpos, ´ ´ y Campos. Al situar el raton sobre cualquiera de los iconos se obtiene un mensaje con ´ informacion acerca de su finalidad. ´ ´ El panel Arbol de elementos muestra la composicion de la vista del laboratorio virtual. La ´ vista esta compuesta por elementos graficos organizados formando una estructura en arbol. ´ ´ ´ Para desplegar el menu de un elemento grafico, hay que seleccionar dicho elemento en el ´ ´ ´ panel Arbol de la vista y hacer clic con el boton derecho del raton. ´ ´ En la siguiente seccion se explica como crear la vista del laboratorio, as´ como el procedi´ ´ ı miento para seleccionar y editar el menu de un determinado elemento grafico. Las secciones ´ ´ posteriores describen algunas clases de elementos graficos. ´ 55
  • 72. 56 ´ ´ TEMA 6. CONCEPTOS BASICOS PARA LA DESCRIPCION DE LA VISTA Figura 6.1: Panel Vista de un laboratorio. Se muestra el menu del elemento Traza. ´ ´ 6.1. Arbol de elementos La vista del laboratorio virtual se compone de elementos graficos, los cuales pueden ´ situarse unos dentro de otros, formando una estructura de arbol. ´ Decimos que un elemento b es padre de un elemento c, si b contiene a c. Si b es padre de c, entonces c es hijo de b. En el arbol de elementos se observara la existencia de un enlace ´ ´ directo entre c y b. Un padre puede tener varios hijos, pero un hijo solo puede tener un padre. As´, por ejem´ ı plo, en la Figura 6.1 el elemento grafico PanelDibujo tiene dos hijos (Particula1 y Particula2) ´ y un padre (Ventana). Es importante el orden relativo de los hijos, ya que un hijo se dibuja encima de los hijos situados por debajo del mismo en el arbol de elementos. Por ejemplo, en la Figura ´ 6.1 Particula1 se encuentra por encima de Particula2 en el arbol de elementos de la vista. ´ Si estos dos elementos tienen el mismo tamano y posicion dentro del PanelDibujo, solo se ˜ ´ ´ vera Particula1, ya que Particula1 oculta a Particula2. ´ Como se observa en la Figura 6.1, en el arbol de elementos hay siempre un elemento ra´z, ´ ı denominado Vista de la simulacion. Este es el elemento de nivel superior, en el cual se ubican ´ todos los elementos graficos que componen la vista. Este elemento debe tener siempre como ´ hijos elementos graficos de la clase Ventana o VentanaDialogo. ´ ´ Para situar un elemento grafico en el arbol de la vista, hay que seguir los pasos siguientes: ´ ´
  • 73. 6.2. CLASES DE ELEMENTOS DE LA VISTA 57 1. Seleccionar la clase del elemento grafico. Para ello, debe hacer clic con el raton sobre el ´ ´ ´ icono de la clase de elemento grafico en cuestion. Este estara situado dentro del panel ´ ´ ´ de Elementos para la vista. Al hacer esto, el icono queda inscrito en un recuadro oscuro, que senaliza que esa clase de elemento ha sido seleccionada. Observe que al posicionar ˜ el raton sobre el elemento se obtiene informacion sobre su finalidad. ´ ´ 2. Definir tantos objetos como desee de la clase anteriormente seleccionada. Para ello, debe hacer clic con el raton sobre el elemento grafico padre del nuevo elemento que esta a ´ ´ ´ punto de crear. Observe que al situar el raton sobre cualquier punto de esta ventana, el ´ curso adquiere la forma de una varita magica. ´ Para obtener el menu de un elemento grafico hay que situar el raton sobre dicho elemento ´ ´ ´ y hacer clic con el boton derecho. En la Figura 6.1 se muestra el menu del elemento Traza. ´ ´ Algunas opciones de los menus de los elementos graficos son: ´ ´ – Propiedades: permite acceder al menu de propiedades del elemento. ´ – Renombrar: permite cambiar el nombre del elemento. No puede haber dos elementos del arbol de elementos de la vista con el mismo nombre. ´ – Cambiar padre: permite cambiar al elemento de padre. – Mover arriba: permite subir el elemento una posicion dentro de los elementos que ´ comparten el mismo elemento padre. – Mover abajo: permite bajar el elemento una posicion dentro de los elementos que ´ comparten el mismo elemento padre. – Eliminar: permite eliminar al elemento del arbol de elementos. ´ En el siguiente apartado, se describen las caracter´sticas fundamentales de algunas claı ses. 6.2. Clases de elementos de la vista Las clases de elementos de la vista se dividen en los tres tipos siguientes: – Contenedores: se caracterizan porque pueden tener hijos. – B´ sicos: no pueden tener hijos. El padre de estas clases son elementos de tipo Contenea dor salvo las clases PanelDibujo, PanelDibujo3D y PanelConEjes. – Dibujo: no pueden tener hijos. El padre de estas clases son elementos de la clases PanelDibujo, PanelDibujo3D o PanelConEjes. A continuacion, se describe brevemente cada uno de ellos. ´ 6.3. Algunas clases de elementos de tipo Contenedor Las clases de este tipo pueden contener otros elementos graficos. A continuacion se ´ ´ describen las caracter´sticas fundamentales de las clases Ventana, VentanaDialogo, Panel, ı PanelDibujo, PanelDibujo3D y PanelConEjes. Clases Ventana y VentanaDialogo El padre de los elementos de estas clases es la Vista de la Simulacion. Estas dos clases ´ tienen muchas caracter´sticas comunes y comparten las mismas propiedades. Se diferencian ı fundamentalmente en que el cierre de un elemento de la clase Ventana conlleva la finalizacion ´ de la simulacion. Sin embargo, al cerrar un elemento de la clase VentanaDialogo la simulacion ´ ´ continua. ´ La ventana de propiedades se muestra en la Figura 6.2. A continuacion, se describen sus ´ propiedades: ´ – Distribucion. La distribucion de la ventana segun la pol´tica de distribucion especifica´ ´ ı ´ da. Se puede elegir una de las siguientes pol´ticas de distribucion: ı ´
  • 74. ´ ´ TEMA 6. CONCEPTOS BASICOS PARA LA DESCRIPCION DE LA VISTA 58 Figura 6.2: Propiedades del elemento Ventana. – – – – • Margenes: los hijos se situan en cinco areas: centro, izquierda, derecha, arriba o ´ ´ ´ abajo. Cambiar el tamano de la ventana solo cambia el tamano del area del centro ˜ ´ ˜ ´ sin cambiar el area de los margenes (izquierda, derecha, arriba o abajo). ´ ´ • Caja horizontal: los hijos se situan horizontalmente de izquierda a derecha. ´ • Caja vertical: los hijos se situan verticalmente de arriba a abajo. ´ • Rejilla: se indica el numero de filas y columnas. Los hijos se van colocando por filas ´ comenzando por arriba. Dentro de una fila se van colocando de izquierda a derecha. Todos los hijos ocupan un area del mismo tamano. ´ ˜ • Flujo izquierda/centro/derecha: la distribucion flujo hace que los hijos se alineen ´ horizontalmente. Cuando no hay espacio en una l´nea se crea una fila adicional ı para el hijo. Izquierda/centro/derecha indica que dentro de una fila los hijos se alinean comenzando por la izquierda/centro/derecha. Visible. La ventana es visible cuando el valor de esta propiedad es true. Si se escribe el nombre de una variable en la casilla de la propiedad Visible, la ventana sera visible ´ cuando dicha variable valga true. ´ Situacion. Posicion de la ventana dentro de la pantalla del ordenador. ´ Tama˜ o. Tamano de la ventana. n ˜ Redimensionable. La ventana cambia su tamano al arrastrar un extremo de la misma ˜ con el raton cuando el valor de esta propiedad es true. ´ Clase Panel Esta clase siempre tiene como padre a otro elemento de alguna clase de tipo contenedor. Se usa para situar otros elementos, hijos de este elemento, segun una determinada pol´tica ´ ı de distribucion. La propiedad distribucion se explico al describir las propiedades de las clases ´ ´ ´ Ventana y VentanaDialogo. Clase PanelDibujo Los hijos de los elementos de esta clase son del tipo Dibujo. Los elementos de la clase PanelDibujo representan una region del plano en 2 dimensiones y proporcionan su propio ´ sistema de coordenadas. Para situar a un elemento dentro del plano del panelDibujo hay que especificar las coordenadas x e y que ocupa en este plano (ver la Figura 6.3). Los elementos de la clase PanelDibujo son interactivos, es decir, se puede asociar una accion que se ejecute cuando se produzca una manipulacion del raton sobre el elemento. ´ ´ ´ Responden as´ a los diferentes gestos del raton segun el esquema siguiente: ı ´ ´
  • 75. 6.3. ALGUNAS CLASES DE ELEMENTOS DE TIPO CONTENEDOR f gX edcih` W edcih`Y X W f gX edcba` W edcba`Y Figura 6.3: Sistema de coordenadas del elemento PanelDibujo. Figura 6.4: Propiedades del elemento PanelDibujo. Figura 6.5: Propiedades del elemento PanelDibujo3D. 59
  • 76. 60 ´ ´ TEMA 6. CONCEPTOS BASICOS PARA LA DESCRIPCION DE LA VISTA – Cuando el usuario hace clic en el panel, se invoca la accion asociada a la propiedad ´ “Al Pulsar”. Inmediatamente despu´ s, se fijan las propiedades “X” e “Y” del panel a las e coordenadas de la posicion del raton, lo que invoca a su vez a la accion asociada a la ´ ´ ´ propiedad “Al Mover”, si la hubiera. – Cuando el usuario mueve el raton (con el boton del raton apretado), se actualizan las ´ ´ ´ propiedades “X” e “Y” y se invoca la accion asociada a la propiedad “Al Mover”. ´ – Cuando el usuario finalmente suelta el boton del raton (si lo hace dentro del elemento) ´ ´ se invoca la accion asociada a la propiedad “Al Soltar”. ´ El menu de propiedades de estos elementos se muestra en la Figura 6.4. Se puede especi´ ficar las dimensiones del plano que representa el elemento especificando sus coordenadas “X M´nimo”, “X Maximo”, “Y M´nimo” e “Y Maximo”. Tambi´ n se puede dejar que se ajusten las ı ´ ı ´ e escalas automaticamente. Para ello, hay que introducir en las propiedades “Autoescala X” y ´ “Autoescala Y” el valor false. Clase PanelDibujo3D Es un contenedor especial en tres dimensiones para elementos graficos de dibujo. ´ Los elementos de esta clase representan una region tridimensional del espacio y propor´ cionan su propio sistema de coordenadas. Para situar un elemento dentro del espacio que representan los elementos de la clase panelDibujo3D, hay que especificar las coordenadas X, Y y Z que ocupa en este espacio. El menu de propiedades de estos elementos se muestra en la Figura 6.5. Las dimensiones ´ de la region del espacio se especifican asignando valor a las propiedades “M´nimo X”, “Maximo ´ ı ´ X”, “M´nimo Y”, “Maximo Y”, “M´nimo Z” y “Maximo Z”. Tambi´ n se puede dejar que se ajusten ı ´ ı ´ e las escalas automaticamente de modo que se muestren todos los elementos graficos ubicados ´ ´ en el contenedor asignando el valor true a las propiedades “Autoescala X”, “Autoescala Y” y “Autoescala Z”. Los elementos de esta clase responden a la interaccion del raton del siguiente modo: ´ ´ – Cuando el usuario hace clic con el raton y arrastra el panel, cambia el punto de pers´ pectiva de la vista. – Si se presiona la tecla Control mientras se opera con el raton, entonces la escena se ´ mueve en su conjunto. – Si se presiona la tecla de mayusculas, se aplica un zoom (positivo o negativo, segun el ´ ´ movimiento del raton) a toda la escena. ´ – Si la tecla que se mantiene pulsada es “Alt”, aparece un cursor tridimensional que permite seleccionar un punto de la escena. El movimiento de este cursor responde al movimiento bidimensional del raton afectando solamente a dos coordenadas espaciales. ´ Para forzar el movimiento en una dimension particular, debera mantenerse pulsada la ´ ´ tecla correspondiente, x, y o z. Al cambiar de punto se aplican las acciones “Al pulsar”, “Al mover” y “Al soltar”, exactamente igual que en el caso de los paneles de dibujo bidimensionales. Clase PanelConEjes La clase PanelConEjes es una variante de la clase PanelDibujo. Incluye, por defecto, un sistema de ejes coordenados. Estos elementos son interactivos y responden a la accion del ´ usuario del mismo modo que los elementos de la clase PanelDibujo. A continuacion, se describen algunas propiedades de los elementos de esta clase (ver ´ Figura 6.6): – T´tulo: t´tulo mostrado en la parte superior del panel. ı ı – Tipo de Ejes: tipo de ejes mostrados. Se puede escoger entre tres tipos de ejes cartesianos y dos tipos de ejes polares.
  • 77. 6.3. ALGUNAS CLASES DE ELEMENTOS DE TIPO CONTENEDOR Figura 6.6: Propiedades del elemento PanelConEjes. Figura 6.7: Propiedades del elemento Boton. Figura 6.8: Propiedades del elemento Selector. 61
  • 78. ´ ´ TEMA 6. CONCEPTOS BASICOS PARA LA DESCRIPCION DE LA VISTA 62 – T´tulo X: t´tulo mostrado en el eje X. ı ı – Pos Eje X: indica la coordenada X del cruce del eje coordenado Y con el X. Solo tiene ´ efecto cuando la propiedad “Tipo de Ejes” tiene asignado el valor Cartesian3. – Tipo Eje X: lineal o logar´tmico en base 10. La constante LINEAR se usa para designar ı un tipo de eje lineal, mientras que la constante LOG10 se usa para ejes logar´tmicos. ı – Malla X: a esta propiedad se le asigna una variable logica o las constantes true o false. ´ Cuando esta propiedad toma el valor false no se dibuja una malla en el eje X. – T´tulo Y: t´tulo mostrado en el eje Y. ı ı – Pos Eje Y: indica la coordenada Y del cruce del eje coordenado X con el Y. Solo tiene ´ efecto cuando la propiedad “Tipo de Ejes” tiene asignado el valor Cartesian3. – Tipo Eje Y: lineal o logar´tmico en base 10. La constante LINEAR se usa para designar ı un tipo de eje lineal y la constante LOG10 un tipo de eje logar´tmico. ı – MallaY: a esta propiedad se le asigna una variable logica o las constantes true o false. ´ Cuando esta propiedad toma el valor false no se dibuja una malla en el eje Y. – Delta R: cuando se selecciona un tipo de ejes polares, el valor de esta propiedad indica el paso entre l´neas de radio polar constante. ı – Delta Theta: cuando se selecciona un tipo de ejes polares, el valor de esta propiedad indica el paso entre l´neas de angulo polar constante. ı ´ – Autoescala X: a esta propiedad se le asigna una variable logica o las constantes true o ´ false. Cuando esta propiedad toma el valor true, se calcula automaticamente la escala ´ en el eje X. – Autoescala Y: a esta propiedad se le asigna una variable logica o las constantes true o ´ false. Cuando esta propiedad toma el valor true, se calcula automaticamente la escala ´ en el eje Y. – M´nimo X: menor valor de la coordenada X que resulta visible en el panel. ı – M´ ximo X: mayor valor de la coordenada X que resulta visible en el panel. a – M´nimo Y: menor valor de la coordenada Y que resulta visible en el panel. ı – M´ ximo Y: mayor valor de la coordenada Y que resulta visible en el panel. a 6.4. Algunas clases de elementos de tipo Basicos ´ Este tipo de clases no pueden contener otros elementos graficos. A continuacion se des´ ´ criben las caracter´sticas fundamentales de las clases Boton, Selector, Deslizador y CampoNuı merico. Boton Un Boton es un elemento grafico al que se le pueden asociar acciones. En la Figura 6.7 ´ se muestran las propiedades de los elementos de esta clase. Alguna de sus propiedades mas ´ relevantes son: – Texto: texto mostrado por el elemento, pudiendo ser cualquier constante o variable de tipo String. ´ – Alineacion: forma de alinear el texto en el elemento. – Activo: el elemento responde a la accion del usuario cuando el valor de esta propiedad ´ es true. Si en esta propiedad se escribe una variable logica (tipo boolean) el elemento ´ respondera a la accion del usuario cuando la variable tome el valor true. ´ ´ ´ – Accion: la accion que se invoca cuando se pulsa el boton. ´ ´
  • 79. 6.5. ALGUNAS CLASES DE ELEMENTOS DE TIPO DIBUJO 63 Selector Un Selector es un elemento grafico que se usa para mostrar y modificar un valor logico. ´ ´ Alguna de las propiedades mas relevantes de estos elementos son (ver Figura 6.8): ´ – Variable: variable logica (tipo boolean) que se “enlaza” con el selector. Este elemento ´ grafico escribe en la variable un valor true o false, en funcion de que est´ o no seleccio´ ´ e nado. ´ – Accion: accion que se ejecuta siempre que se modifica el valor del elemento Selector. ´ ´ – Accion Si: accion que se ejecuta cuando la variable toma el valor true. ´ ´ – Accion No: accion que se ejecuta cuando la variable toma el valor false. En el caso de ´ que est´ n asignadas tanto la propiedad Accion Si como Accion No se ejecuta primero la e ´ ´ accion asociada a Accion Si y despu´ s la asociada a Accion No. ´ ´ e ´ – Activo: el elemento esta deshabilitado cuando el valor de esta propiedad es false. Si ´ en esta propiedad se escribe una variable logica (tipo boolean) el elemento se desha´ bilita cuando la variable tome el valor false. Cuando el elemento esta deshabilitado se ´ oscurece. Deslizador Un Deslizador es un elemento grafico que muestra y permite modificar un valor num´ rico. ´ e Sus propiedades se muestran en la Figura 6.9. Alguna de sus propiedades fundamentales son: – Variable: propiedad que permite “enlazar” una variable con el deslizador. De este modo, el valor de esta variable se modifica desplazando el deslizador entre sus dos valores extremos. – Formato: si su valor es no nulo, se visualiza tambi´ n el valor de la variable en forma de e texto. – Al pulsar: accion que se invoca cuando se pulsa el deslizador. ´ – Al mover: accion que se invoca cuando se desplaza el deslizador. ´ – Al soltar: accion que se invoca cuando se suelta el deslizador. ´ CampoNumerico Un CampoNumerico es un elemento que muestra y permite modificar un valor num´ rico. e Al modificar el valor mostrado el fondo del elemento cambia de color. Solo cuando se pulsa la ´ tecla Intro se acepta el nuevo valor y vuelve el fondo del elemento al color original. Si el valor introducido es erroneo (es decir, no puede ser entendido por la propiedad “Formato”), el valor ´ sera rechazado y se mostrara el fondo del elemento grafico en rojo. ´ ´ ´ Sus propiedades se muestran en la Figura 6.10. Alguna de sus propiedades fundamentales son: – Variable: permite enlazar una variable de tipo double o int con el CampoNum´ rico. De e esta forma, al introducir un nuevo valor num´ rico y pulsar a Intro, se modifica el valor e de la variable. – Formato: formato con que se visualiza el valor de la variable. ´ – Accion: accion que se invoca cuando el valor mostrado por el elemento se modifica. ´ 6.5. Algunas clases de elementos de tipo Dibujo Este tipo de clases no pueden contener otros elementos graficos. Se ubican en contene´ dores de las clases PanelDibujo, PanelDibujo3D o PanelConEjes. A continuacion se descri´ ben las caracter´sticas fundamentales de las clases Particula, Flecha, Imagen, Texto, Traza, ı Pol´gono. ı
  • 80. 64 ´ ´ TEMA 6. CONCEPTOS BASICOS PARA LA DESCRIPCION DE LA VISTA Figura 6.9: Propiedades del elemento Deslizador. Figura 6.10: Propiedades del elemento CampoNumerico. Figura 6.11: Propiedades del elemento Particula.
  • 81. 6.5. ALGUNAS CLASES DE ELEMENTOS DE TIPO DIBUJO 65 Particula Este elemento grafico representa una forma geom´ trica sencilla. La posicion del elemento ´ e ´ dentro del contenedor se especifica introduciendo las coordenadas X, Y y Z de su posicion. ´ Solo es necesario especificar la coordenada Z si el elemento se ubica en un contenedor de ´ la clase PanelDibujo3D. Sus propiedades se muestran en la Figura 6.11. Alguna de sus propiedades fundamentales son: – Estilo: permite seleccionar la forma del elemento. – X: coordenada x del elemento. – Y: coordenada y del elemento. – Z: coordenada z del elemento. – Activo: indica si el elemento responde a la accion del usuario. ´ – Al pulsar: accion que se produce cuando el raton se situa sobre el elemento y se presiona ´ ´ ´ su boton. ´ – Al mover: accion que se produce cuando se mueve el objeto con el raton. ´ ´ – Al soltar: accion que se produce cuando se deja de presionar el boton del raton. ´ ´ ´ Flecha Este elemento grafico representa un vector interactivo. La posicion del elemento dentro ´ ´ del contenedor se especifica dando las coordenadas cartesianas del origen y el tamano del ˜ vector segun cada uno de los ejes coordenados. En la Figura 6.12 se muestra su ventana de ´ propiedades. A continuacion se describen algunas de sus propiedades: ´ – Estilo: forma grafica del elemento, pudiendo seleccionar entre la forma de flecha, l´nea ´ ı o cajita. – X: coordenada x del origen del vector. – Y: coordenada y del origen del vector. – Z: coordenada z del origen del vector. – Tama˜ o X: tamano del vector en el eje x. n ˜ – Tama˜ o Y: tamano del vector en el eje y. n ˜ – Tama˜ o Z: tamano del vector en el eje z. n ˜ – Activo: indica si el elemento responde a la accion del usuario sobre su extremo. ´ – Movible: indica si el elemento responde a la accion del usuario sobre su origen. ´ – Al pulsar: accion que se invoca cuando el usuario hace clic con el raton sobre el ´ ´ elemento. – Al mover: accion que se invoca cuando el usuario arrastra el elemento con el raton. ´ ´ – Al soltar: accion que se invoca cuando se suelta el elemento. ´ Imagen Elemento grafico que muestra una imagen gif o gif animada. El elemento se ubica en el ´ contenedor especificando su posicion en coordenadas cartesianas y su tamano segun cada ´ ˜ ´ uno de los ejes coordenados. En la Figura 6.13 se muestra su ventana de propiedades. A continuacion se describen algunas de sus propiedades: ´ – X: coordenada x del elemento. – Y: coordenada y del elemento. – Z: coordenada z del elemento. – Tama˜ o X: longitud del elemento en el eje x. n – Tama˜ o Y: longitud del elemento en el eje y. n – Tama˜ o Z: longitud del elemento en el eje z. n – Activo: indica si el elemento responde a la accion del usuario. ´
  • 82. 66 ´ ´ TEMA 6. CONCEPTOS BASICOS PARA LA DESCRIPCION DE LA VISTA Figura 6.12: Propiedades del elemento Flecha. Figura 6.13: Propiedades del elemento Imagen. Figura 6.14: Propiedades del elemento Texto.
  • 83. 6.5. ALGUNAS CLASES DE ELEMENTOS DE TIPO DIBUJO 67 Figura 6.15: Propiedades del elemento Traza. – Al pulsar: accion que se invoca cuando el usuario hace clic con el raton sobre el ´ ´ elemento. – Al mover: accion que se invoca cuando el usuario arrastra el elemento con el raton. ´ ´ – Al soltar: accion que se invoca cuando se suelta el elemento. ´ – Imagen: Cualquier constante o variable de tipo String. El String indica la ruta hasta el fichero de imagen correspondiente. Puede ser una ruta relativa al directorio de trabajo o una URL (direccion) de Internet. La imagen ha de corresponder a una imagen GIF o GIF ´ animada. Texto Elemento grafico que muestra un texto en unas coordenadas determinadas del contenedor ´ donde esta ubicado. En la Figura 6.14 se muestra la ventana de propiedades del elemento. A ´ continuacion se describen algunas de sus propiedades: ´ – X: coordenada x del elemento. – Y: coordenada y del elemento. – Z: coordenada z del elemento. – Activo: indica si el elemento responde a la accion del usuario. ´ – Al pulsar: accion que se invoca cuando el usuario hace clic con el raton sobre el ´ ´ elemento. – Al mover: accion que se invoca cuando el usuario arrastra el elemento con el raton. ´ ´ – Al soltar: accion que se invoca cuando se suelta el elemento. ´ – Texto: texto a mostrar por el elemento, que puede ser cualquier constante o variable de tipo String. – Fuente: tipo de fuente a usar para el texto del elemento. Traza Elemento grafico que dibuja una serie de puntos en unas determinadas coordenadas del ´ contenedor donde esta ubicado. Los puntos se anaden secuencialmente, y pueden visualizar´ ˜ se usando marcadores en cada puntos, segmentos de union entre puntos o ambos. ´
  • 84. ´ ´ TEMA 6. CONCEPTOS BASICOS PARA LA DESCRIPCION DE LA VISTA 68 Figura 6.16: Propiedades del elemento Poligono. En la Figura 6.15 se muestra la ventana de propiedades del elemento. A continuacion, se ´ describen algunas de sus propiedades: – – – – – – – – – – – X: coordenada x del nuevo punto que se anade a la traza. ˜ Y: coordenada y del nuevo punto que se anade a la traza. ˜ Z: coordenada z del nuevo punto que se anade a la traza. ˜ Puntos: numero de puntos a dibujar. Si se asigna el valor 0 a la propiedad, se dibujan ´ todos los puntos. Saltar: numero de puntos que no se dibujan hasta que se vuelve a dibujar un punto. ´ Activo: cuando se le asigna el valor false esta propiedad, no se dibujan puntos. A esta propiedad se le puede asignar una variable logica. De este modo, cuando la variable ´ tome el valor false no se dibujaran nuevos puntos de la traza. ´ No repetir: cuando se le asigna el valor true a esta propiedad, no se dibuja un punto si este tiene las mismas coordenadas que el punto anterior. A esta propiedad se le puede ´ asignar una variable logica. De este modo, cuando tome la variable el valor true, no se ´ dibujara un punto cuando tenga las mismas coordenadas que el punto anterior. ´ Conectar: se le asigna una variable logica o las constantes true o false. Cuando esta ´ propiedad toma el valor false, no se conecta el nuevo punto con el anterior. Al pulsar: accion que se invoca cuando el usuario hace clic con el raton sobre el ´ ´ elemento. Al mover: accion que se invoca cuando el usuario arrastra el elemento con el raton. ´ ´ Al soltar: accion que se invoca cuando se suelta el elemento. ´ Pol´gono ı Elemento grafico que representa un prisma poligonal o un pol´gono. Cuando se trabaja en ´ ı dos dimensiones, la posicion del pol´gono en el contenedor donde esta ubicado se especifica ´ ı ´ dando las coordenadas cartesianas de sus v´ rtices. e En la Figura 6.16 se muestra la ventana de propiedades del elemento. A continuacion se ´ describen algunas de sus propiedades: – Puntos: numero de v´ rtices del pol´gono. Puede especificarse dando una constante o ´ e ı variable de tipo int.
  • 85. 6.5. ALGUNAS CLASES DE ELEMENTOS DE TIPO DIBUJO – – – – – – – – – – – 69 X: coordenadas x de los v´ rtices del elemento. e Y: coordenadas y de los v´ rtices del elemento. e Z: coordenadas z de los v´ rtices del elemento. e Movible: si el elemento puede moverse al arrastrar sus v´ rtices. e Dimensionable: si pueden modificarse interactivamente las coordenadas de sus v´ rtie ces. Al pulsar: accion que se invoca cuando el usuario hace clic con el raton sobre el ´ ´ elemento. Al mover: accion que se invoca cuando el usuario arrastra el elemento con el raton. ´ ´ Al soltar: accion que se invoca cuando se suelta el elemento. ´ Conectado: vector de dimension igual al numero de v´ rtices del pol´gono de valores ´ ´ e ı logicos. Un valor logico true en la posicion i del vector indica que el v´ rtice i se conecta ´ ´ ´ e con una l´nea al v´ rtice i-1. ı e Cerrado: se le asigna a esta propiedad una variable o constante logica. Cuando esta a ´ ´ true, el conjunto de v´ rtices representa un pol´gono cerrado. e ı Vertices fijos: vector de dimension igual al numero de v´ rtices del pol´gono del tipo ´ ´ e ı boolean. Un valor logico true en la posicion i del vector indica que no se pueden modificar ´ ´ interactivamente las coordenadas del v´ rtice i. e
  • 86. 70 ´ ´ TEMA 6. CONCEPTOS BASICOS PARA LA DESCRIPCION DE LA VISTA
  • 87. Parte III Casos de estudio 71
  • 89. Tema 7 ´ Programacion de un osciloscopio virtual con Ejs Objetivos: Una vez estudiado el contenido del tema deber´a saber: ı ´ ´ ´ • Crear una pagina de Introduccion con solo texto. ´ ´ • Dise˜ ar el algoritmo de simulacion de un modelo estatico y programar n dicho modelo usando Ejs. ´ • El uso de las clases de elementos graficos: Ventana, PanelDibujo, Panel, ´ Traza y Boton. ´ • Programar metodos propios e invocarlos desde la vista. En este tema se describe, de forma tutorial, como programar un laboratorio virtual con ´ Ejs. En concreto, como programar un osciloscopio virtual en el cual puedan visualizarse las ´ figuras de Lissajous1 . El objetivo de dicho laboratorio es permitir que el alumno pueda modificar interactivamente el valor de las frecuencias de las senales, as´ como el desfase, ˜ ı observando las correspondientes figuras de Lissajous. Este laboratorio esta disponible en el CD del curso. Se trata del fichero lissajous.xml, que ´ esta grabado en el directorio laboratoriosTexto. ´ 7.1. Las figuras de Lissajous Las figuras de Lissajous fueron descubiertas por el f´sico franc´ s Jules Antoine Lissajous ı e (vea la Figura 7.1). Lissajous empleaba sonidos de diferentes frecuencias para hacer vibrar un espejo. La luz reflejada en el espejo trazaba una curva cuya forma depend´a de la frecuencia ı del sonido. Las figuras de Lissajous se obtienen de la superposicion de dos movimientos armonicos ´ ´ perpendiculares: 1 Las explicaciones dadas en este Tema acerca de la programacion del osciloscopio virtual estan basadas en el ´ ´ Cap´tulo 3 de (Esquembre 2002b). ı 73
  • 90. ´ TEMA 7. PROGRAMACION DE UN OSCILOSCOPIO VIRTUAL CON EJS 74 Figura 7.1: Jules Antoine Lissajous (1822–1880). x = A · cos (ω1 · t) (movimiento horizontal) (7.1) y = A · cos (ω2 · t + δ) (movimiento vertical) (7.2) La trayectoria resultante, (x (t) , y (t)), depende de la relacion de las frecuencias, ´ diferencia de fase, δ. ω2 ω1 , y de la Una de las aplicaciones de las figuras de Lissajous fue determinar la frecuencia de sonidos o senales de radio. Se aplicaba en el eje horizontal de un osciloscopio una senal de frecuencia ˜ ˜ conocida, y la senal cuya frecuencia se deseaba medir se aplicaba en el eje vertical. La forma ˜ de la figura resultante es funcion del cociente de las dos frecuencias. ´ A continuacion se describen los pasos necesarios para programar el osciloscopio virtual con ´ Ejs. Para una mejor comprension de las explicaciones, se recomienda que los vaya realizando ´ por usted mismo. Para ello, comience por arrancar el entorno de simulacion Ejs (segun se ´ ´ explica en la Seccion 4.5). ´ ´ ´ 7.2. Descripcion de la introduccion Al arrancar Ejs, aparece por defecto seleccionado el panel Introduccion. Dentro de este ´ panel deben crearse las paginas que componen la introduccion del laboratorio virtual. Para ´ ´ crear una pagina, haga clic con el raton sobre la frase “Pulse para crear una pagina” (vea la ´ ´ ´ Figura 4.2). Al hacerlo, se abre una ventana en la cual Ejs pregunta qu´ nombre se desea dar a la e nueva pagina. D´ le un nombre a la pagina de introduccion que esta a punto de crear, por ´ e ´ ´ ´ ejemplo: Figuras de Lissajous. Escriba en la zona de texto de la pagina lo que desee. Por ´ ejemplo (ver la Figura 7.2): Las figuras de Lissajous se obtienen de la superposicion de dos movimientos armoni´ ´ cos perpendiculares. Lo que usted escriba en esta pagina, sera traducido por Ejs a codigo HTML. Para ver el ´ ´ ´ codigo HTML generado, seleccione Ver / Ver Codigo Fuente. ´ ´
  • 91. ´ ´ 7.2. DESCRIPCION DE LA INTRODUCCION Figura 7.2: Contenido de la pagina Figuras de Lissajous, del panel Introduccion. ´ ´ Para desplegar el menú debe situar el ratón sobre la lengüeta de la ventana y pulsar el botón derecho del ratón Figura 7.3: Menu para la gestion de las paginas. ´ ´ ´ Figura 7.4: El panel Introduccion contiene dos paginas: Figuras de Lissajous y Autores. ´ ´ 75
  • 92. 76 ´ TEMA 7. PROGRAMACION DE UN OSCILOSCOPIO VIRTUAL CON EJS Inspeccione las diferentes opciones de la barra de herramientas con el fin de familiarizarse con ellas. Para anadir una segunda pagina de introduccion, debe pulsar el boton derecho del raton ˜ ´ ´ ´ ´ sobre la lengueta de la pagina de introduccion que ha creado anteriormente (Figuras de ¨ ´ ´ Lissajous). Se despliega un menu, en el cual puede escoger realizar operaciones sobre las ´ paginas (vea la Figura 7.3). ´ Entre estas operaciones esta la creacion de paginas nuevas. Para ello debe hacer clic sobre ´ ´ ´ la opcion A˜ adir una pagina. De a esta segunda pagina de introduccion el nombre Autor, y ´ n ´ ´ ´ escriba su nombre en el espacio de texto de la pagina. En la Figura 7.4 se muestra un ejemplo. ´ ´ 7.3. El algoritmo de la simulacion Como paso previo a programar el modelo de un laboratorio virtual empleando Ejs, deben seguirse los dos pasos siguientes: 1. Clasificar las variables del modelo en conocidas y desconocidas. En el caso del modelo del osciloscopio, que esta compuesto por las Ecuaciones (7.1) y (7.2): – Las variables conocidas son los parametros (A, ω1 , ω2 , δ) y la variable tiempo (t). ´ – Las variables desconocidas son las dos variables algebraicas: x, y. 2. Aplicar el algoritmo de asignacion de la causalidad computacional, con el fin de decidir ´ como deben ordenarse las ecuaciones y qu´ variable debe evaluarse de cada ecuacion. ´ e ´ La aplicacion de dicho algoritmo es trivial en el caso del modelo del osciloscopio: ´ [x] = [y] = A · cos (ω1 · t) A · cos (ω2 · t + δ) (7.3) (7.4) En la Figura 5.1 se mostro el algoritmo de la simulacion de Ejs, que es el que emplea Ejs ´ ´ para ejecutar cualquier laboratorio virtual. En la Figura 7.5 se muestra una posible forma de programar el osciloscopio virtual. Como se explicara mas adelante, los parametros maximo, minimo y n van a emplearse en ´ ´ ´ la definicion de la vista: ´ – Las variables maximo y minimo son de tipo double, y van a emplearse en la definicion de ´ los extremos de escala del osciloscopio. – La variable n, de tipo entero (int), representa el numero de puntos de que va a constar ´ la traza de la figura de Lissajous. Es decir, representa la “memoria” de la pantalla del osciloscopio. El parametro deltaT iempo se emplea para incrementar la variable tiempo. Es decir, el valor ´ de este parametro determina el tamano del paso de avance en el tiempo en la simulacion. ´ ˜ ´ Esta situacion se produce frecuentemente: las variables del laboratorio virtual (que esta des´ ´ crito mediante algoritmos codificados en los diferentes paneles) no solo son las variables ´ del modelo matematico (descrito mediante ecuaciones) sino ademas otras variables que se ´ ´ emplean: – En los metodos numericos. En el caso del osciloscopio, el parametro deltaT iempo no ´ ´ ´ interviene en el modelo matematico: se emplea para especificar el tamano del paso de ´ ˜ avance en el tiempo de la simulacion. Esto significa que la simulacion consistira en ´ ´ ´ resolver el modelo (es decir, calcular el valor de sus variables) en los instantes de tiempo 0, deltaT iempo, 2 · deltaT iempo, 3 · deltaT iempo, . . . – En la definicion de las acciones y de la vista. En este caso, los parametros maximo, ´ ´ minimo y n se definen para personalizar las propiedades de la vista. A continuacion se explica como declarar e inicializar las variables del modelo en Ejs. ´ ´
  • 93. ´ 7.3. EL ALGORITMO DE LA SIMULACION 77 Inicio Declaración de variables (Panel Variables) tiempo, deltaTiempo, amplitud, frecuencia1, frecuencia2, desfase, x, y,maximo, minimo, n tiempo deltaTiempo amplitud frecuencia1 frecuencia2 desfase = 0.0; = 0.05; = 30.0; = 1.05; = 1.00; = 0.0; maximo = 1.2 * amplitud; minimo = -1.2 * amplitud; n = 150; Ventana Variables principales Inicialización de variables (columna Valor del panel Variables) Ventana Variables auxiliares Ejecución de los algoritmos del panel Inicialización x = amplitud * Math.cos( frecuencia1 * tiempo ); y = amplitud * Math.cos( frecuencia2 * tiempo + desfase ); Ejecución de los algoritmos del panel Ligaduras Representación gráfica de resultados (comunicación modelo vista) sí ¿Interacción del usuario? (comunicación vista modelo) Ejecución de la acción ejercida por el usuario no Ejecución de los algoritmos del panel Evolución tiempo = tiempo + deltaTiempo; Figura 7.5: Algoritmo de la simulacion del osciloscopio virtual. ´
  • 94. 78 ´ TEMA 7. PROGRAMACION DE UN OSCILOSCOPIO VIRTUAL CON EJS Figura 7.6: Seleccion del panel Variables. ´ Figura 7.7: Pagina Variables principales, dentro del panel Variables. ´ ´ ´ 7.4. Declaracion e inicializacion de las variables La declaracion de las variables se realiza en el panel Variables. Para acceder a este panel, ´ seleccione Modelo, en la regleta superior de la interfaz de Ejs, y Variables en la regleta situada debajo (vea la Figura 7.6). Dentro del panel Variables pueden crearse una o varias paginas, en las cuales se realiza ´ la declaracion de las variables y, opcionalmente, su inicializacion. En el caso del osciloscopio ´ ´ virtual van a definirse dos paginas: ´ – En una pagina, a la que se dara el nombre Variables principales, se declaran las variables ´ ´ que intervienen en el modelo matematico y las variables necesarias para su resolucion ´ ´ num´ rica: e Modelo matematico ´ Modelo en Ejs t x y A ω1 ω2 δ tiempo x y amplitud frecuencia1 frecuencia2 desfase deltaTiempo – En la segunda pagina, se declaran las variables empleadas para la definicion de la vista: ´ ´ maximo, minimo, n. A esta segunda pagina se le asignara el nombre: Variables auxiliares. ´ ´
  • 95. ´ ´ 7.4. DECLARACION E INICIALIZACION DE LAS VARIABLES 79 Figura 7.8: Variables principales del modelo. Figura 7.9: Variables auxiliares del modelo. ´ Creacion de la p´ gina Variables principales. Para crear una nueva pagina de definicion de a ´ ´ variables, pulse con el raton sobre la frase “Pulse para crear una pagina”, que aparece en el ´ ´ panel Variables . A consecuencia de ello, se abre una ventana, en la que debe asignar un nombre a la pagina ´ de variables que esta a punto de crear. D´ le el nombre Variables principales. Una vez hecho ´ e esto, la interfaz de Ejs presenta el aspecto mostrado en la Figura 7.7. ´ Creacion de la p´ gina Variables auxiliares. Para anadir una nueva pagina de definicion a ˜ ´ ´ de variables, debe pincharse con el boton derecho del raton sobre la lengueta de la pagina ´ ´ ¨ ´ de variables ya existente y a continuacion, en el menu desplegable que aparece (como el ´ ´ mostrado en la Figura 7.3), haga clic con el raton sobre A˜ adir una pagina. ´ n ´ Se abre una ventana en la cual debe especificar el nombre de la nueva pagina de definicion ´ ´ de variables. Asigne a esta nueva pagina que esta creando el nombre Variables auxiliares. ´ ´ ´ ´ Declaracion e inicializacion. En las Figura 7.8 y 7.9 se muestran la declaracion e iniciali´ zacion de las variables en las ventanas Variables principales y Variables auxiliares respectiva´ mente. El significado de cada uno de los campos se explico en la Seccion 5.4. ´ ´ El panel Inicializacion. En el ejemplo del osciloscopio virtual, se ha asignado un valor inicial ´ (en la columna Valor) a cada una de las variables . El modelo ha quedado convenientemente inicializado y por ello no es preciso introducir ninguna informacion en el panel Inicializacion. ´ ´
  • 96. ´ TEMA 7. PROGRAMACION DE UN OSCILOSCOPIO VIRTUAL CON EJS 80 ´ 7.5. Programacion del modelo ´ Evolucion De acuerdo con el algoritmo de la simulacion del osciloscopio virtual mostrado en la Figura ´ 7.5, solo hay una ecuacion de evolucion: ´ ´ ´ tiempo = tiempo + deltaT iempo (7.5) El modelo del osciloscopio no contiene ecuaciones diferenciales, y por ese motivo el usuario debe programar expl´citamente el avance en el tiempo de la simulacion. ı ´ Para definir la ecuacion de evolucion (7.5), haga clic sobre el subpanel con el letrero Pulse ´ ´ para crear una pagina. ´ Se abre un ventana, en la cual debe especificarse el nombre que se asigna a la nueva pagina que se va a crear. Por ejemplo, dele a la pagina el nombre Avance en el tiempo. Escriba ´ ´ la Ecuacion (7.5) tal como se muestra en la Figura 7.10. Observe que la ecuacion finaliza con ´ ´ un punto y coma (;). Deje el boton Arranque tal como esta por defecto: activado. ´ ´ Ligaduras Las ecuaciones de ligadura del modelo del osciloscopio virtual son (7.1) y (7.2). Deben satisfacerse no solo durante la evolucion temporal de sistema, sino tambi´ n en caso de que ´ ´ e el usuario realice interactivamente (es decir, durante la ejecucion de la simulacion) cualquier ´ ´ cambio en el valor de algunos de los parametros (la amplitud, las frecuencia, el desfase, etc.). ´ Para escribir los algoritmos de ligadura es preciso hacer clic sobre el boton Ligaduras. La ´ interfaz de Ejs muestra un panel que contiene la frase Pulse para crear una pagina. Haga clic ´ con el raton sobre esta frase, con el fin de crear una pagina en la cual describir las ecuaciones ´ ´ (7.1) y (7.2). Asigne a esta pagina el nombre Calculo de la posicion. Una vez escritas las dos ´ ´ ´ ecuaciones de ligadura, la ventana tiene el aspecto mostrado en la Figura 7.11. ´ 7.6. Programacion de la vista En la Figura 7.12 se muestra el panel para la descripcion de la vista. La vista se crea ´ anadiendo elementos graficos, los cuales pueden estar alojados unos dentro de otros, con lo ˜ ´ cual la vista tiene estructura de arbol. Los elementos graficos que pueden contener a otros ´ ´ (hasta un maximo de 5) se denominan contenedores. Esta estructura de arbol se define en ´ ´ ´ la ventana superior izquierda del panel, que tiene el letrero Arbol de elementos (vea la Figura 7.12). En la parte derecha del panel se encuentran las clases de elementos graficos. . Se en´ cuentran en una ventana que tiene el letrero Elementos para la vista, la cual, a su vez, se encuentra subdividida en tres ventanas (vea la Figura 7.12): – Contenedores. – Basicos. ´ – Dibujo. Inspeccione usted mismo el contenido de estas tres ventanas. Observe que situandose con ´ el raton sobre cualquiera de los elementos obtiene un mensaje con informacion acerca de su ´ ´ finalidad. Para anadir a la vista un objeto de una determinada clase debe: ˜
  • 97. ´ 7.6. PROGRAMACION DE LA VISTA Figura 7.10: Descripcion de la expresion que define el avance en el tiempo. ´ ´ Figura 7.11: Ecuaciones de ligadura. 81
  • 98. ´ TEMA 7. PROGRAMACION DE UN OSCILOSCOPIO VIRTUAL CON EJS 82 En esta ventana se compone el Árbol de elementos de la vista Clases de elementos gráficos Figura 7.12: Panel para la descripcion de la vista. ´ Clase Ventana: Una ventana de pantalla Objeto de la clase Ventana, llamado Ventana_principal ´ Figura 7.13: Arbol de elementos. Clase PanelDibujo: Un contenedor 2D para elementos de dibujo Objeto de la clase PanelDibujo, llamado Pantalla ´ Figura 7.14: Arbol de elementos.
  • 99. ´ 7.6. PROGRAMACION DE LA VISTA 83 1. Seleccionar la clase de objeto grafico. Para ello, debe hacer clic con el raton sobre el icono ´ ´ de la clase de elemento grafico en cuestion. Este estara situado dentro de la ventana ´ ´ ´ Elementos para la vista. Al hacer esto, el icono queda inscrito en un recuadro oscuro, que senaliza que esa clase de elemento ha sido seleccionada y que a continuacion van a ˜ ´ crearse objetos graficos de esa clase. ´ 2. Definir los objetos de la clase anteriormente seleccionada. Para ello, debe hacer clic con el raton sobre el objeto grafico dentro del cual desee ubicar el objeto que esta a punto ´ ´ ´ ´ de crear. Puede crear tantos objetos como desee. Debera hacerlo en la ventana Arbol ´ de elementos. Observe que al situar el raton sobre cualquier punto de esta ventana, el ´ cursor adquiere la forma de una varilla magica. ´ Al crear un nuevo objeto, debe definir el valor de determinadas propiedades, tales como su nombre y su posicion espacial dentro del contenedor en el que esta ubicado. ´ ´ Al definir los nombres, debe tenerse en cuenta que los nombres de variables, metodos y ´ elementos de la vista deben ser unicos en toda la simulacion. ´ ´ A continuacion, se describe como crear la vista del osciloscopio virtual. ´ ´ Observe que en el arbol de elementos hay siempre un elemento ra´z, denominado Vista de ´ ı la simulacion, dentro del cual se ubican todos los objetos que componen la vista. ´ La vista del osciloscopio virtual va a consistir en una unica ventana, en la cual hay una ´ pantalla (donde se representa x frente a y) y los controles para la seleccion de las frecuencias ´ y el desfase. Por tanto, el primer paso es definir esta ventana. Para ello, hay que ubicar un elemento de la clase Ventana dentro del objeto Vista de la simulacion (vea la Figura 7.13). Los objetos de ´ la clase ventana son contenedores, dentro de cada uno de los cuales se pueden ubicar hasta cinco objetos. La definicion del objeto se realiza de la forma siguiente: ´ 1. Haga clic sobre la clase Ventana. 2. Haga clic sobre la frase Vista de la simulacion. Con ello esta indicando que el objeto que ´ ´ esta a punto de crear (de la clase Ventana) debe ubicarse dentro del objeto ra´z de la ´ ı vista. Al hacerlo, se abre una ventana, en la cual debe escribir el nombre del nuevo objeto. Dele el nombre Ventana principal. A continuacion, debe anadirse un objeto de una clase que sea capaz de albergar elementos ´ ˜ graficos: un objeto de la clase PanelDibujo (vea la Figura 7.14): ´ 1. Haga clic sobre el icono de la clase PanelDibujo, lo cual indica a Ejs que van a crearse objetos de esta clase. 2. A continuacion, haga clic con el raton sobre la frase Ventana principal. Al hacer esto, ´ ´ se esta ubicando un objeto del tipo PanelDibujo dentro del objeto contenedor Ventana ´ principal. Es preciso asignar valor a los siguientes parametros del objeto que esta creando: ´ ´ – Nombre del objeto. Se abre una ventana en la cual debe escribir el nombre del objeto que esta creando. Llamelo Pantalla. ´ ´ – Posicion del objeto Pantalla dentro del contenedor Ventana principal. Se abre otra ´ pantalla, en la cual debe indicarse la posicion del objeto. Se ofrecen 5 posibilidades ´ (recuerde que un contenedor puede contener hasta 5 objetos): arriba, abajo, izquierda, derecha y centro. Acepte la opcion por defecto: centro. El arbol de elementos ´ ´ tiene ahora el aspecto mostrado en la Figura 7.14 Situandose con el raton sobre el objeto reci´ n creado (es decir, sobre la palabra Pantalla) ´ ´ e y pulsando el boton derecho, se despliega un menu para la configuracion del objeto. Vea la ´ ´ ´ Figura 7.15. Seleccionando Propiedades en el Menu para Pantalla, se abre una pantalla como la mos´ trada en la Figura 7.16. Los valores de las propiedades que se muestran en la Figura 7.16 son los que aparecen por defecto.
  • 100. 84 ´ TEMA 7. PROGRAMACION DE UN OSCILOSCOPIO VIRTUAL CON EJS Figura 7.15: Menu del objeto Pantalla. ´ Figura 7.16: Menu de propiedades del objeto Pantalla (con valores por defecto). ´
  • 101. ´ 7.6. PROGRAMACION DE LA VISTA Figura 7.17: Menu de propiedades del objeto Pantalla una vez configurado. ´ ´ Figura 7.18: Arbol de elementos. Figura 7.19: Propiedades del objeto Representacion grafica. ´ ´ 85
  • 102. 86 ´ TEMA 7. PROGRAMACION DE UN OSCILOSCOPIO VIRTUAL CON EJS Es posible asignar a una propiedad, o bien un determinado valor constante, o bien asociarla con una variable del modelo, de modo que en cada instante la propiedad y la variable tomen el mismo valor. En este ejemplo, los valores maximo y m´nimo de la grafica van a asociarse con las varia´ ı ´ bles del modelo maximo y minimo respectivamente. Pueden seguirse los pasos siguientes: 1. Con el fin de asociar el valor m´nimo del eje horizontal de la grafica con la variable ı ´ minimo, pulse el icono con eslabones de cadena dibujados que esta situado a la derecha ´ de la propiedad M´nimo X. Se abre una ventana que muestra todas las variables del ı modelo. Haciendo doble clic sobre la variable minimo, queda asociada la propiedad M´nimo X con la variable minimo. ı 2. A continuacion, proceda de la misma forma, asociando la propiedad M´nimo Y con la ´ ı variable minimo. 3. De forma completamente analoga, asocie las propiedades Maximo X y Maximo Y con la ´ ´ ´ variable maximo. Una vez hechas las cuatro asociaciones propiedad – variable anteriormente descritas, la pagina de propiedades del objeto Pantalla tiene el aspecto mostrado en la Figura 7.17. ´ Finalmente, una vez definido el objeto Pantalla (es decir, un contenedor 2D de objetos de dibujo) es preciso ubicar en dicho contenedor un objeto de dibujo, que defina qu´ es lo que e debe dibujarse: 1. Seleccione la clase Traza. Se trata del sexto icono de la primera fila del panel Dibujo – Basicos. Posicionando el raton sobre el, se obtiene informacion acerca de su finalidad: ´ ´ ´ ´ Traza: una secuencia de puntos. 2. Haga clic con el raton sobre el objeto Pantalla. Con ello se crea un objeto del tipo Traza ´ y se ubica dentro del contenedor Pantalla. Dele al objeto del tipo Traza que esta creando ´ ´ ´ ´ el nombre Representacion grafica. Una vez hecho esto, el arbol de elementos tendra el ´ aspecto mostrado en la Figura 7.18. Para asignar valor a las propiedades del objeto Representacion grafica, situese con el ´ ´ ´ raton sobre el y pulse el boton derecho. Con ello se abre el menu para el objeto. Seleccione ´ ´ ´ ´ Propiedades. Realice las siguientes asociaciones entre propiedades y variables: – Indique que variables deben representarse. Para ello, enlace la propiedad X con la varia´ ble x y la propiedad Y con la variable y. – Indique cuantos puntos deben dibujarse. Para ello, enlace la propiedad Puntos con la ´ variable n. De esta forma, al comenzar la simulacion, Ejs dibuja el valor inicial de las va´ riables x e y, es decir, el punto (x (t = 0) , y (t = 0)). A continuacion, avanza un paso en el ´ tiempo, ∆t, recalcula x e y, y dibuja el correspondiente punto: (x (t = ∆t) , y (t = ∆t)). De esta forma, dibuja en la grafica n puntos: (x (t = 0) , y (t = 0)), (x (t = ∆t) , y (t = ∆t)), . . . , ´ (x (t = (n − 1) · ∆t) , y (t = (n − 1) · ∆t)). Una vez dibujados estos primeros n puntos,por cada nuevo punto que Ejs representa, borra el punto mas antiguo, de tal forma que en ´ todo momento la grafica consta de n puntos. ´ – Escoja el color de la l´nea. Puede definir que el color de la l´nea sea rojo, haciendo clic ı ı con el raton sobre el icono, situado a la derecha de la propiedad Color l´nea, que tiene ´ ı dibujado una mano sujetando un papel. Una vez realizados estos cambios, la ventana de propiedades tiene el aspecto mostrado en la Figura 7.19. Ya puede ejecutar el laboratorio virtual. Para ello, haga clic sobre el boton de ejecucion de ´ ´ la simulacion (el boton con el triangulo verde dibujado). En respuesta, se abre una ventana ´ ´ ´ en la que se representa la evolucion temporal de una figura de Lissajous (vea la Figura 7.20). ´ Observara que tal como se ha definido el laboratorio virtual hasta este punto, el usuario ´ no tiene ninguna posibilidad de interaccion con la simulacion. A continuacion, se describe ´ ´ ´ como anadir al laboratorio virtual algunas capacidades interactivas. ´ ˜
  • 103. ´ 7.7. PROGRAMACION DE LAS CAPACIDADES INTERACTIVAS 87 Figura 7.20: Traza de una figura de Lissajous. Clase Panel: Un panel contenedor básico Objeto de la clase Panel, llamado Panel_controles Figura 7.21: Creacion del objeto Panel controles. ´ ´ 7.7. Programacion de las capacidades interactivas En esta Seccion se explica como dotar al osciloscopio virtual de las dos capacidades ´ ´ interactivas siguientes: – Van a anadirse algunos botones que permitan al usuario seleccionar determinadas ˜ frecuencias y desfases, de entre un conjunto predeterminado de ellas, las cuales dan lugar a figuras de Lissajous vistosas. Cada boton correspondera con una determinada ´ ´ seleccion de las frecuencias y el desfase. ´ – Se colocaran casillas num´ ricas en las cuales el usuario podra escribir el valor de las ´ e ´ frecuencias y del desfase de las figuras que desea visualizar. En primer lugar, debe crear un objeto de la clase Panel y ubicarlo dentro de Ventana principal. El proposito de este nuevo objeto de la clase Panel es contener en su interior: ´ – Los tres botones: A, B y C. – Las casillas num´ ricas para seleccionar las dos frecuencias y el desfase. e Para ello: 1. Haga clic sobre el icono de la clase Panel. 2. Haga clic sobre la palabra Ventana principal. Llame Panel controles a este nuevo objeto de la clase Panel, y situelo en la posicion izquierda (de este modo, los controles quedaran ´ ´ ´ situados a la izquierda de la pantalla).
  • 104. 88 ´ TEMA 7. PROGRAMACION DE UN OSCILOSCOPIO VIRTUAL CON EJS Figura 7.22: Ventana para la definicion de m´ todos “propios” del usuario. ´ e Una vez hecho esto, el arbol de elementos graficos de la vista tiene el aspecto mostrado en ´ ´ la Figura 7.21. ´ Botones para la seleccion de determinadas figuras Para anadir un boton que realice una accion, tal como asignar determinados valores a las ˜ ´ ´ frecuencias y al desfase, es preciso realizar dos tareas: 1. Programar la accion a realizar cuando se pulse cada boton. Deben programarse m´ todos ´ ´ e en lenguaje Java (uno por cada boton) que realicen las acciones deseadas. La programa´ cion de estos m´ todos forma parte de la definicion del modelo. ´ e ´ 2. Incluir los tres botones en la vista y asociarle a cada uno su metodo. De este modo, cuando ´ se haga clic sobre un boton se ejecutara el m´ todo asociado, con lo cual se realizara la ´ ´ e ´ correspondiente accion. ´ Se pretenden programar los tres botones mostrados a continuacion: ´ Boton ´ ω1 ω2 ∆t n A 0.06981 0.08744 1 2000 B 0.19198 0.24443 1 2000 C 0.54105 0.38397 1 300 ´ La programacion de los m´ todos forma parte de la definicion del modelo. Pulse el boton e ´ ´ Modelo y a continuacion el boton Propio. La interfaz de Ejs adquiere al aspecto mostrado en ´ ´ la Figura 7.22. Para crear una pagina en la que definir un m´ todo, haga clic con el raton sobre la frase ´ e ´ Pulse para crear una pagina. Debe asignar un nombre a la nueva pagina. Por defecto, este ´ ´ nombre asignado a la pagina coincidira con el nombre del m´ todo que va a definir (salvo ´ ´ e quiza que el nombre del m´ todo comenzara con minusculas). ´ e ´ ´
  • 105. ´ 7.7. PROGRAMACION DE LAS CAPACIDADES INTERACTIVAS 89 Llame A a la pagina y a al m´ todo. Este m´ todo asignara a las variables los valores ´ e e ´ correspondientes al Boton A. En la Figura 7.23 se muestra la definicion del m´ todo. ´ ´ e De forma analoga, se definen otras dos paginas: ´ ´ – El m´ todo b en la pagina B. e ´ – El m´ todo c en la pagina C. e ´ Estos dos m´ todos definen las acciones que seran asociadas al Boton B y al C respectivae ´ ´ mente. En la Figura 7.24 se muestra el aspecto de la ventana tras definir los tres m´ todos. e ´ Una vez definidos los m´ todos, puede procederse a la definicion de los botones. Esto e debe hacerse en la vista. Para ello (ver la Figura 7.25): 1. Primeramente, es preciso definir un nuevo objeto de la clase Panel, dentro del cual se ubicaran los tres botones. A este nuevo objeto se le asigna el nombre de Panel botones, ´ y se situa en la posicion Arriba. La posicion de un objeto es su posicion dentro del ´ ´ ´ ´ contenedor en el que se encuentra. As´ pues, el objeto Panel botones esta situado dentro ı ´ del contenedor Panel controles, en la parte superior de este. ´ 2. Seguidamente, se definen tres objetos del tipo Boton y se ubican dentro del contenedor ´ Panel botones. A los objetos se les asigna los nombres A, B y C, y las posiciones Arriba, Centro y Abajo respectivamente. ´ Finalmente, debe realizarse la asociacion de los botones con las acciones. Situando el raton sobre el objeto A y pulsando el boton derecho del raton, se abre la ventana de ´ ´ ´ propiedades del elemento A. A la derecha de la propiedad Accion hay dos botones. Uno de ´ ellos tiene dibujado dos ruedas dentadas engranadas. Haciendo clic sobre este boton se abre ´ una ventana en la que se muestran todas las acciones que se encuentran disponibles en el modelo. Haciendo doble clic sobre a( ), se asocia el m´ todo a a la accion del boton. En la e ´ ´ Figura 7.26 se muestra la ventana de propiedades del elemento A. De forma completamente analoga, deben asociarse los m´ todos b y c con las acciones de ´ e los botones B y C respectivamente. Ejecutando el modelo, se observa que la vista del osciloscopio virtual tiene la apariencia mostrada en la Figura 7.27. ´ Inclusion de casillas num´ ricas e En este apartado se explica como anadir a la vista del osciloscopio virtual casillas num´ ri´ ˜ e cas, en las cuales el usuario pueda escribir los valores de las dos frecuencias y el desfase de las figuras de Lissojous que desee visualizar. Para ello, pueden seguirse los pasos siguientes (ver la Figura 7.28): 1. Crear un nuevo objeto de la clase Panel, ubicandolo dentro del contenedor Panel controles, ´ en la posicion Abajo. A este nuevo objeto se le llama Panel casillas. ´ 2. Crear tres objetos de la clase CampoNumerico y ubicarlos dentro del contenedor Panel casillas. Se asigna a los tres objetos los nombres Frecuencia1, Frecuencia2 y Desfase. Son situados en las posiciones Arriba, Centro y Abajo respectivamente. Finalmente, es preciso configurar los elementos Frecuencia1, Frecuencia2 y Desfase, de modo que cada uno de ellos quede enlazado a la correspondiente variable del modelo. Situese sobre Frecuencia1 y pulse el boton derecho del raton. Se despliega un menu (Menu pa´ ´ ´ ´ ´ ra Frecuencia1) en el cual debe seleccionar Propiedades. Se abre una ventana (Propiedades del elemento Frecuencia1) en la cual debe introducirse la informacion mostrada en la Figura ´ ´ 7.29. Esta es: – El valor de la propiedad Variable indica qu´ variable del modelo esta enlazada con el e ´ boton. Pulsando el boton con los eslabones dibujados, que se encuentra a la derecha ´ ´ de dicha propiedad, se abre una ventana en la que se muestran todas las variables del modelo. Haga doble clic sobre la variable frecuencia1, para enlazar el elemento grafico ´ con esta variable.
  • 106. 90 ´ TEMA 7. PROGRAMACION DE UN OSCILOSCOPIO VIRTUAL CON EJS Figura 7.23: M´ todo a, que se asociara con el Boton A. e ´ ´ Figura 7.24: M´ todos a, b y c, que se asociaran con los Botones A, B y C respectivamente. e ´
  • 107. ´ ´ 7.8. EJECUCION Y DISTRIBUCION DEL LABORATORIO VIRTUAL 91 Clase Boton: Un botón para acciones Objetos de la clase Boton, llamados A, B y C Figura 7.25: Botones A, B y C, ubicados dentro de Panel botones. – El valor de la propiedad Formato determina el formato con el que se muestra en la casilla el valor de la variable. – La propiedad Accion permite especificar que se ejecute un determinado m´ todo (de los ´ e predefinidos en Ejs o de los “propios” del usuario) cuando el usuario cambie interactivamente (es decir, durante la simulacion) el valor escrito en la casilla. Pulsando el boton ´ ´ con los eslabones dibujados, situado a la derecha de la propiedad, se abre una ventana mostrando los posibles m´ todos entre los cuales puede escoger. El m´ todo resetView() e e limpia la vista. De forma analoga pueden definirse las propiedades de los elementos Frecuencia2 y Desfa´ se. ´ ´ 7.8. Ejecucion y distribucion del laboratorio virtual Ejecutando de nuevo la simulacion, se obtiene la vista mostrada en la Figura 7.30. ´ Asimismo, observe que Ejs ha generado el documento lissajous.html (vea la Figura 7.31) en el directorio de trabajo (Simulations, por defecto). Ademas de desde la ventana principal de Ejs, y como un applet incluido en una pagina ´ ´ web, el laboratorio puede ejecutarse como una aplicacion Java independiente. Para ello, ´ habilite la opcion “Crear fichero BAT de ejecucion” en la ventana de configuracion de Ejs ´ ´ ´ (vea la Figura 4.7). Si una vez habilitada esta opcion vuelve a ejecutar la simulacion, vera que ´ ´ ´ Ejs ha creado en el directorio de trabajo el fichero lissajous.bat. Ejecute este fichero por lotes y observara que arranca la ejecucion del laboratorio virtual, abri´ ndose una ventana con la ´ ´ e vista del mismo (que es la mostrada en la Figura 7.30). Si desea distribuir este laboratorio, debe entregar, aparte de los ficheros mencionados anteriormente, una copia del directorio library, que debe situar en el mismo sitio que las simulaciones.
  • 108. 92 ´ TEMA 7. PROGRAMACION DE UN OSCILOSCOPIO VIRTUAL CON EJS Figura 7.26: Propiedades del elemento A. Figura 7.27: Vista del osciloscopio virtual. Clase Panel: Un panel contenedor básico Clase CampoNumerico: Un campo para mostrar y modificar un valor numérico Objetos de la clase CampoNumerico, llamados Frecuencia1, Frecuencia2 y Desfase Objeto de la clase Panel, llamado Panel_casillas ´ Figura 7.28: Arbol de elementos de la vista, con las tres casillas definidas.
  • 109. ´ ´ 7.8. EJECUCION Y DISTRIBUCION DEL LABORATORIO VIRTUAL 93 Figura 7.29: Menu para Frecuencia1: el boton se ha asociado con la variable frecuencia1. ´ ´ Figura 7.30: Vista del osciloscopio virtual. Figura 7.31: Documento lissajous.html visualizado con Netscape.
  • 110. 94 ´ TEMA 7. PROGRAMACION DE UN OSCILOSCOPIO VIRTUAL CON EJS
  • 111. Tema 8 Un laboratorio virtual para ilustrar el concepto de ciclo l´mite ı Objetivos: Una vez estudiado el contenido del tema deber´a saber: ı ´ ´ ´ • Incluir imagenes en las paginas de Introduccion. ´ ´ • Dise˜ ar el algoritmo de simulacion de un modelo dinamico, compuesto n unicamente por ecuaciones diferenciales ordinarias, y programar dicho ´ modelo en Ejs. ´ • Usar las clases de elementos graficos: PanelConEjes, Selector y Deslizador. 8.1. Modelo de un ciclo l´mite ı En este Tema se explica la programacion de un laboratorio virtual cuya finalidad es ilustrar ´ el concepto de ciclo l´mite. Un ciclo l´mite en el plano XY esta descrito por las ecuaciones ı ı ´ siguientes1 : K · x · 1 − x2 − y 2 dx dt = y+ dy dt = −x + x2 + y 2 K · y · 1 − x2 − y 2 x2 + y 2 (8.1) (8.2) donde las condiciones iniciales son: x (0) = x0 (8.3) y (0) = y0 (8.4) y donde K es un parametro del modelo, es decir, se supone que su valor no depende del ´ tiempo. 1 Este modelo esta extra´do del texto (MGA 1995) ´ ı 95
  • 112. 96 ´ TEMA 8. LABORATORIO VIRTUAL DEL CONCEPTO DE CICLO LIMITE El ciclo l´mite es un c´rculo de radio 1.0. Es decir, cualquiera que sean las condiciones ı ı iniciales para x e y (excepto x0 = y0 = 0), x2 + y 2 → 1 cuando t → ∞. El laboratorio virtual debera permitir al alumno modificar interactivamente: ´ – El valor del parametro K. ´ – El valor de las variables x e y. El laboratorio virtual debera mostrar la evolucion temporal del modelo en el plano XY ´ ´ (tendente hacia el c´rculo unidad) y la evolucion de las variables x e y frente al tiempo. ı ´ Este laboratorio esta disponible en el CD del curso. Se trata del fichero cicloLimite.xml, que ´ esta grabado en el directorio laboratoriosTexto. ´ ´ ´ 8.2. Descripcion de la introduccion En la Figura 8.1 se muestra la pagina de Introduccion del laboratorio. Las formulas se han ´ ´ ´ insertado en la pagina de Introduccion como imagenes. El procedimiento seguido en este caso ´ ´ ´ ha sido el siguiente: 1. Se ha escrito cada formula y se ha guardado como una imagen .gif. Las cuatro formulas ´ ´ empleadas en la introduccion estan en el directorio Simulations/laboratoriosTexto/Imagenes. ´ ´ 2. Se ha insertado cada formula en la pagina de Introduccion seleccionando en el menu de ´ ´ ´ ´ Ejs Insertar / Imagen... (vea la Figura 8.2). ´ 8.3. El algoritmo de la simulacion El paso previo a la programacion del modelo en Ejs es definir el algoritmo de la simulacion ´ ´ del laboratorio virtual. Esto es equivalente a especificar qu´ codigo debera ejecutarse en cada e ´ ´ uno de los paneles, teniendo en cuenta que el algoritmo de ejecucion gen´ rico de Ejs es el ´ e mostrado en la Figura 5.1. El modelo matematico del ciclo l´mite en el plano XY, descrito por las Ecs. (8.1) y (8.2), ´ ı esta compuesto por las variables siguientes: ´ – Dos variables de estado: x, y. – Un parametro: K. ´ El algoritmo para la simulacion de este modelo es el mostrado en la Figura 8.3. Las dos ´ ecuaciones diferenciales se escriben en una pagina EDO, en el panel Evolucion. El motivo por ´ ´ el cual la inicializacion de la variable tiempo y de las variables de estado se realiza en el panel ´ Inicializacion se explicara mas adelante, al describir la programacion de la vista. ´ ´ ´ ´ ´ ´ 8.4. Declaracion e inicializacion de las variables Para inicializar el modelo es preciso asignar valor a sus parametros (K, x0 , y0 ), a sus ´ variables de estado (x, y) y a la variable tiempo (t). En la Figura 8.4 se muestra la ventana del panel Variables, en la que se declaran las variables el modelo y se inicializan algunas de ellas: K, x0 e y0 . En el panel Inicializacion se ´ inicializaran el resto: x, y y t. ´
  • 113. ´ ´ 8.4. DECLARACION E INICIALIZACION DE LAS VARIABLES 97 Figura 8.1: Pagina de Introduccion del laboratorio virtual. ´ ´ Insertar una imagen Figura 8.2: Insercion de una imagen en la pagina de Introduccion. ´ ´ ´
  • 114. ´ TEMA 8. LABORATORIO VIRTUAL DEL CONCEPTO DE CICLO LIMITE 98 Inicio t, K, x0, y0, x, y, derx, dery, aux K = x0 = y0 = 1.0; 2.0; 2.0; t x y 0; x0; y0; = = = Declaración de variables (Panel Variables) Inicialización de variables (columna Valor del panel Variables) Ejecución de los algoritmos del panel Inicialización Ejecución de los algoritmos del panel Ligaduras Representación gráfica de resultados (comunicación modelo vista) sí ¿Interacción del usuario? (comunicación vista modelo) Ejecución de la acción ejercida por el usuario no Ejecución de los algoritmos del panel Evolución En una pagina EDO: d x / d t = y + x * K*(1–x*x–y*y)/Math.sqrt(x*x+y*y); d y / d t = -x + y * K*(1–x*x–y*y)/Math.sqrt(x*x+y*y); Figura 8.3: Algoritmo de la simulacion del laboratorio virtual. ´ Figura 8.4: Declaracion de las variables del modelo. ´
  • 115. ´ ´ 8.5. PROGRAMACION DE LA EVOLUCION 99 Figura 8.5: Pagina para la definicion de Ecuaciones Diferenciales Ordinarias (EDO). ´ ´ ´ ´ 8.5. Programacion de la evolucion En el panel Evolucion deben calcularse las variables de estado (x, y) mediante la integracion ´ ´ de sus derivadas. Para ello, va a usarse uno de los m´ todos de integracion que proporciona e ´ Ejs: el m´ todo del punto medio. e Recu´ rdese que en una pagina EDO de Ejs es preciso expresar las derivadas en funcion e ´ ´ unicamente de variables de estado, parametros y la variable tiempo. En este modelo, tal como ´ ´ viene descrito mediante las Ecs. (8.1) y (8.2), se satisface esta condicion. ´ Para definir las ecuaciones diferenciales, hay que hacer clic sobre la frase Pulse para crear una pagina EDO (vea la Figura 5.6). A continuacion hay que asignar un nombre a la pagina ´ ´ ´ EDO que acaba de crearse. Para seleccionar la variable de estado de cada ecuacion hay que situar el raton sobre ´ ´ la correspondiente casilla Estado, pulsar el boton de la derecha y, en el menu que aparece, ´ ´ seleccionar la opcion Seleccionar variable de estado. Entonces, se abre una ventana con todas ´ las variables del modelo y debe seleccionarse una de ellas. Una vez definidas las dos ecuaciones diferenciales del modelo matematico, la pagina EDO ´ ´ tiene el aspecto mostrado en la Figura 8.5 Puesto que el modelo contiene ecuaciones diferenciales, que han sido definidas en una pagina EDO, Ejs se encarga automaticamente de realizar los incrementos en la variable ´ ´ tiempo y no debe hacerlo el usuario (como suced´a en el modelo del osciloscopio). ı
  • 116. 100 ´ TEMA 8. LABORATORIO VIRTUAL DEL CONCEPTO DE CICLO LIMITE Figura 8.6: Seleccion del fichero StandardView2D.xml para abrirlo. ´ a) b) ´ Figura 8.7: a) Arbol de elementos de la Vista tras abrir StandardView2D.xml; b) Vista. ´ 8.6. Programacion de la vista Para programar la vista, se va a emplear una vista gen´ rica que esta incluida en la e ´ distribucion de Ejs2 . Pulsando el boton Abrir una simulacion existente (vea la Figura 3.1) ´ ´ ´ seleccione el fichero Simulations/ examples/TechnicalExamples/ StandardView2D.xml. Los ficheros .xml cuyo nombre comienza con el caracter subrayado ( ), como por ejemplo ´ StandardView2D.xml, tienen la propiedad siguiente: cuando desde Ejs se abren estos ficheros, su contenido se anade en el entorno de Ejs a lo que hubiera definido en el entorno en ˜ ese instante. Esta capacidad de Ejs permite la reutilizacion del codigo para la definicion de ´ ´ ´ los laboratorios virtuales. Al abrir el fichero StandardView2D.xml, se anaden elementos al arbol de elementos de la ˜ ´ Vista, el cual hasta este momento estaba vac´o. El contenido del panel Vista se muestra en ı 2 Las explicaciones para la programacion de la Vista estan basadas en el Tema 7 del texto (Esquembre 2002b). ´ ´
  • 117. ´ 8.6. PROGRAMACION DE LA VISTA 101 la Figura 8.7a. Consiste en una ventana (objeto MainFrame), de la clase Ventana, dentro del cual estan ubicados: ´ – Tres objetos (Play, Pause, Reset) de la clase Boton. Estos tres objetos estan ubicados ´ ´ dentro de un objeto de la clase Panel (PanelButtons), que a su vez esta ubicado dentro ´ de otro objeto (panel) de la clase Panel. – Un objeto (DrawingPanel) de la clase PanelDibujo, que es un contenedor 2D para elementos de dibujo. Si llegado este punto se ejecuta el laboratorio virtual, la vista tiene el aspecto mostrado en la Figura 8.7b. A continuacion, se describen las operaciones realizadas sobre la vista con el fin de com´ pletar su definicion. ´ Gr´ ficas x vs t, y vs t a Un objeto de la clase PanelConEjes resulta mas adecuado como contendedor de un con´ junto de trazas que un objeto de la clase PanelDibujo. Con el fin de sustituir el objeto DrawingPanel por un objeto de la clase PanelConEjes: 1. Se elimina el objeto DrawingPanel. Para ello debe situarse el raton sobre dicho objeto, ´ pulsar el boton derecho del raton y seleccionar Eliminar. ´ ´ 2. Se crea un objeto de la clase PanelConEjes. Para ello: – Se hace clic con el raton sobre el icono de la clase PanelConEjes. ´ – A continuacion, se hace clic sobre el elemento contenedor de la Vista (mainFrame) ´ en cuyo interior se desea ubicar el nuevo objeto. A este nuevo objeto, de la clase PanelConEjes, se le asigna el nombre: panel graficas vs tiempo. En la Figura 8.8 se muestra el arbol resultante de los elementos de la Vista. ´ Para modificar las propiedades del objeto panel graficas vs tiempo hay que situar el raton ´ sobre dicho objeto y pulsar el boton derecho del raton. Se abre un menu, en el que hay ´ ´ ´ que seleccionar: Propiedades. En la Figura 8.9a se muestra la ventana de propiedades ya particularizada a los valores adecuados, y en la Figura 8.9b la vista a que dan lugar. Para obtener la representacion grafica de x frente al tiempo e y frente al tiempo, deben ´ ´ crearse dos objetos de la clase Traza, a los que se asigna el nombre x vs t e y vs t, ubicados dentro del objeto panel graficas vs tiempo. El arbol de elementos resultante se muestra en la ´ Figura 8.10. En la Figura 8.11 se muestran las propiedades de los objetos x vs t e y vs t. Gr´ fica y vs x a De forma completamente analoga, se define un nuevo objeto de la clase PanelConEjes ´ y se ubica dentro del contenedor mainFrame. A este nuevo objeto se le da el nombre: panel grafica y vs x. Al igual que en el caso anterior, se crea un objeto de la clase Traza y se ubica dentro del objeto contenedor panel grafica y vs x. A este nuevo objeto se le da el nombre: y vs x. Al haber ubicado un nuevo objeto dentro del contenedor mainFrame, es preciso ampliar el tamano de la ventana de dicho contenedor. Colocando el raton sobre mainFrame y pulsando ˜ ´ el boton derecho del raton se abre un menu, en el cual hay que seleccionar Propiedades. Se ´ ´ ´ asigna a la propiedad Tama˜ o el valor mostrado en la Figura 8.12. n En la Figura 8.13a se muestra el arbol de los elementos de la Vista, y en la Figura 8.13b ´ la Vista del laboratorio, obtenida ejecutando la simulacion. ´ A continuacion se explica como anadir capacidades interactivas al laboratorio virtual. ´ ´ ˜
  • 118. 102 ´ TEMA 8. LABORATORIO VIRTUAL DEL CONCEPTO DE CICLO LIMITE PanelConEjes: Un contenedor de dibujo 2D con un sistema de ejes. Objeto panel_graficas_vs_tiempo, de la clase PanelConEjes. ´ Figura 8.8: Arbol de elementos de la Vista. a) b) Figura 8.9: a) Propiedades del objeto panel graficas vs tiempo; b) Vista. Traza: Una secuencia de puntos. Objetos x_vs_t e y_vs_t, de la clase Traza. ´ Figura 8.10: Arbol de elementos de la Vista.
  • 119. ´ 8.6. PROGRAMACION DE LA VISTA a) b) Figura 8.11: Propiedades de los objetos: a) x vs t; b) y vs t. Figura 8.12: Propiedades del objeto mainFrame. 103
  • 120. 104 a) ´ TEMA 8. LABORATORIO VIRTUAL DEL CONCEPTO DE CICLO LIMITE b) ´ Figura 8.13: a) Arbol de elementos de la Vista; b) Vista del laboratorio. ´ 8.7. Programacion de las capacidades interactivas El objetivo de este laboratorio es mostrar al alumno que, con independencia de los valores iniciales que asigne a x e y, la trayectoria del modelo en el plano XY tiende a describir una circunferencia de radio unidad, centrada en el origen. Para ello, el laboratorio debe permitir que el alumno detenga la simulacion, modifique los ´ valores de x e y, y reanude la simulacion. ´ Una forma de programar esta capacidad es: 1. Definir dos objetos de la clase Deslizador, que llamaremos slider x y slider y, de modo que los valores que hay seleccionados en estos sliders se escriban en los parametros x0 ´ e y0 respectivamente. 2. Definir un boton, que llamaremos Inicializa, cuya accion asociada es: ´ ´ – Limpiar la Vista. – Asignarle a la variable tiempo (t) el valor cero. – Escribir los valores de los parametros x0 e y0 en las variables x e y respectivamente. ´ De esta forma, cuando el usuario pulse el boton Inicializa, los valores fijados en los ´ sliders slider x y slider y se escriben en las variables x e y respectivamente. El procedimiento para programar en Ejs esta capacidad interactiva es el descrito a continuacion. ´ ´ Definicion de los deslizadores (sliders). Los dos objetos de la clase Deslizador van a ubicarse dentro de un objeto contenedor de la clase VentanaDialogo, que se situa dentro del elemento ´ ra´z del arbol de elementos: Vista de la simulacion. A este objeto contenedor se le da el ı ´ ´ nombre: VentanaDialogoSliders. De esta forma se pretende crear una ventana independiente que contenga los dos sliders. En la Figura 8.14 se muestra el arbol de elementos de la vista. ´ En la ventana de propiedades del objeto VentanaDialogoSliders, se define (vea la Figura 8.15): – Distribucion. La distribucion de la ventana de dialogo, que en este caso es una rejilla con ´ ´ ´ dos filas y una columna. – Visible. La ventana es visible cuando el valor de esta propiedad es true. Si se escribe el nombre de una variable en la casilla de la propiedad Visible, la ventana de dialogo ´ sera visible cuando dicha variable valga true. ´ – Situacion, Tama˜ o, etc. ´ n
  • 121. ´ 8.7. PROGRAMACION DE LAS CAPACIDADES INTERACTIVAS 105 VentanaDialogo: Una ventana de diálogo Deslizador: Un deslizador para visualizar y modificar un valor Objetos slider_x, slider_y, de la clase Deslizador Objeto VentanaDialogoSliders, de la clase VentanaDialogo ´ Figura 8.14: Arbol de elementos de la Vista. Figura 8.15: Propiedades el objeto VentanaDialogoSliders, de la clase VentanaDialogo. Figura 8.16: Propiedades el objeto slider x, de la clase Deslizador.
  • 122. 106 ´ TEMA 8. LABORATORIO VIRTUAL DEL CONCEPTO DE CICLO LIMITE Figura 8.17: Panel Inicializacion. ´ Muestra la lista de acciones predefinidas y permite seleccionar una de ellas a) b) Figura 8.18: a) Propiedades el objeto Inicializa, de la clase Boton; b) Acciones predefinidas. En la Figura 8.16 se muestran las propiedades del objeto slider x, de la clase Deslizador. Observe que la propiedad Variable del objeto es la variable con la que se “enlaza” el deslizador: – Mientras el usuario no interacciona con el deslizador, este tiene en cada momento una ´ posicion que se corresponde con el valor que tiene la variable en ese instante. Si dicha ´ variable es un parametro, como es el caso de x0 e y0 , la posicion del deslizador no ´ ´ cambia. Si fueran variables evaluadas del modelo (como x e y), la posicion del deslizador ´ cambiar´a en el tiempo siguiendo la evolucion de dichas variables. ı ´ – Cuando el usuario interacciona con el deslizador, cambiando su posicion, el valor corres´ pondiente a dicha posicion se escribe en la variable asociada. En este caso, cuando ´ el usuario cambia la posicion del deslizador slider x, el nuevo valor se escribe en el ´ parametro x0 . ´ Las propiedades del objeto slider y son analogas a las del objeto slider x. ´ ´ ´ ´ Programacion del codigo de la accion. Cuando el usuario pulse el boton Inicializa de´ bera ejecutarse la accion: ´ ´ _resetView(); t = 0; x = x0; y = y0; Puesto que la accion (t = 0, x = x0 , y = y0 ) se realiza tambi´ n durante la inicializacion del ´ e ´ modelo, pueden moverse estas tres asignaciones del panel Variables al panel Inicializacion. ´ Las variables t, x e y siguen siendo declaradas en el panel Variables, pero no se les signa ningun valor. ´
  • 123. ´ 8.7. PROGRAMACION DE LAS CAPACIDADES INTERACTIVAS 107 La ventaja de programar el codigo de la accion en el panel Inicializacion, en lugar de ´ ´ ´ programarla como un m´ todo propio del usuario, es que puede usarse (para definir la accion e ´ asociada al boton Inicializa) uno de los m´ todos predefinidos de Ejs: initialize(). Este m´ todo ´ e e lee los valores de la Vista y ejecuta el panel Inicializacion. ´ En la Figura 8.17 se muestra el codigo del panel Inicializacion. ´ ´ ´ ´ Definicion del boton Inicializa. Se anade un nuevo objeto de la clase Boton y se ubica ˜ dentro del contenedor panelButtons. En la ventana de propiedades de este nuevo boton, que ´ se llamara Inicializa, se da a la propiedad Accion el valor siguiente: initialize() (vea la Figura ´ ´ 8.18a). Puede obtenerse una lista de las acciones predefinidas en Ejs haciendo clic sobre el icono que esta situado a la derecha de la casilla de la propiedad Accion y que tiene el dibujo de dos ´ ´ ruedas dentadas engranadas. En la Figura 8.18b se muestra esta lista de acciones. Mostrar/Ocultar la ventana de di´ logo. Finalmente, se va a anadir debajo de los botones a ˜ una casilla que permita mostrar y ocultar la ventana de dialogo que contiene los dos desliza´ dores. En el menu de propiedades del objeto VentanaDialogoSliders (vea la Figura 8.15) aparece ´ la propiedad Visible, a la que se asigno el valor true. ´ Ahora va a declararse una variable boolena (muestraVentanaSliders), a la cual se asignara valor en la Vista (mediante un objeto de la clase Selector), y que se asignara a la ´ ´ propiedad Visible del objeto VentanaDialogoSliders. Los pasos seguidos son los siguientes: 1. Definir la variable muestraVentanaSliders en el panel Variables (vea la Figura 8.19). La definicion se realiza en una nueva pagina, llamada Variables Vista. Es una buena ´ ´ practica realizar la definicion de las variables del modelo matematico y de la Vista en ´ ´ ´ ventanas separadas, ya que facilita la comprension. ´ 2. En la Vista, definir un objeto de la clase Selector y ubicarlo dentro del objeto panelButtons. A este nuevo objeto se le ha dado el nombre SelectorVentanaDialogoSliders. El arbol ´ de elementos resultante se muestra en la Figura 8.20. 3. En las propiedades del objeto SelectorVentanaDialogoSliders, asignar a la propiedad Variable la variable muestraVentanaSliders (vea la Figura 8.21). Con ello, el objeto grafico ´ escribe en la variable el valor true o false, en funcion de que est´ seleccionado o no. ´ e 4. Finalmente, asignar la variable muestraVentanaSliders a la propiedad Visible del objeto VentanaDialogoSliders. Finalmente, la vista de la simulacion tiene el aspecto mostrado en la Figura 8.22. ´
  • 124. 108 ´ TEMA 8. LABORATORIO VIRTUAL DEL CONCEPTO DE CICLO LIMITE Figura 8.19: Declaracion e inicializacion de la variable muestraVentanaSliders. ´ ´ Selector: Un selector para valores booleanos Objeto SelectorVentanaDialogoSliders, de la clase Selector ´ Figura 8.20: Arbol de elementos. Figura 8.21: Propiedades del objeto SelectorVentanaDialogoSliders, de la clase Selector.
  • 125. ´ 8.7. PROGRAMACION DE LAS CAPACIDADES INTERACTIVAS Figura 8.22: Vista del laboratorio virtual del ciclo l´mite. ı 109
  • 126. 110 ´ TEMA 8. LABORATORIO VIRTUAL DEL CONCEPTO DE CICLO LIMITE
  • 127. Tema 9 Principio de Arqu´medes ı Objetivos: Una vez estudiado el contenido del tema deber´a saber: ı ´ ´ • Dise˜ ar el algoritmo de simulacion de un modelo estatico y programar el n modelo usando Ejs. ´ • Usar el elemento grafico Poligono. Este laboratorio virtual esta disponible en el CD del curso. Se trata de Arquimedes.xml, y ´ se encuentra en el directorio laboratoriosTexto. ´ 9.1. Descripcion del modelo matem´ tico a Se pretende modelar el comportamiento de un objeto cubico, de lado L y masa m su´ mergido parcialmente en un l´quido de densidad L . En este modelo se van a despreciar las ı variaciones en la altura del l´quido que se producen al variar la proporcion del objeto que se ı ´ encuentra sumergida. Las fuerzas ejercidas sobre el objeto cubico se representan en la Figura ´ 9.1. Estas son: P eso = Empuje = m·g L2 · h · L ·g (9.1) (9.2) Siendo g la aceleracion de la gravedad y h la longitud del lado del cubo que se encuentra su´ mergido en el l´quido. Para el calculo del empuje se ha empleado el principio de Arqu´medes. ı ´ ı En equilibrio la suma de fuerzas sobre el objeto es nula, es decir, el empuje es igual al peso del objeto. La condicion de equilibrio es pues: ´ m·g L2 · h · = L ·g (9.3) El maximo valor del empuje se produce cuando el cuerpo est´ totalmente sumergido en el ´ e l´quido (h = L). Si el peso del objeto es mayor que el valor de empuje para h = L, el objeto se ı hundira sometido a una aceleracion. Si el peso es menor que el valor de empuje para h = L el ´ ´ cuerpo flotara. El cuerpo flotara mientras se cumpla la siguiente condicion: ´ ´ ´ m ≤ L 111 · L3 (9.4)
  • 128. ´ TEMA 9. PRINCIPIO DE ARQUIMEDES 112 ρ Figura 9.1: Diagrama del modelo. Ecuaciones del modelo: Se ha elegido como variable interactiva del modelo la masa del solido (m). Al variar la masa ´ del solido variara el volumen del solido sumergido y, por tanto, el valor de h. Despejamos de ´ ´ ´ la Ec. (9.3) el valor de h: m 2 L·L h = (9.5) Ademas, se ha de satisfacer la condicion de la Ec. (9.4) para que el cuerpo flote. Para ´ ´ que se cumpla esta condicion se va a limitar el valor maximo de la masa (mmax ) que puede ´ ´ introducir el usuario. Este valor maximo se calcula aplicando la siguiente expresion: ´ ´ mmax = L · L3 (9.6) ´ 9.2. El algoritmo de la simulacion Antes de programar el modelo, vamos a agrupar las variables del modelo en parametros, ´ variables de estado y algebraicas. De este modo obtenemos la siguiente clasificacion: ´ – Parametros del modelo que no vamos a permitir que el usuario var´e en tiempo de ´ ı simulacion: longitud del lado del cubo (L), densidad del l´quido ( L ). A partir de estos ´ ı dos parametros se calcula un tercer parametro: la masa maxima del objeto (mmax ). Para ´ ´ ´ ello se emplea la Ec. (9.6). – Parametros del modelo que vamos a permitir que el usuario var´e en tiempo de simula´ ı cion: masa del solido (m). ´ ´ – Variable algebraica del modelo: h. Esta variable algebraica se calcula a partir de la Ec. (9.5). Hay que inicializar, dando un valor adecuado, los parametros siguientes: L, L y m. El ´ resto de variables se calculan a partir de las anteriores variables y no precisan que se les de un valor inicial. En la Figura 9.2 se muestra una posible forma de programar el laboratorio. ´ ´ 9.3. Declaracion e inicializacion de las variables Hemos creado una pagina de variables que hemos llamado variablesModelo donde se ´ declaran e inicializan todas las variables del modelo matematico. El valor de mmax se calcula ´
  • 129. ´ 9.4. PROGRAMACION DE LAS LIGADURAS 113 Inicio m, L, Declaración de variables (Panel Variables) L, mmax, h m L = 500; = 1; = 1000; L mmax = L*L^3; Inicialización de variables (columna Valor del panel Variables) Ejecución de los algoritmos del panel Inicialización = Ejecución de los algoritmos del panel Ligaduras ρ ⋅ Representación gráfica de resultados (comunicación modelo vista) sí ¿Interacción del usuario? (comunicación vista modelo) no Ejecución de la acción ejercida por el usuario Ejecución de los algoritmos del panel Evolución Figura 9.2: Algoritmo de simulacion. ´ empleando para ello la Ec. (9.6). Solo se necesita calcular este valor una vez ya que depende ´ de parametros que no van a variar durante la simulacion. En la Figura 9.3 se muestra la ´ ´ apariencia final de la ventana variablesModelo. ´ 9.4. Programacion de las ligaduras Vamos a crear una pagina de Ligaduras donde se va a calcular el valor de h empleando ´ para ello la Ec. (9.5). El aspecto final de la pagina se muestra en la Figura 9.4. ´ ´ 9.5. Programacion de la vista ´ Elementos del arbol de la vista del modelo: Vamos a realizar en la vista una representacion del modelo en dos dimensiones similar a la ´ de la Figura 9.1. El objeto cubico y el l´quido se van a representar empleando dos cuadrados. ´ ı El arbol de la vista del modelo va a contener los siguiente elementos (ver Figura 9.5): ´ – Elemento de la clase “Ventana”. – Elemento de la clase “Panel” que contiene a su vez un elemento de la clase “Deslizador” para permitir al usuario modificar el valor de la densidad de la masa del objeto.
  • 130. 114 ´ TEMA 9. PRINCIPIO DE ARQUIMEDES Figura 9.3: Ventana VariablesModelo, del panel Variables. Figura 9.4: Ventana Pagina Ligaduras, del panel Ligaduras. ´ – Elemento de la clase “PanelDibujo” que contiene dos elementos de la clase “Poligono” para representar el objeto cubico y el l´quido. ´ ı A continuacion, se describen brevemente algunas de las propiedades del elemento grafico ´ ´ Poligono. Clase de elemento gr´ fico Poligono. Este elemento de la Vista se encuentra en el panel a de dibujo Grafos y cuerpos. Se trata de un pol´gono cerrado, que se especifica mediante ı las coordenadas de sus v´ rtices: (x, y, z) o (x, y), segun se est´ trabajando en tres o en dos e ´ e dimensiones. Se han empleado dos pol´gonos usando dos objetos de la clase Poligono que se han ubicado ı dentro del objeto DrawingPanel. Para cada uno de estos pol´gonos, se han especificado las propiedades siguientes: ı – El numero de sus v´ rtices. ´ e – Dos vectores, con las posiciones x e y de los v´ rtices del pol´gono. e ı En la Figura 9.8 se muestran las propiedades del poligono Liquido: – En la propiedad Puntos se ha introducido el numero de v´ rtices del pol´gono. ´ e ı – En las propiedades X e Y, se han escrito las coordenadas x e y respectivamente de los v´ rtices del pol´gono. e ı ´ Conjunto de variables necesarias para la definicion de la Vista del modelo: Se ha creado una nueva pagina de Variables para definir las variables que necesitamos ´ emplear para confeccionar la vista del modelo. A esta pagina le hemos dado el nombre de ´ VariablesVisualizacion (ver Figura 9.6). ´
  • 131. ´ 9.5. PROGRAMACION DE LA VISTA 115 ´ Figura 9.5: Arbol de Elementos de la Vista. Figura 9.6: Ventana variablesVisualizacion, del panel Variables. Para definir los v´ rtices del cuadrado que representa al objeto necesitamos declarar dos e vectores de dimension 4. Usaremos un vector para especificar las coordenadas x de los ´ v´ rtices del pol´gono y otro para las coordenas y. Del mismo modo, necesitamos dos vectores e ı de dimension 4 para especificar las coordenadas x e y de los v´ rtices del cuadrado que ´ e representa el l´quido. ı Para inicializar estos vectores creamos una nueva pagina Inicializacion en la seccion ´ ´ ´ Modelo que hemos llamado “Pagina Inicio” (ver Figura 9.7). ´ En la ventana Pagina Ligaduras del panel Ligaduras anadimos el codigo necesario para ´ ˜ ´ calcular el valor de la coordenada y de los v´ rtices del pol´gono que representa el objeto en e ı funcion de la variable h (ver Figura 9.4). ´ La vista del laboratorio se muestra en la Figura 9.9.
  • 132. 116 ´ TEMA 9. PRINCIPIO DE ARQUIMEDES Figura 9.7: Ventana Pagina Inicio, del panel Inicializacion. ´ ´ Figura 9.8: Propiedades objeto Liquido, de la clase Poligono. Figura 9.9: Vista del laboratorio virtual.
  • 133. Tema 10 P´ ndulo simple e Objetivos: Una vez estudiado el contenido del tema deber´a saber: ı ´ ´ • Dise˜ ar el algoritmo de simulacion de un modelo dinamico que contiene n ecuaciones diferenciales ordinarias y ecuaciones algebraicas y programar el modelo usando Ejs. ´ • Usar las clases de elementos graficos: Etiqueta, Flecha, Particula. Este laboratorio virtual esta disponible en el CD del curso. Se trata de PenduloSimple.xml, ´ y se encuentra en el directorio laboratoriosTexto. ´ 10.1. Descripcion del modelo matem´ tico a El movimiento armonico simple (M.A.S.) en una dimension viene descrito matematicamen´ ´ ´ te por la siguiente ecuacion diferencial: ´ d2 x dt2 = −K 2 · x (10.1) Este tipo de movimiento se produce siempre que una fuerza sea proporcional al desplazamiento y de sentido opuesto. Ejemplos de sistemas que describen este movimiento son el formado por una masa unida a un resorte o un p´ ndulo simple siempre que el angulo que e ´ forma la lenteja del p´ ndulo con la vertical no sea demasiado grande. e En este laboratorio virtual se estudia el movimiento de un p´ ndulo simple como ejemplo e de M.A.S. La lenteja del p´ ndulo tiene masa m y la longitud de la cuerda es L. e Para describir correctamente el modelo matematico establecemos un sistema de referencia ´ y un criterio de signos. Escogemos el eje y como el vertical y con su sentido positivo hacia abajo y el eje x como horizontal como se muestra en la Figura 10.1. El modelo matematico del ´ p´ ndulo simple linealizado en torno a la posicion de equilibrio viene descrito por la siguiente e ´ ecuacion: ´ d2 θ dt2 = −K 2 · θ 117 (10.2)
  • 134. ´ TEMA 10. PENDULO SIMPLE 118 O x L y Figura 10.1: Diagrama p´ ndulo simple. e La posicion de la lenteja del p´ ndulo en coordenadas cartesianas conocido θ se calcula ´ e empleando las siguientes ecuaciones: x y = L · cos (θ) = L · sin (θ) (10.3) (10.4) ´ ´ 10.2. Descripcion de la introduccion En la Figura 10.2 se muestra la pagina de introduccion del laboratorio. ´ ´ ´ 10.3. El algoritmo de la simulacion El modelo matematico esta compuesto por las ecuaciones 10.2, 10.3 y 10.4. Se van ´ ´ a emplear los algoritmos num´ ricos de resolucion de ecuaciones diferenciales ordinarias e ´ (EDO) de Ejs. Para ello hay que transformar la ecuacion diferencial de 2o orden 10.2 en ´ dos ecuaciones diferenciales de primer orden. dθ dt dω dt = ω (10.5) = −K 2 · θ (10.6) Este modelo consta de las siguientes variables: – Variables de estado, es decir, aquellas variables que aparecen derivadas y que, por tanto, necesitan inicializacion: θ y ω. El valor de estas variables se calcula mediante ´ integracion. ´ – Parametros, es decir, variables cuyo valor permanece constante durante la simulacion a ´ ´ menos que sea modificado por el usuario: K, g y L. El parametro K se calcula a partir ´ de los parametros g y L. ´ – Variables algebraicas x e y. Las variables algebraicas son aquellas que, no apareciendo derivadas, dependen de su calculo en el instante de evaluacion del valor de otras ´ ´ variables.
  • 135. ´ ´ 10.4. DECLARACION E INICIALIZACION DE VARIABLES 119 Figura 10.2: Pagina de Introduccion. ´ ´ – Variable que representa el tiempo: time. En este laboratorio se usan los m´ todos de e resolucion de ODE de Ejs para realizar la integracion del sistema de EDO y obtener ´ ´ as´ el valor de θ y ω en cada instante de tiempo. Al emplear los m´ todos de resolucion de ı e ´ ODE de Ejs, la gestion de la variable tiempo es llevada a cabo por este. ´ ´ – Parametro dt: paso de integracion que sera utilizado por el algoritmo de resolucion de ´ ´ ´ ´ ODE de Ejs. El algoritmo de la simulacion se muestra en la Figura 10.3. ´ ´ ´ 10.4. Declaracion e inicializacion de variables Hemos seguido la metodolog´a de distinguir entre las variables empleadas en el modelo ı matematico y el resto. De este modo, la declaracion e inicializacion de las variables se ha ´ ´ ´ realizado en dos ventanas del panel Variables: – VariablesModelo, en la que se han declarado las variables del modelo matematico (vea la ´ Figura 10.4). – VariablesVisualizacion, en la que se han declarado las variables empleadas para la definicion de la vista. ´ ´ 10.5. Programacion del modelo El modelo matematico esta formado por un sistema de dos ecuaciones diferenciales y ´ ´ dos ecuaciones algebraicas. El sistema de ecuaciones diferenciales se introduce en el panel Evolucion. En el panel Ligaduras introducimos las ecuaciones algebraicas (10.3) y (10.4). ´ ´ Panel Evolucion En el panel Evolucion deben calcularse las variables de estado mediante la integracion de ´ ´ sus derivadas. Para ello, va a usarse uno de los m´ todos de integracion que proporciona Ejs: e ´
  • 136. ´ TEMA 10. PENDULO SIMPLE 120 Inicio Declaración de variables (Panel Variables) m, L, g, dt, time, θ, ω, K, x, y m = L = g = dt = time 1; 1; 9.8; 0.1; = 0; θ = pi/8; ω = 0; Inicialización de variables (columna Valor del panel Variables) = Ejecución de los algoritmos del panel Inicialización x = L ⋅ cos(θ ) y = L ⋅ sen(θ ) Ejecución de los algoritmos del panel Ligaduras Representación gráfica de resultados (comunicación modelo vista) sí ¿Interacción del usuario? (comunicación vista modelo) Ejecución de la acción ejercida por el usuario no Ejecución de los algoritmos del panel Evolución θ =ω ω =− ⋅θ Figura 10.3: Algoritmo de simulacion. ´ el m´ todo de Runge-Kutta de cuarto orden. La pagina EDO tiene el aspecto mostrado en la e ´ Figura 10.5. Puesto que el modelo contiene ecuaciones diferenciales, que han sido definidas en una pagina EDO, Ejs se encarga automaticamente de realizar los incrementos en la variable ´ ´ tiempo. Panel Ligaduras Una vez escritas las ecuaciones de ligadura, la ventana tiene el aspecto mostrado en la Figura 10.6. ´ 10.6. Programacion de la vista La vista del laboratorio virtual disenada se compone de dos ventanas: una ventana prin˜ cipal y una ventana secundaria (vea Figura 10.7). La parte central de la ventana principal contiene una representacion grafica del sistema. ´ ´ La parte inferior de dicha ventana contiene elementos graficos que permiten al usuario ´ controlar la simulacion e interactuar con el modelo. La ventana secundaria contiene un ´ grafico mostrando la evolucion temporal de θ. ´ ´
  • 137. ´ 10.6. PROGRAMACION DE LA VISTA Figura 10.4: Pagina VariablesModelo, del panel Variable. ´ Figura 10.5: Pagina de Evolucion. ´ ´ Figura 10.6: Pagina de Ligaduras. ´ 121
  • 138. 122 ´ TEMA 10. PENDULO SIMPLE Figura 10.7: Vista del laboratorio del p´ ndulo simple. e ´ Figura 10.8: Arbol de elementos de la vista
  • 139. ´ 10.6. PROGRAMACION DE LA VISTA 123 En la Figura 10.8 se muestra el arbol de elementos correspondiente a la vista del labora´ torio virtual. Los elementos de la clase Boton nos permiten controlar la simulacion (parar, reanudar y ´ volver la simulacion a su estado inicial). Los elementos de la clase CampoNumerico permiten ´ al usuario introducir nuevos valores de parametros y variables. Los elementos de la clase ´ Selector se usan para fijar el valor de una variable logica a true o false segun est´ n o no ´ ´ e seleccionados. Al introducir dicha variable en la propiedad Visible de un elemento grafico se ´ muestra u oculta dicho elemento segun la variable est´ a true o false. ´ e En la programacion del laboratorio virtual se han usado tres elementos nuevos: Particula, ´ Flecha y Texto. A continuacion se van a describir sus caracter´sticas fundamentales as´ como ´ ı ı las propiedades de estos elementos que hemos modificado para programar la vista. Clase de elemento gr´ fico Etiqueta. a Se han empleado los objetos EtiquetaL y EtiquetaTheta, de la clase Etiqueta. Una Etiqueta es un elemento basico que se usa para presentar un texto o una imagen (o ambos) con ´ proposito decorativo o informativo. ´ La clase Etiqueta se encuentra en el panel de dibujo llamado Basicos. ´ En la Figura 10.9 se muestran las propiedades del objeto EtiquetaL. A continuacion, se ´ describen algunas propiedades del objeto EtiquetaL: – Texto: texto mostrado por el elemento. Puede ser una constante o cualquier variable de tipo String. – Imagen: ruta donde se localiza la imagen que deseamos que muestre el elemento. La imagen debe tener formato gif o gif animado. La ruta puede ser una direccion de internet ´ o la relativa a un directorio de trabajo. – Alineacion: indica la forma de alinear el texto en el elemento grafico. Puede ser left ´ ´ (izquierda), center (centro) o right (derecha). Clase de elemento gr´ fico Flecha. a Se ha empleado el objeto Cuerda, de la clase Flecha, para representar la cuerda del p´ ndulo. La clase Flecha se encuentra en el panel de dibujo llamado Grafos y cuerpos. e En la Figura 10.10 se muestran las propiedades del objeto Cuerda. A continuacion, se ´ describen las propiedades del objeto Cuerda que se han especificado: – X: coordenada x del origen del vector. – Y: coordenada y del origen del vector. – Tama˜ o X: tamano del vector segun el eje x. n ˜ ´ – Tama˜ o Y: tamano del vector segun el eje y. n ˜ ´ – Activo: indica mediante un valor booleano si este componente es interactivo o no. – Estilo: tipo de vector a dibujar. Puede ser una flecha (flecha), un segmento (segmento) o un segmento con un cuadrado en el punto final (cajita). Clase de elemento gr´ fico Particula. a Se ha empleado el objeto Particula, de la clase Particula, para representar la lenteja del p´ ndulo. La clase Particula se encuentra en el panel de dibujo llamado Basicos. Una Particula e ´ es un elemento de dibujo que dibuja una forma geom´ trica sencilla, un rectangulo o una e ´ elipse, en unas determinadas coordenadas del padre. La ubicacion de este elemento en el ´ padre se especifica dando las coordenadas de su centro y el tamano del objeto segun cada ˜ ´ uno de los ejes coordenados. En la Figura 10.11 se muestran las propiedades del objeto Particula. A continuacion, se ´ describen las propiedades del objeto Particula que se han especificado: – X: coordenada x del centro del elemento. – Y: coordenada y del centro del elemento. – Tama˜ o X: tamano del vector segun el eje x. n ˜ ´ – Tama˜ o Y: tamano del vector segun el eje y. n ˜ ´ – Activo: indica mediante un valor booleano si este componente es interactivo o no.
  • 140. 124 ´ TEMA 10. PENDULO SIMPLE Figura 10.9: Propiedades del objeto EtiquetaL, de la clase Etiqueta. Figura 10.10: Propiedades del objeto Cuerda, de la clase Flecha. Figura 10.11: Propiedades del objeto Particula, de la clase Particula.
  • 141. 10.7. ALGUNAS ACTIVIDADES PROPUESTAS 125 – Estilo: forma grafica de dibujo del elemento. Haciendo clic sobre el boton senalado en la ´ ´ ˜ Figura 10.11 aparece una ventana que nos permite seleccionar entre 5 formas graficas ´ de dibujo para el elemento: elipse, elipse con ejes, rectangulo, rectangulo con bordes ´ ´ redondeados y un punto. 10.7. Algunas actividades propuestas A continuacion se describen alguna de las actividades que puede realizar el alumno ´ usando el laboratorio. • Describe como depende la frecuencia de oscilacion del p´ ndulo de la masa y longitud ´ ´ e del mismo. • ¿Depende la frecuencia de oscilacion de la amplitud del movimiento del p´ ndulo? ´ e • Modifica las ecuaciones del modelo para tener en cuenta las no linealidades del modelo del p´ ndulo simple. Para ello sustituya en la ecuacion (6) θ por sin θ. ¿Depende ahora la e ´ frecuencia de oscilacion de la amplitud del movimiento del p´ ndulo? ´ e • Anade una ventana con un grafico donde se visualice la trayectoria del p´ ndulo simple. ˜ ´ e
  • 143. Tema 11 ´ Conduccion de calor a trav´ s de e una pared multiple ´ Objetivos: Una vez estudiado el contenido del tema deber´a saber: ı ´ ´ • Dise˜ ar el algoritmo de simulacion de un modelo estatico y programar el n modelo usando Ejs. ´ • Usar las clases de elementos graficos: Poligono, Flecha y Texto. Este laboratorio virtual esta disponible en el CD del curso. Se trata de ParedMulticapa.xml, ´ y se encuentra en el directorio laboratoriosTexto. ´ 11.1. Descripcion del modelo matem´ tico a El objetivo de este laboratorio virtual es ilustrar el calculo del flujo de calor por conduccion ´ ´ a trav´ s de la pared multiple de una camara frigor´fica1 . Se considera la conduccion de calor e ´ ´ ı ´ unicamente en una dimension y en el estado estacionario. ´ ´ La pared de la camara frigor´fica esta compuesta de tres capas de diferente material, de ´ ı ´ espesores LA , LB y LC . La temperatura de la superficie interior de la pared de la camara se ´ denomina T1 y la temperatura de la superficie exterior T4 (vea la Figura 11.1). Se supone que la transferencia de calor se produce en el estacionario y se desea calcular el flujo de calor por unidad de superficie (qx ) y la temperatura en las interfaces entre los diferentes materiales (T2 , T3 ). En la Figura 11.1 se representa el circuito t´ rmico equivalente. e En primera aproximacion, se supone que las conductividades t´ rmicas de los materiales ´ e (κA , κB , κC ) son independientes de las demas variables del modelo. Son parametros, a los que ´ ´ se asignan los valores siguientes al inicializar el modelo: 1 Este modelo matematico, correspondiente a la pared de una camara frigor´fica, esta extra´do del texto (Cutlip ´ ´ ı ´ ı Shacham 1999). 127
  • 144. ´ ´ ´ TEMA 11. CONDUCCION DE CALOR A TRAVES DE UNA PARED MULTIPLE i h ˆ… g †‡ j „… ‚ sv wvuts r qp de •” κ “• ˆ… ‰ ˜ ’ ’ κ fe ‰ †‡ ƒ t €v t s y xv ‘ ‘ „… k sv wvuts r qp ™ κ t €vt sy s 128 j – k — Figura 11.1: Transferencia de calor a trav´ s de una pared multiple. e ´ κA κB = = 0.1510 0.0433 W · m−1 · K −1 W · m−1 · K −1 (11.1) (11.2) κC = 0.7620 W · m−1 · K −1 (11.3) Los espesores de las capas que componen la pared tambi´ n son parametros del modelo. e ´ Se les asignan los valores siguientes: LA LB = = 0.015 0.100 m m (11.4) (11.5) LC = 0.075 m (11.6) La superficie de la pared (S) se considera constante. Puesto que se desea calcular el flujo de calor por unidad de superficie (qx ), el parametro S no interviene en las ecuaciones del ´ modelo, ya que Qx qx = (11.7) S El modelo matematico esta descrito por las ecuaciones siguientes: ´ ´ T1 − T2 = T2 − T3 = T3 − T4 = LA · qx κA LB · qx κB LC · qx κC (11.8) (11.9) (11.10) ´ ´ 11.2. Descripcion de la introduccion En la Figura 11.2 se muestra la introduccion del laboratorio virtual. La figura y las ´ formulas que han sido incluidas en la introduccion son imagenes, en formato .gif, que estan ´ ´ ´ ´ guardadas en el directorio Simulations/laboratoriosTexto/Imagenes.
  • 145. ´ 11.3. EL ALGORITMO DE LA SIMULACION 129 Figura 11.2: Introduccion del laboratorio virtual. ´ ´ 11.3. El algoritmo de la simulacion El modelo matematico esta compuesto por las Ecuaciones (11.8) – (11.10). Sus variables ´ ´ se clasifican de la forma siguiente: – Variables conocidas: los parametros del modelo (T1 , T4 , LA , LB , LC , κA , κB , κC ). ´ – Variables desconocidas: las variables algebraicas (T2 , T3 , qx ). Por tratarse de un modelo en el estado estacionario, la variable tiempo no juega ningun ´ papel, y por ello no se incluye en el modelo. Se comprueba que el sistema no es singular, ya que puede asociarse una incognita con ´ cada ecuacion: ´ T1 − T2 = T2 − T3 = T3 − T4 = LA · qx κA LB · qx κB LC · qx κC → T2 (11.11) → T3 (11.12) → qx (11.13) Al asignar la causalidad computacional, se observa que cada ecuacion contiene dos incogni´ ´ tas, es decir, que el modelo es un sistema de tres ecuaciones con tres incognitas que debe ´ ser resuelto. Resolviendo y ordenando las tres ecuaciones, de modo que las tres incognitas ´ puedan calcularse secuencialmente, una tras otra, se obtiene:
  • 146. 130 ´ ´ ´ TEMA 11. CONDUCCION DE CALOR A TRAVES DE UNA PARED MULTIPLE Inicio Declaración de variables (Panel Variables) ka, kb, kc, La, Lb, Lc, T1, T2, T3, T4, qx ka kb kc La Lb Lc T1 T4 = 0.151; = 0.0433; = 0.762; = 0.015; = 0.100; = 0.075; = -18; = 25; Inicialización de variables (columna Valor del panel Variables) Ejecución de los algoritmos del panel Inicialización qx T2 T3 Ejecución de los algoritmos del panel Ligaduras = ( T1 – T4 ) / ( La/ka + Lb/kb + Lc/kc ); = T1 - La/ka * qx; = T4 + Lc/kc * qx; Representación gráfica de resultados (comunicación modelo vista) sí ¿Interacción del usuario? (comunicación vista modelo) no Ejecución de los algoritmos del panel Evolución Ejecución de la acción ejercida por el usuario Figura 11.3: Algoritmo de la simulacion. ´ T1 − T4 B + LB + κ [qx ] = [T2 ] = T1 − [T3 ] LA κA LC κC LA · qx κA LC = T4 + · qx κC (11.14) (11.15) (11.16) La Ecuacion (11.14) se obtiene de forma sencilla sumando las tres Ecuaciones (11.8) – ´ (11.10). Se ha adoptado la notacion habitual: se escribe entre corchetes la variable a evaluar ´ de cada ecuacion. ´ Las Asignaciones (11.14) – (11.16) deben escribirse, en el modelo en Ejs, en el panel Ligaduras. El algoritmo de la simulacion se muestra en la Figura 11.3. ´
  • 147. ´ ´ 11.4. DECLARACION E INICIALIZACION DE LAS VARIABLES 131 Figura 11.4: Ventana VariablesModeloMatematico, del panel Variables. ´ ´ 11.4. Declaracion e inicializacion de las variables La declaracion e inicializacion de las variables se ha realizado en dos ventanas del panel ´ ´ Variables: – VariablesModeloMatematico, en la que se han declarado las variables del modelo matematico (vea la Figura 11.4). ´ – VariablesVisualizacion, en la que se han declarado las variables empleadas para la ´ definicion de la vista. ´ Es una practica muy recomendable separar la definicion de ambos tipos de variables, ya ´ ´ que facilita la comprension del modelo. ´ ´ 11.5. Programacion de la vista En la Figura 11.5 se muestra la vista del laboratorio virtual. A continuacion, se explica ´ qu´ elementos graficos componen la vista. e ´ En la Figura 11.6 puede verse el arbol de los elementos de la vista. Se compone de: ´ – La ventana mainFrame (ventana principal), que contiene un panel con botones para reinicializar la simulacion, y cambiar la temperatura interior (T1 ) y exterior de la pared ´ multicapa (T4 ). Tambi´ n, contiene elementos que permiten mostrar y ocultar las dos e ventanas de dialogo VentanaParam y VentanaPlots. ´ En la parte central de la ventana principal esta representada esquematicamente la pared ´ ´ y se muestran los valores de la temperatura de las caras interior (T1 ) y exterior (T4 ) de la pared, as´ como el flujo de calor por unidad de superficie (qx ). ı – Dos ventanas de dialogo: – La ventana de dialogo VentanaParam, que permite modificar los valores de los ´ parametros del modelo (conductividades t´ rmicas y espesores de las capas de la ´ e pared).
  • 148. 132 ´ ´ ´ TEMA 11. CONDUCCION DE CALOR A TRAVES DE UNA PARED MULTIPLE Figura 11.5: Vista del laboratorio virtual. ´ Figura 11.6: Arbol de elementos de la vista. Figura 11.7: Propiedades del objeto ParedA, de la clase Poligono.
  • 149. ´ 11.5. PROGRAMACION DE LA VISTA 133 – La ventana de dialogo VentanaPlots, que muestra un grafico del perfil de tempera´ ´ turas a lo largo de la pared. A continuacion, se explican los aspectos mas relevantes de la programacion de cada una ´ ´ ´ estas ventanas. Las explicaciones se centraran en las clases de elementos graficos que no se ´ ´ han empleado en los laboratorios virtuales explicados en los temas precedentes. ´ Programacion de la ventana mainFrame En la programacion de la ventana mainFrame se han empleado tres clases de elementos ´ graficos de la vista que no han sido explicados hasta el momento: Poligono, Flecha, y Texto. ´ Clase de elemento gr´ fico Poligono. Este elemento de la vista se encuentra en el panel a de dibujo Grafos y cuerpos. Se trata de un pol´gono cerrado, que se especifica mediante ı las coordenadas de sus v´ rtices: (x, y, z) o (x, y), segun se est´ trabajando en tres o en dos e ´ e dimensiones. Se han empleado tres pol´gonos con el fin de dibujar las tres capas que forman la pared. ı Estos tres objetos de la clase Poligono se han ubicado dentro del objeto DrawingPanel. Para cada uno de estos pol´gonos, se han especificado las propiedades siguientes: ı – El numero de sus v´ rtices. ´ e – Dos vectores, con las posiciones x e y de los v´ rtices del pol´gono. e ı En la Figura 11.7 se muestran las propiedades del poligono ParedA: – En la propiedad Puntos se ha introducido el numero de v´ rtices del pol´gono. ´ e ı – En las propiedades X e Y, se han escrito las coordenadas x e y respectivamente de los v´ rtices del pol´gono. e ı Clase de elemento gr´ fico Flecha. Se ha empleado el objeto Flechax, de la clase Flecha, a para representar el sentido del flujo de calor cuando el signo de este es positivo. La clase ´ Flecha se encuentra en el panel de dibujo llamado Grafos y cuerpos. En la Figura 11.11 se muestran las propiedades del objeto Flechax. A continuacion, se ´ describen las propiedades del objeto Flechax que se han especificado: – X: coordenada x del origen del vector. – Y: coordenada y del origen del vector. – Tama˜ o X: tamano del vector segun el eje x. n ˜ ´ – Tama˜ o Y: tamano del vector segun el eje y. n ˜ ´ – Activo: indica mediante un valor booleano si este componente es interactivo o no. – Estilo: tipo de vector a dibujar. Puede ser una flecha (flecha), un segmento (segmento) o un segmento con un cuadrado en el punto final (cajita). Clase de elemento gr´ fico Texto. Esta clase de elemento se encuentra en el panel de dibujo a Basicos. Los objetos de esta clase muestran un conjunto de caracteres en una posicion que ´ ´ se especifica al definir el objeto. Dicha cadena de caracteres puede ser una constante o una variable, pero en cualquier caso debe ser del tipo String. Los objetos de la clase Texto deben ubicarse en el interior de un contenedor. Por ejemplo, de la clase PanelDibujo o PanelConEjes. Para mostrar el valor de la variable qx , se ha creado un objeto de la clase Texto, al que se ha dado el nombre TextoQ y se ha ubicado dentro del objeto drawingPanel. En la Figura 11.8 se muestran las propiedades de este elemento de la vista: – Las propiedades X e Y indican las coordenadas x e y respectivamente donde se va a mostrar la cadena de caracteres. Estos campos se han enlazado con variables definidas en la ventana de variables VariablesVisualizacion. ´ – La propiedad Texto contiene la variable de tipo String (QxText) que ha sido definida en la ventana de variables VariablesDibujo.
  • 150. 134 ´ ´ ´ TEMA 11. CONDUCCION DE CALOR A TRAVES DE UNA PARED MULTIPLE Figura 11.8: Propiedades del objeto TextoQ, de la clase Texto. ´ Figura 11.9: Arbol de elementos de la vista. Figura 11.10: Propiedades del objeto PerfilTemp, de la clase Poligono. Figura 11.11: Propiedades del objeto Flechax, de la clase Flecha.
  • 151. ´ 11.5. PROGRAMACION DE LA VISTA 135 ´ Programacion de la ventana de di´ logo VentanaPlots a La venta de dialogo VentanaPlots muestra un grafico con el perfil de temperatura (vea la ´ ´ Figura 11.5). Para crear este grafico se han incorporado en la vista los elementos que se muestran en la ´ Figura 11.9. Como el perfil de temperaturas no depende del tiempo de evolucion, se ha empleado el ´ objeto PerfilTemp, de la clase Poligono, para realizar la grafica. Las propiedades de dicho ´ objeto se muestran en la Figura 11.10: – En la propiedad Puntos se ha introducido el numero de v´ rtices del pol´gono, que es ´ e ı igual al numero de capas mas uno. ´ ´ – En las propiedades X e Y, se han escrito las coordenadas x e y respectivamente de los v´ rtices del pol´gono. En este caso, dos vectores (x, T) que contienen las posiciones de e ı inicio y finalizacion de cada capa y la temperatura en dichas posiciones. ´ – Se ha asignado a la propiedad Cerrado el valor false, para que Ejs no conecte el primer punto del pol´gono con el ultimo. ı ´
  • 152. 136 ´ ´ ´ TEMA 11. CONDUCCION DE CALOR A TRAVES DE UNA PARED MULTIPLE
  • 153. Tema 12 Laboratorio virtual de un sistema mec´ nico a Objetivos: Una vez estudiado el contenido del tema deber´a saber: ı ´ • Realizar modelos matematicos sencillos con estructura variable y analizar su causalidad computacional. • Declarar e inicializar variables de tipo array. ´ • Discutir algunos conceptos fundamentales acerca de la deteccion de ´ eventos en la simulacion de modelos h´bridos. ı • Discutir el concepto de modelo con ´ndice superior. ı • Definir elementos en la vista de las clases Cubo, Muelle, Part´cula, ı Pol´gono y Flecha. ı ´ • Definir metodos propios sencillos. Los laboratorios virtuales explicados en este tema estan disponibles en el CD del curso. Se ´ trata de los ficheros SistemaMecanicoSimplificado.xml y SistemaMecanicoCompleto.xml, que se encuentran en el directorio laboratoriosTexto. ´ ´ 12.1. Descripcion del sistema e hipotesis de modelado En la Figura 12.1a se muestra la representacion esquematica del sistema mecanico a ´ ´ ´ modelar. Esta compuesto por los componentes siguientes: • Un muelle de masa despreciable, muelle1, que esta unido por su extremo izquierdo a ´ una pared inmovil y por su extremo derecho al objeto masa1. ´ • Un amortiguador: amortiguador. • Dos objetos con masa: – Un objeto, masa1, de masa constante M1 , que desliza sobre el suelo sin rozamiento. – Un segundo objeto, masa2, de masa constante M2 , que desliza con rozamiento sobre la superficie superior el objeto masa1. El objetivo planteado en este tema es el modelado del sistema mecanico mostrado en la ´ Figura 12.1a, y la programacion de un laboratorio virtual que ilustre su funcionamiento. ´ 137
  • 154. ´ TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO 138 pared fija pared fija fricción masa 2 muelle 1 muelle 1 masa 1 masa 1 amortiguador amortiguador rozamiento despreciable mn suelo, permanece fijo suelo, permanece fijo rozamiento despreciable ml Figura 12.1: a) Sistema mecanico a modelar; b) Un subsistema de este. ´ ´ Para hacer mas sencillas las explicaciones, en primer lugar se va a estudiar una version ´ ´ simplificada del sistema, que es la mostrada en la Figura 12.1b. Obs´ rvese que este subsise tema del sistema original no contiene el objeto masa2. 12.2. Modelado f´sico de los componentes ı En esta seccion se describe el modelado de los componentes del sistema mostrado en la ´ Figura 12.1b. Estos son: la pared, el muelle, el amortiguador y el objeto masa1. Modelado del muelle Se supone que el muelle tienen masa despreciable, y que se comporta de forma elastica, ´ obedeciendo la Ley de Hooke. Esta ley establece que: la fuerza (F ) que ejerce el muelle sobre cualquiera de sus extremos es igual a una constante de proporcionalidad, k, multiplicada por la diferencia entre su elongacion ´ (x) y su elongacion natural (x0 ). ´ F = k · (x − x0 ) (Ley de Hooke) (12.1) La constante de proporcionalidad, k, se denomina constante del muelle, y tiene unidades de fuerza dividida por distancia: N/m. La elongacion natural (x0 ) del muelle es su longitud cuando la fuerza ejercida es cero. ´ Obs´ rvese, que la fuerza que ejerce el muelle tiene el sentido tendente a restablecer su e elongacion natural (vea la Figura 12.2). ´ El muelle es un componente almacenador de energ´a: ı – Cuando su elongacion se aleja de la elongacion natural, acumula energ´a. ´ ´ ı – Cuando su elongacion tiende a la elongacion natural, cede energ´a. ´ ´ ı Modelado del amortiguador Se supone que el amortiguador no tiene masa y que presenta un comportamiento lineal: – La magnitud de la fuerza ejercida por el amortiguador (F ) en cada uno de sus extremos es proporcional a la velocidad relativa entre ambos extremos, es decir, a la derivada de la elongacion (v = dx ). ´ dt
  • 155. ´ 12.2. MODELADO FISICO DE LOS COMPONENTES (elongación natural) o p o r = r u u q r u q r p r r = q st = 139 u Figura 12.2: La fuerza ejercida por el muelle tiende a restablecer su elongacion natural. ´ xw zw v y xw zw v = = v y v { (elongación) }~ }| Figura 12.3: Amortiguador: a) elongacion; b) fuerza ejercida sobre sus extremos. ´ ⋅ = ‚  € ƒ =  m …† …„ Figura 12.4: Relacion constitutiva de: a) el objeto masa1; b) la pared. ´ ‡ ˆ = ‰ Figura 12.5: Sistema de referencia y criterio de signos.
  • 156. 140 ´ TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO – El sentido de la fuerza es aquel que se opone a que se produzca el cambio en la elongacion. ´ La relacion constitutiva del amortiguador es: ´ F =b· dx dt (12.2) La elongacion del amortiguador (x) es la distancia que existe en cada instante entre sus ´ extremos (vea la Figura 12.3a). Para ilustrar el comportamiento del amortiguador, consideremos que tiene uno de sus extremos unido a una pared fija. En la Figura 12.3b se muestra el sentido de la fuerza ejercida por el amortiguador sobre sus extremos. Obs´ rvese que: e – En el extremo libre, la velocidad del mismo y la fuerza aplicada por el amortiguador llevan sentido opuesto. – La fuerza que ejerce el amortiguador sobre la pared tiene la misma magnitud, pero sentido opuesto, a la fuerza que ejerce el amortiguador sobre su extremo libre. – Por otra parte, la fuerza que ejerce la pared sobre el extremo del amortiguador es igual, y de sentido opuesto, a la que ejerce el extremo fijo del amortiguador sobre la pared. Al contrario de lo que sucede con el muelle, que es un elemento almacenador de energ´a ı potencial, el amortiguador es un componente que disipa energ´a, es decir, transforma la ı energ´a cin´ tica en calor. ı e Modelado del objeto masa1 La masa del objeto permanece constante. En consecuencia, la fuerza neta aplicada sobre el objeto (F ) es igual a su masa (m) multiplicada por la aceleracion (a) que adquiere (ver la ´ Figura 12.4a): F =m·a (12.3) Modelado de la pared La fuerza que ejerce la pared sobre el punto de conexion a ella de cualquier componente ´ es la necesaria para que este permanezca en reposo (ver la Figura 12.4b). Por tanto, este ´ componente se describe mediante la ecuacion: ´ v=0 (12.4) 12.3. Modelo matem´ tico del sistema simplificado a En primer lugar, se va a establecer el sistema de referencia y el criterio de signos para la posicion, la velocidad, la aceleracion y la fuerza. A continuacion, se formulara el modelo ´ ´ ´ ´ matematico del sistema. ´ Referencia y criterio de signos Debe fijarse el sistema de referencia para la coordenada espacial: se considera que el origen de coordenadas se encuentra en la pared (vea la Figura 12.5). La coordenada espacial de los puntos situados a la derecha de la pared tiene signo positivo, mientras que los puntos situados a la izquierda de la pared tienen signo negativo.
  • 157. ´ 12.3. MODELO MATEMATICO DEL SISTEMA SIMPLIFICADO 141 Š Œ Ž  Š‹ Figura 12.6: La coordenada del punto de conexion se denomina x1 . ´ La velocidad y la fuerza se consideraran positivas cuando lleven el sentido creciente de la ´ coordenada espacial. Modelo matem´ tico a Sean x1 , v1 y a1 la posicion, la velocidad y la aceleracion respectivamente del punto ´ ´ de conexion entre el muelle, el amortiguador y el objeto masa1. Este punto se encuentra ´ senalado mediante un c´rculo negro en la Figura 12.6. ˜ ı En el punto de conexion entre el muelle, el amortiguador y el objeto masa1, se verifica ´ que la fuerza ejercida sobre masa1 (Fmasa1 ) es igual a la suma de las fuerzas ejercidas por el muelle (Fmuelle1 ) y por el amortiguador (Famortiguador ) sobre dicho punto de conexion: ´ Fmasa1 Fmuelle1 Famortiguador = Fmuelle1 + Famortiguador (12.5) = −k1 · (x1 − x0,muelle1 ) = −b · v1 (12.6) (12.7) Asimismo, la fuerza ejercida sobre el objeto masa1 y la aceleracion que adquiere este, ´ ´ estan relacionadas de la forma siguiente: ´ Fmasa1 = m1 · a1 (12.8) El modelo se completa, teniendo en cuenta que la velocidad es la derivada de la posicion, ´ y que la aceleracion es la derivada de la velocidad. ´ El modelo matematico del sistema mostrado en la Figura 12.1a es el siguiente: ´ Fmasa1 Fmuelle1 Famortiguador Fmasa1 dx1 dt dv1 dt = Fmuelle1 + Famortiguador = −k1 · (x1 − x0,muelle1 ) = −b · v1 (12.10) (12.11) = m 1 · a1 (12.12) = v1 (12.13) = a1 (12.14) Las variables de este modelo pueden clasificarse de la manera siguiente: – Parametros: m1 , k1 , b, x0,muelle1 . ´ (12.9)
  • 158. ´ TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO 142 – Variables de estado: x1 , v1 . – Variables algebraicas: a1 , Fmasa1 , Fmuelle1 , Famortiguador . Obs´ rvese que el modelo esta compuesto por 6 ecuaciones y 6 incognitas: las 4 variables e ´ ´ algebraicas mas las 2 derivadas de los estados (derx1 y derv1). ´ ´ 12.4. El algoritmo de la simulacion El primer paso para plantear el algoritmo de la simulacion del modelo es asignar su ´ causalidad computacional. Esto permitira determinar en qu´ orden debe resolverse el modelo. ´ e ´ Asignacion de la causalidad computacional La asignacion de la causalidad computacional consiste en decidir qu´ incognita se evalua ´ e ´ ´ de cada ecuacion del modelo, y en qu´ orden deben resolverse las ecuaciones del modelo. ´ e La causalidad computacional de un modelo se decide siguiendo las dos reglas siguientes: – Regla 1: Si una ecuacion posee una unica incognita, debe emplearse para calcularla. ´ ´ ´ – Regla 2: Si una incognita aparece solo en una ecuacion, debe calcularse de ella. ´ ´ ´ Si el modelo matematico esta correctamente planteado (es decir, no es singular), entonces ´ ´ aplicando estas dos reglas se llega a una de estas dos posibles situaciones: 1. Todas las incognitas pueden ser resueltas una tras otra, en secuencia. ´ 2. Se llega a un punto en que todas las ecuaciones tienen al menos 2 incognitas, y todas las ´ incognitas aparecen al menos en dos ecuaciones. Es decir, el modelo contiene sistemas ´ de ecuaciones que deben resolverse simultaneamente. Estos sistemas de ecuaciones se ´ denominan lazos algebraicos. Asignemos la causalidad computacional al modelo formado por las Ecs. (12.9) – (12.14). Para ello, en primer lugar, sustituimos las derivadas de las variables de estado por variables auxiliares: – Sustituimos – Sustituimos dx1 dt dv1 dt por la variable derx1 . por la variable derv1 . Realizada esta sustitucion, se obtiene el modelo siguiente: ´ Fmasa1 Fmuelle1 Famortiguador Fmasa1 derx1 derv1 = Fmuelle1 + Famortiguador (12.15) = −k1 · (x1 − x0,muelle1 ) = −b · v1 (12.16) (12.17) = m 1 · a1 = v1 (12.18) (12.19) = a1 (12.20) Las incognitas a calcular son las variables: a1 , Fmasa1 , Fmuelle1 , Famortiguador , derx1 , derv1 . ´ A continuacion, se aplican las dos reglas anteriormente descritas a las Ecs. (12.15) – ´ (12.20). A medida que se asigna la causalidad computacional, se va senalando la variable a ˜ evaluar de cada ecuacion incluy´ ndola entre corchetes. ´ e 1. La variable Fmuelle1 es la unica incognita de la Ec. (12.16). Por tanto: ´ ´ [Fmuelle1 ] = −k1 · (x1 − x0,muelle1 ) (12.21) 2. La variable Famortiguador es la unica incognita de la Ec. (12.17): ´ ´ [Famortiguador ] = −b · v1 (12.22)
  • 159. ´ 12.4. EL ALGORITMO DE LA SIMULACION 143 3. La variable derx1 es la unica incognita de la Ec. (12.19): ´ ´ [derx1 ] = v1 (12.23) 4. Una vez Fmuelle1 y Famortiguador han sido calculadas de las Ecs. (12.16) y (12.17) respectivamente, la unica incognita que hay en la Ec. (12.15) es Fmasa1 : ´ ´ [Fmasa1 ] = Fmuelle1 + Famortiguador (12.24) 5. Una vez calculada Fmasa1 , la unica incognita de la Ec. (12.18) es a1 : ´ ´ Fmasa1 = m1 · [a1 ] (12.25) 6. Una vez calculada a1 , la unica incognita de la Ec. (12.20) es derv1 . ´ ´ [derv1 ] = a1 (12.26) As´ pues, despejando al lazo izquierdo de la igualdad la variable a evaluar de cada ecuaı cion, y ordenando las ecuaciones de modo que puedan ser resueltas en secuencia, se obtiene ´ el modelo ordenado y resuelto: [Fmuelle1 ] = −k1 · (x1 − x0,muelle1 ) [Famortiguador ] = −b · v1 [derx1 ] = v1 [Fmasa1 ] = Fmuelle1 + Famortiguador Fmasa1 [a1 ] = m1 [derv1 ] = a1 (12.27) (12.28) (12.29) (12.30) (12.31) (12.32) ´ El algoritmo de la simulacion Para escribir las ecuaciones diferenciales (12.29) y (12.32) en una pagina EDO del panel ´ Evolucion de Ejs, es preciso expresar las derivadas en funcion de las variables de estado, los ´ ´ parametros y el tiempo. ´ A partir del modelo ordenado y resuelto (es decir, de las Ecs. (12.27) – (12.32)), es muy sencillo expresar las derivadas de la forma anteriormente indicada. Se obtiene: [derx1 ] = [derv1 ] = v1 −k1 · (x1 − x0,muelle1 ) − b · v1 m1 (12.33) (12.34) El algoritmo para la simulacion del modelo empleando Ejs es el mostrado en la Figura ´ 12.7. Obs´ rvese que las variables derx1 y derv1 , que se han introducido sustituyendo a las e derivadas, han resultado utiles para realizar la asignacion de la causalidad computacional ´ ´ y para expresar las derivadas en funcion de los estados, los parametros y el tiempo. Sin ´ ´ embargo, puesto que en este ejemplo estas dos variables no son necesarias para calcular ninguna de las variables relevantes del sistema, las Ecs. (12.29) y (12.32) no se incluyen en el modelo en Ejs (ver las ecuaciones del panel Ligaduras en la Figura 12.7). La variable incremento t es el tamano del paso en el tiempo del m´ todo de integracion. Esta ˜ e ´ variable debe ser definida (en el panel Variables e introducida en la casilla Incremento de la pagina EDO (vea la Figura 12.9.b). ´
  • 160. ´ TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO 144 Inicio t, incremento_t, b, k1, m1, x0_muelle1, x1, v1, a1, Famortiguador, Fmasa1, Fmuelle1 t incremento_t b k1 m1 x0_muelle1 x1 v1 = = = = = = = = 0.0 0.01 1.5 5.0 3.5 2.0 x0_muelle1 + 0.5 0.0 Declaración de variables (Panel Variables) Inicialización de variables (columna Valor del panel Variables) Ejecución de los algoritmos del panel Inicialización Ejecución de los algoritmos del panel Ligaduras Fmuelle1 = - k1 * ( x1 – x0_muelle1 ); Famortiguador = - b * v1; Fmasa1 = Fmuelle1 + Famortiguador; a1 = Fmasa1 / m1; Representación gráfica de resultados (comunicación modelo vista) sí ¿Interacción del usuario? (comunicación vista modelo) Ejecución de la acción ejercida por el usuario no Ejecución de los algoritmos del panel Evolución En una página ODE: d x1 / d t = v1; d v1 / d t = ( - k1*(x1–x0_muelle1) - b*v1 ) / m1; Figura 12.7: Algoritmo de la simulacion del sistema mostrado en la Figura 12.1b. ´
  • 161. ´ ´ 12.5. DECLARACION E INICIALIZACION DE LAS VARIABLES EN EJS 145 Figura 12.8: Paginas de definicion e inicializacion de las variables del modelo en Ejs. ´ ´ ´ Una vez planteado el algoritmo de la simulacion, la programacion del modelo en Ejs es ´ ´ inmediata. En las siguientes secciones se describe como hacerlo. ´ ´ ´ 12.5. Declaracion e inicializacion de las variables en Ejs Existen multiples formas de definir las variables en el panel Variables de Ejs. Una de ellas ´ es definir las paginas de modo que agrupen los diferentes tipos de variables: ´ – – – – tiempo parametros ´ estados variables algebraicas En la Figura 12.8 se muestran las paginas con la definicion de las variables del modelo. ´ ´ Obs´ rvese que se ha asignado valor inicial a la variable tiempo, a los parametros y a las e ´ variables de estado.
  • 162. ´ TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO 146 a) b) Figura 12.9: Paneles: a) Ligaduras; b) Evolucion. ´ El valor inicial de las variables algebraicas se calculara al ejecutar el algoritmo del panel ´ Ligaduras. Por ello, no es preciso escribirlo en los paneles Variables o Inicializacion. ´ ´ 12.6. Definicion del modelo en Ejs Como se ha indicado anteriormente, una vez que se ha planteado el algoritmo de la simulacion para el modelo (vea la Figura 12.7), la definicion del modelo en Ejs se realiza ´ ´ de forma inmediata. En la Figura 12.9 se muestra el contenido de los paneles Ligaduras y Evolucion. ´ ´ 12.7. Definicion de la vista En esta seccion se describen los pasos a seguir para la programacion de la vista del ´ ´ laboratorio virtual, que es mostrada en la Figura 12.13.
  • 163. ´ 12.7. DEFINICION DE LA VISTA 147 š ’ ™  ” § ¦ ¬ ¤ « ª© ¨ § ¦ ¥ ¤ ­ Ÿ ¡¢¡   £ ® ±²² ± ° ¯ ³ ´ • ž  b) – ž ›œ a) — − ˜ “ ‘ − Figura 12.10: Variables necesarias para la definicion de la vista. ´ Figura 12.11: Definicion de las variables de la vista. ´ 3 5 2 1 4 6 9 a) 7 8 b) Figura 12.12: Variables para la definicion de la parte fija del amortiguador. ´
  • 164. ´ TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO 148 a) b) ´ Figura 12.13: a) Vista del laboratorio virtual; b) Arbol de elementos de la vista. Variables de la vista Frecuentemente, la programacion de la vista requiere del empleo de variables que no ´ intervienen en el modelo matematico. Estas variables se introducen espec´ficamente para ´ ı definir la posicion y las dimensiones de los elementos graficos que componen la vista. ´ ´ En este caso, la programacion de la vista requiere de la definicion de las variables mostra´ ´ das en la Figura 12.10. En la Figura 12.10a se muestran las variables que definen la posicion vertical del amor´ tiguador (yamortiguador ), de la masa (ymasa1 ) y del muelle (ymuelle1 ). Tambi´ n, se establecen las e dimensiones de la pared, y la posicion horizontal del punto de union de los tres elementos ´ ´ (x1 ). En la Figura 12.10b se muestran las variables empleadas para la definicion de la vista del ´ amortiguador. Finalmente, en la Figura 12.11 se muestra el panel de Ejs en el que se definen e inicializan las variables descritas anteriormente. Obs´ rvese que se han definido dos variables vectoriales: e xamortiguadorF ijo e yamortiguadorF ijo . En la columna Dimension se ha escrito 9. Esto indica que ´ cada una de estas variables vectoriales esta compuesta de 9 valores. Estos valores definen ´ las coordenadas de pol´gono que representa la parte fija del amortiguador. La inicializacion ı ´ de las variables vectoriales debe realizarse en el panel Inicializacion (vea la Figura 12.12). ´ Componentes de la vista En la Figura 12.13b se muestra el arbol de elementos de la vista. A continuacion, se ´ ´ describen las propiedades de los elementos que lo componen.
  • 165. ´ 12.7. DEFINICION DE LA VISTA 149 En la Figura 12.14 se muestran las propiedades de los elementos VentanaAnimacion, Botones y ControlSimulacion. El elemento VentanaAnimacion contiene a todos los demas ´ elementos de la vista (vea la Figura 12.13a), los cuales a su vez estan distribuidos en los ´ dos elementos siguientes: – Botones: que da lugar a la regleta con los botones situada en la parte izquierda de la vista. – PanelDibujoAnimacion: que da lugar al diagrama animado del sistema, mostrado en la ´ parte central de la vista. ´ Control de la simulacion El elemento ControlSimulacion contiene los elementos BotonPlay, BotonPause y BotonReset, que estan situados en la posicion arriba, centro y abajo respectivamente. Estos tres ´ ´ elementos pertenecen a la clase Boton. Sus propiedades se muestran en la Figura 12.15. ´ ´ Componentes de la animacion En la Figura 12.16 se muestran las propiedades del elemento PanelDibujoAnimacion, que es de la clase PanelDibujo. Como se indica en la figura, los campos M´nimo X, Maximo X, ı ´ M´nimo Y y Maximo Y determinan las coordenadas del extremo inferior izquierdo (punto x) y ı ´ del extremo superior derecho (punto Y ) del area de dibujo del elemento PanelDibujo. ´ Obs´ rvese que el elemento Botones esta situado en la posicion izquierda, dentro del elee ´ ´ mento VentanaAnimacion, y que elemento PanelDibujoAnimacion esta situado en el centro. ´ ´ ´ El elemento Pared En las Figura 12.17 se muestran las propiedades del elemento Pared, de la clase Cubo. Los campos Origen X y Origen Y definen las coordenadas horizontal y vertical respectivamente del v´ rtice inferior izquierdo del cubo. Los campos Tama˜ o X y Tama˜ o Y determinan la anchura e n n y la altura del cubo respectivamente. El elemento Muelle1 En la Figura 12.18 se muestran las propiedades del elemento Muelle1, que es de la clase Muelle. Los campos X e Y especifican las coordenadas de uno de los extremos del muelle (en este caso, del extremo unido a la pared). Los campos Tama˜ o X y Tama˜ o Y especifican n n la coordenada horizontal y vertical de la distancia entre el otro extremo del muelle (el que esta unido a la masa1) y el extremo definido anteriormente (unido a la pared). ´ El elemento Masa1 En la Figura 12.19 se muestran las propiedades del elemento Masa1, de la clase Part´cula. ı Las coordenadas horizontal y vertical de la posicion del elemento, vienen determinadas por ´ las variables x1 e ymasa1 respectivamente, segun se especifica en los campos X e Y de la ´ ventana de propiedades. El punto del objeto al que hace referencia su posicion se define en ´ el campo Posicion. En este caso, el punto empleado para determinar la posicion del objeto es ´ ´ el punto central de su lado izquierdo (vea la parte superior derecha de la Figura 12.19). Se pretende que el objeto Masa1 sea interactivo, es decir, que en cualquier instante de la simulacion pueda cambiarse su posicion pinchando sobre el y arrastrandolo con el raton. ´ ´ ´ ´ ´ Para ello, debe escribirse el valor true en el campo Activo (vea la Figura 12.19).
  • 166. 150 ´ TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO Pos: izqda Pos: arriba Figura 12.14: Propiedades de los elementos VentanaAnimacion, Botones, ControlSimulacion. Figura 12.15: Propiedades de los elementos BotonPlay, BotonPause y BotonReset.
  • 167. ´ 12.7. DEFINICION DE LA VISTA 151 » º ¹¸ ( Pos: izqda ¶µ (− − · Área de dibujo: ) Pos: centro Figura 12.16: Propiedades del elemento PanelDibujoAnimacion. × ÈÈ Ç Í Å Ì ËÊÊ ÉÉ ÈÈ Ç Æ Å Î ÇÍÅÌ Ë Ç ÆÅ Î ÀÀ  à  Á Ä ÏÏ Ò Ó Ó Ò Ñ Ð Ô Õ Õ ¿ ¾ ¿ − ¼½ Ö − Figura 12.17: Propiedades del elemento Pared, de la clase Cubo. )
  • 168. ´ TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO Figura 12.18: Propiedades del elemento Muelle1, de la clase Muelle. Tamaño X ( Ø Ú Ù 152 ) Tamaño Y Figura 12.19: Propiedades del elemento Masa1, de la clase Part´cula. ı
  • 169. ´ 12.7. DEFINICION DE LA VISTA 153 a) ä ÿ ÿ û ûú ù ø û üü üü û ú ù Ý ý ñ ð ö î õ ôó ò ñ ð ï î ÷ ÷ é é ëìë ê í í þ þ è ã Û Þ ß à á b) ç â Ü Ü − åæ − Figura 12.20: a) M´ todo mover masa1(), definido en el panel Propio; b) Significado de las e variables empleadas. Las acciones a realizar cuando el usuario pulsa sobre el objeto, lo arrastra con el raton, ´ y deja de pulsar sobre el objeto se indican en los campos Al Pulsar, Al Mover y Al Soltar respectivamente. En estos campos se escribe el nombre del m´ todo de Java que debe ejecue tarse en cada caso. Ejs proporciona algunos m´ todos predefinidos, como son pause(), que e detiene la simulacion, y play(), que la continua partiendo del punto en el cual se detuvo. ´ Puede obtenerse una lista de los m´ todos proporcionados por Ejs pulsando sobre el icono e que representa dos engranajes y que esta situado a la derecha del campo correspondiente. ´ Ademas de los m´ todos proporcionados por Ejs, puede asociarse a una accion (pulsar, ´ e ´ mover o soltar) cualquier m´ todo que haya sido definido en el panel Propio. En la Figura e 12.20a se muestra el codigo del m´ todo mover masa1(), que sera ejecutado cada vez que se ´ e ´ arrastre el objeto Masa1 con el raton. Para facilitar la comprension del codigo, en la Figura ´ ´ ´ 12.20b se muestra el significado de las variables que definen las dimensiones f´sicas y la ı posicion de los elementos del sistema. ´ El codigo del m´ todo mover masa1() es el mostrado a continuacion (vea la Figura 12.20). ´ e ´ Su proposito es limitar el tipo de desplazamientos del objeto masa1 que pueden realizarse ´ arrastrandolo con el raton. Se han numerado las l´neas de codigo con el fin de facilitar la ´ ´ ı ´ referencia a las mismas en las explicaciones siguientes. 1 2 public void mover_masa1 () { yMasa1 = 0;
  • 170. ´ TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO 154 3 4 5 6 if ( x1 LB + LP ) { x1 = LB + LP; } if ( x1 LA + LP ) { x1 = LA + LP; } if ( x1 LB ) { x1 = LB; } } En la l´nea 2 se establece que la coordenada vertical del objeto Masa1 siempre sea cero. ı Con ello se impide que el objeto se desplace verticalmente al ser arrastrado con el raton. Es ´ decir, unicamente se permiten desplazamientos horizontales. ´ La finalidad de las l´neas 3 y 4 es impedir que el embolo del amortiguador quede fuera de ı ´ la caja en la que esta contenido. Finalmente, la l´nea 5 del codigo impide que la masa penetre ´ ı ´ dentro de la caja del amortiguador. El amortiguador: elementos AmortiguadorFijo y AmortiguadorMovil En las Figuras 12.21 y 12.22 se muestran las propiedades de los dos elementos empleados para representar el amortiguador. El elemento AmortiguadorFijo representa la caja, que se encuentra unida solidariamente a la pared, y el elemento AmortiguadorMovil, que representa el embolo movil. ´ ´ El elemento AmortiguadorFijo es de la clase Pol´gono. Se trata de un pol´gono no cerrado. ı ı Las coordenadas de los puntos de los v´ rtices del pol´gono estan definidas por los vectores e ı ´ x amortiguadorFijo e y amortiguadorFijo. Recu´ rdese que estos dos vectores se definieron en e el panel Variables (vea la Figura 12.11) y se les asigno valores en el panel Inicializacion (ver la ´ ´ Figura 12.12). El elemento AmortiguadorMovil es de la clase Flecha. En la Figura 12.22 se muestran las propiedades del elemento. Estas incluyen las coordenadas horizontal y vertical del punto base de la flecha (campos X e Y ), la dimension horizontal y vertical de la flecha (campos Tama˜ o ´ n X y Tama˜ o Y), el estilo de la flecha (campo Estilo) y sus propiedades de interactividad. n 12.8. Modelo matem´ tico del sistema completo a El sistema mecanico a modelar es el mostrado en la Figura 12.1a. El objeto masa2 desliza ´ sobre el objeto masa1, existiendo una fuerza de friccion entre ambos. ´ ´ Modelo de la friccion En la Figura 12.23a se muestra el modelo de la friccion1 . Se observa que en el modelo ´ intervienen las dos variables siguientes: la velocidad relativa entre los cuerpos (v) y la fuerza de friccion (Ff ). ´ El modelo contempla las dos situaciones siguientes: – Friccion dinamica. Cuando la velocidad relativa entre ambos cuerpos es diferente de ´ ´ cero (v = 0), se produce una fuerza de friccion dinamica que viene dada por la expresion ´ ´ ´ siguiente: Ff = Rv · v + Rm Rv · v − Rm si v 0 si v 0 (12.35) – Friccion estatica. Cuando la velocidad relativa entre ambas superficies es cero (v = 0), la ´ ´ fuerza de friccion estatica se opone a que la velocidad se haga diferente de cero, siempre ´ ´ que para ello sea preciso una fuerza de magnitud menor o igual que R0 . 1 El modelo de la friccion esta extra´do de (Elmqvist, Cellier Otter 1993). ´ ´ ı
  • 171. ´ 12.8. MODELO MATEMATICO DEL SISTEMA COMPLETO 155 Figura 12.21: Propiedades del elemento AmortiguadorFijo. ¦ ¥ £ ©¨ § ¦ ¥ ¤ £ ¡   ¢ Figura 12.22: Propiedades del elemento AmortiguadorMovil.
  • 172. ´ TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO $ # % % 1 1 0 masa1 ( ) 6 5 − % − − 2 pendiente = masa2 ' 3 pendiente 4' Modelo de la fricción: ! ! 156 a) b) Figura 12.23: a) Relacion constitutiva de la friccion; b) Ejemplo. ´ ´ modo deslizante U IH P T R Q Q ⋅ − TW U TY X U S F V B A C 7 8 se calcula de las restantes ecs. del modelo. = T ⋅ + R E [ ]= = U IH G modo acoplado P D es función de variables de estado (ley de Newton), luego de la relación constitutiva de la fricción se calcula la fuerza. 9 @ Figura 12.24: Modelo de la friccion como un automata con dos modos. ´ ´ Ejemplo 12.8.1. En la Figura 12.23b se muestra un ejemplo de friccion dinamica. La velocidad ´ ´ del objeto masa1 es mayor que la velocidad del objeto masa2. Es decir: v1 v2 . Tal como se muestra en la Figura 12.23b, ambas velocidades tienen la misma direccion y sentido. ´ Puesto que la velocidad relativa es mayor que cero (v = v1 − v2 0), aparece una fuerza de friccion entre los objetos masa1 y masa2. La fuerza ejercida sobre masa1 tiene la misma ´ magnitud, pero sentido opuesto, a la fuerza ejercida sobre masa2. Estas fuerzas de friccion tienden a reducir la velocidad relativa entre los objetos. Es decir, la ´ fuerza de friccion que actua sobre masa1 tiene a reducir la velocidad de masa1, mientras que ´ ´ la fuerza que actua sobre masa2 tiende a aumentar la velocidad de masa2. ´ Obs´ rvese que, cuando se produce la transicion entre el reposo relativo y el movimiento e ´ relativo de los dos cuerpos, se produce un cambio discontinuo en la magnitud de la fuerza de friccion, que pasa de valer R0 a valer Rm . ´ La friccion puede modelarse como se muestra en la Figura 12.24. Se distinguen dos modos ´ diferentes de operacion del sistema: ´ – Modo acoplado. En este caso, la fuerza de friccion entre masa1 y masa2 es tal que la ´ velocidad relativa entre ambos objetos es cero. As´ pues, el fenomeno f´sico de la friccion ı ´ ı ´ se modela mediante la ecuacion: ´
  • 173. ´ 12.8. MODELO MATEMATICO DEL SISTEMA COMPLETO v 157 s r q h pi dh h f dg fe dc t t ba` ` t Figura 12.25: La variable v pasa por cero, sin valer exactamente cero en ninguno de los instantes de evaluacion del modelo: ti y ti+1 . ´ v=0 (12.36) En esta ecuacion solo interviene una variable: la velocidad relativa (v). Por tanto, la ´ ´ Ec. (12.36) se empleara para calcular v. Este hecho se representa en la Figura 12.24 ´ incluyendo la variable v entre corchetes cuadrados. Puesto que de la ecuacion constitutiva de la friccion, la Ec. (12.36), se calcula v, la fuerza ´ ´ de friccion (Ff ) debera calcularse de las restantes ecuaciones del modelo. ´ ´ – Modo deslizante. Cuando existe movimiento relativo entre masa1 y masa2, la fuerza de friccion viene dada por la Ec. (12.35). ´ En la Figura 12.24 se muestran las condiciones de conmutacion entre ambos modos de ´ funcionamiento: – Cuando el sistema esta en modo acoplado, y el modulo de la fuerza de friccion supera el ´ ´ ´ valor R0 , entonces se produce la conmutacion al modo deslizante. ´ – Cuando el sistema esta en modo deslizante y la velocidad relativa entre los objetos se ´ hace cero, entonces se produce la conmutacion al modo acoplado. ´ El modelo de la friccion descrito anteriormente representa satisfactoriamente la f´sica del ´ ı problema. Sin embargo, no es un modelo valido para simulacion, ya que presenta los dos ´ ´ problemas descritos a continuacion. ´ ´ Problema I: Deteccion de los eventos La condicion de conmutacion entre el modo deslizante y el modo acoplado es que la ´ ´ velocidad relativa entre masa1 y masa2 valga cero (v = 0). En general, al describir un modelo para simulacion, una condicion del tipo “cuando v valga cero, entonces . . . ” no debe ser escrita ´ ´ empleando expresiones de igualdad. Esto es debido a que la condicion v = 0 se comprobara en los instantes de tiempo en los ´ ´ que se evalua el modelo, los cuales vienen determinados por el tamano del paso del m´ todo ´ ˜ e de integracion. As´ pues, si el corte por cero de la variable v se produce en un instante de ´ ı tiempo que no coincide con un instante de evaluacion, entonces no se detectara el evento. En ´ ´ la Figura 12.25 se ilustra esta situacion. ´ Para evitar que no se detecte el corte por cero de la variable, es preciso expresar adecuadamente la condicion, empleando para ello expresiones de desigualdad, en lugar de expresiones ´ de igualdad. Las condiciones del tipo “cuando v valga cero, entonces . . . ” deben expresarse de la forma siguiente: “cuando v pase de ser positiva a ser menor o igual que cero, o cuando v pase de ser negativa a ser mayor o igual que cero, entonces . . . ”. Volviendo al ejemplo mostrado en la Figura 12.25, obs´ rvese que esta forma de expresar e la condicion permite detectar correctamente el cruce por cero: en el instante ti , la variable v ´
  • 174. ´ TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO ˆ „ ˆ … ‡ ˆ €  v t … † x 158 y w t t ‚ u ƒ Figura 12.26: Representacion esquematica del sistema. ´ ´ es mayor que cero, y en el instante ti+1 es menor que cero, con lo cual, en el instante ti+1 se verifica la condicion de disparo del evento. ´ Problema II: ´ndice superior I El segundo problema que presenta el modelo mostrado en la Figura 12.24 esta originado ´ por la formulacion del modelo de la friccion cuando las dos masas estan acopladas. En esa ´ ´ ´ situacion, la friccion viene descrita mediante la ecuacion: ´ ´ ´ (12.37) v=0 Esta ligadura reduce en uno el numero de grados de libertad del modelo, ya que impone ´ que las velocidades de los dos objetos (que son variables de estado) sean iguales. Veamos esto mas detenidamente. Para ello, a continuacion se escriben las ecuaciones que describen ´ ´ cada uno de los componentes del sistema. En la Figura 12.26 se muestra el sistema, con los parametros asociados a cada componente, y con el significado de las variables x1 y x2 ´ indicado. Ecuacion dinamica de masa1: ´ ´ Fmasa1 dv1 dt dx1 dt = m 1 · a1 (12.38) = a1 (12.39) = v1 (12.40) Fuerza que actua sobre la masa1: ´ Fmasa1 = Fmuelle1 + Famortiguador − Ff Ecuacion dinamica de masa2: ´ ´ (12.41)
  • 175. ´ 12.8. MODELO MATEMATICO DEL SISTEMA COMPLETO Fmasa2 dv2 dt dx2 dt 159 = m 2 · a2 (12.42) = a2 (12.43) = v2 (12.44) Fuerza que actua sobre la masa2: ´ Fmasa2 = Ff (12.45) Fmuelle1 = −k1 · (x1 − x0,muelle1 ) (12.46) Ecuacion dinamica del muelle: ´ ´ Ecuacion dinamica del amortiguador: ´ ´ (12.47) Famortiguador = −b · v1 Definicion de la velocidad relativa entre las masas: ´ (12.48) v = v1 − v2 Modelo de la fuerza de friccion: ´    Modo deslizante: Ff = Modo acoplado: Rv · v + Rm Rv · v − Rm si v 0 si v 0 v=0 (12.49) El modelo esta compuesto por 12 ecuaciones, Ecs. (12.38) – (12.49), y tiene las 12 incogni´ ´ tas siguientes: Fmasa1 , Fmasa2 , Famortiguador , Fmuelle1 , Ff , a1 , a2 , v, derx1 , derx2 , derv1 , derv2 (12.50) donde puede observarse que las derivadas han sido sustituidas por las variables auxiliares derx1 , derx2 , derv1 y derv2 . Las variables x1 , x2 , v1 , v2 (12.51) aparecen derivadas en el modelo, con lo cual son variables de estado. Esto implica que el valor inicial de cada una de ellas puede especificarse independientemente del valor inicial de las demas, y que la evolucion de cada una de ellas se calcula mediante integracion num´ rica ´ ´ ´ e de su derivada (es decir, de derx1 , derx2 , derv1 y derv2 respectivamente). En la Figura 12.27 se muestra las ecuaciones del modelo para cada uno de los dos modos, con la causalidad computacional senalada (se incluye entre corchetes la variable a evaluar ˜ de cada ecuacion), y con las ecuaciones ordenadas y resueltas (es decir, con la incognita a ´ ´ evaluar despejada al lado izquierdo de la igualdad). Para realizar la asignacion de la causalidad computacional se parte de que los parametros ´ ´ del modelo y las variables de estado son conocidas. A continuacion, se aplican las dos reglas ´ enunciadas en la Seccion 12.4. ´ Como se observa en la parte izquierda de la Figura 12.27, las ecuaciones del modelo, cuando se emplean las ecuaciones de la friccion en modo deslizante, pueden ser resueltas ´ una tras otra y permiten evaluar todas las incognitas. ´
  • 176. Figura 12.28: Asignacion de la causalidad computacional del modelo modificado para el modo ´ acoplado. µ Î ]= µ ¬ ³ ­ ­« ³ µ ÊÈÇÆ Ï µ ½Ä ½ ¹ ¸ ´ Î ´ Ë ± [ = µ Î ¸ 5 ecuaciones. 5 incógnitas: Ë ´ »¼¼ » º ¹ Ë Ê Ê É Í ´ ÊÈÇÆ Î µ ½Ä ½ ¹ Ë Ë Î ´ Ê ´ Î Ê ¿ ¾ à ½ º ÂÁ À ¿ ¾ ¹ ½ Ó Ñ Ë Ò Ð ´ »¼¼ » º ¹ ´ É Ì Ë ¸´ µ ´ ´ ½Ä ½ ¹ µ µ ´ ´ »¼¼ » º ¹ · ¶ − ]= ) Ê ´ Ë Å Ë ² ¿ ¾ à ½ º ÂÁ À ¿ ¾ ¹ ½ Ï ´ ½Ä½ ¹ ² ­ « ¯°¯ ® ² Ë − Å + ­ ¬ ¯°¯ ® ]= = − =− ⋅ ]= [ ] = − ⋅( µ [ = = = [ ]= ÉÈ Ç Æ ´ Ê ÉÈ Ç Æ [ [ Figura 12.27: Asignacion de la causalidad computacional del modelo en modo deslizante ´ (izquierda) y acoplado (derecha). Sobra una ecuación y falta una ecuación.  { ‚ | |z € t ‚ ]= | z ~~ }   pn m l “‰ t ‰ u  ™j™ •  [  ]= q =  t “ „ ‰ pn m l u ‰ ™j™ • k  e d i ™ – hg f e d • ™ q q ‰ ‰ ™j™ • q  ™j™ • q k q − | { ~~ } = = + 4 ecuaciones. 5 incógnitas: ‰ —˜˜ — – • ”  ‰ p ‰ —˜˜ — – • ’ ‘ o s ‰ ‰ o p ‰ p ¢ „ £ „ › š ™ „ „ ˜ ‹ ž ‡ƒ on m l  ‹ ‰ˆ ¡ ‹ ‰ˆ ¡  ƒ Ž Ž  Œ ‹ † … „  œ œ ž ƒ  ŽŽ  Œ ‹ ž – ž ƒ › š ™ ƒ „ ˜ ‹ ƒ ˜ ‹ ¢ ž ž – ¡ª ©  ƒ  — ž ¦ ¤  ž ¦ ¤ ƒ ŽŽ  Œ ‹ Ÿ ‡ ƒ œ› š ™ § ¥ ¡¨  ƒ ‘  •  Œ ”“ ’ ‘  ‹  § ¥   ƒ „ £ ƒ ˜ ‹ — ‘  •  Œ ”“ ’ ‘  ‹  ž   ƒ q x v q ‰ p ¢ ƒ ‡ ¢ t — ž q Š q Š p „ p e d i ™ – hgf e d • ™ y w ‰ —˜˜ — – • r ]= [ − = Una de estas dos ecuaciones sobra − “‰ + = − =− ⋅ ]= [ ] = − ⋅( on m l ⋅ − ) [ [  [ [ ]= ⋅ + [ ]= − ]= ]= ) p ]= ]= ]= = − =− ⋅ ]= [ ] = − ⋅(  [ [ ]= [ [ [ ]=  ƒ ž œ› š ™ [ [ Causalidad computacional del modelo en modo acoplado Causalidad computacional del modelo en modo deslizante ´ TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO 160
  • 177. ´ 12.8. MODELO MATEMATICO DEL SISTEMA COMPLETO 161 Sin embargo, al realizar la asignacion de la causalidad computacional empleando la ecua´ cion de la friccion para el modo acoplado (es decir, v = 0), se llega a la conclusion de que ´ ´ ´ una de las ecuaciones es redundante y, a la vez, falta una ecuacion para poder calcular las ´ incognitas Fmasa1 , Fmasa2 , Ff , a1 y a2 . V´ ase la parte derecha de la Figura 12.27. ´ e Esta situacion esta motivada porque: ´ ´ – Por una parte, v1 y v2 aparecen derivadas en el modelo. Esto implica que estas dos variables son variables de estado, con lo cual su causalidad computacional debe ser: d[v1 ] dt d[v2 ] dt = derv1 (12.52) = derv2 (12.53) – Por otra lado, en la ecuacion que describe la friccion ´ ´ (12.54) v1 = v2 solo intervienen las variables v1 y v2 , con lo cual debe emplearse esta ecuacion para cal´ ´ cular una de ellas. Es posible una de las dos causalidades computacionales siguientes: [v1 ] = v2 v1 = [v2 ] (12.55) En consecuencia, en el modelo existen tres ecuaciones, Ecs. (12.52), (12.53) y (12.54), para calcular dos incognitas, v1 y v2 , con lo que se produce una sobredeterminacion. Asimismo, ´ ´ data esta sobredeterminacion y puesto que el modelo tiene el mismo numero de ecuaciones ´ ´ que de incognitas, no es posible calcular una de las variables del modelo. ´ Otra forma de entender el problema es darse cuenta de que al tener 4 variables de estado (x1 , x2 , v1 y v2 ) el modelo tiene 4 grados de libertad. Sin embargo, al imponer la ligadura v1 = v2 se esta eliminando un grado de libertad, con lo cual el sistema queda con solo 3 grados de ´ ´ libertad. La consecuencia de ello es que el modelo no puede tener 4 variables de estado, sino solo 3. Cuando se produce esta circunstancia se dice que el modelo tiene ´ndice superior, y ´ ı debe ser reformulado antes de simularlo con Ejs. ´ ´ ´ Revision del modelo de la friccion: reduccion del ´ndice ı Una solucion para el Problema II (es decir, para reducir el ´ndice del modelo) consiste en ´ ı reemplazar la ecuacion ´ v=0 (12.56) a1 = a2 (12.57) por la ecuacion ´ y ademas, cuando se produce la conmutacion del modo deslizante al modo acoplado, imponer ´ ´ que en ese instante la velocidad relativa entre ambos cuerpos sea cero: v = 0. Esto ultimo es ´ necesario, ya que, en general, en el instante en que se produce la conmutacion, el valor de v ´ estara proximo a cero, pero no valdra exactamente cero. ´ ´ ´ En la Figura 12.28 se muestra la causalidad computacional del modelo, para el modo acoplado, modificado segun se ha indicado anteriormente. Las incognitas Fmasa1 , Fmasa2 , Ff , ´ ´ a1 y a2 deben ser calculadas de un sistema simultaneo de ecuaciones. Despejando estas ´ incognitas, se obtiene que la causalidad computacional del sistema completo es la mostrada ´ en la Figura 12.29.
  • 178. ´ TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO 162 Modelo ordenado y resuelto, válido para ambos modos: − ç ) Ô è ç Ô ØÔ è ê Ô =− ⋅ Ô ÛÜÜ Û Ú Ù × Ö çæ å ä ë Ô çæ å ä Ô ÛÜ Ü Û Ú Ù ï í ß Þ ã Ý Ú âá à ß Þ Ù Ý Õ è − Õ Ô é éî ì [ ]= ]= è ]= [ ] = − ⋅( Õ [ [ è è ( + ) ñ − þ + ð þ )   ÿ¢ ) ¨ § ¨ ¤ § ){ = U b ! S C IF T S R I → ¥ ]= ¥ ¥ ¥ ! %$ # ¦ [ [ ]= ¥ ¨© ¨ § ¤ ¨© ¨ § ¤ ¦¤ ! D Q P I HGF E D C 4 (' 4 (' ¤ ¨©¨ § ¥ ¨©¨ § ¤ ]= ( ò 1 1 3 3 4 4 0 0 36 3B 9 A 8 2 5@ 7 ¤ ! %$ # [ £ ¡ [ ]= + þ ]= ]= ð [ [ = ÿ õ öö õ ô ó ⋅ − ñ ⋅ + ÿ = modo acoplado ù ø ý ÷ ô üû ú ù ø ó ÷ modo deslizante } a `YXWV Figura 12.29: Asignacion de la causalidad computacional del modelo completo modificado. ´ Figura 12.30: Definicion e inicializacion de las variables Detras, Adelante y Acoplo. ´ ´ Figura 12.31: Ecuaciones para el calculo de las variables de estado. ´
  • 179. ´ 12.8. MODELO MATEMATICO DEL SISTEMA COMPLETO 163 En la pagina EDO de Ejs, las derivadas de las variables de estado deben expresarse unica´ ´ mente en funcion de parametros, variables de estado y la variable tiempo. Una vez asignada ´ ´ la causalidad computacional del modelo, expresar las derivadas de la forma anteriormente indicada es sencillo. Para ello, basta con tener en cuenta que: dx1 dt dx2 dt dv1 dt dv2 dt = derx1 (12.58) = derx2 (12.59) = derv1 (12.60) = derv2 (12.61) Realizando las sustituciones, se obtiene: dx1 dt dx2 dt dv1 dt dv2 dt = v1 (12.62) = v2    (12.63) = =        −k1 ·(x1 −x0,muelle1 )−b·v1 −(Rv ·(v1 −v2 )+Rm ) m1 −k1 ·(x1 −x0,muelle1 )−b·v1 −(Rv ·(v1 −v2 )−Rm ) m1 1 m1 +m2 · (−k1 · (x1 − x0,muelle1 ) − b · v1 ) si “deslizante” y v 0 si “deslizante” y v 0 si “acoplado” (12.64) Rv ·(v1 −v2 )+Rm m2 Rv ·(v1 −v2 )−Rm m2 si “deslizante” y v 0 si “deslizante” y v 0 si “acoplado” (12.65) 1 m1 +m2 · (−k1 · (x1 − x0,muelle1 ) − b · v1 ) ´ ´ Es posible escribir la ecuacion para dv1 como una unica expresion, e igualmente para dv2 . ´ dt dt Para ello, se definen tres variables, Detras, Adelante y Acoplo, las cuales solo pueden tomar el ´ valor 0 o 1. En cada instante, solo una de estas tres variables tomara el valor 1, y sera aquella ´ ´ ´ ´ que se corresponda con el modo en el que se encuentra el sistema: – Detras valdra 1 si y solo si el sistema esta en el modo “deslizante” y v1 v2 . ´ ´ ´ – Adelante valdra 1 si y solo si el sistema esta en el modo “deslizante” y v1 v2 . ´ ´ ´ – Acoplo, valdra 1 si el sistema esta en el modo “acoplado”. ´ ´ Con ayuda de estas tres variables, puede escribirse: dv1 dt = + + dv2 dt = + + −k1 · (x1 − x0,muelle1 ) − b · v1 − (Rv · (v1 − v2 ) + Rm ) m1 −k1 · (x1 − x0,muelle1 ) − b · v1 − (Rv · (v1 − v2 ) − Rm ) Adelante · m1 1 Acoplo · · (−k1 · (x1 − x0,muelle1 ) − b · v1 ) m1 + m2 Rv · (v1 − v2 ) + Rm Detras · m2 Rv · (v1 − v2 ) − Rm Adelante · m2 1 Acoplo · · (−k1 · (x1 − x0,muelle1 ) − b · v1 ) m1 + m2 Detras · Estas dos expresiones, pueden simplificarse de la forma siguiente: (12.66) (12.67)
  • 180. ´ TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO 164 dv1 dt (Detras + Adelante) · + dv2 dt = −k1 · (x1 − x0,muelle1 ) − b · v1 − (Rv · (v1 − v2 ) + (Detras − Adelante) · Rm ) m1 Acoplo · = + 1 · (−k1 · (x1 − x0,muelle1 ) − b · v1 ) m1 + m2 Rv · (v1 − v2 ) + (Detras − Adelante) · Rm (Detras + Adelante) · m2 1 · (−k1 · (x1 − x0,muelle1 ) − b · v1 ) Acoplo · m1 + m2 (12.68) (12.69) En la Figura 12.30 se muestra como se realiza la definicion de las variables Detras, ´ ´ Adelante y Acoplo, en el panel Variables. Las tres variables son inicializadas al valor 0. Se trata de variables discretas, ya que su valor solo se modifica en determinados instantes de ´ tiempo: cuando se produce la transicion entre los modos del sistema. ´ Las transiciones en el modo del sistema solo se producen en los instantes de evaluacion del ´ ´ modelo. Es decir, en los instantes del tipo ti y ti+1 mostrados en la Figura 12.25. Esto implica que, en el intervalo de tiempo entre instantes de evaluacion consecutivos, el valor de estas ´ variables permanece constante. A efectos del m´ todo de integracion, estas variables pueden e ´ considerarse constantes dentro de cada paso de integracion, y por ello pueden incluirse en la ´ expresion de la derivada en el panel EDO de Ejs (vea la Figura 12.31). ´ El modelo debe describir el cambio de valor de estas tres variables (Detras, Adelante y Acoplo), en funcion de las transiciones en el modo del sistema. Asimismo, las condiciones ´ de disparo de estas transiciones deben estar formuladas en t´ rminos de desigualdades, de e modo que no se obtenga un modelo erroneo como el descrito al comentar el Problema I. A ´ continuacion, se propondra una manera de hacerlo. ´ ´ ´ ´ ´ Revision del modelo de la friccion: los modos y su conmutacion Una posible solucion consiste en modelar el funcionamiento del sistema como un automa´ ´ ta determinista, tal como se muestra en la Figura 12.32. En ella, se indica en qu´ panel se e codifica cada una de las condiciones de transicion entre modos. A continuacion, se realiza ´ ´ una explicacion detallada de ello. ´ Al comienzo de la simulacion, el modelo se encuentra en el modo Inicio. En ese mismo ´ instante inicial, y en funcion del valor inicial que se haya asignado a la velocidad de cada una ´ de las masas (v1 y v2 ), el modo del sistema cambia a: – Detras, si v1 v2 . ´ – Adelante, si v1 v2 . – Acoplo, si no se satisface ninguna de las dos condiciones anteriores. Es decir, si v1 = v2 . Estas condiciones de conmutacion entre modos, que han de ejecutarse en el instante ´ inicial de la simulacion, se codifican en el panel Inicializacion de Ejs (vea la Figura 12.33). ´ ´ Como se muestra en la Figura 12.32, la conmutacion desde los modos Detras y Adelante al ´ modo Acoplo se produce en funcion del valor de las variables de estado v1 y v2 . As´ pues, esas ´ ı condiciones de conmutacion son comprobadas una vez es calculado el valor de las variables ´ de estado, en el panel Evolucion (vea la Figura 12.34). ´ Finalmente, la conmutacion desde el modo Acoplo a los modos Detras y Adelante se ´ produce en funcion del valor que tenga la fuerza de friccion. Tanto la fuerza de friccion, ´ ´ ´ que es una variable algebraica, como estas condiciones de conmutacion se calculan en el ´ panel Ligaduras (vea la Figura 12.35).
  • 181. ´ 12.8. MODELO MATEMATICO DEL SISTEMA COMPLETO (1) h h f (1) g d e 165 c e Inicio y ƒ (2) € ) „ • ” ™ “  ˜— – • ” ‰ “ e +  r ‡ ‘’’ ‘  ‰ e d † † d + ( … iqp i x ‡ d = Adelante = ⋅ − „ w u s t Acoplo ˆ e (2) ‚ − v ‚ „ Detrás = ⋅ + …  „ (3) c e g h ƒ f h (1) Inicialización (2) Ligaduras ≥ e ≤ d € (3) (3) Evolución Figura 12.32: Conmutacion entre los modos de funcionamiento del sistema. Se indica el panel ´ en el cual se programa la conmutacion entre modos. ´ k j i k g h f h Inicio l nm l r ) o ~ } ‚ | y €  ~ } x | „ + s v z{{ z y x „ ( p u u ƒ ƒ + t v ƒ = Adelante = ⋅ − s Acoplo q w „ q s Detrás = ⋅ + t p s o r Figura 12.33: Modo inicial del sistema, en funcion de la velocidad relativa entre las masas. ´
  • 182. ´ TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO 166 Inicio ) ‹ † ‡ ≥ ˆ … — – › • ’ š™ ˜ — – ‘ •  + Œ  “”” “ ’ ‘  ( ‰ Ž Ž œ œ +   œ   Š ‡ † ‡ ≤ = Adelante = ⋅ − Œ Acoplo Š … Œ Detrás = ⋅ +  ‰ Œ ˆ ‹ ‡ Figura 12.34: Conmutacion entre los modos tras el calculo de las variables de estado. ´ ´ § ¦ ) © µ ´ ¹ ³ ° ¸· ¶ µ ´ ¯ ³ » ­ ±²² ± ° ¯ » ( Adelante = ⋅ − ¨ ž ¬ ¬ º º + + ª ¤ ­ º = « £ ¡ Ÿ   Acoplo ª ¥ − ¢ ® » ¨ ª Detrás = ⋅ + « § ª ¦ © Figura 12.35: Conmutacion entre los modos tras el calculo de la fuerza de friccion. ´ ´ ´
  • 183. ´ ´ 12.9. INCLUSION DE MASA2 EN EL PANEL DE ANIMACION 167 ´ ´ 12.9. Inclusion de masa2 en el panel de animacion La inclusion del objeto masa2 en la ventana de animacion se realiza anadiendo un nuevo ´ ´ ˜ elemento al arbol de la vista: el elemento Masa2, de la clase Particula (vea la Figura 12.36). ´ Las propiedades de este elemento, cuya posicion puede ser cambiada interactivamente, son ´ completamente analogas a las del elemento Masa1: ´ – Las variables yMasa2 y LMasa2 representan la coordenada vertical de la posicion del ´ objeto y el tamano horizontal del mismo respectivamente. Son definidos e inicializados ˜ en el panel Variables, de forma completamente analoga a yMasa1 y LMasa1. Su valor ´ permanece constante durante la simulacion. ´ – El m´ todo mover masa2() se muestra en la Figura 12.37. Su finalidad es doble. Por una e parte, garantizar que la coordenada vertical de la posicion del objeto no var´a cuando se ´ ı modifica interactivamente la posicion del mismo. Por otra, impedir que interactivamente ´ pueda situarse el objeto masa2 fuera de la superficie superior del objeto masa1. En la Figura 12.38 se muestra la ventana de animacion del modelo del sistema completo. ´ ´ 12.10. Ligadura en la posicion de masa2 ´ El m´ todo mover masa2() impide que, producto de un cambio interactivo en la posicion de e masa2, esta quede fuera de la superficie de masa1. Sin embargo, no hay nada en el modelo ´ que impida que durante su simulacion se produzca esta situacion. Es decir, que la posicion ´ ´ ´ del objeto masa2 se mueva fuera de la superficie del objeto masa1 y, en consecuencia, quede “flotando” en el aire. Para evitar esta situacion, una vez se ha calculado el valor de x2 , se comprueba si se ´ encuentra fuera del rango [x1, x1 + Lmasa1]. Si se verifica que x2 x1 , entonces se modifica el valor de x2 , igualandolo a x1 . Igualmente, si x2 x1 + Lmasa1, entonces se modifica el valor ´ de x2 , igualandolo a x1 + Lmasa1. Estas acciones se programan en el panel Evolucion, tal y ´ ´ como se muestra en la Figura 12.39. ´ 12.11. Visualizacion del modo del sistema Ejs permite, de manera sencilla, representar la evolucion temporal de las variables del ´ sistema. En esta seccion se describe como anadir a la vista una ventana que contenga tres ´ ´ ˜ graficas, en las que se represente la evolucion temporal de las variables Detras, Adelante y ´ ´ Acoplo. Para ello, se anade al arbol de elementos de la vista un objeto de la clase Ventana, al que se ˜ ´ asigna el nombre Modos. Colgando de el se anaden tres elementos de la clase PanelConEjes, ´ ˜ situados en la posicion arriba, centro y abajo respectivamente (Modo Detras, Modo Adelante ´ y Modo Acoplo). Con ello, queda definida la ventana que contendra las graficas y los ejes ´ ´ coordenados de las tres graficas. ´ Finalmente, se anade un elemento de la clase Traza colgando de cada elemento de la clase ˜ PanelConEjes. El elemento de la clase Traza define cual es la variable a representar. ´ En la Figura 12.40 se muestra el arbol de elementos de la vista y las propiedades de los ´ elementos Modos, Modo Detras y traza Detras. De forma analoga se definen las propiedades ´ de los restantes elementos. La vista del laboratorio virtual es mostrada en la Figura 12.41. 12.12. A˜ nadiendo interactividad al laboratorio Llegado este punto, el laboratorio virtual permite modificar de forma interactiva la posicion ´ de los objetos masa1 y masa2. En esta seccion se explica como anadir a la vista del laboratorio ´ ´ ˜
  • 184. 168 ´ TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO Figura 12.36: Elemento Masa2. Figura 12.37: M´ todo mover masa2(). e Figura 12.38: Ventana de animacion de la vista del sistema completo. ´
  • 185. ˜ 12.12. ANADIENDO INTERACTIVIDAD AL LABORATORIO 169 Figura 12.39: Ligadura en la posicion de Masa2. ´ ½¾ ½¼ ½À ½¿ ´ Figura 12.40: a) Arbol de elementos de la vista. Propiedades del elemento: b) Modos; c) Modo Detras; y d) traza Detras;
  • 186. 170 ´ TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO Figura 12.41: Vista del laboratorio virtual. deslizadores que permitan visualizar y modificar el valor de los siguientes parametros del ´ modelo: – – – – Constante de proporcionalidad (k1 ) y elongacion natural (x0,muelle1 ) del muelle. ´ Constante de proporcionalidad (b) del amortiguador. Masas (m1 y m2 ). Parametros caracter´sticos de la fuerza de friccion (Rm , R0 y Rv ). ´ ı ´ Para ello, se anade al arbol de la vista un nuevo objeto de la clase Ventana (llamado ˜ ´ Deslizadores), dentro del cual se incluyen tres elementos de la clase Panel: Panel1, Panel2 y Panel3, cuya posicion es arriba, centro y abajo respectivamente. Dentro de cada elemento de ´ la clase Panel se incluyen elementos de la clase Deslizador. El arbol de la vista se muestra en la parte izquierda de la Figura 12.42. Tambi´ n se ´ e muestran las propiedades de los elementos Panel1 y deslizador k1. Obs´ rvese que: e – En la casilla Variable se indica qu´ variable del sistema se enlaza con el elemento e Deslizador. – Las casillas M´nimo y Maximo permiten definir el intervalo de valores que puede tomar ı ´ la variable. – En la casilla Marcas se indica el numero de marcas que se dibujaran en el deslizador. ´ ´ – En la casilla Formato M se indica el formato del numero que se escribe bajo cada marca. ´ Por ejemplo, si se escribe 0 en la casilla Formato M, entonces el numero se escribe sin ´ cifras decimales. Si se escribe 0.0 en la casilla Formato M, entonces el numero se escribe ´ con una cifra decimal. As´ sucesivamente. ı – En la casilla Formato se indica como debe visualizarse el valor actual de la variable. Al ´ escribir k1=0.0 se esta indicando que debe escribirse k1= y a continuacion el valor de la ´ ´ variable con una cifra decimal. En la Figura 12.43 se muestra la vista completa del laboratorio.
  • 187. ˜ 12.12. ANADIENDO INTERACTIVIDAD AL LABORATORIO 171 ´ Figura 12.42: Arbol de la vista y propiedades de los elementos Panel1 y deslizador k1. Figura 12.43: Vista del laboratorio virtual.
  • 188. 172 ´ TEMA 12. LABORATORIO VIRTUAL DE UN SISTEMA MECANICO
  • 189. Tema 13 C´ lculo del numero π por el a ´ m´ todo de Monte Carlo e Objetivos: Una vez estudiado el contenido del tema deber´a saber: ı ´ ´ ´ • Dise˜ ar el algoritmo de simulacion de un modelo estatico y estocastico, n y programarlo usando Ejs. ´ • Programar metodos propios, que son invocados desde los paneles Inicia´ lizacion y Vista. ´ • Usar las clases de elementos graficos ConjuntoParticulas y CampoNumerico. 13.1. Simulaciones de Monte Carlo Bajo el nombre gen´ rico de “simulaciones de Monte Carlo” suelen englobarse todas las e simulaciones que emplean numeros aleatorios para resolver problemas estaticos, es decir, ´ ´ problemas en los cuales el tiempo no juega un papel relevante. El t´ rmino “Monte Carlo” proviene del nombre en clave de un trabajo secreto en el que von e Neumann y Ulam emplearon esta t´ cnica matematica (que ya era conocida anteriormente). e ´ ´ Este trabajo se realizo en Los Alamos, durante el conocido proyecto para la fabricacion de la ´ ´ bomba atomica. ´ En esta t´ cnica se generan artificialmente datos mediante el uso de un generador de numee ´ ros aleatorios y la funcion de probabilidad de inter´ s. El generador de numeros aleatorios se ´ e ´ emplea para generar variables seudo aleatorias distribuidas uniformemente en el intervalo [0, 1]. La funcion de probabilidad a muestrear puede ser una distribucion teorica (normal, ´ ´ ´ exponencial, etc.) o puede ser emp´rica, es decir, puede estar basada en observaciones del ı sistema real. La t´ cnica de Monte Carlo se emplea no solo para simular sistemas estocasticos, sino e ´ ´ tambi´ n para resolver problemas completamente deterministas (t´picamente aquellos que no e ı pueden ser resueltos anal´ticamente). Un ejemplo es la estimacion del valor del numero π ı ´ ´ mediante el procedimiento descrito a continuacion. ´ 173
  • 190. 174 ´ ´ ´ TEMA 13. CALCULO DEL NUMERO π POR EL METODO DE MONTE CARLO ´ 13.2. Estimacion del valor de π Suponga que se lanza un dardo al azar sobre una superficie cuadrada, cuyo lado tiene dos metros. Inscrito en el cuadrado, hay un c´rculo de un metro de radio. Si el dardo se lanza de ı forma aleatoria, la probabilidad de dar dentro del c´rculo (acierto) es igual a π/4. ı As´ pues, puede obtenerse una estimacion del numero π siguiendo el procedimiento siı ´ ´ guiente: 1. Se lanza el dardo de forma aleatoria un numero ntotal de veces. Sea naciertos el numero ´ ´ de veces que el dardo ha quedado dentro del c´rculo. ı 2. El numero π se estima de la forma siguiente: ´ π ≈4· naciertos ntotal (13.1) A mayor numero de tiradas se espera una mejor aproximacion. ´ ´ A continuacion se describe el algoritmo de la simulacion del laboratorio para la estimacion ´ ´ ´ del valor de π y como se ha programado usando Ejs. ´ ´ 13.3. El algoritmo de la simulacion En la Figura 13.1 se muestra el algoritmo de la simulacion. ´ Inicialmente se asigna al numero de lanzamientos (ntotal ) el valor 100. Empleando el ´ m´ todo calculaPI (definido en el panel Propio), que se muestra en la Figura 13.2, se realiza e una estimacion del valor de π: ´ 1. Se realizan ntotal lanzamientos aleatorios. 2. Se calcula naciertos . 3. Se estima el valor del numero π aplicando la Ecuacion (13.1). ´ ´ Mientras el usuario no cambie el valor de ntotal , la simulacion progresa sin realizar nuevos ´ calculos. Cuando el usuario cambia ntotal , vuelve a ejecutarse el m´ todo calculaPI, con lo que ´ e se obtiene una nueva estimacion del valor de π. ´ Puesto que cada vez que se realiza una r´ plica de la simulacion se emplea una semilla e ´ diferente para el generador de numeros aleatorios, se obtienen diferentes estimaciones del ´ numero π aun si se escoge para las diferentes r´ plicas un mismo valor de ntotal . ´ e ´ 13.4. Programacion de la vista En la Figura 13.3 se muestra la Vista del laboratorio virtual, que esta compuesta de una ´ unica ventana. En la parte inferior de esta ventana hay una botonera, con una casilla para ´ introducir el valor de ntotal y un boton (Reset) para reinicializar la simulacion. ´ ´ Cada vez que el usuario introduce un nuevo valor de ntotal y pulsa Enter se realiza una nueva estimacion del valor de π: se ejecuta el m´ todo calculaPI. ´ e En el centro de la ventana se muestra la mitad superior del c´rculo inscrito en el cuadrado ı y se senalan mediante puntos las posiciones en las cuales se ha ca´do el dardo. Para ello, ˜ ı se ha empleado el objeto Puntos, de la clase ConjuntoParticulas. El arbol de elementos de la ´ Vista se muestra en la Figura 13.4. Los valores de las propiedades mas relevantes del objeto Puntos son las siguientes (vea la ´ Figura 13.5): – Propiedad Elementos, que es el numero de part´culas (en este caso ntotal ). ´ ı – Propiedades X e Y, que son vectores que almacenan las coordenadas (x, y) de las part´cuı las.
  • 191. ´ 13.4. PROGRAMACION DE LA VISTA 175 Inicio nTotal, nAciertos, PI nTotal = 100; Declaración de variables (Panel Variables) Inicialización de variables (columna Valor del panel Variables) Realizar nTotal lanzamientos; Calcular nAciertos; PI = 4 * nAciertos / nTotal; Ejecución de los algoritmos del panel Inicialización Ejecución de los algoritmos del panel Ligaduras Representación gráfica de resultados (comunicación modelo vista) sí ¿Interacción del usuario? (comunicación vista modelo) no Ejecución de los algoritmos del panel Evolución Interactividad: El usuario cambia nTotal. Acción asociada: Realizar nTotal lanzamientos; Calcular nAciertos; PI = 4 * nAciertos / nTotal; Figura 13.1: Algoritmo de la simulacion. ´ Figura 13.2: M´ todo calculaPI. Estima el valor de π para un determinado ntotal . e
  • 192. ´ ´ ´ TEMA 13. CALCULO DEL NUMERO π POR EL METODO DE MONTE CARLO Figura 13.3: Vista del laboratorio virtual. Î Í È Ì Å Ë Ê Æ É È Ç Â Æ Ã Å Äà  Á Ò Õ Ð Ô ÓÐ Ò Ñ Ð Ï × Û Ò ÚÖÕÑ Ù Ø× Õ ÐÖ ß ÙÞ Ô ÑÝÕØÙ Ü ë ô ø ç ÷ ö é õ ô æ ê é è ç óè ê ò ã ñ ï î ð ï î ã í ì ë ê é è ç æ å ä ã â á à 176 ´ Figura 13.4: Arbol de elementos de la Vista. Figura 13.5: Propiedades del elemento Puntos, de la clase ConjuntoParticulas.
  • 193. ´ 13.4. PROGRAMACION DE LA VISTA 177 – Propiedad Tama˜ os X, que es tamano en la direccion del eje X de cada part´cula. La n ˜ ´ ı propiedad Tama˜ os Y es tamano en la direccion del eje Y de cada part´cula. n ˜ ´ ı – Propiedad Activo, que es una variable booleana que indica si el elemento es interactivo.
  • 194. 178 ´ ´ ´ TEMA 13. CALCULO DEL NUMERO π POR EL METODO DE MONTE CARLO
  • 195. Tema 14 ´ Simulacion interactiva de un globo aerost´ tico a Objetivos: Una vez estudiado el contenido del tema deber´a saber: ı ´ ´ • Dise˜ ar el algoritmo de simulacion de un modelo dinamico que contiene n ecuaciones diferenciales ordinarias y ecuaciones algebraicas, y programarlo usando Ejs. ´ • Programar metodos propios, que son invocados desde el panel Evolu´ cion. ´ • Usar la clase de elementos graficos Imagen. El objetivo de este laboratorio virtual es ilustrar el funcionamiento de un globo aerostatico ´ y constituye un bonito ejemplo de aplicacion del principio de Arqu´medes. ´ ı Este laboratorio virtual esta incluido en el CD del curso. Se trata del fichero GloboAeros´ tatico.xml, que esta grabado en el directorio laboratoriosTexto. ´ 14.1. Modelo de un globo aerost´ tico a El globo aerostatico obtiene su fuerza de sustentacion mediante el calentamiento de aire ´ ´ dentro de una cavidad. La diferencia de densidades entre el aire caliente dentro de la cavidad y el aire fr´o del exterior origina una fuerza debida al empuje de Arqu´medes que compensa el ı ı peso total de globo (teniendo en cuenta el peso de los ocupantes y el lastre). Sobre el globo actuan dos fuerzas de sentido contrario: ´ – La fuerza del flotacion (Fl ). ´ Fl = ρ · V · g (14.1) donde V es el volumen del globo, ρ es la densidad del aire atmosf´ rico y g es la acelerae cion gravitatoria. ´ – El peso total del globo (w) es la suma de tres t´ rminos: e 1. El peso del gas del globo (ρdg · V · g). 2. El peso total (ws ) de la tela del globo, la barquilla del globo y los pasajeros. 3. El peso del lastre (wl ). 179
  • 196. ´ ´ TEMA 14. SIMULACION INTERACTIVA DE UN GLOBO AEROSTATICO ù 180 ú ü û Figura 14.1: Diagrama de cuerpo libre del globo aerostatico. ´ Es decir, el peso total del globo es: w = ρdg · V · g + ws + wl (14.2) donde ρdg es la densidad del aire contenido dentro del globo. Dado que la fuerza neta que actua sobre el globo es Fl − w, aplicando la Ley de Newton se ´ obtiene: Fl − w = m· v = dv dt dh dt (14.3) (14.4) donde h es la posicion vertical del globo respecto al nivel del mar, v es la velocidad de ascenso ´ del globo y m es el peso total del globo: m= w g (14.5) Para obtener la fuerza de sustentacion (Fl ) se ha aplicado el principio de Arqu´medes (vea ´ ı la Ecuacion (14.1)), considerando que el volumen del globo (V ) es constante y teniendo en ´ cuenta la dependencia de la densidad del aire (ρ) con la presion (P ) y la temperatura (T ). ´ Se ha modelado el aire como un gas perfecto, por lo que se puede calcular su densidad aplicando la ecuacion de estado de los gases perfectos. As´ pues, la densidad del aire at´ ı mosf´ rico (ρ) y la la densidad del aire contenido dentro del globo (ρdg ) se calculan de la forma e siguiente: ρ = ρdg = P ·M R·T P ·M R · Tdg (14.6) (14.7) siendo R la constante de los gases ideales y M el peso molecular del aire. Obs´ rvese que se ha considerado que la presion del aire dentro del globo es la misma en e ´ todo momento que la presion del aire atmosf´ rico. ´ e La dependencia de la temperatura y de la presion del aire de la atmosfera con la altura se ´ ´ ha obteniendo considerando el modelo de la atmosfera estandar hasta los 11 Km de altura, ´ ´ que establece que la temperatura (T ) desciende 6.5 grados cada kilometro: ´
  • 197. ´ 14.2. EL ALGORITMO DE LA SIMULACION 181 T = T0 − 6.5 · 10−3 grados/metro · h (14.8) y que la presion (P ) obedece a la formula siguiente: ´ ´ P = P0 · T0 T −5.256 (14.9) donde T0 y P0 son la temperatura y la presion al nivel del mar respectivamente. ´ Finalmente, la variacion en la temperatura del aire contenido dentro del globo (Tdg ) de´ pende de que el quemador est´ apagado (apagado = 1) o encendido (apagado = 0). Cuando el e quemador esta apagado, existe un flujo de calor por conveccion entre el aire del globo y el ´ ´ aire atmosf´ rico. Cuando el quemador esta encendido, el flujo de calor procedente del mismo e ´ hace que aumente la temperatura del aire contenido dentro del globo. La ecuacion que describe la variacion de la temperatura Tdg en ambas situaciones es: ´ ´ dTdg = apagado · K · (T − Tdg ) + (1 − apagado) · q dt (14.10) ´ 14.2. El algoritmo de la simulacion Resumiendo la descripcion del modelo realizada en la Seccion 14.1, el modelo consta de ´ ´ las diez ecuaciones siguientes: = ρ·V ·g = ρdg · V · g + ws + wl dv = m· dt dh = dt w = g P ·M = R·T P ·M = R · Tdg (14.11) (14.12) T = T0 − 6.5 · 10−3 · h (14.18) P T0 T (14.19) Fl w Fl − w v m ρ ρdg dTdg dt = P0 · (14.13) (14.14) (14.15) (14.16) (14.17) −5.256 = apagado · K · (T − Tdg ) + (1 − apagado) · q Las variables se clasifican de la forma siguiente: Variables conocidas. Par´ metros: a – Temperatura al nivel del mar (T0 ). – Presion al nivel del mar (P0 ). ´ – Volumen del globo (V ). – Peso molecular del aire (M ). – Aceleracion gravitatoria (g). ´ – Peso de la tela del globo, la barquilla y los ocupantes (ws ). – Peso del lastre (wl ). (14.20)
  • 198. 182 ´ ´ TEMA 14. SIMULACION INTERACTIVA DE UN GLOBO AEROSTATICO – Constante de los gases ideales (R). – Estado del calentador (apagado). – Variacion de la temperatura cuando el calentador esta encendido (q). ´ ´ – Coeficiente de transferencia de calor entre el aire del globo y la atmosfera (K). ´ Variables conocidas. Tiempo y variables de estado: – Tiempo (t). – Altura a la que esta situado el globo (h), tomando como referencia el nivel del mar. ´ – Velocidad ascendente del globo (v). – Temperatura del gas contenido dentro del globo (Tdg ). Variables desconocidas. Variables algebraicas del modelo: – Presion del aire atmosf´ rico (P ). ´ e – Temperatura del aire atmosf´ rico (T ). e – Densidad del aire atmosf´ rico a la altura a la que esta situado el globo (ρ). e ´ – Densidad del aire contenido dentro del globo (ρdg ). – Fuerza de sustentacion (Fl ). ´ – Peso total del globo (w). – Masa total del globo (m). Variables desconocidas. Variables auxiliares que sustituyen a las derivadas de las variables de estado: – Derivada de la altura del globo (derh). – Derivada de la velocidad de ascenso del globo (derv). – Derivada de la temperatura del aire contenido dentro del globo (derTdg ). Asignando la causalidad computacional a las Ecuaciones (14.11) – (14.20), ordenandolas ´ y despejando la variable a evaluar de cada una de ellas (que se senala incluy´ ndola entre ˜ e corchetes) se obtiene: [T ] = [P ] = [ρ] = [Fl ] = [ρdg ] = [w] = [m] = [derv] = [derh] = [derTdg ] = T0 − 6.5 · 10−3 · h P0 · T0 T (14.21) −5.256 (14.22) P ·M R·T ρ·V ·g P ·M R · Tdg ρdg · V · g + ws + wl w g Fl − w m v (14.29) apagado · K · (T − Tdg ) + (1 − apagado) · q (14.30) (14.23) (14.24) (14.25) (14.26) (14.27) (14.28) En una pagina de EDO, en el panel Evolucion, deben calcularse las variables de estado (h, ´ ´ v, Tdg ) en funcion de sus derivadas. Para ello, se va a usar uno de los m´ todos de integracion ´ e ´ que proporciona Ejs: el m´ todo Runge-Kutta de cuarto orden. e Para el calculo de las derivadas se han programado dos m´ todos propios en la pagina ´ e ´ Propio de Ejs (ver Figura 14.4). Estos m´ todos propios son invocados desde el panel Evolucion e ´ de Ejs para calcular las derivadas (ver Figura 14.5). Como estos m´ todos son invocados para el calculo de las derivadas desde una pagina Edo e ´ ´ de Ejs, unicamente pueden ser funcion de variables de estado, parametros y de la variable ´ ´ ´ tiempo.
  • 199. ´ 14.3. PROGRAMACION DE LA VISTA 183 A continuacion, se describen brevemente los dos m´ todos programados: ´ e • M´ todo Flcalc: Devuelve el valor de Fl y tiene como argumentos h, P0 y T0 . El valor de e Fl es calculado en funcion de los valores de h, P0 , T0 y otros parametros que no var´an ´ ´ ı durante la simulacion. ´ La expresion para el calculo de Fl se obtiene combinando las Ecs. (14.21) – (14.24): ´ ´ P0 · T0 (T0 −6.5·10−3 ·h) −5.256 ·M ·V ·g (14.31) R · (T0 − 6.5 · · h) • M´ todo wcalc: Devuelve el valor de w y tiene como argumentos P0 , T0 , h, Tdg y wl . El e valor de w es calculado en funcion de los valores de P0 , T0 , h, Tdg , wl y otros parametros ´ ´ que no var´an durante la simulacion. ı ´ Fl = 10−3 La expresion para el calculo de w se obtiene combinando las Ecs. (14.21), (14.22), (14.25) ´ ´ y (14.26): w= P0 · T0 (T0 −6.5·10−3 ·h) −5.256 ·M R · Tdg · V · g + ws + wl (14.32) Dentro del panel Evolucion, se crea una segunda pagina, que se situa a la derecha de la ´ ´ ´ pagina EDO (es decir, se ejecuta a continuacion de la pagina de EDO). Esta segunda pagina ´ ´ ´ ´ tiene como finalidad evitar que el globo descienda por debajo de h = 0. El codigo de esta pagina de evolucion es el siguiente: ´ ´ ´ if ( h 0 ( Fl - w ) 0 ) { h = 0; v = 0; } ´ 14.3. Programacion de la vista En la Figura 14.2 se muestra la vista del laboratorio virtual. La vista se compone de una ventana principal (mainFrame) y una ventana de dialogo (Ven´ tanaDialogoPlot). Esta ultima contiene graficas de la evolucion temporal de ciertas variables ´ ´ ´ de inter´ s: la altura del globo (h), la presion y la temperatura del aire a dicha altura (P , T ) , y e ´ la temperatura del gas del globo (Tdg ). En la parte inferior de la ventana principal hay botones para controlar la simulacion ´ (Pause, Reset y Play), un selector que permite mostrar y ocultar la ventana de dialogo (Venta´ naDialogoPlot), botones que permiten encender y apagar el quemador, y casillas que permiten introducir la temperatura y la presion al nivel del mar (T0 , P0 ), y la masa del lastre (ml ). ´ El arbol de elementos de la vista se muestra en la Figura 14.3. Se ha introducido en la ´ vista un elemento de la clase Imagen, que se explica a continuacion al ser la primera vez que ´ aparece en este texto. La clase Imagen es un elemento grafico que muestra una imagen .gif o .jpg con el tamano y ´ ˜ posicion especificados en sus propiedades. Las propiedades mas relevantes de la clase Imagen ´ ´ son: – X: coordenada X de la posicion de la imagen. ´ – Y: coordenada Y de la posicion de la imagen. ´ – Tama˜ o X: tamano de la imagen segun el eje X. n ˜ ´ – Tama˜ o Y: tamano de la imagen segun el eje Y. n ˜ ´ – Activo: indica si el elemento es interactivo. – Posicion: indica la situacion del “punto sensitivo” de la imagen respecto de las coorde´ nadas especificadas para dicha imagen.
  • 200. ´ ´ TEMA 14. SIMULACION INTERACTIVA DE UN GLOBO AEROSTATICO Figura 14.2: Vista del laboratorio virtual. ¨§ ¦¥ ¤ £ !   $ # ! ¡ %  ¡ ! ¨ § ¦ ¥ ¤ £     © ¨ § ¦ ¥ ¤ £ ¢ ¡   ÿþ ý 184 ´ Figura 14.3: Arbol de elementos de la vista.
  • 201. ´ 14.3. PROGRAMACION DE LA VISTA Figura 14.4: Panel Propio. Figura 14.5: Panel Evolucion. ´ 185
  • 202. 186 ´ ´ TEMA 14. SIMULACION INTERACTIVA DE UN GLOBO AEROSTATICO
  • 203. Tema 15 Laboratorio virtual del sistema bola y varilla Objetivos: Una vez estudiado el contenido del tema deber´a saber: ı ´ • Dise˜ ar el algoritmo de simulacion de un modelo con una parte de n tiempo continuo y otra de tiempo discreto, y programarlo usando Ejs. ´ • Usar las clases de elementos graficos: Particula y BotonRadio. Este laboratorio virtual esta grabado en el CD del curso. Se trata del fichero Balland´ Beam.xml, que esta en el directorio laboratoriosTexto. ´ 15.1. Modelo del sistema bola y varilla Este sistema esta compuesto de una varilla, un motor y una bola. La varilla esta unida a ´ ´ un motor que permite variar el angulo θ que forma la varilla con respecto a la horizontal. La ´ bola esta situada sobre la varilla y es libre de rodar bajo la accion de la gravedad (un pequeno ´ ´ ˜ canal en la varilla impide que la bola ruede hacia un lado). El modelo que describe el movimiento de la bola, considerando que la bola rueda sobre la varilla, es: dx dt dv dt = v (15.1) 5 = − · g · sin (θ) 7 (15.2) donde x es la posicion de la bola (vea la Figura 15.1), v es su velocidad, θ es el angulo de la ´ ´ varilla y g la aceleracion gravitatoria. ´ Este modelo es inestable y constituye un buen ejemplo para aprender a aplicar t´ cnicas de e control automatico de sistemas. El objetivo de control es mover la bola a la posicion deseada, ´ ´ cambiando el angulo de la varilla. As´ pues, la variable controlada es la posicion de la pelota ´ ı ´ (x) y la variable manipulada es el angulo de la varilla (θ). ´ 187
  • 204. TEMA 15. LABORATORIO VIRTUAL DEL SISTEMA BOLA Y VARILLA 188 ' θ 1) 0) ( Figura 15.1: Diagrama del sistema bola y varilla. En este laboratorio virtual el sistema se ha controlado mediante un controlador PID discreto, cuyos parametros pueden ser modificados interactivamente durante la simulacion. ´ ´ Tambi´ n pueden ser modificados interactivamente la posicion de la bola (x), la inclinacion de e ´ ´ la varilla (θ) y el valor de consigna para la posicion de la bola. A continuacion se describe el ´ ´ modelo del controlador PID empleado. Controlador PID discreto Se ha programado un controlador PID discreto con dos grados de libertad y anti-windup. En la descripcion del algoritmo del controlador se emplea la notacion siguiente: ´ ´ – El valor de la consigna, en el instante de tiempo tn , es la posicion en la que se desea ´ situar la bola. Se denomina refn . – El valor de la salida del sistema en el instante tn es la posicion de la bola en dicho ´ instante, que se denomina xn . – La salida del controlador, en el instante de tiempo tn , es el angulo de la varilla en dicho ´ instante: θn . El algoritmo que describe el controlador es el siguiente1 : 1. Inicializacion del controlador: ´ n = 0 (15.3) I0 D0 = 0 = 0 (15.4) (15.5) Al inicializar el modelo de la planta debe asignarse valor a x0 . 2. n = n + 1 3. Leer el valor de la referencia (refn ) y de la variable controlada (xn ). 4. Calculo de Pn : ´ Pn = Kp · (b · refn − xn ) (15.6) 5. Calculo de Dn : ´ Dn = Ad · Dn−1 − Bd · (xn − xn−1 ) (15.7) un = Pn + In + Dn (15.8) 6. Calculo de un : ´ 7. Calculo del valor saturado de la senal de control: ´ ˜ θn = m´ (um´x , m´x (um´ , un )) ın a a ın (15.9) 8. Calculo del t´ rmino integral en el instante tn+1 : ´ e In+1 = In + Bi · (refn − xn ) + Ar · (θn − un ) 1 El modelo de este controlador esta extra´do del texto (Astrom Wittenmark 1997). ´ ı (15.10)
  • 205. ´ 15.2. EL ALGORITMO DE LA SIMULACION 189 9. Saltar al Paso 2. Como puede observarse en el algoritmo anterior, el controlador tiene los parametros si´ guientes: – – – – – – – – – La constante proporcional (Kp ). La fraccion del valor de consigna en el t´ rmino proporcional (b). ´ e Valor m´nimo de la senal de control (um´ ). ı ˜ ın Valor maximo de la senal de control (um´x ). ´ ˜ a Tiempo de muestreo (Ts ). Constante de tiempo integral (Ti ). Constante de tiempo derivativa (Td ). Constante de tiempo de reinicio (Tt ). Ganancia maxima derivativa (N ). ´ Asimismo, los parametros Bi , Ar , Ad y Bd se calculan, a partir de los parametros anterio´ ´ res, de la forma siguiente: Bi = Ar = Ad = Bd = Kp · Ts Ti Ts Tt Td Td + N · Ts Kp · N · Ad (15.11) (15.12) (15.13) (15.14) ´ 15.2. El algoritmo de la simulacion En la Figura 15.2 se muestra el algoritmo de la simulacion del laboratorio virtual. ´ El calculo de las variables de estado continuas (x, v) y de la variable de estado discreta (I) ´ se realiza en el panel Evolucion. ´ El periodo de muestreo del controlador debe ser un multiplo entero del tamano del paso ´ ˜ de integracion de las ecuaciones diferenciales ordinarias. Para sincronizar la solucion de la ´ ´ parte discreta del modelo con la integracion de la parte continua, se ha definido la variable ´ tSampleCounter: – Cada vez que el m´ todo de integracion avanza un paso, se incrementa el valor de e ´ tSampleCounter. – Cuando tSampleCounter alcanza el valor tSample (Ts ), se ejecuta la parte discreta del modelo y a continuacion se pone a cero el valor de tSampleCounter. ´ Las incognitas algebraicas, tanto de tiempo continuo (derx, dery) como de tiempo discreto ´ (P , D, u, θ) de calculan en el panel Ligaduras. En las Figura 15.3 se muestra la ventana del panel Ligaduras en la que se calculan las variables algebraicas de tiempo discreto. En las Figuras 15.4 y 15.5 se muestran las ventanas de Evolucion para el calculo de las ´ ´ variables de estado discretas y continuas del modelo respectivamente. ´ 15.3. Programacion de la vista La Vista del laboratorio virtual, que se muestra en la Figura 15.6, se compone de: – Una ventana principal (mainFrame).
  • 206. TEMA 15. LABORATORIO VIRTUAL DEL SISTEMA BOLA Y VARILLA 190 Inicio t, dt, x, x0, v, θ, g, I0, D0, P, I, D, u, Kp, b, umín, umáx, Ts, Ti, Td, Tt, N, derx, derv t = 0; dt = 0.01; x = 0; x0 = 0; v = 0; θ = 0; g = 9.81; I0 = 0; D0 = 0; b = 1; Kp b umín umáx Ts Ti Td Tt N = -2 = 1; = -0.1745; = 0.7145; = 0.05; = 10; = 0.2; = 100; = 50; Declaración de variables (Panel Variables) Inicialización de variables (columna Valor del panel Variables) Ejecución de los algoritmos del panel Inicialización derx = v; derv = -5/7 * g * Math.sin(θ) Si t es un múltiplo de Ts, entonces calcular P, D, u, θ; Ejecución de los algoritmos del panel Ligaduras Representación gráfica de resultados (comunicación modelo vista) sí ¿Interacción del usuario? (comunicación vista modelo) Ejecución de la acción ejercida por el usuario no Ejecución de los algoritmos del panel Evolución Cálculo de x y v; Si t es un múltiplo de Ts: Calcular I; x0 = x; Figura 15.2: El algoritmo de la simulacion. ´
  • 207. ´ 15.3. PROGRAMACION DE LA VISTA Figura 15.3: Calculo de las variables algebraicas de tiempo discreto. ´ Figura 15.4: Calculo de la variable de estado de tiempo discreto. ´ 191
  • 208. 192 TEMA 15. LABORATORIO VIRTUAL DEL SISTEMA BOLA Y VARILLA Figura 15.5: Calculo de las variables de estado de tiempo continuo. ´ Figura 15.6: Vista del laboratorio virtual.
  • 209. Figura 15.8: Propiedades del objeto Ball, de la clase Particula. ´ Figura 15.7: Arbol de elementos de la Vista del laboratorio virtual. bP e 9 d c bI b 8 5 F DC E DC 5 B A@ 9 R c 9 h g bII R 8 76 5 43 2 9@ R QP I H 9 G 5 F D C E D C 5 B A @@ 9 8 7 6 5 43 2 D a`6 E D W 5 6 U` DC Y EX6W D V D U T S 9@ R QPI H 9 G F 7 U D 5C 7 7 3 F 5 W 7C D a D WD V 7` B D W 5 B U f6 7 3 U T S bP e 9 d c bI b 8 ´ 15.3. PROGRAMACION DE LA VISTA 193
  • 210. 194 TEMA 15. LABORATORIO VIRTUAL DEL SISTEMA BOLA Y VARILLA Figura 15.9: Propiedades del objeto ButtonManual, de la clase BotonRadio. – La ventana de dialogo dialogPlots, donde se muestra la evolucion temporal de las varia´ ´ bles relevantes del sistema. – La ventana de dialogo dialogC, donde se encuentran casillas y deslizadores (sliders) que ´ permiten modificar los valores de los parametros del controlador. ´ El arbol de la Vista de este laboratorio se muestra en la Figura 15.7. La ventana principal ´ contiene en el centro una representacion esquematica del sistema bola y varilla. En la parte ´ ´ inferior de esta ventana hay botones que permiten controlar la simulacion (Play, Pause y ´ Reset), radio-botones que permiten pasar de control manual a automatico o viceversa, y ´ selectores que permiten mostrar y ocultar las dos ventanas de dialogo. ´ En la programacion de la Vista se han empleado dos nuevas clases de elementos graficos ´ ´ que no hab´an sido usadas anteriormente en este texto: ı – Particula. – Radioboton. A continuacion se describen algunas propiedades relevantes de cada una de ellas. ´ La clase de elemento gr´ fico Particula a Las propiedades del objeto Ball, de la clase Part´cula se muestran en la Figura 15.8. Las ı propiedades mas relevantes de esta clase son: ´ – X: coordenada X de la posicion de la part´cula. ´ ı – Y: coordenada Y de la posicion de la part´cula. ´ ı – Tama˜ o X: tamano de la part´cula segun el eje X. n ˜ ı ´ – Tama˜ o Y: tamano de la part´cula segun el eje Y. n ˜ ı ´ – Visible: indica si el elemento es visible o no. – Activo: indica si el elemento es interactivo. – Al pulsar: accion que se produce cuando el boton del raton se presiona sobre el objeto. ´ ´ ´ – Al mover: accion que se produce cuando se mueve el objeto con el raton. ´ ´ – Al soltar: accion que se produce cuando se deja de presionar el boton del raton. ´ ´ ´ La clase de elemento gr´ fico BotonRadio a Las propiedades del objeto ButtonManual, de la clase BotonRadio, se muestran en la Figura 15.9. La clase BotonRadio se encuentra en el panel Basicos. Esta clase se usa para mostrar y ´ modificar un valor booleano.
  • 211. ´ 15.3. PROGRAMACION DE LA VISTA 195 Cuando mas de un objeto de la clase BotonRadio esta en el mismo contenedor, solo ´ ´ ´ uno puede ser seleccionado en cada momento, aunque es posible que no haya ninguno seleccionado. Las propiedades mas relevantes de esta clase son las siguientes: ´ – – – – – Variable: valor que se muestra y modifica al accionar el boton. ´ Seleccionada: valor inicial de la variable. Accion: accion que se produce cuando se pulsa el boton. ´ ´ ´ Accion Si: accion que se produce cuando se selecciona el elemento. ´ ´ Accion No: accion que se produce cuando se deselecciona el elemento. ´ ´
  • 212. 196 TEMA 15. LABORATORIO VIRTUAL DEL SISTEMA BOLA Y VARILLA
  • 215. Ap´ ndice A e Java para el desarrollo de laboratorios virtuales en Ejs ´ Objetivos: Una vez estudiado el contenido de este apendice, deber´a conoı cer: ´ ´ • Cuales son los tipos de datos del lenguaje Java y cuales encuentran ´ aplicacion en Ejs. ´ • Como se declaran e inicializan las variables, vectores y matrices en Ejs. ´ ´ • Cuales son los operadores de Java mas comunmente empleados en la ´ ´ descripcion del modelo en Ejs. • Las sentencias if y for de Java. ´ ´ • Algunos fundamentos de la programacion de metodos en Java. ´ ´ • Algunos de los metodos de la clase Math de Java y como emplearlos. ´ A.1. Introduccion Para poder sacar el maximo partido a Ejs es necesario tener algunos conocimiento basicos ´ ´ del lenguaje de programacion Java. Esto es debido a que el programador del laboratorio ´ virtual debe describir en lenguaje Java el modelo matematico, y la interaccion entre la vista y ´ ´ el modelo. Este ap´ ndice pretende servir como introduccion y como gu´a rapida de referencia de e ´ ı ´ aquellos aspectos del lenguaje Java que resultan de utilidad a la hora de realizar laboratorios virtuales usando Ejs. En Internet esta disponible abundante informacion acerca del lenguaje Java: cursos, ´ ´ documentacion, ejemplos, foros, paginas de preguntas frecuentes, etc. Tambi´ n existe un ´ ´ e gran numero de libros1 y manuales de Java, algunos de los cuales se encuentran disponibles ´ gratuitamente en la red2 . Todo ello puede servir para profundizar en el tema, a aquellas personas que est´ n interesadas en ello. e 1 En la escritura de este Ap´ ndice se ha empleado como referencia el texto “Java 2. Manual de Referencia. Cuarta e Edicion”, escrito por Herbert Schildt y publicado en 2001 por la editorial McGraw-Hill. En nuestra opinion se trata ´ ´ de un magn´fico libro, que recomendamos a todo aquel que est´ interesado en aprender Java desde cero. ı e 2 Por ejemplo, el libro ”Thinking in Java”, de Bruce Eckel. 199
  • 216. ´ 200 APENDICE A. JAVA PARA EL DESARROLLO DE LABORATORIOS VIRTUALES EN EJS Figura A.1: Opciones para la declaracion del tipo de las variables. ´ A.2. Tipos de datos Al definir las variables del laboratorio virtual es preciso especificar a qu´ tipo pertenece e cada una de ellas. Esto se hace seleccionado el tipo en la columna Tipo del panel Variables (v´ ase la Figura A.1). Ejs ofrece cinco opciones: boolean, int, double, String y Object. Las e tres primeras (boolean, int, double) corresponden a tipos simples de datos de Java. La cuarta, String, es el tipo empleado para definir cadenas de caracteres. En esta seccion se ´ explicaran cuales son los tipos simples de datos y qu´ son las cadenas de caracteres en Java. ´ ´ e A.2.1. Tipos simples de datos Java posee ocho tipos simples de datos, que se definen mediante las palabras reservadas byte, short, int, long, char, float, double y boolean. Estos ocho tipos pueden clasificarse en: – Tipos enteros: byte, short, int y long. La diferencia entre estos cuatro tipos es el rango de valores admisibles. Por ejemplo, una variable del tipo byte solo puede tomar valores ´ enteros comprendidos entre −128 y 127, ambos inclusive. En la Tabla A.1 se muestra el rango de valores que pueden tomar las variables de cada tipo. El tipo entero utilizado en Ejs es int. – Tipos en coma flotante: float y double. Representan numeros en simple y doble precision ´ ´ respectivamente. El rango de valores para numeros positivos se muestra en la Tabla A.2. ´ Ademas, ambos tipos comprenden los correspondientes numeros negativos y el cero. ´ ´ Por motivo de precision en los calculos, cuando se emplea Java para la simulacion por ´ ´ ´ ordenador de modelos matematicos, el tipo double es la mejor eleccion para representar ´ ´ numeros en coma flotante. Por otra parte, todas las funciones matematicas transcen´ ´ dentes (por ejemplo, sin, cos, sqrt) devuelven valores del tipo double. El tipo en coma flotante que usa Ejs es double. ´ – Tipo caracter: char. Este es el tipo de datos que utiliza Java para almacenar caracteres. ´ Java emplea Unicode3 , que es un juego de caracteres que comprende todos los caracteres que se pueden encontrar en todas las lenguas de la humanidad. Puesto que las variables en Ejs no pueden ser del tipo char, las variables de tipo caracter pueden definirse en ´ Ejs como cadenas de caracteres, es decir, como variables del tipo String. – Tipo booleano: boolean. Las variables de este tipo pueden tomar dos valores: true y false. Estos valores no se convierten a ninguna representacion num´ rica. Es decir, el literal ´ e 3 Se puede obtener mas informacion sobre Unicode en http://www.unicode.org/ ´ ´
  • 217. A.2. TIPOS DE DATOS 201 true en Java no es igual a 1, ni el literal false es igual a 0. En Java estos dos literales solo pueden asignarse a las variables declaradas como boolean y ser empleadas en ´ expresiones con operadores booleanos. Tabla A.1: Rango de los tipos enteros. Tipo de variable Rango de valores byte short int long -128 -32,768 -2,147,483,648 -9,223,372,036,854,775,808 a a a a 127 32,767 2,147,483,547 9,223,372,036,854,775,807 Tabla A.2: Rango de los tipos en coma flotante. Tipo de variable Rango de valores float double 3.4 · 10−38 1.7 · 10−308 a a 3.4 · 10+38 1.7 · 10−308 A.2.2. Cadenas de caracteres Las cadenas de caracteres no son tipos simples de Java, sino objetos de la clase String. Las cadenas de caracteres se especifican en Java encerrando la secuencia de caracteres entre dobles comillas. Por ejemplo: Hola mundo Algunos caracteres especiales, que pueden ser incluidos en las cadenas de caracteres, son los dos siguientes: (salto de l´nea) ı (tabulador) n t Por ejemplo: Primera lineanSegunda linea Por otra parte, como la comilla doble senala en principio y el fin de la cadena de caracteres, ˜ si se desea incluir el caracter comilla doble en la cadena de caracteres no puede incluirse tal ´ cual, sino que debe escribirse: ” Algo similar sucede con la comilla simple: si se desea incluir un caracter comilla simple ´ en la cadena de caracteres debe anteponerse el caracter barra inclinada, es decir: ´ ’ Si se desea incluir un caracter barra inclinada en la cadena de caracteres debe escribirse: ´
  • 218. ´ 202 APENDICE A. JAVA PARA EL DESARROLLO DE LABORATORIOS VIRTUALES EN EJS A.3. Variables En esta seccion se explican las restricciones que impone el lenguaje Java respecto a ´ la forma de nombrar las variables. Asimismo, se explica brevemente como se definen e ´ inicializan en Ejs las variables multidimensionales (vectores y matrices). No entraremos en detalles acerca de como habr´a que realizar esta definicion directamente en Java, puesto que ´ ı ´ no es necesario conocerlo para programar laboratorios virtuales en Ejs. A.3.1. Nombre de las variables El nombre de una variable puede ser cualquier identificador valido en Java. En Java, un ´ identificador comienza con una letra, un subrayado ( ) o un s´mbolo de dolar ($). Los siguienı ´ tes caracteres pueden ser letras o d´gitos. Se distinguen las mayusculas de las minusculas, ı ´ ´ y no hay longitud maxima. Por ejemplo, dos identificadores validos son: longPendulo2 y ´ ´ long Pendulo 2. ´ Las palabras clave de Java no pueden ser usadas como identificadores. Estas son: abstract boolean break byte byvalue case catch char class const continue default do double else extends false final finally float for goto if implements import instanceof int interface long native new null package private protected public return short static super switch synchronized this threadsafe throw transient true try void while Ademas de estas palabras clave, hay palabras reservadas que tampoco pueden emplearse ´ ´ como identificadores. Estas son: cast operator future outer generic rest inner var A.3.2. Vectores y matrices En la columna Dimension del panel Variables de Ejs puede especificarse la dimension de ´ las variables. En la Figura A.2 se muestra un ejemplo. La variable posicion planeta es un vector de tres componentes de tipo double. La variable nombres es un vector de cuatro componentes de tipo String. La inicializacion de estas variables vectoriales puede hacerse en el panel Inicializacion de ´ ´ Ejs. En la Figura A.3 se muestra un ejemplo. Obs´ rvese que el ´ndice de los vectores comienza e ı en cero. Por ejemplo, el vector nombres, de dimension 4, posee los componentes siguientes: ´ nombres[0] nombres[1] nombres[2] nombres[3] A.4. Operadores La mayor parte de los operadores de Java pueden clasificarse en los cuatro grupos siguientes: aritm´ ticos, a nivel de bit, relacionales y logicos. En esta seccion se explicaran algunos e ´ ´ ´ de los operadores aritm´ ticos, relacionales y booleanos mas comunmente usados. e ´ ´
  • 219. A.4. OPERADORES 203 Figura A.2: Declaracion del nombre, tipo y dimension de variables vectoriales. ´ ´ Figura A.3: Inicializacion de variables vectoriales. ´ A.4.1. Operadores aritm´ ticos e Los operadores aritm´ ticos se utilizan el expresiones matematicas, debi´ ndose aplicar e ´ e sobre operandos de tipo num´ rico (es decir, en el caso de Ejs, sobre variables de los tipos e int y double). A continuacion, se muestran los mas comunmente empleados: ´ ´ ´ + * / ++ -+= -= *= /= Suma Resta Multiplicacion ´ Division ´ Incremento Decremento Suma y asignacion ´ Resta y asignacion ´ Producto y asignacion ´ Division y asignacion ´ ´ Los operandos aritm´ ticos basicos (suma, resta, multiplicacion y division) se comportan e ´ ´ ´ de la forma habitual. No obstante, hay que tener en cuenta que cuando se opera el operador division a un tipo entero se pierde la componente decimal del resultado. ´ Java proporciona operadores especiales que permiten combinar una operacion aritm´ tica ´ e con una asignacion. Se denominan operadores de asignacion. Por ejemplo, una sentencia ´ ´ como la siguiente: a = a + 5;
  • 220. ´ 204 APENDICE A. JAVA PARA EL DESARROLLO DE LABORATORIOS VIRTUALES EN EJS puede escribirse de la forma siguiente: a += 5; Ambas sentencias realizan la misma accion: incrementar el valor de a en 5. Analogamente, ´ ´ existen operadores de asignacion para todos los operadores que se aplican sobre dos operan´ dos. Cualquier sentencia de la forma: variable = variable operador expresi´n; o puede escribirse de la forma siguiente: variable operador= expresi´n; o Otro tipo de operadores aritm´ ticos son los operadores incremento (--) y decremento (++). e El operador incremento incrementa en una unidad su operando, mientras que el operador decremento lo reduce en una unidad. Por ejemplo, esta sentencia: a = a + 1; puede escribirse de la forma siguiente: a++; Analogamente, esta sentencia: ´ a = a - 1; puede escribirse de la forma siguiente: a--; A.4.2. Operadores relacionales Los operadores relacionales determinan la relacion que un operando tiene con otro, dando ´ como resultado un booleano. A continuacion se muestran los operadores relacionales: ´ == != = = Igual a Distinto que Mayor que Menor que Mayor o igual que Menor o igual que La aplicacion mas frecuente de estos operandos es es la obtencion de expresiones que ´ ´ ´ controlan la sentencia if y las sentencias de bucles (for, while y do-while). ´ A.4.3. Operadores logicos booleanos Los operadores logicos que se muestran a continuacion solo operan sobre operandos del ´ ´ ´ tipo boolean. Todos ellos combinan dos valores boolean para dar como resultado un valor boolean.
  • 221. A.4. OPERADORES 205 AND logico ´ AND en cortocircuito OR logico ´ OR en cortocircuito NOT logico unario ´ Igual a Distinto de | || ! == != El operador NOT logico (!) invierte el estado booleano: ´ !true = false !false = true Con el fin de definir el significado de ambos operadores, en la siguiente tabla se muestra el resultado obtenido de realizar la operacion logica OR y la operacion logica AND entre dos ´ ´ ´ ´ operandos booleanos A y B. A false false true true B false true false true A OR B false true true true A AND B false false false true Java proporciona dos versiones del operador AND: el AND logico () y el AND en cortocir´ cuito (). Lo mismo sucede con el operador OR. Existen dos versiones en Java: el OR logico ´ (|) y el OR en cortocircuito (||). En la tabla anterior puede observarse que el operador OR da como resultado true cuando el operando A vale true, con independencia del valor que tome B. Del mismo modo, el operador AND da como resultado false cuando el operando A vale false, con independiencia del valor que tome B. Cuando se utilizan las formas y || de estos operadores, en lugar de y |, Java no evalua el operando de la derecha si el resultado de la operacion ya queda determinado por el ´ ´ valor que toma el operando de la izquierda. Los operadores en cortocircuito ( y ||) resultan utiles en situaciones como la que se ´ muestra en la expresion logica siguiente: ´ ´ denom != 0 num/denom 10 Si la variable denom vale cero, la expresion num/denom produce un error en tiempo de ´ ejecucion. Para evitar que esto suceda, se emplea el operador AND en cortocircuito. Con ello, ´ en primer lugar se evalua la expresion logica denom != 0, y solo en caso de que sea true se ´ ´ ´ ´ evalua la expresion num/denom 10. ´ ´ ´ A.4.4. Operador de asignacion El operador de asignacion es un solo signo igual (=). Se emplea en sentencias del tipo ´ siguiente: variable = expresi´n; o donde el tipo de la variable situada al lado izquierdo de la igualdad debe ser compatible con el tipo resultante de evaluar la expresion escrita en el lazo derecho. El efecto de una sentencia ´ como la anterior es evaluar la expresion del lado derecho y asignar el resultado obtenido a la ´ variable del lado izquierdo de la igualdad.
  • 222. ´ 206 APENDICE A. JAVA PARA EL DESARROLLO DE LABORATORIOS VIRTUALES EN EJS A.5. Control del flujo del programa Java proporciona dos sentencias de seleccion: if y switch. Mediante estas sentencias se ´ controla el flujo del programa en funcion de condiciones conocidas durante el tiempo de ´ ejecucion. ´ Ademas, Java proporciona sentencias de iteracion: for, while y do-while. Mediante estas ´ ´ sentencias se crean lo que comunmente se denomina bucles. Un bucle ejecuta repetidas ´ veces un mismo conjunto de sentencias hasta que se satisface una determinada condicion de ´ finalizacion. ´ En esta seccion se explicara unicamente el funcionamiento de las sentencias if y for, por ´ ´ ´ ser las mas frecuentemente empleadas. ´ A.5.1. if La sentencia if-else es la sentencia de bifurcacion condicional en Java. La forma general ´ de la sentencia es: if ( condici´n booleana ) { o sentencias1; } else { sentencias2; } donde la clausula else el opcional. Es decir, es valido escribir: ´ ´ if ( condici´n booleana ) { o sentencias1; } La sentencia if funciona de la forma siguiente. Si el resultado de evaluar la expresion ´ booleana es true, entonces se ejecutan las sentencias sentencias1. Si el resultado es false, entonces se ejecutan las sentencias sentencias2 (si es que existen). En ningun caso se ´ ejecutaran ambos grupos de sentencias. ´ Por ejemplo, el funcionamiento de la sentencia: if ( a = b ) { a = 0; } else { b = 0; } es el siguiente. Si a es mayor o igual que b, entonces se asigna el valor cero a la variable a. Por el contrario, si a no es mayor o igual que b, entonces se asigna el valor cero a la variable b. En ningun caso se asignara el valor cero a ambas variables. ´ ´ A.5.2. for La forma general de la sentencia for es la siguiente: for(expresi´n inicializaci´n; expresi´n condici´n; expresi´n iteraci´n) { o o o o o o sentencias; }
  • 223. A.6. COMENTARIOS 207 Si solamente se repite una sentencia en el bucle, no es necesario utilizar las llaves. En este caso, se escribir´a: ı for(expresi´n inicializaci´n; expresi´n condici´n; expresi´n iteraci´n) o o o o o o sentencia; El bucle for funciona como se describe a continuacion. ´ – En primer lugar, se ejecuta la expresi´n de inicializaci´n. Generalmente, esta o o expresion declara e inicializa la variable de control del bucle. ´ – A continuacion, se evalua la expresi´n de condici´n, que debe ser una expresion ´ ´ o o ´ booleana. Si la expresion es verdadera, se ejecutan las sentencias del bucle. Si es falsa, ´ el bucle finaliza. Generalmente, en esta expresion se compara la variable de control del ´ bucle con algun valor en concreto. ´ – En caso de que el bucle no haya finalizado, se ejecuta la expresi´n de iteraci´n. o o Habitualmente, esta es la expresion en la que se incrementa o se reduce el valor de la ´ ´ variable de control. – Cada vez que se recorre el bucle, en primer lugar se vuelve a evaluar la expresion ´ condicional, a continuacion se ejecuta las sentencias del cuerpo del bucle y despu´ s ´ e la expresion de iteracion. El proceso se repite hasta que la expresi´n de condici´n ´ ´ o o sea falsa. Por ejemplo, el siguiente bucle for calcula la suma de los cinco primeros numeros enteros ´ y almacena el resultado en la variable n. Una vez finalizada la ejecucion del bucle, n guarda ´ el valor obtenido de evaluar 1 + 2 + 3 + 4 + 5. for (int i = 0; i 6; i++) n += i; Obs´ rvese que en el ejemplo anterior, la variable que controla el bucle (i) es declarada e e inicializada en la expresi´n de inicializaci´n. Esto se hace frecuentemente en aquellos o o casos en los cuales la variable que controla el bucle solo se usa en el bucle. En el ejemplo ´ anterior, se supone que la variable n ha sido previamente declarada. A.6. Comentarios Es una buena practica introducir comentarios en el codigo de cualquier programa, con ´ ´ el fin de facilitar su comprension. En el codigo Java que se escribe en los paneles de Ejs ´ ´ tambi´ n es conveniente introducir comentarios. Pueden escribirse los dos tipos siguientes de e comentarios: // comentarios para una sola l´nea ı /* comentarios de una o m´s l´neas a ı */ A.7. M´ todos e En el panel Propio de Ejs es posible definir metodos de Java. La forma general de un metodo ´ ´ es la siguiente: tipo nombre_del_m´todo ( lista de par´metros ) { e a cuerpo del m´todo e }
  • 224. ´ 208 APENDICE A. JAVA PARA EL DESARROLLO DE LABORATORIOS VIRTUALES EN EJS donde: – tipo especifica el tipo de dato que devuelve el m´ todo. En concreto, tipo puede ser e cualquier tipo basico de Java (por ejemplo, int y double), el nombre de una clase de ´ objetos (por ejemplo, String), o el tipo void en caso de que no devuelva ningun dato. ´ – El nombre del m´ todo puede ser cualquier identificador valido que sea distinto de los e ´ que ya estan siendo utilizados por otros elementos del programa. ´ – La lista de parametros es una lista de pares de tipo e identificador separados por comas. ´ Si el m´ todo no tiene parametros, la lista de parametros estara vac´a. e ´ ´ ´ ı Los m´ todos que devuelven un tipo diferente del tipo void devuelven el control a la rutina e llamante mediante la siguiente forma de la sentencia return: return valor; Por ejemplo, el m´ todo siguiente calcula el cuadrado de un numero entero: e ´ int cuadrado ( int i ) { return i * i; } Para obtener el cuadrado del numero 5, basta con realizar la llamada al m´ todo de la ´ e forma siguiente: cuadrado ( 5 ); Por ejemplo, puede programarse el m´ todo siguiente para calcular el volumen de un cubo: e double volumen(double ancho, double alto, double largo) { double volumenCubo; volumenCubo = ancho * alto * largo; return volumenCubo; } o de forma mas concisa: ´ double volumen(double ancho, double alto, double largo) { return ancho * alto * largo; } A.8. String Una de las clases incluidas en la biblioteca de Java es String, la cual esta destinada al ´ almacenamiento y manipulacion de cadenas de caracteres. De hecho, cualquier cadena de ´ caracteres, incluso aunque sea una constante (por ejemplo, la cadena Hola), es un objeto del tipo String. Esto implica que pueden aplicarse a dicha cadena todos los m´ todos definidos e en la clase String. Los objetos de la clase String (es decir, las cadenas de caracteres) pueden concatenarse empleando el operador +. Por ejemplo, el fragmento de codigo siguiente: ´ String String String str1 str2 str3 = Primera cadena; = Segunda cadena; = str1 + y str2;
  • 225. A.9. LA CLASE MATH DE JAVA 209 declara tres objetos de la clase String: str1, str2 y str3. La cadena de caracteres de la variable str3 es: Primera cadena y Segunda cadena La clase String contiene varios m´ todos. Entre los mas frecuentemente usados se encuene ´ tran los tres siguientes: – El m´ todo equals() comprueba la igualdad entre dos cadenas de caracteres. Por ejemplo, e puede compararse las cadenas de caracteres de str1 y str2 de la forma siguiente: str1.equals(str2) – El m´ todo length() devuelve la longitud de la cadena de caracteres. Por ejemplo, e str1.length() devuelve el numero de caracteres de la cadena de str1. ´ – Se puede obtener el caracter que ocupa una posicion determinada en la cadena de ´ ´ caracteres llamando al m´ todo charAt(). Por ejemplo, e str3.charAt(3) devuelve el caracter situado en la posicion 3 de la cadena de caracteres de la variable ´ ´ str3. A.9. La clase Math de Java La clase Math de Java posee m´ todos que implementan las funciones matematicas mas e ´ ´ comunmente usadas, tales como la funcion ra´z cuadrada (sqrt), valor absoluto (abs), funcio´ ´ ı nes trigonom´ tricas (sin, cos, tan), trigonom´ tricas inversas (asin, acos, atan), exponencial e e (exp), potencia (pow), logaritmo (log), etc. Por ejemplo, el m´ todo siguiente calcula la hipotenusa de un triangulo rectangulo a partir e ´ ´ de la longitud de sus dos catetos. double pitagoras(double cateto1, double cateto2) { return Math.sqrt( Math.pow(cateto1,2) + Math.pow(cateto2,2) ); } A.10. Ejemplos En esta seccion se muestran dos ejemplos. El primero de ellos ilustra el uso de la sentencia ´ if y de variables del tipo String. El segundo ilustra el uso de la sentencia for y el empleo de la clase Math de Java. A.10.1. Ejemplo 1 La vista del laboratorio virtual que va a desarrollarse en este ejemplo se muestra en la Figura A.4. Consta de una ventana donde se visualiza solo un objeto, que puede ser o bien ´ de la clase Flecha o bien de la clase Particula, segun seleccione el usuario del laboratorio ´ virtual en una lista desplegable situada en la parte inferior de la vista. En concreto, el objeto de la clase Flecha se hace visible si la palabra seleccionada en la lista desplegable es Flecha. Analogamente sucede para el objeto de la clase Particula. ´ En la Figura A.5 se muestra la ventana de variables del laboratorio. En la Figura A.6 se muestra el m´ todo que permite seleccionar que se muestre el objeto de e la clase Flecha o de la clase Particula. Segun el valor de la variable seleccion, que es de la ´
  • 226. ´ 210 APENDICE A. JAVA PARA EL DESARROLLO DE LABORATORIOS VIRTUALES EN EJS Figura A.4: Vista del laboratorio virtual explicado en el Ejemplo 1. Figura A.5: Ventana para la definicion de las variables. ´ Figura A.6: Definicion del m´ todo propio. ´ e
  • 227. A.10. EJEMPLOS 211 Figura A.7: Ventana de propiedades del objeto Particula. Figura A.8: Ventana de propiedades del objeto Flecha. clase String, sea Particula o Flecha, se asigna el correspondiente valor a las variables booleanas Particula y Flecha. En este m´ todo se muestra un ejemplo de uso de la sentencia if, donde la variable de cone trol es la variable denominada seleccion. As´, si la variable seleccion es igual a Particula, ı entonces se pone la variable Particula a true y la variable Flecha a false. Las variables Particula y Flecha estan asociadas respectivamente a la propiedad Visible de los objetos ´ Particula y Flecha (ver las Figuras A.7 y A.8). A.10.2. Ejemplo 2 En la Figura A.9 se muestra la vista de un laboratorio virtual, que consiste en un pol´gono ı con n v´ rtices. En la Figura A.10 se muestra el arbol de elementos de la vista. e ´ En la Figura A.11 se muestra la declaracion de las variables del laboratorio. Las variables ´ son las siguientes: una variable entera (n) y dos vectores de n componentes (VerticesX y VerticesY). Las variables n, VerticesX y VerticesY estan enlazadas, respectivamente, con las pro´ piedades Puntos, X e Y del objeto Poligono (v´ ase la Figura A.12). e
  • 228. ´ 212 APENDICE A. JAVA PARA EL DESARROLLO DE LABORATORIOS VIRTUALES EN EJS Figura A.9: Vista del laboratorio virtual explicado en el Ejemplo 2. ´ Figura A.10: Arbol de elementos de la vista. Figura A.11: Declaracion de las variables. ´
  • 229. A.10. EJEMPLOS 213 Figura A.12: Propiedades del objeto de la clase Poligono. Figura A.13: Ventana de inicializacion de las variables. ´ En la Figura A.13 se muestra la pagina de inicializacion, donde se usa un bucle for para ´ ´ inicializar los valores de las componentes de los vectores VerticesX y VerticesY.
  • 230. ´ 214 APENDICE A. JAVA PARA EL DESARROLLO DE LABORATORIOS VIRTUALES EN EJS
  • 231. Bibliograf´a ı Astrom, K. J. Wittenmark, B. (1997), Computer Controlled Systems. Theory and Design, Prentice Hall. Cellier, F. C. (1991), Continuous System Modeling, Springer-Verlag. Christian, W. Belloni, M. (2004), Physlet Physics, Pearson Education. Cutlip, M. B. Shacham, M. (1999), Problem Solving in Chemical Engineering with Numerical Methods, Prentice Hall. Dormido, S. Esquembre, F. (2003), The quadruple-tank process: An interactive tool for control education, in ‘Procc. 2003 European Control Conference’. Elmqvist, H. (1978), A Structured Model Language for Large Continuous Systems, PhD thesis, Lund Institute of Technology. Suecia. Elmqvist, H., Cellier, F. E. Otter, M. (1993), Object-oriented modeling of hybrid systems, in ‘ESS’93, European Simulation Symposium’, Delft, The Netherlands, pp. xxxi–xli. *citeseer.ist.psu.edu/elmqvist93objectoriented.html Esquembre, F. (2002a), Easy Java Simulations. Apendices for the manual, for version 3.1. Disponible en http://www.fem.um.es/Ejs y en el CD del curso (documento Appendices3.2.pdf). Esquembre, F. (2002b), Easy Java Simulations. The manual for version 3.1. Disponible en http://www.fem.um.es/Ejs y en el CD del curso (documento EjsManual3.1.pdf). Esquembre, F. (2004a), Creacion de Simulaciones Interactivas en Java. Aplicacion a la ´ ´ Ense˜ anza de la F´sica, Prentice Hall. n ı Esquembre, F. (2004b), Creation of Interactive Simulations in Java. Application to the teaching of physics. Disponible en http://www.fem.um.es/Ejs y en el CD del curso (documento EjsManual3.3beta040918.pdf). Esquembre, F. (2004c), ‘Easy Java Simulations: a software tool to create scientific simulations in Java’, Computer Physics Communications 156, 199–204. Esquembre, F. Sanchez, J. (2004), How to use Ejs with Matlab and Simulink, for version ´ 3.3. Disponible en http://www.fem.um.es/Ejs y en el CD del curso (documento EjsManual3.3beta040918.pdf). Johansson, K. H. (2000), ‘The quadruple-tank process: A multivariable laboratory process with an adjustable zero’, IEEE Transactions on Control Systems Technology 8(3), 456– 465. Ljung, L. Torkel, G. (1994), Modeling of Dynamic Systems, Prentice-Hall. Martin, C., Urquia, A. Dormido, S. (2004), JARA 2i - A Modelica library for interactive simulation of physical-chemical processes, in ‘European Simulation and Modelling Conference’, pp. 128–132. 215
  • 232. 216 ´ BIBLIOGRAFIA Martin, C., Urquia, A., Sanchez, J., Dormido, S., Esquembre, F., Guzman, J. L. Berenguel, M. (2004), Interactive simulation of object-oriented hybrid models, by combined use of Ejs, Matlab/Simulink and Modelica/Dymola, in ‘Proc. 18th European Simulation Multiconference’, pp. 210–215. MGA (1995), ACSL Reference Manual, MGA Software, Conconrd, MA, USA. Schildt, H. (2001), Java 2. Manual de Referencia. Cuarta Edicion, McGraw-Hill. ´ Urquia, A. (2000), Modelado Orientado a Objetos y Simulacion de Sistemas H´bridos en el ´ ı ´ Ambito del Control de Procesos Qu´micos, PhD thesis, Dept. Informatica y Automatica, ı ´ ´ UNED, Madrid, Spain. van den Bosch, P. P. J. van der Klauw, A. C. (1994), Modeling, Identification and Simulation of Dynamical Systems, CRC Press.
  • 233. ´ndice alfab´ tico I e acciones predefinidas en Ejs, 107 algoritmo, 40 boton ´ Arranque, 49 Evolucion, 48, 80 ´ Inicializacion, 46 ´ Introduccion, 74 ´ Ligaduras, 49, 80 Modelo, 48, 80 Propio, 49, 88 Variables, 78 Vista, 80 causalidad computacional, 14 asignacion, 18, 19 ´ ciclo l´mite, 95 ı Consola de Ejs, 32 constante del muelle, 138 directorio examples, 33 TechnicalExamples, 100 library, 33, 91 data, 32 de trabajo, 33 laboratoriosTexto, 33, 73, 96 Simulations, 32 discretizacion temporal, 7 ´ distribucion del laboratorio virtual, 91 ´ EDO, 48 Ejs algoritmo de simulacion, 39 ´ arranque, 32 condiciones de uso, 23 configuracion, 36 ´ instalacion, 31 ´ en Windows, 31 introduccion, 25, 74 ´ modelo, 25 proposito, 23 ´ publicar en Internet, 36 sitio web, 23 vista, 25, 80 elemento hijo, 56 padre, 56 elemento grafico ´ Boton, 89, 101 ´ CampoNumerico, 89 clase de elemento, 80 ConjuntoParticulas, 174 contenedor, 80 Etiqueta, 123 Flecha, 123, 133 Imagen, 183 Panel, 88, 89, 101 panel, 58 PanelConEjes, 101 PanelDibujo, 83, 101 Particula, 123 Poligono, 114, 133 Selector, 107 Texto, 133 Traza, 86, 101 Ventana, 56, 83 VentanaDialogo, 56, 104 experimento, 4 fichero .bat, 33, 37 .html, 33 .jar, 33, 37 .java, 37 .xml, 33, 100 EjsConsole.jar, 32 jdk-1 5 0 09-windows-i586-p.exe, 31 figuras de Lissajous, 73 friccion ´ dinamica, 154 ´ estatica, 154 ´ gas perfecto constante, 180 ecuacion de estado, 180 ´ indice superior, 161 integracion ´ m´ todo de Euler, 11, 50 e m´ todo de Euler-Richardson, 51 e m´ todo de Runge-Kutta, 51 e m´ todo de Runge-Kutta-Fehlberg, 52 e tamano del paso, 11 ˜ Java cadenas de caracteres, 201 caracteres especiales, 201 217
  • 234. ´ ´ INDICE ALFABETICO 218 identificador, 202 metodo, 207 operadores, 202 aritm´ ticos, 203 e de asignacion, 203 ´ decremento, 204 en cortocircuito, 205 incremento, 204 logicos booleanos, 204 ´ relacionales, 204 sentencia de iteracion, 206 ´ de seleccion, 206 ´ do-while, 206 for, 206 if, 206 return, 208 switch, 206 while, 206 String, 208 concatenacion, 208 ´ m´ todo charAt, 209 e m´ todo equals, 209 e m´ todo length, 209 e Tipos byte, 200 double, 200 float, 200 int, 200 long, 200 short, 200 void, 208 laboratorio cicloLimite.xml, 96 lissajous.xml, 73 lazo algebraico, 142 Ley de Bernoulli, 29 de Hooke, 138 de Newton, 5, 180 de Ohm, 5, 15 m´ todo, 88 e initialize(), 107 play(), 49 m´ todo experimental, 4 e marco experimental, 7 matriz, 47 modelo, 3 de tiempo continuo, 6 de tiempo discreto, 6 determinista, 6 estocastico, 6 ´ f´sico, 5 ı h´bridos, 7 ı matematico, 5, 9 ´ mental, 4 verbal, 4 Open Source Physics, 27 osciloscopio virtual, 73 paginas ocultas, 37 ´ panel Introduccion, 74 ´ Modelo, 48, 80 Evolucion, 48, 80 ´ Inicializacion, 46 ´ Ligaduras, 49, 80 Propio, 49, 88 Variables, 78 Vista, 55, 80 ´ Arbol de elementos, 55 Basicos, 80 ´ Contenedores, 80 Dibujo, 55, 80 Dibujo - Basicos, 55, 80 ´ Dibujo - Campos, 55, 80 Dibujo - Grafos y cuerpos, 55, 80 Elementos para la vista, 55 paradigma modelo-vista-control, 24 parametro, 10 particion, 14 ´ principio de Arqu´medes, 179 ı reutilizacion, 100 ´ simulacion, 5 ´ condicion de terminacion, 11 ´ ´ de Monte Carlo, 173 singularidad estructural, 19 sistema, 3 de cuatro tanques, 28 experto, 4 slider (deslizador), 104 variable algebraica, 10, 17 clasificacion, 10 ´ conocida, 16 de estado, 10, 16 declaracion, 46 ´ desconocida, 17 Dimension, 47 ´ inicializacion, 46 ´ Nombre, 46 Tipo, 47 boolean, 47 double, 47 int, 47 String, 47 Valor, 47 vector, 47