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