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
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