Universidade Federal do Rio Grande do Norte Métodos Computacionais Marcelo Nogueira Raízes de Equações Algébricas Achar a raiz de uma função significa achar um número tal que 0 Algumas funções podem ter suas raízes calculadas analiticamente, porém outras são de difícil solução (algumas funções transcendentes, por exemplo) ou de solução desconhecida (polinômios de ordem maior que 4, por exemplo), sendo necessário a solução por métodos numéricos Passos para a solução numérica Achar um intervalo fechado [a,b] que contenha somente uma solução Refinar a raiz até o grau de exatidão requerido Isolamento de raízes Se uma função contínua assume valores de sinais opostos entre o intervalo [a,b], então a função possui pelo menos uma raiz neste intervalo Teorema do valor médio Se a derivada da função preservar o sinal dentro do intervalo, ou seja, se a função for estritamente crescente ou estritamente decrescente, a raiz será única Pode-se estimar o intervalo [a,b] pelo esboço do gráfico da função ou pela construção de tabelas para análise da variação do sinal da função Isolamento de raízes por esboço do gráfico Dada a função f, o ponto 0 é exatamente o ponto onde a função cruza o eixo y a x0 b x Caso a função f(x) seja complexa, podemos tentar escrevê-la na forma Supondo f 0 teremos g (ξ ) − h (ξ ) = 0 ⇒ g (ξ ) = h (ξ ) Dessa forma, podemos traçar os gráficos das funções e e o ponto de interseção destes irá nos fornecer a raiz da função y h(x) ξ g(x) x Ex 1: trace o gráfico e determine um intervalo que contenha raízes de 2 Quadro Solução Ex 1 2 g 2 Raiz no intervalo [0,5; 1,5] Exercício 1: trace o gráfico e determine um intervalo que contenha raízes das seguintes funções: 1 log Critérios de parada Procedimentos iterativos Para quando atingir um determinado critério Existem vários tipo de critérios de parada Analise do valor da função: f (x ) < δ Erro absoluto: Erro relativo: xi − xi −i < δ xi − xi −i <δ xi b−a <δ 2 Número de iterações Limites do intervalo: Método da bisseção Seja uma função contínua no intervalo [a,b] e · 0, dividindo o intervalo ao meio, obtém-se x0. Caso f ( x0 ) = 0, ξ = x0 Caso contrário, Se f (a ) ⋅ f ( x0 ) < 0 então a raiz está no intervalo [a, x0 ] Se f ( x0 ) ⋅ f (b) < 0 então a raiz está no intervalo [x0 ,b] Divide-se novamente o intervalo obtendo x1 e assim sucessivamente até a precisão desejada y a x1 x0 b x Convergência Chamando os intervalos de a1,b1,a2,b2,...,an,bn então: Se então bn − a n b − a = 2 n +1 bn − an ≤ ε b − a ≤ ε n +1 2 3 Ex 2: Achar a raiz da equaçãof ( x) = x − 10 no intervalo [2,3] com o erro absoluto δ < 0,1 Quadro Solução Ex 2: 3 Raiz de f ( x) = x − 10 em [2,3] com δ < 0,1 f (2) ⋅ f (3) = −2 ⋅17 < 0 OK! x0 = (2 + 3) / 2 = 2,5 → f (2,5) = 5,62 x1 = (2 + 2,5) / 2 = 2,25 → f (2,25) = 1,39 x2 = (2 + 2,25) / 2 = 2,125 → f (2,125) = −0,40 x3 = (2,125 + 2,25) / 2 = 2,1875 → f (2,1875) = 0,46 ε = 2,18 − 2,12 = 0,06 Exercício 2: Calcular a raiz de ln com o erro relativo 0,1 Exercício 3: Utilize o método da bisseção para calcular 5. Solução Exercício 2: intervalo da raiz [0,5; 1] em torno de 0,65 Solução Exercício 3: achar a raiz de 5 0 5 # 5 # Exercício 4: Utilize os intervalos calculados no Exercício 1 para cada uma das funções e calcule uma raiz aproximada, utilizando o método da bisseção 1 log Exercício 5: uma gamela (barril serrado ao meio ao longa da altura) de comprimento $ e secção transversal semicircular com raio %, cheia de água até uma distancia do topo tem volume dado por: & $'0.5)% % % % *.+ , % Suponha que $ 10, % 1 e & 12.4 e calcule a profundidade da água na gamela. O método sempre converge para uma solução O esforço computacional do método da bisseção cresce demasiadamente quando se aumenta a exatidão da raiz desejada Deve ser usado apenas para diminuir o intervalo que contém a raiz para posterior aplicação de outro método, como o método das cordas ou o método de Newton, por exemplo Algoritmo Bisseção Entrada: intervalo [a,b], tolerância e número máximo de iterações N cont=0 enquanto (b-a)/2 > e cont<N raiz = a + (b-a/2); //o mesmo que (a+b)/2, mas com menos erro se f(a)*f(raiz)<0 b = raiz senao a = raiz fim_se cont = cont+1; fim_enquanto Saída(“Apos “, i,” iteracoes, o intervalo final é [“,a, ” , ” , b, ”]”) Método das cordas È semelhante ao método da bisseção A derivada segunda do método, .., deve ter sinal constante no intervalo O intervalo [a,b] não é dividido ao meio, mas sim em partes proporcionais a razão − f (a) / f (b) Apenas um dos valores do intervalo é atualizado, gerando uma sequencia de de intervalos ', / ,(ou ', / ,), onde / são aproximações da raíz da equação Existem duas possibilidades: x0 = a − f (a) ( a − b) f (a) − f (b) x0 = b + f (b) (b − a ) f (a) − f (b) Podemos substituir essas duas equações pela equação f ( xn ) xn +1 = xn − ( xn − c ) f ( xn ) − f ( c ) onde c é um ponto da função onde esta tem o mesmo sinal de sua derivada segunda ( f (c) ⋅ f ′′(c) > 0 ) Ex: Achar a raiz da equação f ( x) = x 3 − 10 no intervalo [2,3] com o critério de parada de análise do valor da função / 0,1 Quadro Solução f ( x) = x 3 − 10 f ' ' ( x) = 6 x Escolha do ponto c 2 · 88 2 2 · 12 24 0 Não é o ponto c 3 · 88 3 17 · 18 306 = 0 OK! Então c=3 e * 2 x0 = 2 − f (2) −2 (2 − 3) = 2 − (−1) = 2,11 → f (2,11) = −0,74 f (2) − f (3) − 19 f (2,11) (2,11 − 3) x1 = 2,11 − f (2,11) − f (3) − 0,74 = 2,11 − (−0,89) = 2,15 → f (2,15) = −0,07 − 17,74 > =0,1 Continua… > <0,1 Parou! • Podemos ver que o método das cordas converge bem mais rápido que o método da bisseção Exercício: Ache uma aproximação da raiz da função 2 no intervalo [0.5; 1.5] com um erro absoluto de ? 0.01 Algoritmo Cordas Entrada: intervalo [a,b], tolerância e número máximo de iterações N se f(a)*f’’(a)>0 rn = b; //raiznova c=a; senão rn = a; c=b; fim_se ra=c; //raizantiga cont=1 enquanto |rn - ra|/|rn| > e cont<N ra=rn; rn = ra - f(ra)/(f(ra) - f(c))*(ra - c); cont = cont + 1; fim_enquanto Saída(“Apos “, i,” iteracoes, a raiz calculada foi “,rn) Método de Newton Supondo uma aproximação 0 para a raiz de , no ponto 0, 0 passa apenas uma única reta tangente, que é a derivada de em 0. Esta reta tangente corta o eixo na coordenada 1,definindo por sua vez, o ponto 1, 1 Por este novo ponto também passa uma única reta tangente que corta o eixo em 2. Esta nova coordenada define outro ponto 2, 2 que repete todo o processo 0, 1, … são aproximações cada vez melhores para a raiz da função Pela figura temos que tan(θ ) = f ( xi ) f ( xi ) ⇒ xi +1 = xi − xi − xi +1 tan(θ ) Já que f ′( x) = tan(θ ) podemos concluir f ( xi ) xi +1 = xi − f ′( xi ) Exige o conhecimento da derivada segunda da função Usando a formula de Taylor (em torno de * ) * 8 * * 88 * * 2! B Se CD for suficientemente próximo da raiz da função, , então podemos desconsiderar os termos * E , = 1 0 * 8 * * Uma aproximação para a raiz será dada por (chamando esta aproximação de > ) * > * . * Convergência Caso se escolha 0 de forma que 1 saia do intervalo ', , o método poderá não convergir. Caso f ′(x ) e f ′′(x ) sejam não nulas e preservem o sinal no intervalo e 0 seja tal que f ( x0 ) ⋅ f ′′( x0 ) > 0 a convergência é garantida (se as derivadas não tiverem sinal constante, o método pode ou não convergir). Ex: Ache a raiz da equação ln para o erro relativo F 0,001 (ou seja): /G> / F /G> Quadro Se f ( x ) = x 2 + ln( x ) Então 1 1 f ′′( x) = x − 2 f ′( x ) = 2 x + x x Plotando o Gráfico, podemos ver que a raiz está próxima de 0,5. Podemos fazer * 0,5? 0 0,5 pois f (0,5) ⋅ f ′′(0,5) = −0,44 ⋅ −3,5 = 1,54 > 0 f ( 0,5) − 0, 44 0 , 65 − 0 ,5 = 0 . 23 > 0 , 01 x 1 = 0 ,5 − = 0 ,5 − = 0,65 0 ,65 f ′ ( 0 ,5 ) 3 Continua… f (0,65) x 2 = 0,65 − = 0,65 0 , 65 − 0 ,65 = 0 < 0 ,01 Parou! f ′(0,65) 0 , 65 Exercício: Ache uma aproximação da raiz da função 10 H 2 com um erro absoluto de ? 0.01 Algoritmo Newton Entrada: * , tolerância e número máximo de iterações N se f * I 88 * 0 saida(“convergencia não garantida. Abortando”) senão rn=* ; //raiz nova cont=1 faça ra=rn; //raiz antiga = raiz nova rn = ra - f(ra)/f’(ra); i = i+1; enquanto |rn - ra|/|rn| > e cont < N Saída(“Apos “, i,” iteracoes, a raiz calculada foi “,rn) fim_se Método da Secante Uma modificação do método de Newton que substitui o a derivada da função pela equação f ′( x i ) = f ( x i −1 ) − f ( x i ) x i −1 − x i Substituindo o novo valor da derivada na formula de Newton, a fórmula do método da secante fica da seguinte maneira São necessários dois pontos iniciais(xi e xi-1) Semelhante ao método das cordas, mas agora o ponto não é mais fixo Ex: Determine a raiz da função J com erro absoluto de ? 0.05 Solução J Intervalo com uma raiz: 0 1 e 1 0. 632, portanto existe uma raiz no intervalo [0,1] * 0 > 1 0.632 · 1 > * > 1 0.613 > 1 0.632 * > | > | 0.4 = 0.05 Continua… 0.6127 0.071 > 0.071 · 1 0.613 H 0.613 0.632 0.071 > 0.564 H 0.049 0.05 Parou! Algoritmo Secante Entrada: * , > , tolerância e número máximo de iterações N se f * I 88 * 0 saida(“convergencia não garantida. Abortando”) senão ra2=* ; ra1=> ; //raiz antiga 1 e 2 cont=1 faça rn = ra1 - f(ra1)(ra2-ra1)/(f(ra2)-f(ra1)); ra2=ra1; ra1=rn; cont = cont+1; enquanto |rn – ra1|/|rn| > e cont < N Saída(“Apos “, i,” iteracoes, a raiz calculada foi “,rn) fim_se Exercício: Considere a série M 1 H N B , que converge para 1 1. a) Para calcular o valor de que leva a série a convergir para o valor 1.5 podemos utilizar quais métodos? Escolha um e calcule com erro absoluto menor que 0,01. Quais tipos de erro estamos cometendo neste calculo? b) Utilizando a formula fechada M > , >J verifique que podemos utilizar o método de Newton no intervalo [0; 0,99] e o utilize para calcular novamente o valor de com a mesma precisão. c) Compare o esforço e os resultados obtidos em a) e b) com o valor real . Comparação entre os métodos O método da bisseção é bastante simples por não exigir o conhecimento da derivada da equação em questão, porém possui uma convergência lenta O método das cordas exige que o sinal da derivada segunda permaneça constante no intervalo, porém, se o ponto inicial c estiver suficientemente próximo da raiz ( f ( c ) < 10) o método apresenta uma convergência bem mais rápida que o método da bisseção O método de Newton é o que apresenta a convergência mais rápida, porém exige o conhecimento da derivada analítica da função em questão O método da Secante é menos rápido que o de Newton, porém não exige o conhecimento da derivada analítica da função em questão