370 likes | 1.15k Views
Métodos numéricos para la resolución de Sistemas de Ecuaciones no Lineales. Contenido. Planteamiento del problema Método de Punto Fijo Método de Newton Variantes del método de Newton Evaluación diferida del jacobiano Aproximación por diferencias finitas Newton unidimensional
E N D
Métodos numéricos para la resolución de Sistemas de Ecuaciones no Lineales
Contenido • Planteamiento del problema • Método de Punto Fijo • Método de Newton • Variantes del método de Newton • Evaluación diferida del jacobiano • Aproximación por diferencias finitas • Newton unidimensional • Métodos cuasi-Newton (Broyden)
Notación • Escalar • Vectorial
Resolución iterativa • x(0) estimación inicial de la solución • Iteraciones: x(1), x(2), …, x(k) • Criterio de convergencia • | x(k+1)- x(k) | < tol • Criterio de parada • k > maxiter
Esquema del algoritmo • Entrada: f, x0, tol, maxiter • Proceso • Inicializar incr, iter • Mientras incr > tol & iter < maxiter • Obtener x • incr = norm(x - x0) • Actualizar x0, iter • Salida: x, iter, incr • Si incr > tol no converge
Método de Punto Fijo • Punto fijo • Estimación inicial • Iteraciones • Criterio de parada
Algoritmo de Punto Fijo function [x,iter,incr] = pfijo(g,x0,tol, maxiter) iter = 0; incr = tol + 1; while incr > tol & iter < maxiter x = feval(g,x0); incr = norm(x - x0); iter = iter + 1; x0 = x; end if incr > tol, disp(‘No converge’), end
Ejemplo • Sistema no lineal • Problema de Punto Fijo
Punto Fijo con desplazamientos simultáneos • Punto Fijo con desplazamientos sucesivos
Código de la función function y=f(x) % Función para el método de punto % fijo con desplazamientos simultáneos y(1) = cos(x(2)*x(3))/3 + 1/6; y(2) = sqrt(x(1)^2+sin(x(3))+1.06)/9-0.1; y(3) = (1-exp(-x(1)*x(2)))/20 - pi/6;
Código de la función function y=f(x) % Función para el método de punto % fijo con desplazamientos sucesivos y(1) = cos(x(2)*x(3))/3 + 1/6; y(2) = sqrt(y(1)^2+sin(x(3))+1.06)/9-0.1; y(3) = (1-exp(-y(1)*y(2)))/20 - pi/6;
Método de Newton • Sistema de ecuaciones • Aproximación por el plano tangente • Paso de Newton
Algoritmo de Newton function [x,iter,incr] = newton(f,x,tol, maxiter) iter = 0; incr = tol+1; while incr > tol & iter < maxiter [fx,dfx] = feval(f,x); delta = - dfx \ fx; incr = norm(delta); iter = iter+1; x = x + delta; end if incr>tol, disp(‘No converge’), end El archivo f.m evalúa la función y el jacobiano
Método de Newton. Ejemplo 2 • Sistema • Estimación inicial • Primera iteración
Método de Newton. Ejemplo 3 • Sistema no lineal • Jacobiana
Variantes de Newton (Ejercicio...) • Actualización periódica del Jacobiano • Aproximación del Jacobiano por diferencias divididas • Newton con desplazamiento unidimensional
Métodos casi-Newton • Idea de la secante • No usa las derivadas parciales • Convergencia superlineal • Formulación matricial
Método de Broyden Iterar siendo
Algoritmo de Broyden • Entrada • x0 ,tol, maxiter • Inicio • M: Inversa del Jacobiano en x0 • x1 = x0- M*F(x0) • incr, iter • Iteraciones: k = 1, 2, ... • Actualizar M % Ak-1-1 Ak-1 • xk+1 = xk- M*F(xk)
Actualización de M w = v; % F(xk-1) v = F(x); % F del iterado actual y = v - w; % F(xk) - F(xk-1) z = - M*y; % - Ak-1-1 * yk p = - s' *z; % (sk - xk-1)T* Ak-1-1 * yk q = s' *M; % skT* Ak-1-1 R = (s+z)*q/p; % Transformación rango 1 M = M+R; % Inversa nueva: Ak-1 s = - M*v; % Paso de Broyden: sk+1
% Inicio v =F(x0) M = inv(DF(x0)) % Inversa Jacobiano s = - M*v; x = x0+s; % Paso de Newton incr = norm(s); while incr > tol w = v; % F(x(k-1)) v = F(x); y = v-w; % F(x(k)) - F(x(k-1)) z = - M*y; % -inv(A(k-1))*y(k) p = - s' *z; q = s' *M; % s(k)'*inv(A(k-1) R = (s+z)*q/p; M = M+R; % inversa de A(k) s = - M*v; x = x+s; % Paso de Broyden incr = norm(s); end Algoritmo de Broyden
Alternativas al primer paso • Estimar el Jacobiano por diferencias divididas • Estimación unidimensional del Jacobiano