Está en la página 1de 3

Prctica 4: Iteracin de punto jo para ecuaciones a o no lineales

1.

Construccin de funciones o

Ya hemos visto que podemos construir una funcin, digamos mifuncion(x,y) o creando un chero .m con el mismo nombre y encabezamiento function [...]=mifuncion(x,y). Es un procedimiento muy vlido para funciones a ms o menos complicadas, pero en ocasiones no nos trae cuenta generar un a nuevo chero .m para denir, digamos, f (x, y) = cos(xy). Para ello existe la opcin de denir una funcin dentro del propio script, usando el comando o o inline, por ejemplo: f = inline(cos(x.*y), x,y); El segundo y tercer argumentos, especicando las variables, no son obligatorios (Matlab trata de adivinar las variables de la funcin), pero son o recomendables. A partir de la versin 7 Matlab incorpora una forma equivalente, pero o ms eciente, de denir las funciones en linea: a f = @(x, y) cos(x.*y);

2.

Iteracin de punto jo o

El mtodo de la iteracin de punto jo para resolver una ecuacin no e o o lineal f (x) = 0 pasa por transformarla en una equivalente, x = g(x) , y ejecutar la iteracin o x(k+1) = g(x(k) ) a partir de un cierto x(0) hasta que se satisfaga el criterio de parada elegido o se alcance el nmero de iteraciones mximo admitido. u a Una posible implementacin del algoritmo de punto jo en su variante o ms sencilla puede ser por medio de la funcin puntojo con la siguiente a o estructura:

Prctica de ordenador IV a

function [x,xvect,nit]=puntofijo(g,x0,maxiter,tolerancia) % Implementa la iteracion de punto fijo % g = expresion de la funcion de iteracion % x0 = valor inicial % Como criterios de parada se usan: % maxiter = cantidad max de iteraciones admitidas % tolerancia = margen para error absoluto % En la salida: % x = resultado de la ultima iteracion % xvect = vector de los resultados de todas las iteraciones % nit = cantidad de iteraciones realizadas nit=0; xvect=x0; x=x0; % Inicializando err=tolerancia+1; % Garantiza al menos 1 ejecucion while (nit < maxiter & err > tolerancia), nit=nit+1; xn=g(x); xvect=[xvect;xn]; % Agregamos el valor nuevo err=abs(xn-x); % Calculamos error absoluto x=xn; end if nit == maxiter, disp(Alcanzado el max de iteraciones admisible) end Analice el cdigo anterior para entender su funcionamiento. o Observaciones: la ejecucin se detiene tan pronto como |x(k+1) x(k) | se o hace menor que el valor de tolerancia o se alcance el nmero mximo de u a iteraciones admisibles maxiter. Para llamar la funcin g tenemos dos opciones: o Si g fue denida por medio de inline o @g, basta incluir su nombre en el argumento de puntofijo. Si g fue denida por medio de un chero .m o es una funcin ya o implementada en Matlab, debemos utilizar @g (por ejemplo, @cos) en el argumento de puntofijo. En esta prctica usaremos la funcin puntofijo para estudiar la cona o vergencia de la iteracin de punto jo. o

3.

Trabajo de laboratorio

Realice las siguientes tareas consecutivamente, almacenando los cdigos o en los cheros script que considere necesarios:
Andrei Mart nez Finkelshtein

Prctica de ordenador IV a

1. Aproxime los puntos jos (si existen) de g(x) = cos(sen(x)), tomando tolerancia=10^(-15). Dibuje adems una grca de la funcin y de a a o la recta y = x que muestre claramente los puntos jos que haya. 2. Estudiemos la aplicacin de la iteracin de punto jo al clculo de las o o a ra ces de la funcin o f (x) = x2 + x + sen(x + 0,15) . Para ello: a) Dibuje la grca de f y localice la ra de menor valor absoluto. a z b) Aplique la iteracin de punto jo a g(x) = x f (x) para aproxio mar esa ra con tolerancia=10^(-15). Dibuje la grca de los z a valores x(k) . Hay convergencia despus de 100 iteraciones? e c) Aplique lo que hemos estudiado en clase para seleccionar el valor del parmetro en a g(x) = x f (x) para mejorar las propiedades de convergencia. Vuelva a aplicar la iteracin de punto jo y compare los resultados. o d ) Estudie si la misma iteracin de punto jo permite hallar la menor o ra positiva de f . z e) Aplique el algoritmo 2 de Aitken para acelerar la convergencia de la sucesin de aproximaciones obtenida. Compare la velocidad o de convergencia en cada caso. Sugerencia: para implementar la frmula de Aitken es convenieno te utilizar la funcin di de MATLAB. Utilice la ayuda para o conocer la sintaxis y el objetivo de dicha funcin. o

Andrei Mart nez Finkelshtein

También podría gustarte