08.11.2014 Views

Aprenda Matlab 6.1 - Universidad Politécnica de Madrid

Aprenda Matlab 6.1 - Universidad Politécnica de Madrid

Aprenda Matlab 6.1 - Universidad Politécnica de Madrid

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Aprenda</strong> <strong>Matlab</strong> <strong>6.1</strong> como si estuviera en Primero página 86<br />

usuario recojan estos argumentos adicionales aunque no los necesiten, pues en otro caso se<br />

obtiene un error <strong>de</strong> insuficiente número <strong>de</strong> argumentos. Obsérvese que estos argumentos<br />

aparecen en las líneas 29, 33 y 50.<br />

12. Los integradores <strong>de</strong> MATLAB pue<strong>de</strong>n dar el resultado por medio <strong>de</strong> una estructura (como en<br />

la línea 13) o por medio <strong>de</strong> diversos valores <strong>de</strong> retorno (como en la línea 15 y en los ejemplos<br />

anteriores). Se utiliza una u otra forma en función <strong>de</strong>l número <strong>de</strong> valores <strong>de</strong> retorno que<br />

espera recibir el usuario.<br />

13. Cuando el resultado <strong>de</strong>l integrador se recibe por medio <strong>de</strong> una estructura, los instantes en los<br />

que se proporcionan resultados no coinci<strong>de</strong>n con los valores intermedios <strong>de</strong> tspan, sino que<br />

son valores elegidos por el integrador, al igual que en el caso en que tspan sólo contenga el<br />

instante inicial y el final (tspan=[tini, tend];). Si se <strong>de</strong>sean resultados en intervalos igualmente<br />

espaciados elegidos por el usuario, pue<strong>de</strong> utilizarse la función <strong>de</strong>val (ver línea 25), que<br />

es otra novedad <strong>de</strong> MATLAB 6.0. Si a esta función se le pasa la estructura solución y un<br />

vector con los instantes <strong>de</strong> tiempo en los que se <strong>de</strong>sea solución, <strong>de</strong>val <strong>de</strong>vuelve una matriz<br />

cuyas filas son el vector solución en dichos instantes <strong>de</strong> tiempo.<br />

14. La línea 29 muestra el comienzo <strong>de</strong> la función tiropar3Masa, que calcula la matriz <strong>de</strong> masas<br />

<strong>de</strong>l sistema <strong>de</strong> ecuaciones diferenciales (14). Es muy importante que los argumentos sean los<br />

que se indica en esa línea. El argumento t aparece porque se supone que la matriz M varía con<br />

el tiempo y no con el vector <strong>de</strong> estado y. Si se consi<strong>de</strong>rara constante (como en realidad es en<br />

este caso) se podía haber pasado directamente como valor <strong>de</strong>l parámetro Mass en o<strong>de</strong>set. Con<br />

MStateDep igual a none se ha indicado que la matriz <strong>de</strong> masas no <strong>de</strong>pen<strong>de</strong> <strong>de</strong> y, y por eso<br />

dicho vector no se pasa como argumento. Por otra parte, como a todas las funciones <strong>de</strong><br />

usuario, el integrador va a pasarle los dos argumentos adicionales m=1 y c=0.001 que<br />

aparecen al final <strong>de</strong> la llamada al integrador en la línea 13.<br />

15. La función tiropar3Salida tiene un tercer argumento llamado flag (señal, marca o ban<strong>de</strong>ra). A<br />

lo largo <strong>de</strong> la integración <strong>de</strong>l programa esta función es llamada con tres valores diferentes <strong>de</strong><br />

flag. Al principio <strong>de</strong> todo se llama con flag igual a 'init'; <strong>de</strong>spués, a lo largo <strong>de</strong> la integración,<br />

se llama en cada instante <strong>de</strong> salida con flag igual a la ca<strong>de</strong>na vacía ' '; cuando la integración<br />

ha terminado se llama con flag igual a 'done' para que el usuario pueda hacer las últimas<br />

operaciones antes <strong>de</strong> terminar. El programador <strong>de</strong>be <strong>de</strong>cidir el uso que hace <strong>de</strong> estas<br />

posibilida<strong>de</strong>s. En este caso, la función tiropar3Salida lo único que hace es imprimir un<br />

mensaje por la consola y llamar a la función o<strong>de</strong>plot, que es una <strong>de</strong> las funciones estándar <strong>de</strong><br />

MATLAB.<br />

16. Llega el momento <strong>de</strong> hacer unos comentarios sobre la función que maneja los eventos. El<br />

integrador necesita <strong>de</strong>l usuario para <strong>de</strong>tectar los eventos que se pue<strong>de</strong>n producir a lo largo <strong>de</strong><br />

la simulación. Para MATLAB un evento es siempre una variable cuyo valor pasa por cero.<br />

Esa variable pue<strong>de</strong> ser una coor<strong>de</strong>nada, una distancia, una fuerza, ... Si en vez <strong>de</strong> hacerse cero<br />

tiene que alcanzar un valor <strong>de</strong>terminado, bastará controlar la diferencia correspondiente. El<br />

usuario <strong>de</strong>be <strong>de</strong>cir pues al integrador qué valores tiene que controlar. Esto se hace por medio<br />

<strong>de</strong> los valores <strong>de</strong> retorno <strong>de</strong> la función que gestiona les eventos, en este caso tiropar3Eventos<br />

(ver línea 50). El primer valor <strong>de</strong> retorno, valor, es la variable cuyo paso por cero hay que<br />

vigilar (podría ser un vector <strong>de</strong> valores). El segundo valor <strong>de</strong> retorno, esFinal, indica si la<br />

ejecución se <strong>de</strong>be terminar o no cuando se produzca el evento, lo cual <strong>de</strong>pen<strong>de</strong>rá <strong>de</strong>l caso<br />

estudiado y <strong>de</strong> los <strong>de</strong>seos <strong>de</strong>l programador. El tercer y último valor <strong>de</strong> retorno, direccion,<br />

indica cómo es el paso por cero, si con <strong>de</strong>rivada positiva o creciendo (valor 1), o con <strong>de</strong>rivada<br />

negativa o <strong>de</strong>creciendo (valor –1). La función tiropar3Eventos muestra un ejemplo <strong>de</strong> cómo<br />

se generan estos valores: el valor a controlar es la or<strong>de</strong>nada <strong>de</strong>l móvil, que viene dada por

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!