Lista
2 de setembro de 2014
Entrega: 11 de setembro de 2014
Quest˜ ao 1.
1.a. Implemente o M´etodo de Newton para resolver um sistema de n equa¸co˜es n˜ao-lineares em n inc´ognitas, f (x) = 0. Isto ´e, a partir de um “chute inicial” x0 , implemente o algoritmo −1 xk = xk−1 − Jk−1 xk−1 , k = 1, 2, . . . , onde J ´e o jacobiano de f , com entradas Jij =
∂fi
,
∂xj
i, j = 1, 2, . . . , n.
Sua fun¸ca˜o deve ter o seguinte preˆambulo (dispon´ıvel em euler.m): function x = newton(f,x0)
%M´
etodo de Newton para resolver sistemas n~ ao-lineares. % x = newton(f,x0)
% Entrada:
%
f : handle para fun¸ ca ~o de R em (Rn x R(n x n))
%
x0: chute inicial (vetor-coluna de Rn)
% Sa´ ıda: % x : solu¸ ca ~o calculada (f(x) e
´ pr´ oximo de zero),
%
(vetor-coluna de Rn)
% Na chamada, usa-se x = newton(@fun,x0), onde a
% fun¸ ca ~o fun tem prot´ otipo: % function [f,J] = fun(x)
% onde x e f s~ ao vetores-coluna e J, o Jacobiano,
% ´ e uma matriz quadrada.
Como crit´erio de parada, use f (xk ) ≤ ε f (x0 ) , onde ε ´e um parˆametro de tolerˆancia pequeno, como 10−6 .
1.b. Teste sua fun¸ca˜o. Para diversos exemplos, examine, em particular, a taxa de convergˆencia, a dependˆencia ao chute inicial x0 e `a constante ε da tolerˆancia.
Uma fun¸c˜ao-exemplo ´e dada pela famosa “fun¸c˜ao-banana” (dispon´ıvel em f banana.m), ou fun¸ca˜o de Rosenbrock. (De fato, a fun¸ca˜o implementada ´e o gradiente da fun¸ca˜o de Rosenbrock, pois o problema usualmente ´e apresentado como um problema de otimiza¸ca˜o e n˜ao como sistema n˜ao-linear.) O parˆametro b regula a dificuldade do problema. 1.c. Vocˆe consegue gerar exemplos em que a taxa de convergˆencia n˜ao seja quadr´atica?
1.d. Compare a sua fun¸c˜ao com a fun¸c˜ao fsolve do Matlab/Octave. Como elas se comparam em termos de eficiˆencia (tempo de execu¸ca˜o)? E de robustez (por exemplo, com rela¸ca˜o ao chute inicial)? Note que fsolve admite