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

presencia <strong>de</strong> componentes <strong>de</strong> alta frecuencia en la solución y tratan <strong>de</strong> adaptar a ellas su paso, que<br />

se hace <strong>de</strong>masiado pequeño y termina por <strong>de</strong>tener la integración.<br />

Los integradores implícitos son mucho más apropiados para los problemas stiff. En lugar <strong>de</strong><br />

utilizar fórmulas <strong>de</strong>l tipo <strong>de</strong> la ecuación (11) utilizan fórmulas <strong>de</strong>l tipo:<br />

( , , ,..., , , ,..., t)<br />

y = f y y y y& y& y& (12)<br />

t+∆ t t+∆t t t−∆ t t+∆t t t−∆t<br />

El problema con la expresión (12) es que para calcular la función en t+Dt hace uso <strong>de</strong> la<br />

<strong>de</strong>rivada en ese mismo instante, que no pue<strong>de</strong> ser conocida si no se conoce la función. Eso quiere<br />

<strong>de</strong>cir que el sistema (12) es un sistema <strong>de</strong> ecuaciones no lineal que hay que resolver iterativamente.<br />

Los sistemas <strong>de</strong> ecuaciones no lineales se resuelven mucho más rápidamente si se conoce la<br />

<strong>de</strong>rivada <strong>de</strong> la función (un ejemplo es el método <strong>de</strong> Newton-Raphson). Los integradores stiff <strong>de</strong><br />

MATLAB son capaces <strong>de</strong> calcular esta <strong>de</strong>rivada numéricamente (por diferencias finitas), pero son<br />

mucho más eficientes si el usuario es capaz <strong>de</strong> escribir una segunda función que les dé esta<br />

<strong>de</strong>rivada. A esta <strong>de</strong>rivada, que en realidad es una matriz <strong>de</strong> <strong>de</strong>rivadas, se le suele llamar Jacobiano.<br />

Los integradores stiff, a<strong>de</strong>más <strong>de</strong> la ecuación (7), permiten para el sistema <strong>de</strong> ecuaciones<br />

diferenciales una forma algo más especializada:<br />

My ( ,) t y-fy, & ( t)<br />

=0<br />

(13)<br />

en cuyo caso el usuario también tiene que proporcionar una función que calcule la matriz M(y,t). La<br />

ecuación (13) representa una gran número <strong>de</strong> casos prácticos, por ejemplo los que surgen <strong>de</strong> las<br />

ecuaciones diferenciales <strong>de</strong>l movimiento en Mecánica.<br />

La forma más básica para todos los integradores <strong>de</strong> MATLAB es la siguiente:<br />

[t, Y] = solvername(fh, tspan, y0)<br />

don<strong>de</strong> fh es una referencia <strong>de</strong> la función que permite calcular la <strong>de</strong>rivada según la expresión (7),<br />

tspan pue<strong>de</strong> ser un vector <strong>de</strong> dos elementos [tini, tfinal] que representan el comienzo y el fin <strong>de</strong> la<br />

integración o un vector <strong>de</strong> tiempos [tini:tstep:tfinal] en los cuales se <strong>de</strong>sea que MATLAB <strong>de</strong>vuelva<br />

resultados, e y0 es un vector columna con los valores iniciales. Como resultado se obtiene el vector<br />

t <strong>de</strong> tiempos en los que se dan resultados y una matriz Y con tantas filas como tiempos <strong>de</strong> salida y<br />

que representan cada una <strong>de</strong> ellas la salida en el correspondiente instante <strong>de</strong> tiempo.<br />

Una forma más elaborada <strong>de</strong> llamar a los integradores <strong>de</strong> MATLAB es la siguiente:<br />

[t, Y, s] = solvername(fh, tspan, y0, options)<br />

don<strong>de</strong> s es un vector con ciertos resultados estadísticos <strong>de</strong> la integración (ver el Help para más<br />

<strong>de</strong>talle) y options es una estructura similar a la vista en el Apartado anterior para el cálculo <strong>de</strong> raíces<br />

y mínimos. En este caso la estructura options (que es diferente <strong>de</strong> la anterior, aunque se esté<br />

utilizando el mismo nombre) se <strong>de</strong>termina por medio <strong>de</strong> la función o<strong>de</strong>set, que admite las formas:<br />

options = o<strong>de</strong>set('param1', val1,'param2', val2, ...);<br />

options = o<strong>de</strong>set(oldopt, 'param1', val1,'param2', val2, ...);<br />

Entre los parámetros u opciones más importantes se pue<strong>de</strong>n citar los siguientes:<br />

Para el error<br />

Para el paso<br />

Para la matriz M<br />

Para el Jacobiano<br />

Para la salida<br />

RelTol , AbsTol<br />

InitialStep, MaxStep<br />

Mass, MassSingular<br />

Jacobian, JConstant, JPattern, Vectorized<br />

OutputFcn, OutputSel, Refine, Stats

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

Saved successfully!

Ooh no, something went wrong!