Unidade: Zero de funções reais Unidade I: 0 Unidade: Zero de funções reais Introdução à origem dos erros Estamos aptos a discutir a origem dos erros nos computadores e calculadoras. Consideremos o seguinte problema: calcular a área de um círculo de raio igual a 100 m. Sabemos que a área do círculo é calculada pela seguinte fórmula: Área do círculo = R2 Sem utilizar a calculadora: Área do círculo = 3,14(100)2 = 31400 m2 Utilizando uma calculadora: Área do círculo = 31415,92654 m2 Como explicar a diferença entre os resultados? Bem, isso depende da representação dos números na máquina utilizada. No primeiro caso, utilizamos igual a 3,14 (três algarismos significativos) e, no segundo, a calculadora dispunha na sua memória do valor igual a 3,141592654 (dez algarismos significativos). Devemos notar que o valor exato da área não pode ser obtido, pois é um número irracional. Generalizando, cálculos que envolvam números que não podem ser representados por um número finito de dígitos não fornecem valores exatos. Isso quer dizer que, se fizermos 2*0,35 em um computador, obteremos o Antes de respondermos a essa pergunta, devemos lembrar que, quando inserimos um número no computador, este o converte para binário, realiza operações matemáticas com o mesmo e converte o resultado para decimal para que possamos observá-lo. Assim, para realizar a operação acima, nossa máquina primeiro converte 2 e 0,35 para binário, executa a multiplicação e, então, converte novamente para decimal. Unidade: Zero de funções reais valor exato 0,7? 1 Aritmética de ponto flutuante Agora vamos entender como os números são armazenados na memória do computador. Se a máquina trabalha com a base , números serão representados sob o seguinte formato: (0,d1d2d3...dt) x e Em que t é o número de dígitos e e um expoente com limite superior e inferior (M e m, respectivamente). A fração entre parênteses é chamada de mantissa. Se nosso expoente e for maior que M, temos “overflow” e, se e for menor que m, temos “underflow”. Supondo que nossa máquina trabalhe em base decimal ( = 10) e que opere com três algarismos significativos (t=3). Um número digitado será representado no seguinte formato: (0,d1d2d3...dt)10 x 10e Vejamos alguns exemplos: Representação obtida Representação obtida por arredondamento por truncamento 2,45 0,245x101 0,245x101 1506 0,151x104 0,150x104 3,141593 0,314x101 0,314x101 3,835 0,384x101 0,383x101 50,056 0,501x102 0,500x102 Quando digitamos o número 3,835 (com quatro algarismos significativos), o computador deve armazená-lo, mas só dispõe de três dígitos. Assim, a nossa máquina dispõe de duas opções: a) Arredondar – significa determinar se o dígito após o último algarismo Unidade: Zero de funções reais Número digitado 2 significativo do número. No caso, 5 (3,835). Assim, se for: Menor que 5: desprezamos os demais dígitos após o último algarismo significativo. Maior que 5: somamos um ao último algarismo significativo. b) Truncar – significa desprezar os demais dígitos após o último algarismo significativo. No arredondamento de 3,835, vemos que o dígito após o último algarismo significativo é maior ou igual a 5. Então, somamos um ao último algarismo significativo, que é 3. Obtemos 3,84. No truncamento, simplesmente, desprezamos os demais dígitos e obtemos 3,83. Zeros de funções reais Chamamos de zero ou raiz de uma função o valor x que anula nossa equação f(x). Então, f( x )=0. Nem sempre dispomos de fórmulas explícitas para o cálculo das raízes de uma função. Assim, recorremos ao Cálculo Numérico, que nos fornece ferramentas para determinação dos zeros de forma aproximada, com a precisão ou dentro do erro desejado. Consideremos os exemplos a seguir. Devemos procurar um ou mais números reais que anulem f(x). Exemplo 1: f(x) = x2 – 16. Trata-se de um polinômio de segundo grau e sabemos que apresenta f ( x) x 2 16 x1 4 x2 4 => x 2 16 0 => x 2 16 => x 16 Unidade: Zero de funções reais duas raízes, as quais chamaremos de x1 e x2 . 3 Exemplo 2: f(x) = x2 + 1. f ( x) x 2 1 => x2 1 0 => x 2 1 x 1 Podemos definir i2=-1, então, que as raízes são: x1 i x2 i Nossa equação apresenta raízes complexas e não reais. Essas raízes não serão analisadas em nosso curso. Frequentemente, para localizar as raízes ou os zeros reais de nossas funções devemos construir gráficos. As raízes são os pontos no qual a função intercepta o eixo x. Vejamos alguns exemplos: 2 Figura 2 – Localização de uma raiz de uma função f(x) qualquer. Fonte: O Autor Unidade: Zero de funções reais Figura 1 – Localização das raízes da função f(x) = x -9. Fonte: O Autor 4 Figura 3 – Localização de duas raízes de uma função qualquer. Fonte: O Autor Figura 4 – Localização três raízes de uma função qualquer. Fonte: O Autor Todos os métodos numéricos para a determinação dos zeros de uma função apresentam uma idéia em comum: através de uma estimativa inicial para raiz e refina-se o resultado utilizando um processo iterativo. Os métodos são compostos de duas etapas: Primeira etapa: localização ou isolamento das raízes – consiste na obtenção de um intervalo fechado [a,b] que contenha uma única raiz ( x ) da função. Segunda etapa: refinamento – consiste na obtenção de aproximações cada vez melhores para a raiz, até a precisão fixada () ou, em outras palavras, dentro do erro estabelecido. Localização ou isolamento de raízes Nessa etapa, vamos utilizar a construção de gráficos para localização e isolamento das raízes. A construção do gráfico pode auxiliar com relação ao domínio da função, os pontos de descontinuidade, os intervalos de crescimento e decrescimento, os pontos de máximo e mínimo, concavidade, pontos de Vamos ver alguns exemplos numéricos. Exemplo 1: localizar as raízes reais da função f(x)=x3-4x2+2. 1º passo: construir uma tabela com valores para a função e analisar como varia o sinal. X 3 2 f(x)=x -4x +2 -5 -4 -3 -2 -1 0 1 2 3 4 5 -223 -126 -61 -22 -3 2 -1 -6 -7 2 27 Unidade: Zero de funções reais inflexão e assíntotas da função. 5 3 2 Tabela 1 – Valores da função f(x)=x -4x +2 A função alternou de sinal entre -1 e 0, 0 e 1 e 3 e 4. Então, existe pelo menos uma raiz em cada intervalo. No entanto, sabemos que f(x) possui três raízes por se tratar de um polinômio de terceiro grau. Assim sendo, existe apenas uma raiz em cada intervalo: Intervalo I1 = [-1,0]; Intervalo I2 = [0,1]; Intervalo I3 = [3,4] e o problema está resolvido. 2º passo: construir o gráfico com os valores da tabela Através da análise gráfica, podemos comprovar ou não os intervalos em que existem as raízes. Utilizando os mesmos valores da tabela, podemos fazer a construção do gráfico. Lembre-se de que não é necessário fazer um gráfico extremamente preciso, basta um esboço da curva. 3 2 Exemplo 2: localizar a raiz positiva da função f(x)=4cosx-ex Estamos interessados em isolar a raiz positiva dessa função. Se formos utilizar a análise gráfica, não será trivial a construção do gráfico, mas podemos facilmente esboçar o gráfico de g(x) =4cosx e h(x) =ex. Com isso, as raízes estão localizadas na intersecção de ambas as curvas. Vamos elaborar uma tabela com pontos, partindo de x=0, já que queremos a raiz positiva. Não Unidade: Zero de funções reais Figura 5 – Construção do gráfico da função f(x)=x -4x +2 indicando os intervalos. Fonte: O Autor 6 esqueça de trabalhar com a calculadora em radianos, pois vamos trabalhar com uma função trigonométrica. x g(x)=4cosx 0 4 0,5 1 1,5 2 3,51033 2,161209 0,282949 -1,66459 x h(x)=e 1 1,648721 2,718282 4,481689 7,389056 x Tabela 2 – Valores das funções g(x) =4cosx e h(x) =e Podemos observar que a intersecção das curvas ocorre entre 0,5 e 1. Podemos definir o intervalo com I =[0,5,1]. A título de verificação, uma vez que o problema está resolvido, podemos realizar a análise teórica da função: f(0,5) = 4 cos (0,5)-e0,5 = 1,9 > 0 f(1,0) = 4 cos (1,0)-e1,0 = -0,6 < 0 De acordo com os cálculos, verifica-se a ocorrência de inversão do sinal no intervalo indicado. Portanto, podemos concluir que realmente existe uma x Figura 6 – Construção dos gráficos das funções g(x)=4cosx e h(x)=e indicando a localização da raiz. Fonte: O Autor Unidade: Zero de funções reais raiz entre 0,5 e 1,0. Comprove no gráfico. 7 Exemplo 2: localizar a raiz positiva da função f(x)=lnx + x 1º passo: para separar as funções, primeiro vamos igualar f(x) a zero: lnx + x = 0 lnx = -x Do lado esquerdo da equação, temos g(x) e do lado direito, h(x). Assim: g(x) = lnx e h(x)=-x 2º passo: construir a tabela: x g(x) = lnx h(x) = -x 0 - 0 0,5 -0,7 -0,5 1 0 -1 Unidade: Zero de funções reais Tabela 3 – Valores das funções g(x) = lnx e h(x) =-x 8 3º passo: construir o gráfico: Figura 7 – Construção dos gráficos das funções g(x) = lnx e h(x) = -x indicando a localização da raiz. Fonte: O Autor Vemos que a intersecção das duas curvas ocorre entre 0,5 e 0,6. Podemos definir o intervalo como I= [0, 5 , 0,6]. Apenas a título de verificação, uma vez que o problema já está resolvido, podemos realizar a análise teórica: f(0,5) = ln0,5+0,5 = -0,2 < 0 f(0,6) = ln0,6+0,6 = 0,09 > 0 De acordo com os cálculos, verifica-se a ocorrência de inversão do sinal no intervalo indicado. Portanto, podemos concluir que realmente existe uma Para treinar Agora isole os zeros reais, definindo o intervalo das seguintes funções: f(x) = 2x + 1 – ex f(x) = 1 – xlnx f(x) = 2x - 3x Resposta: [-0,5 , 0,5] Resposta: [1, 2] Resposta: [0 , 1] Unidade: Zero de funções reais raiz entre 0,5 e 0,6. 9 Observação: Os intervalos não precisam ser os mesmos. Refinamento Na etapa anterior, aprendemos a isolar as raízes de uma função. Como resultado, obtivemos um ou mais intervalos fechados [a,b] contendo uma única raiz em cada um deles. Nessa etapa, veremos os métodos numéricos para o cálculo de uma aproximação para a raiz. Método da bissecção Se temos f(x) contínua em [a,b], com f(a)*f(b)<0 e apenas uma raiz nesse intervalo, podemos utilizar esse método. O objetivo é diminuir ou fechar o intervalo [a,b] até atingirmos a precisão desejada (b-a<). A cada iteração, dividimos o intervalo ao meio, modificando o valor de a ou de b. Nossa estimativa inicial ( x0 x0 ) para a raiz é: ab 2 Devemos calcular f(a), f(b) e f( x0 ). 1ª condição: se f(a)<0, f(b)>0 e f( x0 )>0 devemos fazer b= x0 ; 2ª condição: se f(a)<0, f(b)>0 e f( x0 )<0 devemos fazer a= x0 . Vamos resolver um exercício. Queremos encontrar a raiz da função f(x) = x – cosx no intervalo [0,1] com erro inferior a 0,01. Solução: como o intervalo já está definido, não há a necessidade da a = 0; b = 1; ε=0,01 a = 0 => f(a) = 0 – cos 0 = 0 – 1= -1 => f(a)<0 b = 1 => f(a) = 1 – cos 1 = 1 - 0,5403 = 0,4597 => f(b)>0 Calculando o valor de b-a=>1-0=>1>ε, então, vamos calcular a estimativa inicial Unidade: Zero de funções reais análise gráfica. Os dados para a solução do problema são: 10 Iteração inicial x0 a b 0 1 0,5 2 2 f( x0 )=0,5-cos0,5=-0,3776 Temos f(a)<0, f(b)>0 e f( x0 )<0, estamos na 2ª condição e daí a= x0 Recalculando o intervalo: b-a=1-0,5=0,5>ε, temos que iterar mais uma vez. Observe, na tabela a seguir, como deve ser feita sua montagem e as Unidade: Zero de funções reais etapas do processo de solução utilizando o método da bissecção. 11 Vamos construir uma tabela: Iteraç ão a b xn ab 2 f(a)*f(xn) 1 0 1 x1 0 1 2 (-1)*(-0,3776) (-)*(-)=(+) 1 x2 0,5 1 2 (-0,3776)*(0,0183) (-)*(+)=(-) 0,25 x2 0,75 3 0,5 0,75 x3 0,5 0,75 2 (-0,3776)*(-0,186) (-)*(-)=(+) 0,625 0,75 x4 0,625 0,75 2 (-0,186)*(-0,0853) (-)*(-)=(+) x4 0,6875 5 0,6875 0,75 x5 0,6875 0,75 2 x5 0,71875 6 0,7187 0,75 5 x6 0,71875 0,75 2 x6 0,734375 7 0,7343 0,75 75 x7 0,75 0,5 2 0,125 x3 0,625 4 1 0,5 2 (-0,0853)*(0,0339) (-)*(-)=(+) (-0,0339)*(0,0079) Como f(a)*f(xn)>0 (+) a=x1 Como f(a)*f(xn)<0 (-) b=x2 Como f(a)*f(xn)>0 (+) a=x3 0,75 0,625 Como f(a)*f(xn)>0 (+) 2 a=x4 0,0625 0,75 0,6875 Como f(a)*f(xn)>0 (+) 2 a=x5 0,03125 0,75 0,71875 Como f(a)*f(xn)>0 (+) 2 0,015625 a=x6 (-)*(-)=(+) 0,75 0,734375Como 0,734375 0,75 (-0,0079)*(0,0052) f(a)*f(xn)<0 (-) 2 2 (-)*(+)=(-) b=x7 x7 0,7421875 0,0078125 Tabela 4 – Solução pelo método da bissecção para a função f(x) = x-cosx. Como o erro na iteração 7 é menor que o erro estabelecido pelo enunciado do problema (0,0078125<0,01), concluímos que o mesmo está resolvido e a solução é: Unidade: Zero de funções reais 0,5 1 0 2 0,5 x1 0,5 2 ba (Erro) 2 12 x =0,74218750,0078125 Pontos importantes Convergência: estamos estudando métodos iterativos em que partimos de uma estimativa inicial e, através do método numérico utilizado, obtemos aproximações sucessivas com erro cada vez menor. Quando isso ocorre, dizemos que o método é convergente. O método da bissecção é convergente. Estimativa do número de iterações: podemos saber quantas iterações são necessárias para atingirmos a precisão desejada, utilizando o método da bissecção. Basta utilizarmos a seguinte equação: n log( b0 a0 ) log log 2 No exemplo resolvido, temos: a0 = 0 ; b0 = 1 ; = 0,01 Substituindo na equação: n log(1 0) log 0,01 log 2 n 6,6439 iterações. O que comprova o exemplo que o resultado foi atingido com 7 iterações. Para treinar x f(x)= x 5e , contida no intervalo I=[1,2] com precisão igual a 0,01. Resolva o problema arredondando para 4 casas decimais. Resposta: 7 iterações, x =1,4336, =0,00781 f(x)=4cosx-ex contida no intervalo I=[0,5 , 1,0] com precisão igual a 0,001. Resolva o problema arredondando para 5 casas decimais. Resposta: 9 iterações, x =0,90479, =0,00098 Unidade: Zero de funções reais Agora, determine a raiz de cada função abaixo: 13 Método de Newton-Raphson (N-R) No método de Newton-Raphson, para determinarmos a raiz de uma função f(x), devemos utilizar a seguinte equação: ( x) x f ( x) f ' ( x) Em seguida, com uma aproximação inicial, geramos uma sequência de aproximações da seguinte forma: x1 ( x0 ); x2 ( x1 ); x3 ( x2 ) ... O processo é interrompido até que ( f ( xn ) ). Exemplo: utilizando o Método de Newton-Raphson, obter a raiz da função f(x)=x2+x-6 contida no intervalo I=[1,3], partindo de x0 1,5 com uma precisão menor ou igual a 0,001. Solução: Primeiro passo: devemos obter a derivada f’(x) da função f(x): f’(x)=2x+1 Segundo passo: substituir a função f(x) e a sua derivada f’(x), na ( x) x f ( x) f ' ( x) x2 x 6 ( x) x 2x 1 ( x) 2x 2 x x 2 x 6 2x 1 ( x) x2 6 2x 1 Unidade: Zero de funções reais equação: 14 Terceiro passo: a partir daí, devemos proceder a substituição dos valores, utilizando uma tabela para facilitar os cálculos: xn ( xn1 ) Iteração 1 x1 (1,5) 2 6 2,0625 2(1,5) 1 f ( xn ) f ( x1 ) (2,0625) 2 (2,0625) 6 f ( x1 ) 0,31640625 x1 2,0625 (2,0625) 2 6 x2 2(2,0625) 1 2 f ( x2 ) (2,00076) 2 (2,00076) 6 f ( x2 ) 0,0038 x2 2,00076 (2,00076) 2 6 x3 2(2,00076) 1 3 f ( x3 ) (2,00000) 2 (2,00000) 6 x3 2,00000 f ( x3 ) 0 2 Tabela 5 – Solução pelo método da bissecção para a função f(x) = x +x-6 Como o erro na iteração 3 é menor que o erro estabelecido pelo enunciado do problema (0<0,001), concluímos que o mesmo está resolvido e a solução é: x =2,000000 Observe que o método de Newton-Raphson também é convergente. Para treinar x a) f(x)= x 5e , contida no intervalo I=[1,2] com precisão igual a 0,0001 e partindo de x0 1,5 . Resolva o problema arredondando para 6 casas decimais Resposta: 3 iterações, x3 =1,430443, =0,000003 b) f(x)=4cosx-ex contida no intervalo I=[0,5 , 1,0] com precisão igual a 0,0001 e Unidade: Zero de funções reais Agora você deve determinar a raiz de cada função abaixo: 15 partindo de x0 0,75 . Resolva o problema arredondando para 6 casas decimais Resposta: 4 iterações, x4 =0,904788, =0,000001 Agora, podem ter surgido algumas dúvidas. Procure consultar o material complementar, a bibliografia recomendada e também fazer uso da apresentação em Power Point. Além disso, você também pode procurar o tutor Unidade: Zero de funções reais e postar a sua dúvida no fórum de discussão. 16 Referências RUGGIERO, M. A. G., LOPES, V.L.R. - Cálculo Numérico: Aspectos Teóricos e Computacionais, 2ª edição, 1998, Editora Makron Books – São Paulo. SPERANDIO, D., MENDES, J.T., SILVA, L.H.M. - Cálculo Numérico: Características Matemáticas e Computacionais dos Métodos Numéricos, 2003, Editora Pearson – São Paulo. HUMES, A.F.P.C., MELO, I.S.H., YOSHIDA, L.K., MARTINS, W.T. – Noções de Cálculo Numérico, 1984, Editora McGraw Hill – São Paulo. Unidade: Zero de funções reais FRANCO, N.M.B. - Cálculo Numérico, 2006 - Editora Pearson. 17 Revisão Textual: Profa. Rosemary Toffoli www.cruzeirodosul.edu.br Campus Liberdade Rua Galvão Bueno, 868 01506-000 São Paulo SP Brasil Tel: (55 11) 3385-3000 18