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

conforma: ¿Cuál es la que calcula? Pues <strong>de</strong>pen<strong>de</strong> <strong>de</strong> un parámetro o argumento que indica un punto<br />

<strong>de</strong> partida para buscar la raíz. Véanse los siguientes comandos y resultados:<br />

>> fzero(@prueba, -.5)<br />

ans =<br />

-0.1316<br />

>> fzero(@prueba, 2)<br />

ans =<br />

1.2995<br />

En el primer caso se ha dicho al programa que empiece a buscar en el punto -0.5 y la solución<br />

encontrada ha sido -0.1316. En el segundo caso ha empezado a buscar en el punto <strong>de</strong> abscisa 2 y ha<br />

encontrado otra raíz en el punto 1.2995. Se ven claras las limitaciones <strong>de</strong> esta función.<br />

La función fzero() tiene también otras formas interesantes:<br />

fzero(@prueba, [x1,x2]) calcula una raíz en el intervalo x1-x2. Es necesario que la<br />

función tenga distinto signo en los extremos <strong>de</strong>l intervalo.<br />

fzero(@prueba, x, options) calcula la raíz más próxima a x con ciertas opciones <strong>de</strong>finidas<br />

en la estructura options. Esta estructura se crea con la función<br />

optimset.<br />

La función optimset tiene la siguientes formas generales:<br />

options = optimset('param1',val1,'param2',val2,...<br />

en la que se indican los nombres <strong>de</strong> los parámetros u opciones que se <strong>de</strong>sean modificar y los valores<br />

que se <strong>de</strong>sea dar para cada uno <strong>de</strong> dichos parámetros.<br />

options = optimset(oldopts, 'param1',val1,'param2',val2,...)<br />

en la que se obtienen unas nuevas opciones modificando unas opciones anteriores con una serie <strong>de</strong><br />

parejas nombre-valor <strong>de</strong> parámetros.<br />

Existen muchas opciones que pue<strong>de</strong>n ser <strong>de</strong>finidas por medio <strong>de</strong> la función optimset. Algunas<br />

<strong>de</strong> las más características son las siguientes (las dos primeras están dirigidas a evitar procesos<br />

iterativos que no acaben nunca y la tercera a controlar la precisión en los cálculos):<br />

MaxFunEvals<br />

MaxIter<br />

TolX<br />

máximo número <strong>de</strong> evaluaciones <strong>de</strong> función permitidas<br />

máximo número <strong>de</strong> iteraciones<br />

error máximo permitido en la abscisa <strong>de</strong> la raíz<br />

Ahora se va a calcular el mínimo <strong>de</strong> la función prueba. Defínase una función llamada<br />

prueba2 que sea prueba cambiada <strong>de</strong> signo, y trátese <strong>de</strong> reproducir en el PC los siguientes comandos<br />

y resultados (para calcular máximos con fmin bastaría con cambiar el signo <strong>de</strong> la función):<br />

>> plot(x,prueba2(x))<br />

>> fminbnd(@prueba2, -1,2)<br />

ans =<br />

0.3004<br />

>> fminbnd(@prueba2, 0.5,1)<br />

ans =<br />

0.8927<br />

También a la función fminbnd se le pue<strong>de</strong> pasar la estructura options. Por ejemplo, para fijar<br />

un error <strong>de</strong> 10 -08 se pue<strong>de</strong> proce<strong>de</strong>r <strong>de</strong>l siguiente modo:<br />

>> options=optimset('TolX', 1e-08);<br />

>> fminbnd(@prueba2, 0.5,1, options)

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

Saved successfully!

Ooh no, something went wrong!