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 84<br />

Por otra parte, el fichero tiropar3.m que evalúa la ecuación diferencial es el siguiente:<br />

1. function dy=tiropar3(t,y,m,c) % version vectorizada<br />

2. fac=-c*sqrt(y(1,:).^2+y(2,:).^2);<br />

3. dy=zeros(size(y));<br />

4. dy(1,:)=fac.*y(1,:);<br />

5. dy(2,:)=fac.*y(2,:)-9.8*m;<br />

6. dy(3,:)=y(1,:);<br />

7. dy(4,:)=y(2,:);<br />

Sobre las funciones <strong>de</strong>finidas en el fichero tiropar3Main.m se pue<strong>de</strong>n hacer los siguientes<br />

comentarios:<br />

1. El programa se ha <strong>de</strong>finido como función (línea 2) y no como fichero <strong>de</strong> comandos. La razón<br />

es para po<strong>de</strong>r utilizar sub-funciones (funciones <strong>de</strong>finidas en el mismo fichero), que no están<br />

permitidas en los ficheros <strong>de</strong> comandos.<br />

2. Las condiciones iniciales (línea 7) se parecen a las <strong>de</strong> los ejemplos anteriores, pero el<br />

movimiento comienza con una or<strong>de</strong>nada negativa (por <strong>de</strong>bajo <strong>de</strong>l origen). Este hecho se<br />

utilizará en relación con los eventos.<br />

3. Las ecuaciones diferencias se suponen en la forma <strong>de</strong> la ecuación (14) ( M(, t yy )& = f(, t y)<br />

),<br />

que permite proporcionar más información al integrador. En la línea 9 se <strong>de</strong>fine una matriz<br />

dispersa con "unos" en las posiciones correspondientes a los términos distintos <strong>de</strong> cero <strong>de</strong> la<br />

matriz Jacobiana <strong>de</strong>l segundo miembro, esto es, a las <strong>de</strong>rivadas distintas <strong>de</strong> cero <strong>de</strong>l vector<br />

f(t,y) respecto al vector y. El integrador o<strong>de</strong>15s va a calcular dichas <strong>de</strong>rivadas numéricamente<br />

y la información contenida en la matriz Jp le permite ahorrar mucho trabajo.<br />

4. La estructura options, <strong>de</strong>finida en las líneas 10-12, tiene una gran importancia pues controla<br />

los aspectos fundamentales <strong>de</strong> la integración. Como ya se ha dicho, sus valores se establecen<br />

en la forma <strong>de</strong> parejas parámetro/valor. Los primeros argumentos son los valores <strong>de</strong> las<br />

tolerancias <strong>de</strong> error relativo y absoluto, ya comentados previamente. A continuación se<br />

comentan las restantes opciones. En los nombres <strong>de</strong> los parámetros no se distingue entre<br />

mayúsculas y minúsculas y no hace falta escribirlos con todas las letras: basta poner<br />

suficientes letras para evitar la ambigüedad en el nombre. Por ejemplo, MStateDep y mstate<br />

serán consi<strong>de</strong>rados como equivalentes. Es conveniente sin embargo que la elección <strong>de</strong> estos<br />

nombres no afecte a la legibilidad <strong>de</strong>l código.<br />

5. La tercera pareja <strong>de</strong> argumentos <strong>de</strong> options <strong>de</strong>clara que la matriz <strong>de</strong> masas (parámetro Mass)<br />

es <strong>de</strong>finida por la función tiropar3Masa, cuya referencia se da como valor. Otra posibilidad,<br />

cuando la matriz <strong>de</strong> masas es constante, es calcular previamente su valor e incluir el nombre<br />

<strong>de</strong> la variable como valor <strong>de</strong> este argumento. La línea 11 incluye el argumento MStateDep,<br />

también relacionado con la matriz <strong>de</strong> masas, que establece el tipo <strong>de</strong> <strong>de</strong>pen<strong>de</strong>ncia <strong>de</strong> dicha<br />

matriz respecto al vector <strong>de</strong> estado y. Sus posibles valores son none, weak y strong. Otro<br />

argumento relacionados con la matriz <strong>de</strong> masas, no utilizado en este ejemplo, es MvPattern,<br />

cuyo valor <strong>de</strong>be ser una matriz sparse análoga a Jp, utilizada para <strong>de</strong>finir los elementos<br />

distintos <strong>de</strong> cero <strong>de</strong> la matriz <strong>de</strong> masas (su sparsity pattern).<br />

6. El parámetro OutputFcn permite al usuario controlar la salida <strong>de</strong> resultados a medida que se<br />

van haciendo los cálculos y no solamente al final. El valor <strong>de</strong> este parámetro es una referencia<br />

<strong>de</strong> función (tiropar3Salida) que será llamada por el integrador varias veces a lo largo <strong>de</strong> la<br />

integración. MATLAB dispone <strong>de</strong> cuatro funciones <strong>de</strong> salida preprogramadas (o<strong>de</strong>plot,<br />

o<strong>de</strong>phas2, o<strong>de</strong>phas3 y o<strong>de</strong>print) que pue<strong>de</strong>n ser utilizadas sin más que pasar como valor una<br />

referencia a ellas. En este caso se ha programado una función <strong>de</strong> salida llamada<br />

tiropar3Salida que está <strong>de</strong>finida a partir <strong>de</strong> la línea 33. Esta función se llama al inicio <strong>de</strong> la<br />

integración, en cada instante <strong>de</strong> salida <strong>de</strong> resultados y al terminar la integración. El parámetro

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

Saved successfully!

Ooh no, something went wrong!