You are on page 1of 10

Funciones en archivos .

Pueden definirse funciones en Matlab mediante archivos .m cuya primera linea


comienza con function. La siguiente linea serviría para definir una función
llamada nombrefuncion con dos argumentos:
function valorsalida=nombrefuncion (argumento1,argumento2)

dentro del código del archivo se debe dar a valorsalida el valor que toma la
función. Dentro del archivo de la función deben incluirse sólo las instrucciones
necesarias para calcular el valor que toma la función, todas las instrucciones que
usen la función deben ir fuera del archivo.

Una función puede tener varias salidas:


function [salida1 salida2]=nombrefuncion (argumento1,argumento2)

Observe la función f.m, que tiene sólo una entrada (la variable x) y sólo una
salida (el valor de f). El comando type f.m muestra el contenido del archivo f.m .
Tenga en cuenta que la función se usa mediante el nombre del archivo y no
mediante el nombrefuncion que se da en la primera linea.
type f.m
function f=f(x)
% Ejemplo de función f.
% Al emplear .^ la función puede aplicarse a vectores
f=1/2-x.^2;

Ej 1. Defina un vector x con valores desde -1 a 1 con paso 0.1. Compruebe que la
función f.m puede aplicarse al vector x. (Sol. f(x)=[-0.5, -0.31, -0.14, 0.01, ...] )

Ej 2. Represente la función f en el intervalo [-1,1].

Representación del eje OX

Una forma de representar el eje OX es utilizar, después del comando plot, el


comando grid on, que representa una malla o cuadrícula en la gráfica de la
función.
x=0:0.1:1;
plot(x,f(x))
grid on
Si en vez de la malla sólo queremos representar el eje OX, podemos dibujar la
función y=0.
x=0:0.1:1;
y1=f(x);
y2=zeros(length(x));
plot(x,y1,x,y2)
Ej 3. Defina en un script g.m la función g(x)=3/4-1/(1+x^2). Evalúe g(2).
Represente la función junto con el eje horizontal en el intervalo [-5,5]. (Sol. 0.55
)

Funciones anónimas

Es posible en Matlab definir funciones sin usar archivos .m, por ejemplo la
siguiente linea define la función h(x)=x^2+1
h=@(x) x.^2+1
h =

@(x)x.^2+1

La sintaxis para definir una función anónima es la siguiente


nombrefuncion=@(argumentos) expresion

Por ejemplo, la siguiente linea define la función n2(a,b)=sqrt(a^2+b^2)


n2=@(a,b) sqrt(a.^2+b.^2)
n2 =
@(a,b)sqrt(a.^2+b.^2)

Ej 4. Sin emplear un archivo .m, defina la función h2(x)=sin(x)^2-cos(x)^2.


Halle el valor de h2(0) y de h2(2). (Solución: h2(0)=-1, h2(2)=0.6536)

Localización gráfica de raíces.

En ocasiones podemos usar la gráfica de una función para encontrar un punto


cercano a una raíz o un intervalo que contenga a una raíz.

Ej 5. Defina en un archivo g.m la función g(x)=exp(x)-5x. a) Dibuje la gráfica de


g en el intervalo [0,2] junto con el eje OX. b) Represente de nuevo la función en
un intervalo más pequeño, de longitud 0.5 que contenga una raiz de g.

Ej 6. Defina de forma anónima las funciones h1(x)=e^(2x) y h2(x)=2-x^2. a)


Represente conjuntamente ambas gráficas en el intervalo [-2,1]. b) Represente la
función h1(x)-h2(x) en el intervalo [-2,1]. Observe que las raíces de h1(x)-h2(x)
son los puntos en los que h1(x)=h2(x), esto es, donde se cortan las gráficas de h1
y h2.

Bisección

Recordamos el pseudocódigo que permite implementar el método de bisección


1. Entrar f , a, b, tol
2. Mientras b-a>=tol
3. Hacer c = a + (1/2)(b-a)
4. Si f (c) = 0 entonces c es raíz. Fin
5. Si sgn f (a) ~= sgn f (c) entonces b = c.
6. Si sgn f (a) = sgn f (c) entonces a = c.
7. Ir a 2

Siguiendo estos pasos se ha implementado el método en el archivo biseccion.m


type biseccion.m
% Método de bisección para una función f definida.
a=0.6;
b=0.7;
tol=0.0001;
while b-a>=tol
% disp([a b]);
c=a+(b-a)/2;
if f(c)==0
break
end
if sign(f(a))~=sign(f(c))
b=c;
else
a=c;
end
end
% disp(c)

En la implementación se ha empleado la instrucción break que interrupe el bucle


en que se encuentre, poniendo fin al mismo.

El código escrito tiene algunas limitaciones. Observe que para cambiar los
valores iniciales de a y b debe editar el código, y que la función debe llamarse f.

Ej 7. Halle aproximaciones a las dos raíces de la ecuación sin(x)-


exp(x^2)+9/10=0. (Sol. aprox. x=0.1132, x=0.6317)

Ej 8. El código del programa contiene dos comentarios que evitan que se muestre
el progreso del método y el resultado final. Quite los símbolos de comentario.

Regula-Falsi

El método de regula-falsi es similar al método de bisección, pero los intervalos


no se dividen por la mitad. En este método para cada intervalo, se halla la recta
que pasa por los puntos de la gráfica en los extremos del intervalo. El punto que
divide los intervalos es el corte de la recta hallada con el eje OX.

Recordamos el pseudocódigo del método de regula-falsi


1. Entrar f , a, b, tol
2. Mientras b-a>=tol
3. Hacer c = (a*f(b)-b*f(a)) / (f(b)-f(a))
4. Si f (c) = 0 entonces c es raíz. Fin
5. Si sgn f (a) ~= sgn f (c) entonces b = c.
6. Si sgn f (a) = sgn f (c) entonces a = c.
7. Ir a 2

Ej 9. Modifique el archivo biseccion.m para implementar el método de regula-


falsi en un programa llamado regula.m.

Ej 10. En el código del método de regula - falsi, incluya comentarios que


expliquen cada uno de los pasos del método.

Ej 11. Emplee el método de regula - falsi en el intervalo [3,4] para encontrar una
aproximación a una raíz de f(x)=cos(x/2). (Sol. aprox. x=3.1416)

Ej 12. ¿Puede emplearse alguno de los métodos vistos hasta ahora para encontrar
una raíz de f(x)=exp(x)-5*x en el intervalo [1,2]?
Ej 13. Modifique alguno de los métodos para que el criterio de salida del bucle
sea abs(f(c))<tol. (Indicación: defina una variable fin con el valor cero. El bucle
debe ejecutarse mientras fin sea cero. Dentro del bucle la variable fin tomará el
valor 1 cuando abs(f(c))<tol.)

(Siguiendo esta técnica, pueden implementarse distintos criterios para salir del
bucle, e incluso varios criterios en un mismo programa.)

Este método se aplica para resolver ecuaciones de la forma

Si la ecuación es , entonces puede despejarse ó


bien sumar en ambos lados de la ecuación para ponerla en la forma
adecuada.

Ejemplos:
1) La ecuación se puede transformar en .
2) La ecuación se puede transformar
en .

Dada la aproximación , la siguiente iteración se calcula con la


fórmula:

Supongamos que la raíz verdadera es , es decir,

Restando las últimas ecuaciones obtenemos:

Por el Teorema del Valor Medio para derivadas, sabemos que si es

contínua en y diferenciable

en entonces existe tal que .

En nuestro caso, existe en el intervalo determinado

por y tal que:


De aquí tenemos que:

O bien,

Tomando valor absoluto en ambos lados,

Observe que el término es precisamente el error absoluto en

la ésima iteración, mientras que el término corresponde


al error absoluto en la ésima iteración.

Por lo tanto, solamente si , entonces se disminuirá el error en


la siguiente iteración. En caso contrario, el error irá en aumento.

En resumen, el método de iteración del punto fijo converge a la raíz

si para en un intervalo que contiene a la raíz y

donde es contínua y diferenciable, pero diverge si en


dicho intervalo.

Analicemos nuestros ejemplos anteriores:

 En el ejemplo 1, y claramente se cumple la condición de

que . Por lo tanto el método sí converge a la raíz.

 En el ejemplo 2, y en este

caso, . Por lo tanto, el método no converge


a la raíz.

Para aclarar el uso de la fórmula veamos dos ejemplos:

Ejemplo 1
Usar el método de iteración del punto fijo para aproximar la raíz

de , comenzando con y hasta que .

Solución
Como ya aclaramos anteriormente, el método sí converge a la raíz.
Aplicando la fórmula iterativa tenemos,
Con un error aproximado de

Aplicando nuevamente la fórmula iterativa tenemos,

Y un error aproximado de .

Intuimos que el error aproximado se irá reduciendo muy lentamente. En


efecto, se necesitan hasta 13 iteraciones para lograr reducir el error
aproximado menor al 1%. El resultado final que se obtiene es:

Con un error aproximado igual al .

Ejemplo 2
Usar el método de iteración del punto fijo para aproximar la raíz

de , comenzando con y hasta que .

Solución
Si despejamos la del término lineal, vemos que la ecuación equivale a

de donde,

En este caso, tenemos que . Un vistazo a la gráfica,


nos convence que , para , lo que es suficiente para
deducir que el método sí converge a la raíz buscada.

Aplicando la fórmula iterativa, tenemos:

Con un error aproximado del 100%.

Aplicando nuevamente la fórmula iterativa, tenemos:

Con un error aproximado igual al 28.41%.

En este ejemplo, el método solo necesita de 5 iteraciones para reducir


el error menor al 1%. Resumimos los resultados en la siguiente tabla:

Aprox. a la raíz Error aprox.


0
-0.2 100%
-0.1557461506 28.41%
-0.1663039075 6.34%
-0.163826372 1.51%
-0.164410064 0.35%

De donde vemos que la aproximación buscada es:

Veremos a continuación un ejemplo del metódo de la Punto Fijo con la


siguiente ecuación:

# Xi Xd Fxi Fxd Nuevo Xm Error


1 -3 -2 -14 6 -2.3 -0.3
2 -3 -2.3 -14 1.533 -2.51 -0.21
- -
3 -2.51 -2.3 -2.323251 1.533 2.32072555 0.02072555205
20505 0473
- - -
1.1803871495
4 -2.51 2.32072555 -2.323251 2.39596902 0.07524347577
748
20505 7827 6506
- - - - -
1.1803871495
5 2.39596902 2.32072555 0.1504307540 2.34607532 0.02534977303
748
7827 20505 8291 50876 7123
- - - - -
0.7409631953
6 2.39596902 2.34607532 0.1504307540 2.39032922 0.04425390235
0987
7827 50876 8291 74407 3135
- - - - -
0.7409631953
7 2.39032922 2.34607532 0.0478907448 2.38286098 0.03678565791
0987
74407 50876 3039 30056 7969
- - - - -
0.0871912946
8 2.39032922 2.38286098 0.0478907448 2.38987583 0.00701485278
68852
74407 30056 3039 57919 63751
- - - - -
0.0871912946
9 2.38987583 2.38286098 0.0396672312 2.38738885 0.00452787134
68852
57919 30056 09549 43541 85732
- - - - -
1 0.0053886529
2.38987583 2.38738885 0.0396672312 2.38909818 0.00170933037
0 350926
57919 43541 09549 47273 31688
- - - - -
1 0.0053886529
2.38909818 2.38738885 0.0255692380 2.38759328 0.00020443474
1 350926
47273 43541 87972 9098 381393
- - - - -
1 0.0016883143
2.38909818 2.38759328 0.0255692380 2.38785523 0.00026194808
2 877866
47273 9098 87972 71823 438618
- - - - -
1 0.0016883143
2.38785523 2.38759328 0.0030539102 2.38760951 1.62248873998
3 877866
71823 9098 982061 39854 29E-5

Hemos terminado de analizar el método de la Posición Falsa, en este


ejemplo con un error de 0.0001; se encuentra la última raiz(Xm): -
2.3876969957131 con 13 iteracciones.

You might also like