Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Raízes de equações

Raízes de equações

Explicação detalhada do método da bisseção, do processo de localização de raízes. Com apêndices sobre lógica, convergência de sequências e uma digressão sobre prospecção de petróleo raízes de equações e curvas de nível.

Paulo Bordoni

July 17, 2013
Tweet

More Decks by Paulo Bordoni

Other Decks in Education

Transcript

  1. Determinação de raízes de equações Prof. Paulo R. G. Bordoni

    UFRJ Raízes de equações Prof. Paulo R. G. Bordoni
  2. O número irracional 2 é o número para o qual

    2 = 2. É, usando uma maquininha de calcular acho 2 = 1,414213562373095. E, calculando 1,4142135623730952, obtenho 2.
  3. Pois é Loirinha, esse problema é um pouco mais difícil.

    E se eu quisesse calcular 2 3 ? Bem, aí eu uso Python:
  4. Surfista, nossa proposta é mais ampla. Sim, pretendemos construir uma

    forma metódica para calcular = 2, 10, 2 3 , etc. Algo que possamos usar em muitas outras situações.
  5. 1. Escolher um número s (p/ex. s = 1.4); 2.

    Elevá-lo ao quadrado, obtendo s 2 (1.42 = 1.96); 3. Conferir o resultado, s 2, com 2 (1.96 < 2); 4. Se não estiver satisfeito, repetir os passos anteriores com uma escolha melhor de s (p/ex. s = 1.5). Pegando carona na resposta da Loirinha, uma forma de calcular 2 é ir conferindo o resultado:
  6. Bem, você não falhará se for cercando a resposta pelo

    seu efeito: 1.4  1.42 = 1.96 < 2 2  2 2 = 2 1.5  1.52 = 2.25 > 2 E eu fico tentando até dar certo?
  7. 1.4 1.5 1.45 1.452 = 2.1025 1.42 = 1.96 1.52

    = 2.25 Ora, porque 1.45 está na metade de 1.4 e 1.5: Valeu, Loirinha. É só ir repetindo o processo para 1.4 e 1.45, de olho no efeito!
  8. 1.4 1.5 1.45 1.42 = 1.96 1.452 = 2.1025 1.4252

    = 2,030625 Veja! Já temos uma casa correta depois da vírgula no resultado!
  9. N x x2 1 1.4 1.96 2 1.5 2.25 3

    1.45 2.1025 4 1.425 2.030625 5 1.4125 1.99515625 6 1.41875 2.01285156 7 1.415625 2.0039941 ... ... ... 2 2.0 Podemos ir continuando, e só parar quando estivermos satisfeitos com o número de “casas decimais” corretas em x2. Eis a sequência dos 7 primeiros valores de x e x2 obtidos com esse processo.
  10. • Começamos com 0 = 2.4 e 1 = 2.5,

    sabendo que 2 está entre os dois; • Portanto tanto | 0 − 2 | < como | 1 − 2 | < onde = 1 − 0 , no caso = 0.1; • Em seguida dividimos o intervalo à metade com 2 e garantimos que 2 está numa das metades; • Portanto | 2 − 2 | < /2; • Continuando o processo, garantimos (prove!) que | +1 − 2 | < /2 Mas e a precisão na aproximação para 2 ? Então Loirinho (...), nosso procedimento foi o seguinte:
  11. Além de dar uma estimativa para o erro, isto garante

    também que a sequência ( ) converge para 2, isto é lim →∞ = 2 Sim Mestra, pois de | +1 − 2 | < 1/2 garantimos que lim →∞ | +1 − 2 | < lim →∞ 1/2 = 0
  12. Mestra, sabemos que 210 = 1024. Assim, | 10+1 −

    2 | < 1 210 = 1 1024 < 0.001, Portanto x 11 já aproxima 2 com erro menor que um milésimo. Sim. E qual será o valor de k para o qual garantimos uma aproximação com a precisão do Single, de 7 casas decimais corretas?
  13. Bem jovens, para uma precisão de 7 casas decimais, precisamos

    garantir que | +1 − 2 | < 0.5 × 10−7. Sim Mestra, e como | +1 − 2 | < 1/2, basta garantirmos que 1/2 < 0.5 × 10−7. Resolvendo essa inequação obtemos k = 25.
  14. Como? Ora, de 1/2 < 0.5 × 10−7, segue 107

    < 2−1 e portanto 7 log 10 < log (2−1). Então − 1 0.301030 > 7 e assim k = 25.
  15. Um problema importante em Computação Científica é a resolução de

    equações. É o que passaremos a estudar. No ensino médio aprendemos a resolver equações do 1º e do 2º grau. Nas quadráticas usávamos a fórmula de Bhaskara.
  16. Antes disso, Mestres, respondam-me: O que é uma equação? Ah

    Loirinha, para achar 2 foi necessário resolver a equação 2 − 2 = 0. Usando o método polyroots( ) da NumPy já achamos raízes de equações polinomiais mais complicadas!
  17. São só exemplos de equações. Sempre fiquei intrigada em saber

    o que é, de fato, uma equação. Sendo breve, uma equação como () = 0 é uma sentença aberta numa variável x .
  18. Após o final dessa aula coloquei uma resposta mais detalhada

    sobre “que coisa é uma equação”. Não deixem de ler!
  19. Valores de x que tornam a sentença () = 0

    verdadeira são raízes (soluções) da equação. Sim, 2 e − 2 tornam verdadeira a sentença 2 − 2 = 0.
  20. Passaremos a analisar alguns métodos clássicos para a obtenção da

    solução de equações. Os métodos clássicos mais conhecidos são o da bisseção, o de Newton-Raphson, o do ponto-fixo e algumas variantes deles.
  21. Todos eles fazem parte de uma classe mais ampla de

    métodos, chamados métodos iterativos, que se aplicam aos mais diversos tipos de equações.
  22. E pensar que a famosa fórmula de Bhaskara , que

    demoramos tanto tempo para aprender no 2º grau, só se aplica a equações do 2° grau, 2 + + = 0. Pois é, Surfista. Cada coisa a seu tempo, para colher é preciso plantar.
  23. Consideraremos equações já na forma padrão = 0, onde :

    , → ℝ é uma função contínua, calculável através da expressão = (). Vamos assumir que r é uma raiz dessa equação, isto é, que = 0. Um método iterativo para achar r envolve a criação de uma sequência , , , ⋯ , , ⋯ que converge para r, isto é lim →∞ = .
  24. Ih, ferrou! Funções contínuas, sequências e limites. É o Cálculo

    nos atacando de novo! Pois é, vocês estão estudando Cálculo numérico!
  25. Após o final dessa aula faço uma recordação dos conceitos

    de convergência e de limite de uma sequência. Faço questão que vocês leiam!
  26. Na realidade, nos métodos iterativos, vamos achar aproximações r* para

    a raiz r. Em outras palavras acharemos números ∗ tais que − ∗ < para ε bem pequeno. A bem da verdade épsilons minúsculos, por exemplo = 10−7, 10−10, 10−15, etc.
  27. A aproximação r* para a raiz r será obtida a

    partir da sequência , , , ⋯ , , ⋯ quando ela converge para r. Quando ela converge, para algum k suficientemente grande, teremos − < . Então escolhemos ∗ = .
  28. Mestres, agora algo mais prático, por favor! Vamos começar refazendo

    o método da bisseção para o caso geral, uma equação na forma padrão = 0.
  29. Onde : [, ] → ℝ é uma função calculável

    através da expressão () e é contínua em [a, b]. é o valor de f em . ()
  30. () () () Pelo Teorema do Valor Intermediário, se f

    possui sinais contrários nos extremos a e b então existe pelo menos um ponto (, ) tal que = 0. Dito de outra forma, a equação = 0 possui pelo menos uma raiz em (a, b). Num ponto , () poderá ser positiva, negativa ou nula:
  31. = = Como 1º passo do processo, definimos o extremo

    esquerdo pondo = , e o extremo direito pondo = . Descoberto um intervalo (, ) no qual f possui sinais contrários, podemos começar o processo iterativo.
  32. O 2º passo é calcular o ponto médio do intervalo

    , = ( + )/2. O 3º passo é calcular calcular ( ) e compará-lo com ( ). ( ) ( )
  33. São três as possibilidades: i. Se × = 0, a

    raiz é = ; () ii iii ii. Senão, se × ( ) < 0, a raiz r está na metade da esquerda. Nesse caso colocamos = ; iii. Caso contrário, a raiz r está na metade da direita. Nesse caso colocamos = .
  34. No caso i, encerramos o processo, informando: A raiz é

    = . Nos outros dois casos, precisamos testar a precisão para decidir: A. Se | − | < e < , então colocamos ∗ = e encerramos; B. Senão, retornamos ao 2º passo para mais uma iteração.
  35. São duas condições de parada para anunciar ∗: • Proximidade

    da raiz: | − | < • Anulação aproximada do valor da função: < Um lembrete: não adianta pedir maior precisão que a “máquina” pode fornecer.
  36. Uma execução do programa. Note o valor de eps para

    5 casas corretas após a vírgula.
  37. Agora vamos obter as raízes (se houver alguma) da equação

    33 − 52 + 2 = 0 E como começamos Mestre? Não tenho a mínima ideia do lugar onde estão as raízes dessa equação!
  38. Esse é um bom primeiro passo, meu Surfista! Bem Loirinha,

    uma ideia é subdividir um intervalo grande em pedacinhos e verificar se há variação de sinal nos pedacinhos.
  39. O resultado está abaixo, Loirinha. Só uma troca de sinal.

    Em outras palavras, só uma raiz real foi localizada. Entretanto uma polinomial de grau 3 tem 3 raízes. É que 2 podem ser complexas conjugadas ...
  40. Vou usar o programa do método da bisseção feito pelo

    Mestre. Só estou mudando a função e a precisão.
  41. Bem jovens, uma outra possibilidade é examinar o gráfico da

    função. O Professor fez um programa com o MatPlotLib que gera o gráfico de uma função num intervalo. Surfista, fiquei intrigada com a possibilidade de existirem mais raízes reais para aquela equação polinomial de grau 3. Como poderemos decidir?
  42. Essa é a chamada à função graf_func( ). Observe a

    utilização da função eval( ), uma função pronta de Python, que transforma uma string num código executável.
  43. Vou mostrar apenas uma vez como chamar a função graf_func(

    ) para desenhar o gráfico da função () = 33 – 52 + 2. Depois é igual.
  44. Obtive este gráfico. Não entendi nada! Comece observando a diferença

    enorme entre as escalas hori- zontal e vertical.
  45. Olhando para o gráfico, concluímos que não existem raízes fora

    do intervalo [-10. , 10.] É verdade Mestre. Vou traçar o gráfico nesse intervalo [-10. , 10.] .
  46. A diferença entre as escalas ainda é muito grande. Vejam!

    Reduza para o intervalo [-5. , 5.]. Não existem raízes fora dele, Loirinha
  47. Ok Mestre. Agora podemos afirmar que as raízes estão no

    intervalo [-1. , 1.5]. Vou conferir!
  48. Puxa! O programa do Surfista localizou a raiz negativa, mas

    perdeu as duas positivas! Vou examinar o intervalo [0.5 , 1.5] .
  49. Substituindo e fazendo as contas, conferimos que 1.0 é, de

    fato, raiz da equação 33 – 52 + 2 = 0. Veja só: 3 ∗ (1 ∗∗ 3) – 5 ∗ (1 ∗∗ 2) + 2 = 3 – 5 + 2 = 0
  50. Excelente sugestão, Filósofo. Vamos lá: A expressão = () descreve,

    através de uma série de frases, como calcular o valor de y para um valor escolhido de . Quem resume a descrição é f. É uma taquigrafia que a humanidade aprendeu a usar ao longo de sua evolução. Falar e escrever, com regras e significados, é o que distingue o “bicho homem” dos demais animais. Mestres, essa é uma chance de ouro para esclarecer aspectos fundamentais da Lógica Matemática!
  51. A Pedra de Roseta Vejam o que encontrei na web!

    Pinturas em cavernas Caracteres cuneiformes
  52. Leibnitz, nos 1.600, tentou formalizar uma linguagem universal para expressar

    as coisas lógicas da matemática. Mais tarde, nos 1.700, G. Boole formalizou o “cálculo proposicional”. Nós, filósofos gregos, lá pelos 400 a.C, aprimoramos, significativamente, a arte de pensar. Em particular Aristóteles criou a lógica: a noção de proposição lógica, com os valores verdadeiro/falso, o encadeamento delas com os silogismos, etc.
  53. G. Frege revolucionou a lógica quando criou o, que é

    conhecido hoje como “cálculo de predicados”. Seus primeiros resultados foram publicados em 1.879, no livro Begriffsschrift (Conceitografia).
  54. Na sua Conceitografia, G. Frege, estabeleceu claramente conceitos como os

    de função e de variável lógica. A ideia de sentença aberta (), numa variável é dele. Ela não é nem verdadeira nem falsa. Porém quando substituímos por algum valor, podemos então decidir seu valor lógico. Por exemplo, se () ≡ ( 2 − 2 = 0 ) então 2 é verdadeira.
  55. Observem que no cálculo de predicados, entramos no interior das

    sentenças, transformando-as em proposições lógicas ao instanciarmos suas variáveis. Isso permitiu tratarmos questões lógicas impossíveis de serem representadas por meio dos silogismos.
  56. Uma outra forma de fazer isso é utilizando os quantificadores

    ∀, , ∃, (). Ao quantificarmos uma sentença aberta numa variável x, nós a transformamos numa proposição, que pode assumir então um dentre os dois valores lógicos: verdadeiro ou falso.
  57. Se () é a sentença () ≡ ( 2 −

    2 = 0 ) então ∃, () é verdadeira, ao passo que ∀, é falsa. Sim Mestre, ∃, () é verdadeira tanto para = 2 como para = − 2. Entretanto ∀, é falsa. Por exemplo, para = 1 temos 2 − 2 = −1 logo (1) é falsa.
  58. Obrigado por sua pergunta e atenção, Loirinha. Mestre, pegue a

    batuta. Torno a perguntar, o que é uma equação?
  59. Então Loirinha, de acordo com Frege, uma equação, na forma

    padrão, () = 0 é uma sentença aberta numa variável x. Aquele valor de x que a torna verdadeira, caso exista, é chamado de raiz (ou solução) da equação. Naturalmente, uma equação pode possuir mais de uma raiz. Obrigado Mestre!
  60. Lembrem-se, uma sequência ( ) converge para r, → ,

    quando, e apenas quando, ∀ > 0, ∃ ∈ ℕ tal que > ⟹ − < . Seu Sherlock, eu entendo inglês, mas detesto simbolês! Trate de explicar isto em detalhe!
  61. Minha jovem, a tradução mais saborosa que conheço para esse

    simbolês é: ∀ > 0 1º Para qualquer precisão escolhida, por minúscula que seja, p/ex. = 10−12 ∃ ∈ ℕ 2º A partir de um certo instante, N > ⟹ − < 3º Todos os elementos da sequência, depois do N, distarão menos que esse valor minúsculo de r.
  62. Concordo Loirinha, mas como surfista eu sei que, depois que

    dominamos a 1ª onda, as outras só nos dão prazer! Sua tradução ajuda Mestra, mas é difícil.
  63. r ( ) 0 1 2 A forma que eu

    tenho para visualizar que → é: para cada precisão escolhida > 0, a sequência toda, exceto um pedacinho (os N primeiros) fica dentro de uma “bola de raio entorno de r”. Repetindo: A sequência todinha, exceto alguns termos, está aqui!
  64. Seu enfoque é incrível Sherlock! Para cada precisão escolhida, você

    quebra a sequência em dois grupos, um com infinitos termos e outro finito. E enfia o grupo infinito, todinho, numa caixa minúscula, de largura 2, envolta de r.
  65. Augustin-Louis Cauchy 21/08/1789 23/05/1857 Bem, eu aprendi tudo isto lendo

    o “Cours d’analyse”, de Cauchy, publicado em 1821...
  66. Precisamos executar um milhão de vênias em homenagem ao Gottlob

    Frege por ter criado um linguajar com esse enorme poder expressar as coisas da matemática com tanta precisão e compacidade! E ao Augustin-Louis Cauchy pela clareza das definições épsilon-delta de limite e continuidade. E pro Sherlock também. O que mais gosto, nesse novo, é seu misto de sarcasmo com sagacidade.
  67. Surfista, vamos iniciar uma viagem ao fundo do mar. Mergulhar

    ao invés de surfar. Um mergulho com a Petrobrás, na prospecção de petróleo.
  68. Este texto, do livro GPU Gems 3, pode ser visto

    na Developer Zone, do site da Nvidia
  69. É altamente instrutivo acompanhar cada passo do processo de aquisição

    e tratamento numérico/computacional dos dados.
  70. Não é tão simples assim, para entender a propagação dessas

    ondas sonoras, é necessário um bocado de matemática e computação científica.
  71. Em (a) e (b) cortes verticais com imagens das ondas

    refletidas no início e no final do processo. Em (c) um corte horizontal, numa dada profundidade, exibindo um mapa de curvas de nível de velocidades das ondas refletidas. As azuis ...
  72. z x y z 0 E como eu faço um

    mapa de curvas de nível de velocidades dessas ondas, como esse? Bem Surfista, assuma que = (, ) é a função que descreve a componente vertical da velocidade. Você começa escolhendo um nível = 0 , p/ex. 7.000 m abaixo do nível do mar (o plano em verde).
  73. z y z0 C x , Escolhi a superfície rosa

    como um plano só para facilitar o visual. Imagine um lençol ou uma lona de circo. A interseção desse plano (verde) com a superfície = (, ) (rosa) é a curva de nível C (na figura, a reta roxa). Note que a curva C é definida implicitamente através da solução da equação , − 0 = 0.
  74. z y C x y4 x 4 z0 z A

    solução da equação 4 − 0 = 0 fornece um ponto da curva de nível que queremos Surfista. Claramente, para cada valor fixado de y, p/ex., = 4 , a superfície = , define uma função apenas de : 4 = , 4 .
  75. z x y z 0 Então Mestra, repetindo essa ideia

    para várias fatias verticais, obteremos uma coleção de pontos 0 , 1 , ⋯ , , todos na curva de nível, pelo nível 0 , que procuramos! Para finalizar, construímos a curva de nível C através de um processo de interpolação “spline” (paramétrica) com esses pontos.