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.

Capítulo 6: Programación <strong>de</strong> MATLAB página 79<br />

En cualquier caso, es importante observar que para calcular las raíces o los valores mínimos<br />

<strong>de</strong> una función, hay que pasar el nombre <strong>de</strong> esta función como argumento a la función <strong>de</strong> MATLAB<br />

que va a hacer los cálculos. En esto consiste el concepto <strong>de</strong> función <strong>de</strong> función.<br />

MATLAB tiene un toolbox o paquete especial (que <strong>de</strong>be ser adquirido aparte)) con muchas<br />

más funciones orientadas a la optimización, es <strong>de</strong>cir al cálculo <strong>de</strong> valores mínimos <strong>de</strong> funciones,<br />

con o sin restricciones.<br />

6.9.3. INTEGRACIÓN NUMÉRICA DE ECUACIONES DIFERENCIALES ORDINARIAS<br />

Este es otro campo en el que las capacida<strong>de</strong>s <strong>de</strong> MATLAB pue<strong>de</strong>n resultar <strong>de</strong> gran utilidad a los<br />

ingenieros o futuros ingenieros interesados en la simulación. MATLAB es capaz <strong>de</strong> calcular la<br />

evolución en el tiempo <strong>de</strong> sistemas <strong>de</strong> ecuaciones diferenciales ordinarias <strong>de</strong> primer or<strong>de</strong>n, lineales<br />

y no lineales. Por el momento se supondrá que las ecuaciones diferenciales se pue<strong>de</strong>n escribir en la<br />

forma:<br />

( )<br />

y& = f y,<br />

t (7)<br />

don<strong>de</strong> t es la variable escalar, y tanto y como su <strong>de</strong>rivada son vectores. Un ejemplo típico pue<strong>de</strong> ser<br />

el tiro parabólico, consi<strong>de</strong>rando una resistencia <strong>de</strong>l aire proporcional al cuadrado <strong>de</strong> la velocidad.<br />

Se supone que dicha fuerza respon<strong>de</strong> a la expresión vectorial:<br />

⎧F<br />

⎨<br />

⎩<br />

F<br />

x<br />

y<br />

⎫<br />

x<br />

⎬ c ( x y )<br />

⎭ = − + ⎧ & ⎫<br />

2 2<br />

& & ⎨⎩ ⎬⎭<br />

y&<br />

don<strong>de</strong> c es una constante conocida. Las ecuaciones diferenciales <strong>de</strong>l movimiento serán:<br />

&& x<br />

&& y<br />

0<br />

2 2<br />

c<br />

( & & )<br />

m x y x<br />

y&<br />

= - +<br />

- g<br />

pero éste es un sistema <strong>de</strong> 2 ecuaciones diferenciales <strong>de</strong> or<strong>de</strong>n 2. Para po<strong>de</strong>rlo integrar <strong>de</strong>be tener la<br />

forma <strong>de</strong>l sistema (7), y para ello se va a trasformar en 4 ecuaciones <strong>de</strong> primer or<strong>de</strong>n, <strong>de</strong> la forma<br />

siguiente:<br />

&<br />

(8)<br />

(9)<br />

u&<br />

v&<br />

x&<br />

y&<br />

0<br />

g<br />

= - - +<br />

u<br />

u<br />

c<br />

( )<br />

m u v v<br />

2 2<br />

0<br />

v<br />

0<br />

(10)<br />

MATLAB dispone <strong>de</strong> varias funciones para integrar sistemas <strong>de</strong> ecuaciones diferenciales<br />

ordinarias <strong>de</strong> primer or<strong>de</strong>n, entre ellas o<strong>de</strong>23, que utiliza el método <strong>de</strong> Runge-Kutta <strong>de</strong><br />

segundo/tercer or<strong>de</strong>n, y o<strong>de</strong>45, que utiliza el método <strong>de</strong> Runge-Kutta-Fehlberg <strong>de</strong> cuarto/quinto<br />

or<strong>de</strong>n. Ambas exigen al usuario escribir una función que calcule las <strong>de</strong>rivadas a partir <strong>de</strong>l vector <strong>de</strong><br />

variables, en la forma indicada por la ecuación (7).<br />

Cree con el Editor/Debugger un fichero llamado tiropar.m que contenga las siguientes líneas:<br />

function <strong>de</strong>riv=tiropar(t,y)<br />

fac=-(0.001/1.0)*sqrt((y(1)^2+y(2)^2));<br />

<strong>de</strong>riv=zeros(4,1);<br />

<strong>de</strong>riv(1)=fac*y(1);<br />

<strong>de</strong>riv(2)=fac*y(2)-9.8;<br />

<strong>de</strong>riv(3)=y(1);<br />

<strong>de</strong>riv(4)=y(2);

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

Saved successfully!

Ooh no, something went wrong!