Baixe o app para aproveitar ainda mais
Prévia do material em texto
Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier Erros em computação A representação de um número por uma máquina não é exata. Isso porque cada máquinas, seja um computador ou um celular, possui sua própria capacidade de processar contas e armazenar números. Em um certo ponto do número, alguma aproximação será feita e, portanto, haverá um erro em relação ao número real. Seja: { 𝑥 = 𝑛ú𝑚𝑒𝑟𝑜 𝑟𝑒𝑎𝑙 𝑥∗ = 𝑛ú𝑚𝑒𝑟𝑜 𝑎𝑝𝑟𝑜𝑥𝑖𝑚𝑎𝑑𝑜 𝐸𝐴𝑥 = 𝑒𝑟𝑟𝑜 𝑎𝑏𝑠𝑜𝑙𝑢𝑡𝑜 𝐸𝑅𝑥 = 𝑒𝑟𝑟𝑜 𝑟𝑒𝑙𝑎𝑡𝑖𝑣𝑜 Podemos calcular erros absolutos e relativos. Veja abaixo suas fórmulas e perceba que o erro relativo não se altera para certos casos (ou seja, o erro relativo leva em consideração a magnitude dos números) { 𝑬𝑨𝒙 = |𝒙 − 𝒙 ∗| 𝑬𝑹𝒙 = |𝒙 − 𝒙∗| |𝒙| Definição (Algarismo Significativo) Conjunto de todos os algarismos corretos somado de um duvidoso. Ex: medir algo com uma régua comum. As réguas só conseguem medir os décimos de centímetros e não os centésimos. Logo o algarismo referente ao centésimo é duvidoso, enquanto os outros são corretos. Se medirmos algo com 7,25 cm em uma régua, temos 7 e 2 como algarismos significativos corretos e 5 como duvidoso. Vale lembrar que zeros à esquerda não são algarismos significativos, e que zeros à direita podem ser. Diz-se que o número 𝑥∗ se aproxima do valor 𝒙 com 𝒕 algarismos significativos se 𝑡 é o maior valor inteiro não negativo para o qual: 𝐸𝑅𝑥 < 5. 10 −𝑡 A representação em aritmética de ponto flutuante é muito utilizada na computação digital. A principal vantagem da representação em ponto flutuante é que ela pode representar uma grande faixa de números se comparada a representação de ponto fixo. Representando um número 𝑥 em aritmética de ponto flutuante com 𝑡 dígitos na base 10, temos: 𝒙 = 𝒇𝒙. 𝟏𝟎 𝒆 + 𝒈𝒙. 𝟏𝟎 𝒆−𝒕 , { 𝟎, 𝟏 ≤ 𝒇𝒙 ≤ 𝟏 𝟎 ≤ 𝒈𝒙 ≤ 𝟏 Exemplo de representação: • 𝑥 = 56,98 • 𝑥 = 56,9 + 0,08 • 𝑥 = 0,569. 102 + 0,8. 10−1 Logo: • 𝑓𝑥 = 0,569 • 𝑔𝑥 = 0,8 • 𝑒 = 2 ; 𝑡 = 3 Atenção! 𝑡 é dado do sistema! As máquinas podem representar o número “x” de formas diferentes e, dependendo da forma utilizada, um erro estará associado à essa utilização (afinal, máquina nenhuma consegue exibir infinitas casas decimais). Considere: • X=0,64561829625927905... Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier Se a máquina for representar a partir da quarta casa decimal, isto é, representar como: • X=0,6456... Ela estará fazendo um truncamento, ou seja, um “corte” no número para exibi-lo de forma mais conveniente. No número usado como exemplo, temos: • 𝑥 = 56,98 • 𝑥 = 0,569. 102 + 0,8. 10−1 A parcela “0,8. 10−1”, que corresponde à parte “𝑔𝑥 . 10 𝑒−𝑡” da representação em aritmética de ponto flutuante, em um truncamento, será desprezada. Sendo assim, a máquina exibirá um valor aproximado igual à: 𝑥∗ = 𝑓𝑥. 10 𝑒 Calculando Erros de Truncamento • 𝑥 = 𝑓𝑥. 10 𝑒 + 𝑔𝑥. 10 𝑒−𝑡 • 𝑥∗ = 𝑓𝑥. 10 𝑒 • { 𝐸𝐴𝑥 = |𝑥 − 𝑥 ∗| 𝐸𝑅𝑥 = |𝑥−𝑥∗| |𝑥| • 𝐸𝐴𝑡 = |𝑥 − 𝑥 ∗| = |𝑓𝑥. 10 𝑒 + 𝑔𝑥. 10 𝑒−𝑡 − 𝑓𝑥. 10 𝑒 | = |𝑔𝑥. 10 𝑒−𝑡| = |𝑔𝑥. |10 𝑒−𝑡 • 𝐸𝑅𝑡 = |𝑥−𝑥∗| |𝑥| = 𝐸𝐴𝑡 |𝑓𝑥.10 𝑒+ 𝑔𝑥.10 𝑒−𝑡| = |𝑔𝑥.|10 𝑒−𝑡 |𝑓𝑥.10 𝑒+ 𝑔𝑥.10 𝑒−𝑡| { 𝑬𝑨𝒕 = |𝒈𝒙. |𝟏𝟎 𝒆−𝒕 𝑬𝑹𝒕 = |𝒈𝒙. |𝟏𝟎 𝒆−𝒕 |𝒇𝒙. 𝟏𝟎𝒆 + 𝒈𝒙. 𝟏𝟎𝒆−𝒕| Para o nosso exemplo x=56,98, substituindo os valores, temos: { 𝐸𝐴𝑡 = 0,08 𝐸𝑅𝑡 = ~0,14% Calculando Erros de Truncamento MÁXIMO • 𝐸𝐴𝑡 𝑀𝐴𝑋 = (|𝑔𝑥 . |10 𝑒−𝑡)𝑀𝐴𝑋 = (|𝑔𝑥 . |) 𝑀𝐴𝑋10𝑒−𝑡 = 10𝑒−𝑡 • 𝐸𝑅𝑡 𝑀𝐴𝑋 = (|𝑔𝑥.|10 𝑒−𝑡) 𝑀𝐴𝑋 (|𝑓𝑥.10 𝑒+ 𝑔𝑥.10 𝑒−𝑡|) 𝑀𝐼𝑁 = (|𝑔𝑥.|) 𝑀𝐴𝑋10𝑒−𝑡 (𝑓𝑥) 𝑀𝐼𝑁.10𝑒+ (𝑔𝑥) 𝑀𝐼𝑁.10𝑒−𝑡 = 10𝑒−𝑡 0,1.10𝑒 = 101−𝑡 { 𝑬𝑨𝒕 𝑴𝑨𝑿 = 𝟏𝟎𝒆−𝒕 𝑬𝑹𝒕 𝑴𝑨𝑿 = 𝟏𝟎𝟏−𝒕 Para o nosso exemplo x=56,98, substituindo os valores, temos: { 𝐸𝐴𝑡 𝑀𝐴𝑋 = 0,1 𝐸𝑅𝑡 𝑀𝐴𝑋 = 1% Já caso a máquina deseje arredondar a parcela “0,8. 10−1”, que corresponde à parte “𝑔𝑥. 10 𝑒−𝑡” da representação em aritmética de ponto flutuante, teremos que calcular erro também considerando que a máquina exibirá um valor aproximado de: 𝑥∗ = 𝑓𝑥. 10 𝑒 + { 0, 𝑠𝑒 𝑔𝑥 < 0,5 1. 10𝑒−𝑡 , 𝑠𝑒 𝑔𝑥 ≥ 0,5 Calculando Erros de Arredondamento • 𝑥 = 𝑓𝑥. 10 𝑒 + 𝑔𝑥. 10 𝑒−𝑡 • 𝑥∗ = 𝑓𝑥. 10 𝑒 + { 0, 𝑠𝑒 𝑔𝑥 < 0,5 1. 10𝑒−𝑡 , 𝑠𝑒 𝑔𝑥 ≥ 0,5 Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier • { 𝐸𝐴𝑥 = |𝑥 − 𝑥 ∗| 𝐸𝑅𝑥 = |𝑥−𝑥∗| |𝑥| • 𝐸𝐴𝑎 = |𝑥 − 𝑥 ∗| = |𝑓𝑥. 10 𝑒 + 𝑔𝑥. 10 𝑒−𝑡 − 𝑓𝑥. 10 𝑒 − { 0, 𝑠𝑒 𝑔𝑥 < 0,5 1. 10𝑒−𝑡 , 𝑠𝑒 𝑔𝑥 ≥ 0,5 | = |𝑔𝑥. 10 𝑒−𝑡 − { 0, 𝑠𝑒 𝑔𝑥 < 0,5 1. 10𝑒−𝑡 , 𝑠𝑒 𝑔𝑥 ≥ 0,5 | = { |𝑔𝑥|. 10 𝑒−𝑡 , 𝑠𝑒 𝑔𝑥 < 0,5 |𝑔𝑥 − 1|. 10 𝑒−𝑡 , 𝑠𝑒 𝑔𝑥 ≥ 0,5 • 𝐸𝑅𝑎 = |𝑥−𝑥∗| |𝑥| = 𝐸𝐴𝑡 |𝑓𝑥.10 𝑒+ 𝑔𝑥.10 𝑒−𝑡| = { |𝑔𝑥|.10 𝑒−𝑡 |𝑓𝑥.10 𝑒+ 𝑔𝑥.10 𝑒−𝑡| , 𝑠𝑒 𝑔𝑥 < 0,5 |𝑔𝑥−1|.10 𝑒−𝑡 |𝑓𝑥.10 𝑒+ 𝑔𝑥.10 𝑒−𝑡| , 𝑠𝑒 𝑔𝑥 ≥ 0,5 { 𝑬𝑨𝒂 = { |𝒈𝒙|. 𝟏𝟎 𝒆−𝒕, 𝒔𝒆 𝒈𝒙 < 0,5 |𝒈𝒙 − 𝟏|. 𝟏𝟎 𝒆−𝒕, 𝒔𝒆 𝒈𝒙 ≥ 𝟎, 𝟓 𝑬𝑹𝒂 = { |𝒈𝒙|. 𝟏𝟎 𝒆−𝒕 |𝒇𝒙. 𝟏𝟎𝒆 + 𝒈𝒙. 𝟏𝟎𝒆−𝒕| , 𝒔𝒆 𝒈𝒙 < 0,5 |𝒈𝒙 − 𝟏|. 𝟏𝟎 𝒆−𝒕 |𝒇𝒙. 𝟏𝟎𝒆 + 𝒈𝒙. 𝟏𝟎𝒆−𝒕| , 𝒔𝒆 𝒈𝒙 ≥ 𝟎, 𝟓 Para o nosso exemplo x=56,98, substituindo os valores, temos: { 𝐸𝐴𝑎 = 0,02 𝐸𝑅𝑎 = ~0,035% Calculando Erros de Arredondamento MÁXIMO • 𝐸𝐴𝑎 𝑀𝐴𝑋 = ({ |𝑔𝑥|. 10 𝑒−𝑡 , 𝑠𝑒 𝑔𝑥 < 0,5 |𝑔𝑥 − 1|. 10 𝑒−𝑡 , 𝑠𝑒 𝑔𝑥 ≥ 0,5 ) 𝑀𝐴𝑋 = (|𝑔𝑥|) 𝑀𝐴𝑋 . 10𝑒−𝑡 , 𝑠𝑒 𝑔𝑥 < 0,5 (|𝑔𝑥 − 1|) 𝑀𝐴𝑋 . 10𝑒−𝑡 , 𝑠𝑒 𝑔𝑥 ≥ 0,5 = 0,4999… ∗ 10𝑒−𝑡 , 𝑠𝑒 𝑔𝑥 < 0,5 0,5. 10𝑒−𝑡 , 𝑠𝑒 𝑔𝑥 ≥ 0,5 = 0,5. 10𝑒−𝑡 • 𝐸𝑅𝑡 𝑀𝐴𝑋 = 𝐸𝐴𝑎 𝑀𝐴𝑋 (|𝑓𝑥.10 𝑒+ 𝑔𝑥.10 𝑒−𝑡|) 𝑀𝐼𝑁 = 0,5.10𝑒−𝑡 (𝑓𝑥) 𝑀𝐼𝑁.10𝑒+ (𝑔𝑥) 𝑀𝐼𝑁.10𝑒−𝑡 = 0,5.10𝑒−𝑡 0,1.10𝑒 = 5. 10−𝑡 { 𝑬𝑨𝒕 𝑴𝑨𝑿 = 𝟎, 𝟓. 𝟏𝟎𝒆−𝒕 𝑬𝑹𝒕 𝑴𝑨𝑿 = 𝟓. 𝟏𝟎−𝒕 Para o nosso exemplo x=56,98, substituindo os valores, temos: { 𝐸𝐴𝑡 𝑀𝐴𝑋 = 0,05 𝐸𝑅𝑡 𝑀𝐴𝑋 = 0,5% O cálculo de erros em operações algébricas fundamentais não é muito complexo. Será feito aqui o exemplo para a operação de soma e, como exercício, o leitor pode usar as ideias apresentadas para as outras operações. Considere um número “x” com margem de erro “a” e um número “y” com margem de erro “b”. Então, vamos representar assim: • 𝑥 ± 𝑎 • 𝑦 ± 𝑏 • Onde a,b são erros absolutos máximos O valor máximo que x e y podem ter é • 𝑥 + 𝑎 • 𝑦 + 𝑏 Logo a soma máxima de x e y é: • (x+y) + (a+b) O valor mínimo que x e y podem ter é Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier • 𝑥 − 𝑎 • 𝑦 − 𝑏 Logo a soma máxima de x e y é: • (x+y) - (a+b) Assim a soma aproximada (𝑆∗) tem o seguinte valor: • (𝑥 + 𝑦) − (𝑎 + 𝑏) ≤ 𝑆∗ ≤ (𝑥 + 𝑦) + (𝑎 + 𝑏) O erro absoluto máximo da soma será então: • 𝐸𝐴𝑆 𝑀𝐴𝑋 = (𝑎 + 𝑏) Analogamente, o erro relativo máximo da soma será: • 𝐸𝑅𝑆 𝑀𝐴𝑋 = (𝑎+𝑏) |𝑥+𝑦| DICA! Para os cálculos de produto e divisão, considere e explicite os valores de “p” e “q”, que são os erros numéricos relativos de “x” e “y”respectivamente no cálculo do erro absoluto e relativo máximo de cada uma das operações. 𝑝 = 𝑎 𝑥 ; 𝑞 = 𝑏 𝑦 Cálculo do número de máquina “Em aritmética de ponto flutuante, denomina-se épsilon da máquina o menor número que somado a 1 produza resultado diferente de 1, ou seja, que não é arredondado. O épsilon de máquina representa a exatidão relativa da aritmética do computador, e a sua existência é uma consequência direta da precisão finita da aritmética de ponto flutuante. O valor também é chamado de unidade de arredondamento ou menor número representável, e é simbolizado pela letra grega épsilon ”[Wikipédia] 𝑢 ← 1 | 𝑢 ← 𝑢 2 𝐸𝑛𝑞𝑢𝑎𝑛𝑡𝑜 𝑢 + 1 ≠ 1 𝑢 ← 2𝑢 Legenda: • ← = 𝑎𝑡𝑟𝑖𝑏𝑢𝑖𝑟 • | = 𝑖𝑛𝑡𝑒𝑟𝑎𝑡𝑖𝑣𝑜 Aproximação de funções Dada uma função f(x), podemos aproximá-la de diversas formas. As formas são: Aproximação polinomial 𝑓(𝑥) ≅∑𝑐𝑖𝑥 𝑖 𝑛 𝑖=0 = 𝑐0𝑥 0 + 𝑐1𝑥 1 +⋯ 𝑐𝑛𝑥 𝑛 Série de potências 𝑓(𝑥) ≅ ∑ 𝑓(𝑛)(𝑥𝑜) 𝑛! (𝑥 − 𝑥𝑜) 𝑛 𝐾 𝑛=0 = 𝑓(𝑥𝑜) + 𝑓 ′(𝑥𝑜)(𝑥 − 𝑥𝑜) + 𝑓′′(𝑥𝑜) 2! (𝑥 − 𝑥𝑜) 2 +⋯ 𝑓(𝐾)(𝑥𝑜) 𝐾! (𝑥 − 𝑥𝑜) 𝐾 Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier Frações continuadas 𝑓(𝑥) ≅ 𝑏0(𝑥) + 𝑎1(𝑥) 𝑏1(𝑥) + 𝑎2(𝑥) 𝑏2(𝑥) + 𝑎3(𝑥) 𝑏3(𝑥) + ⋯ Razão de polinômios 𝑓(𝑥) ≅ 𝑃𝑛(𝑥) 𝑄𝑚(𝑥) = ∑ 𝑎𝑖𝑥 𝑖𝑛 𝑖=0 ∑ 𝑏𝑗𝑥𝑗 𝑚 𝑗=0 Série de Fourier 𝑓(𝑥) ≅ 𝑎0 +∑𝑎𝐾 cos(𝑘𝑥) + 𝑏𝐾 sen(𝑘𝑥) 𝑛 𝑘=1 Série de Potências A expressão apresentada para a série de potências se chama Série de Taylor (ou Série de MacLaurin quando 𝑥𝑜 = 0). Ao truncarmos, teremos uma expansão finita da série, e portanto teremos o que chamamos de Potência de Taylor/MacLaurin. Ao truncarmos, temos um “resto” (afinal, a série é infinita). Logo podemos entender a função aproximada como: • 𝑓(𝑥) = 𝑃𝑛(𝑥) + 𝑅𝑛(𝑥) Onde 𝑓(𝑥) é a função que desejamos aproximar, 𝑃𝑛(𝑥) o polinômio de Taylor truncado e 𝑅𝑛(𝑥) o resto ou erro de truncamento da série. Matematicamente temos: • 𝑓(𝑥) = ∑ 𝑓(𝑖)(𝑥𝑜) 𝑖! (𝑥 − 𝑥𝑜) 𝑖𝑛 𝑖=0 + ∑ 𝑓(𝑖)(𝑥𝑜) 𝑖! (𝑥 − 𝑥𝑜) 𝑖∞ 𝑖=𝑛+1 • 𝑃𝑛(𝑥) = ∑ 𝑓(𝑖)(𝑥𝑜) 𝑖! (𝑥 − 𝑥𝑜) 𝑖𝑛 𝑖=0 • 𝑅𝑛(𝑥) = ∑ 𝑓(𝑖)(𝑥𝑜) 𝑖! (𝑥 − 𝑥𝑜) 𝑖∞ 𝑖=𝑛+1 Como iremos truncar, teremos: 𝒇(𝒙) ≅ 𝑷𝒏(𝒙) = ∑ 𝒇(𝒊)(𝒙𝒐) 𝒊! (𝒙 − 𝒙𝒐) 𝒊 𝒏 𝒊=𝟎 E o erro será exatamente o que falta para a aproximação ser a função f(x) inteira • 𝐸𝑟𝑟𝑜 (𝑥) = 𝑅𝑛(𝑥) = 𝑓(𝑥) − 𝑃𝑛(𝑥) = ∑ 𝑓(𝑖)(𝑥𝑜) 𝑖! (𝑥 − 𝑥𝑜) 𝑖∞ 𝑖=𝑛+1 Mas também pode ser visto como: 𝑬𝒓𝒓𝒐 (𝒙) = 𝑹𝒏(𝒙) = 𝒇(𝒏+𝟏)(𝝃(𝒙)) (𝒏 + 𝟏)! (𝒙 − 𝒙𝒐) 𝒏+𝟏, 𝝃(𝒙) ∈ [𝒂, 𝒃] Seja [𝑎, 𝑏] um intervalo onde a aproximação seja muito boa Exemplo: Aproxime f(x) = ln(x) até n=3 em torno de 𝒙𝒐=1 e calcule o erro. • 𝑓0(𝑥𝑜) = 𝑓(1) = 0 • 𝑓1(𝑥𝑜) = 1 𝑥𝑜 = 1 • 𝑓2(𝑥𝑜) = − 1 𝑥𝑜 2 = −1 • 𝑓3(𝑥𝑜) = 2 𝑥𝑜 3 = 2 • 𝑓(𝑥) ≅ ∑ 𝑓(𝑛)(𝑥𝑜) 𝑛! (𝑥 − 𝑥𝑜) 𝑛3 𝑛=0 = 𝑓(𝑥𝑜) + 𝑓 ′(𝑥𝑜)(𝑥 − 𝑥𝑜) + 𝑓′′(𝑥𝑜) 2! (𝑥 − 𝑥𝑜) 2 + 𝑓′′′(𝑥𝑜) 3! (𝑥 − 𝑥𝑜) 3 Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier • 𝑓(𝑥) ≅ 0 + (𝑥 − 1) − 1 2 (𝑥 − 1)2 + 1 3 (𝑥 − 1)3 O polinômio de Taylor encontrado (tracejado) aproxima bem a função ln(x) (negrito) entre os valores de x=a=1/2 e x=b=3/2 Calculando o valor do erro: 𝑅𝑛(𝑥) = 𝑓(𝑛+1)(𝜉(𝑥)) (𝑛 + 1)! (𝑥 − 𝑥𝑜) 𝑛+1 𝑅𝑛(𝑥) = −6. (𝜉(𝑥)) −4 4! (𝑥 − 1)4 = − 1 4 ( 𝑥 − 1 𝜉(𝑥) ) 4 Temos que • 𝑓(𝑛+1)(𝑥) = −6. (𝑥)−4 Assim: • |𝑓(𝑛+1)(𝑥)| = |−6. (𝑥)−4| Tomando o menor e o maior valor de x no intervalo proposto • 32 27 ≤ |𝑓(4)(𝑥)| ≤ 96 • Se |𝑓(4)(𝑥)| ≤ 96, então: • |𝑅𝑛(𝑥)| ≤ 96 4! (𝑥 − 1)4 |𝑅𝑛(𝑥)| ≤ 4(𝑥 − 1) 4 Obtivemos então acima um valor aproximado para o erro. Os erros, graficamente: Comparação entre a expressão “𝑅𝑛(𝑥) = 𝑓(𝑥) − 𝑃𝑛(𝑥)” (em negrito) e a expressão “ 𝑅𝑛(𝑥) = − 1 4 ( 𝑥−1 𝜉(𝑥) ) 4 ” para diferentes valores de 𝜉(𝑥) ∈ [𝑎, 𝑏]. Quanto menor o intervalo a,b, melhor descrita estará a segunda expressão. O valor de “Xi” é dependente do “x” que se tome, mas podemos Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier considerar um valor fixo uma vez que 𝑓(𝑛+1)(𝜉(𝑥)) não é prático de determinar. Conhecendo a maior derivada de ordem “n+1” no intervalo [a,b], não há necessidade de determinar “Xi”. Demonstração da expressão “|𝑅𝑛(𝑥)| ≤ 4(𝑥 − 1) 4” obtida. A curva “s” representa a função “4(𝑥 − 1)4”, enquanto a curva “j” é “|𝑅𝑛(𝑥)| = |𝑓(𝑥) − 𝑃𝑛(𝑥)|” Frações continuadas Frações continuadas são formas de se aproximar funções que convergem mais rapidamente do que séries de Taylor, mas tem a inconveniência de serem de difícil representação. 𝑓(𝑥) ≅ 𝑏0(𝑥) + 𝑎1(𝑥) 𝑏1(𝑥) + 𝑎2(𝑥) 𝑏2(𝑥) + 𝑎3(𝑥) 𝑏3(𝑥) + ⋯ 𝑏𝑖(𝑥) e 𝑎𝑖(𝑥) podem ser encontradas em Manuais de Matemática para diferentes f(x). Vamos aproximar um número qualquer de frações continuadas: 𝑓(𝑥) = 1,544 = 1 + 0,544 = 1 + 1 1 0,544 ≅ 1 + 1 1,838 ≅ 1 + 1 1 + 0,838 ≅ 1 + 1 1 + 1 1 0,838 ≅ 1 + 1 1 + 1 1,193 ≅ 1 + 1 1 + 1 1 + ⋯ Note acima o ponto em que o sinal de igual parou de ser utilizado e passamos a considerar aproximações. Note também o ponto de truncagem. Vamos calcular o seu valor: 𝑓(𝑥) = 1,544 ≅ 1 + 1 1 + 1 1,193 ≅ 1 + 1 1 + 1 1,193 ≅ 1.5440036… Veja como convergiu rapidamente! O erro absoluto é de ~3,65. 10−6! Vejamos agora com funções. Para 𝑓(𝑥) = 𝑒𝑥 temos { 𝑎𝑖(𝑥) = 𝑥. (−1) 𝑖+1 𝑏0 = 1 𝑏𝑖 = 𝑖, 𝑠𝑒 𝑖 é í𝑚𝑝𝑎𝑟 𝑏𝑖 = 2, 𝑠𝑒 𝑖 é 𝑝𝑎𝑟 𝑖 = 0,1,2… , logo 𝑓(𝑥) = 𝑒𝑥 ≅ 1 + 𝑥 1− 𝑥 2+ 𝑥 3− 𝑥 2+⋯ Veja as truncagens: N=1 N=1 𝑓(𝑥) ≅ 1 + 𝑥 1 − 𝑥 N=2 𝑓(𝑥) ≅ 1 + 𝑥 1 − 𝑥 2 + 𝑥 Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier N=3 𝑓(𝑥) ≅ 1 + 𝑥 1 − 𝑥 2 + 𝑥 3 − 𝑥 N=4 𝑓(𝑥) ≅ 1 + 𝑥 1 − 𝑥 2 + 𝑥 3 − 𝑥 2 + 𝑥 N=5 𝑓(𝑥) ≅ 1 + 𝑥 1 − 𝑥 2 + 𝑥 3 − 𝑥 5 − 𝑥 A função mais “gordinha” é o f(x) original, enquanto as pontilhadas são g(x) e h(x), respectivamente aproximações por frações continuadas com N=1 e N=2. A função tracejada é p(x), a aproximação por frações continuadas dentre as 3 mostradas que mais se assemelha à f(x) original (N=5). Razões de Polinômios O uso de polinômios traz como desvantagem o fato deles oscilarem. As razões de polinômios reduzem essa oscilação e tornam a aproximação melhor. Veja abaixo o exemplo: • 𝑓(𝑥) ≅ 𝑃𝑛(𝑥) 𝑄𝑚(𝑥) = ∑ 𝑎𝑖𝑥 𝑖𝑛 𝑖=0 ∑ 𝑏𝑗𝑥 𝑗𝑚 𝑗=0 • 𝑓(𝑥) = 𝑒𝑥 = 𝑒 𝑥 2 𝑒 − 𝑥 2 = 𝑔(𝑥) ℎ(𝑥) Realizar a expansão finita da série de MacLaurin para as funções { 𝑔(𝑥) = 𝑒 𝑥 2 ℎ(𝑥) = 𝑒− 𝑥 2 até um ponto de truncamento desejado. Os truncamentos podem ser iguais no numerador e no numerador ou podem não ser. Vamos considerar n=m=2: Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier 𝑓(𝑥) = 𝑔(𝑥) ℎ(𝑥) ≅ ∑ 𝑎𝑖𝑥 𝑖2 𝑖=0 ∑ 𝑏𝑗𝑥𝑗 2 𝑗=0 𝑓(𝑥) ≅ 1 + 𝑥 2 + 𝑥2 8 1− 𝑥 2 + 𝑥2 8 A aproximação feita não é muito criteriosa (mas veja no gráfico abaixo que ela é boa o suficiente para determinados intervalos [a,b]). Para uma aproximação mais criteriosa, usaremos a aproximação de Padé. A aproximação de Padé usa como critério o fato de que, sendo: • 𝑓(𝑥) = ∑ 𝑐𝑖𝑥 𝑖∞ 𝑖=0 e 𝑟(𝑥) = ∑ 𝑎𝑖𝑥 𝑖𝑛 𝑖=0 ∑ 𝑏𝑗𝑥 𝑗𝑚 𝑗=0 • 𝑁 = 𝑛 +𝑚 Então deve ser satisfeito: • 𝑓(𝐾)(𝑥𝑜) = 𝑟 (𝐾)(𝑥𝑜) • 𝐾 = 0,1,2,3…𝑁 • Convenientemente 𝑥𝑜 = 0 Sendo assim, a função erro(x) deve ter 0 como raiz de multiplicidade N+1 em x=0, onde N=m+n. Calculamos: 𝑓(𝑥) − 𝑟(𝑥) = 𝑒𝑟𝑟𝑜(𝑥) = ∑𝑐𝑖𝑥 𝑖 ∞ 𝑖=0 − ∑ 𝑎𝑖𝑥 𝑖𝑛 𝑖=0 ∑ 𝑏𝑗𝑥𝑗 𝑚 𝑗=0 = 0 ∑𝑐𝑖𝑥 𝑖 ∞ 𝑖=0 − ∑ 𝑎𝑖𝑥 𝑖𝑛 𝑖=0 ∑ 𝑏𝑗𝑥𝑗 𝑚 𝑗=0 = 0 , 𝑒𝑛𝑡ã𝑜 [∑𝑐𝑖𝑥 𝑖 ∞ 𝑖=0 ] . [∑𝑏𝑗𝑥 𝑗 𝑚 𝑗=0 ] −∑𝑎𝑖𝑥 𝑖 𝑛 𝑖=0 = 0 [𝑐0𝑥 0 + 𝑐1𝑥 1 + 𝑐2𝑥 2 +⋯ ]. [𝑏0𝑥 0 + 𝑏1𝑥 1 +⋯𝑏𝑚𝑥 𝑚] − [𝑎0𝑥 0 + 𝑎1𝑥 1 +⋯𝑎𝑛𝑥 𝑛] = 0 [𝑐0𝑏0 − 𝑎0]𝑥 0 + [𝑐0𝑏1 + 𝑐1𝑏0 − 𝑎1]𝑥 1 + [𝑐0𝑏2 + 𝑐1𝑏1 + 𝑐2𝑏0 − 𝑎2]𝑥 2 +⋯[… ]𝑥𝑁 = 0 Como 𝑥0, 𝑥1, … 𝑥𝑁 ≠ 0 , Então ... { 𝑐0𝑏0 − 𝑎0 = 0 𝑐0𝑏1 + 𝑐1𝑏0 − 𝑎1 = 0 𝑐0𝑏2 + 𝑐1𝑏1 + 𝑐2𝑏0 − 𝑎2 = 0 ⋮ ∑ 𝑐𝑖𝑏𝐾−𝑖 𝐾 𝑖=0 = 𝑎𝐾 , 𝐾 = 0,1,2 …𝑁 Por fim ∑ 𝒄𝒊𝒃𝑲−𝒊 𝑲 𝒊=𝟎 = 𝒂𝑲 , 𝑲 = 𝟎, 𝟏, 𝟐…𝑵 ATENÇÃO! Os coeficientes C vem da expansão em série de Taylor, logo são dados do problema e não precisam ser determinadas ATENÇÃO²! Usando a fórmula do somatório em vermelho acima, alguns termos (tanto a quando b) podem ser nulos (porque se truncarmos até n=2, não teremos 𝒂𝟑, por exemplo). Atente-se à isso. Vamos considerar (n=m=2 ; N=4) novamente mas usando os critérios da aproximação de Padé. É conveniente e não está errado matematicamente considerar 𝑏0 = 1. Muitas questões virão no seguinte formato e você deverá identificar os coeficientes desconhecidos: 𝑓(𝑥) = 𝑒𝑥 = 1 + 𝑥 + 𝑥2 2 + 𝑥3 6 + 𝑥4 24 + ⋯ 𝑓(𝑥) ≅ 𝑎0 + 𝑎1𝑥 + 𝑎2𝑥 2 𝑏0 + 𝑏1𝑥 + 𝑏2𝑥2 ≅ 𝑎0 + 𝑎1𝑥 + 𝑎2𝑥 2 1 + 𝑏1𝑥 + 𝑏2𝑥2 Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier K=0 ∑ 𝑐𝑖𝑏−𝑖 0 𝑖=0 = 𝑎0 𝑐0𝑏0 = 𝑎0 1.1=𝑎0 𝑎0 = 1 K=1 ∑ 𝑐𝑖𝑏1−𝑖 1 𝑖=0 = 𝑎1 𝑐0𝑏1 + 𝑐1𝑏0 = 𝑎1 1. 𝑏1 + 1.1 = 𝑎1 𝑎1 − 𝑏1 = 1 K=2 ∑ 𝑐𝑖𝑏2−𝑖 2 𝑖=0 = 𝑎2 𝑐0𝑏2 + 𝑐1𝑏1 + 𝑐2𝑏0 = 𝑎2 𝑏2 + 𝑏1 + 1 2 = 𝑎2 K=3 ∑ 𝑐𝑖𝑏3−𝑖 3 𝑖=0 = 𝑎3 𝑐0𝑏3 + 𝑐1𝑏2 + 𝑐2𝑏1 + 𝑐3𝑏0 = 𝑎3 𝑐1𝑏2 + 𝑐2𝑏1 + 𝑐3𝑏0 = 0 𝑐 K=4 ∑ 𝑐𝑖𝑏4−𝑖 4 𝑖=0 = 𝑎4 𝑐0𝑏4 + 𝑐1𝑏3 + 𝑐2𝑏2 + 𝑐3𝑏1 + 𝑐4𝑏0 = 𝑎4 𝑐2𝑏2 + 𝑐3𝑏1 + 𝑐4𝑏0 = 0 𝑏2 2 + 𝑏1 6 + 1 24 = 0 Finalizamos com um sistema contendo N+1 equações: { 𝑎0 = 1 𝑎1 − 𝑏1 = 1 𝑏2 + 𝑏1 + 1 2 = 𝑎2 𝑏2 + 𝑏1 + 1 2 = 𝑎2 𝑏2 2 + 𝑏1 6 + 1 24 = 0 Resolvendo esse sistema, obtém-se: { 𝑎0 = 1 𝑎1 = 1 2 𝑎2 = 1 12 𝑏0 = 1 𝑏1 = − 1 2 𝑏2 = 1 12 E, por fim: 𝑓(𝑥) ≅ 𝑎0 + 𝑎1𝑥 + 𝑎2𝑥 2 1 + 𝑏1𝑥 + 𝑏2𝑥2 ≅ 1 + 𝑥 2 + 𝑥2 12 1 − 𝑥 2 + 𝑥2 12 ≅ 12 + 6𝑥 + 𝑥2 12 − 6𝑥 + 𝑥2 Veja no gráfico abaixo que essa nova aproximação é mais precisa que a anterior, ou seja, em um intervalo maior de [a,b] a função real e sua aproximação possuem pouca diferença. ATENÇÃO! Por vezes os exercícios irão requerer troca de variável. Para simplificar a vida, uma dica é substituir por uma variável “u” sempre que a expansão da série de Taylor dada não for centrada em 0. Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier Série de Fourier Antes de introduzir série de Fourier vamos falar sobre ortogonalidade. Seja 𝑦1(𝑥), 𝑦2(𝑥), … funções definidas em [a,b], elas formam um conjunto ortogonal de funções nesse intervalo em relação à uma função peso 𝑤(𝑥) > 0 em [a,b] se: ∫ 𝒘(𝒙) 𝒃 𝒂 . 𝒚𝒎(𝒙). 𝒚𝒑(𝒙)𝒅𝒙 = 𝟎 , ∀𝒎 ≠ 𝒑 𝑆𝑒 𝑚 = 𝑝 = 𝑛 → ∫ 𝑤(𝑥) 𝑏 𝑎 . 𝑦𝑛(𝑥). 𝑦𝑛(𝑥)𝑑𝑥 = ‖𝑦𝑛(𝑥)‖ 2 , onde ‖𝑦𝑛(𝑥)‖ é a norme de 𝑦𝑛(𝑥). Uma função qualquer pode ser representada como uma série convergente de funções ortogonais. 𝒇(𝒙) = ∑𝒂𝒊𝒚𝒊(𝒙) ∞ 𝒊=𝟎 Chamamos a expressão acima de série generalizada de Fourier. Multiplicando os dois lados por 𝑤(𝑥). 𝑦𝑗(𝑥), temos: 𝑓(𝑥). 𝑤(𝑥). 𝑦𝑗(𝑥) = ∑𝑎𝑖𝑦𝑖(𝑥) ∞ 𝑖=0 . 𝑤(𝑥). 𝑦𝑗(𝑥) Integrando dos dois lados (∫ 𝑑𝑥 𝑏 𝑎 ), temos ∫ 𝑓(𝑥). 𝑤(𝑥). 𝑦𝑗(𝑥)𝑑𝑥 𝑏 𝑎 = ∫ ∑ 𝑎𝑖𝑦𝑖(𝑥) ∞ 𝑖=0 . 𝑤(𝑥). 𝑦𝑗(𝑥) 𝑑𝑥 𝑏 𝑎 ∫ 𝑓(𝑥). 𝑤(𝑥). 𝑦𝑗(𝑥)𝑑𝑥 𝑏 𝑎 = ∑ 𝑎𝑖 ∞ 𝑖=0 ∫ 𝑤(𝑥). 𝑦𝑖(𝑥). 𝑦𝑗(𝑥) 𝑑𝑥 𝑏 𝑎 A integral à direita é igual à 0 para todo “i” diferente de “j”. Logo o somatório some e sobra somente o termo “i” quando igual à “j” Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier ∫ 𝒘(𝒙). 𝒇(𝒙). 𝒚𝒋(𝒙)𝒅𝒙 𝒃 𝒂 = 𝒂𝒋‖𝒚𝒋(𝒙)‖ 𝟐 Da série de Fourier, determinar os termos acima são fáceis. Da série de Fourier temos: { 𝒚𝒋(𝒙) → {𝟏, 𝒔𝒆𝒏(𝒙), 𝐜𝐨𝐬(𝒙) , 𝒔𝒆𝒏(𝟐𝒙), 𝐜𝐨𝐬(𝟐𝒙), … } [𝒂, 𝒃] = [−𝝅,𝝅] 𝒘(𝒙) = 𝟏 A expressão final da série de Fourier fica então determinada como: 𝒇(𝒙) = 𝒂𝒐 + ∑[𝒂𝒑𝒄𝒐𝒔(𝒑𝒙) + 𝒃𝒑𝒔𝒆𝒏 (𝒑𝒙)] ∞ 𝒑=𝟏 𝒂𝒐 = 𝟏 𝟐𝝅 ∫ 𝒇(𝒙)𝒅𝒙 𝝅 −𝝅 𝒂𝒑 = 𝟏 𝝅 ∫ 𝒇(𝒙)𝒄𝒐𝒔(𝒑𝒙)𝒅𝒙 𝝅 −𝝅 𝒃𝒑 = 𝟏 𝝅 ∫ 𝒇(𝒙)𝒔𝒆𝒏(𝒑𝒙)𝒅𝒙 𝝅 −𝝅 Note no entanto que: A função g(x)=sin(x) é ímpar e a função g(x)=cos(x) é par. Logo, temos: 𝑆𝑒 𝑓(𝑥) é 𝑝𝑎𝑟 → { 𝑓(𝑥)𝑐𝑜𝑠(𝑝𝑥) é 𝑝𝑎𝑟 → 1 𝜋 ∫ 𝑓(𝑥)𝑐𝑜𝑠(𝑝𝑥)𝑑𝑥 𝜋 −𝜋 = 2 𝜋 ∫ 𝑓(𝑥)𝑑𝑥 𝜋 0 𝑓(𝑥)𝑠𝑒𝑛(𝑝𝑥) é í𝑚𝑝𝑎𝑟 → 1 𝜋 ∫ 𝑓(𝑥)𝑠𝑒𝑛(𝑝𝑥)𝑑𝑥 𝜋 −𝜋 = 0 𝑆𝑒 𝑓(𝑥) é í𝑚𝑝𝑎𝑟 → { 𝑓(𝑥)𝑐𝑜𝑠(𝑝𝑥) é í𝑚𝑝𝑎𝑟 → 1 𝜋 ∫ 𝑓(𝑥)𝑐𝑜𝑠(𝑝𝑥)𝑑𝑥 𝜋 −𝜋 = 0 𝑓(𝑥)𝑠𝑒𝑛(𝑝𝑥) é 𝑝𝑎𝑟 → 1 𝜋 ∫ 𝑓(𝑥)𝑠𝑒𝑛(𝑝𝑥)𝑑𝑥 𝜋 −𝜋 = 2 𝜋 ∫ 𝑓(𝑥)𝑑𝑥 𝜋 0 Exemplo: 𝑓(𝑥) = { −1, −𝜋 < 𝑥 < 0 1, 0 < 𝑥 < 𝜋 𝑓(𝑥 + 2𝜋) , expansão até o Quinto termo da série de Fourier Calculando os termos temos: O termo 𝒂𝟎 • 𝑎𝑜 = 1 2𝜋 ∫ 𝑓(𝑥)𝑑𝑥 𝜋 −𝜋 • 𝑎𝑜 = 1 2𝜋 [∫ −1𝑑𝑥 0 −𝜋 + ∫ 1𝑑𝑥 𝜋 0 ] Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier • 𝑎𝑜 = 1 2𝜋 [−𝑥|−𝜋 0 + 𝑥|0 𝜋] = 1 2𝜋 [−𝜋 + 𝜋] = 0 • A série de Fourier fica: • 𝑓(𝑥) = 𝑎𝑜 + ∑ [𝑎𝑝𝑐𝑜𝑠(𝑝𝑥) + 𝑏𝑝𝑠𝑒𝑛 (𝑝𝑥)] ∞ 𝑝=1 • 𝑓(𝑥) = ∑ [𝑎𝑝𝑐𝑜𝑠(𝑝𝑥) + 𝑏𝑝𝑠𝑒𝑛 (𝑝𝑥)] ∞ 𝑝=1 O termo 𝒂𝒑 • 𝑎𝑝 = 1 𝜋 ∫ 𝑓(𝑥)𝑐𝑜𝑠(𝑝𝑥)𝑑𝑥 𝜋 −𝜋 • Como f(x) é ímpar, 𝑓(𝑥)𝑐𝑜𝑠(𝑝𝑥) é ímpar e logo 𝑎𝑝 = 0 • A série de Fourier fica: • 𝑓(𝑥) = ∑ [𝑎𝑝𝑐𝑜𝑠(𝑝𝑥) + 𝑏𝑝𝑠𝑒𝑛 (𝑝𝑥)] ∞ 𝑝=1 • 𝑓(𝑥) = ∑ 𝑏𝑝𝑠𝑒𝑛 (𝑝𝑥) ∞ 𝑝=1 O termo 𝒃𝒑 • 𝑏𝑝 = 1 𝜋 ∫ 𝑓(𝑥)𝑠𝑒𝑛(𝑝𝑥)𝑑𝑥 𝜋 −𝜋 • Como f(x) é ímpar, 𝑓(𝑥)𝑠𝑒𝑛(𝑝𝑥) é par e logo • 𝑏𝑝 = 2 𝜋 ∫ 𝑓(𝑥)𝑠𝑒𝑛(𝑝𝑥)𝑑𝑥 𝜋 0 • 𝑏𝑝 = 2 𝜋 ∫ 𝑠𝑒𝑛(𝑝𝑥)𝑑𝑥 𝜋 0 • 𝑏𝑝 = 2 𝜋 ∙ (− 𝑐𝑜𝑠 (𝑝𝑥) 𝑝 )| 𝑥=0 𝑥=𝜋 • 𝑏𝑝 = 2 𝜋 [− 𝑐𝑜𝑠 (𝑝𝜋) 𝑝 + 𝑐𝑜𝑠 (0) 𝑝 ] • 𝑏𝑝 = 2 𝜋𝑝 [−𝑐𝑜𝑠 (𝑝𝜋) + 1] A série de Fourier fica, finalmente, como: • 𝑓(𝑥) = ∑ 𝑏𝑝𝑠𝑒𝑛 (𝑝𝑥) ∞ 𝑝=1• 𝑓(𝑥) = 2 𝜋 ∑ [−𝑐𝑜𝑠 (𝑝𝜋)+1].𝑠𝑒𝑛 (𝑝𝑥) 𝑝 ∞ 𝑝=1 • Perceba que para p=par, [−𝑐𝑜𝑠 (𝑝𝜋) + 1] = [−1 + 1] = 0 • Perceba que para p=ímpar, [−𝑐𝑜𝑠 (𝑝𝜋) + 1] = [1 + 1] = 2 Logo, reescrevemos a série de Fourier para: 𝒇(𝒙) = 𝟒 𝝅 ∑ 𝒔𝒆𝒏 (𝒑𝒙) 𝒑 ∞ 𝒑=𝟏 ; ∀𝒑 í𝒎𝒑𝒂𝒓 O gráfico acima mostra, em preto, a função f(x), em cinza, sua expansão até p=1 e em marrom, para p=5. Perceba que, quanto maior o “p”, mais próxima a aproximação está da função real. • 𝑓(𝑥) = 4 𝜋 𝑠𝑒𝑛 (𝑥) ; 𝑒𝑥𝑝𝑎𝑛𝑠ã𝑜 𝑎𝑡é 𝑝 = 1 Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier • 𝑓(𝑥) = 4 𝜋 (𝑠𝑒𝑛 (𝑥) + 𝑠𝑒𝑛 (3𝑥) 3 + 𝑠𝑒𝑛 (5𝑥) 5 ) ; 𝑒𝑥𝑝𝑎𝑛𝑠ã𝑜 𝑎𝑡é 𝑝 = 5 Interpolação Polinomial Como o polinômio de Taylor, descrito no capítulo anterior, concentra a sua precisão próxima ao ponto x0, ele não é adequado para a maioria das aplicações práticas onde, geralmente, se deseja uma boa aproximação em todo o intervalo de definição da função f(x). Contudo, o polinômio de Taylor é de grande utilidade na análise numérica para estimativas de erros de técnicas numéricas. Portanto, neste capítulo são abordados polinômios que utilizam dados em vários pontos do intervalo, chamados de polinômios interpoladores. A interpolação polinomial usará novos critérios para obter uma melhor aproximação que o Polinômio de Taylor. Chamamos de pontos nodais o conjunto de pontos {𝑥1, 𝑥2…𝑥𝑛 } que nos fornecerá informações para a interpolação polinomial, de forma que: 𝑓(𝑥𝑖) = 𝑃𝑛(𝑥𝑖), ∀𝑖 = 1,2…𝑛 Existe mais de uma forma de realizar a interpolação polinomial. Por isso é importante usarmos os pontos nodais como critério. Vamos expressar o polinômio interpolador da seguinte forma: 𝑃𝑛(𝑥) = ∑𝑐𝑖𝑥 𝑖 𝑛 𝑖=0 Dessa forma, temos n+1 coeficientes para determinar. O grau do polinômio interpolador deve sempre ser menor ou igual ao número “n” de pontos nodais. Se 𝑓(𝑥𝑖) = 𝑃𝑛(𝑥𝑖), ∀𝑖 = 1,2…𝑛, então podemos expressar a função f(x) para 𝑥 = 𝑥𝑖 como sua expansão: { 𝑓(𝑥0) = 𝑐𝑜 + 𝑐1𝑥0 + 𝑐2𝑥0 2 +⋯𝑐𝑛𝑥0 𝑛 𝑓(𝑥1) = 𝑐𝑜 + 𝑐1𝑥1 + 𝑐2𝑥1 2 +⋯𝑐𝑛𝑥1 𝑛 𝑓(𝑥2) = 𝑐𝑜 + 𝑐1𝑥2 + 𝑐2𝑥2 2 +⋯𝑐𝑛𝑥2 𝑛 ⋮ 𝑓(𝑥𝑛) = 𝑐𝑜 + 𝑐1𝑥𝑛 + 𝑐2𝑥𝑛 2 +⋯𝑐𝑛𝑥𝑛 𝑛 Podemos reescrever esse sistema de equações da forma matricial: [ 1 1 1 ⋮ 1 𝑥0 𝑥1 𝑥2 ⋮ 𝑥𝑛 𝑥0 2 𝑥1 2 𝑥2 2 ⋮ 𝑥𝑛 2 …… … ⋱… 𝑥0 𝑛 𝑥1 𝑛 𝑥2 𝑛 ⋮ 𝑥𝑛 𝑛 ] [ 𝑐𝑜 𝑐1 𝑐2 ⋮ 𝑐𝑛] = [ 𝑓(𝑥0) 𝑓(𝑥1) 𝑓(𝑥2) ⋮ 𝑓(𝑥𝑛)] 𝑉𝑐 = 𝑓 → 𝑐 = 𝑉−1𝑓 Onde V é a matriz de Vandermonde, uma matriz inversível. Determinar os coeficientes do polinômio interpolador agora é “fácil”. A matriz “f” é conhecida, e a matriz das variáveis pode ser facilmente invertida. Veja um exemplo de como inverter uma matriz: Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier O problema desta técnica de determinação dos coeficientes é a sua tendência de propagar os erros de arredondamento à medida que os pontos nodais se aproximam uns dos outros, pois o determinante de Vandermonde tende a zero nestas situações, gerando um sistema de equações mal condicionado. Veja no exemplo acima como os pontos, muito próximos, forneceram um polinômio com uma grande margem de erro a partir de x=0,5. É importante notar, no entanto, que no caso da aproximação boa, ela é boa somente nas proximidades dos pontos nodais e o intervalo no qual eles estão (no caso, [0,1 ; 0,9]). O polinômio pode ter uma aparência muito diferente do exato para x>1. Pegar menos pontos e igualmente espaçados, nesse caso, nos deu uma melhor aproximação. Uma outra forma de escrever o polinômio interpolador é: Essa forma possui muito menos operações de multiplicação que a anterior. Tabela de diferenças de Newton Um método de interpolação muito mais comum que a da Matriz de Vandermonde. Partiremos da definição de derivada: 𝑑𝑓(𝑥) 𝑑𝑥 | 𝑥=𝑥𝑜 = 𝑓′(𝑥𝑜) = lim 𝑛→∞ 𝑓(𝑥) − 𝑓(𝑥𝑜) 𝑥 − 𝑥𝑜 Podemos fazer a seguinte aproximação: 𝑓(𝑥) − 𝑓(𝑥𝑜) 𝑥 − 𝑥𝑜 ≡ 𝑓[𝑥, 𝑥𝑜] Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier Onde 𝑓[𝑥, 𝑥𝑜] é chamada de primeira diferença dividida ou diferença dividida de ordem 1 com relação a 𝑥 𝑒 𝑥𝑜. Vamos pensar no polinômio interpolador como sendo da seguinte forma: 𝑷𝒏(𝒙) = 𝒂𝟎 + 𝒂𝟏(𝒙 − 𝒙𝟎) + 𝒂𝟐(𝒙 − 𝒙𝟎)(𝒙 − 𝒙𝟏) + ⋯ 𝒂𝒏(𝒙 − 𝒙𝟎)… (𝒙 − 𝒙𝒏−𝟏) E temos dois pontos nodais {𝑥0, 𝑥1}. Sendo assim n=1 e truncamos a expressão acima em: 𝑃1(𝑥) = 𝑎0 + 𝑎1(𝑥 − 𝑥0) Como 𝑓(𝑥𝑖) = 𝑃𝑛(𝑥𝑖), ∀𝑖 = 0,1,2…𝑛, temos: • 𝑃1(𝑥0) = 𝑓(𝑥0) = 𝑎0 + 𝑎1(𝑥0 − 𝑥0) = 𝑎0 • 𝑃1(𝑥1) = 𝑓(𝑥1) = 𝑓(𝑥0) + 𝑎1(𝑥1 − 𝑥0) → 𝑎1 = 𝑓(𝑥1)− 𝑓(𝑥0) 𝑥1−𝑥0 ≡ 𝑓[𝑥1, 𝑥0] Reescrevemos 𝑃1(𝑥) como: 𝑃1(𝑥) = 𝑓(𝑥0) + 𝑓[𝑥1, 𝑥0](𝑥 − 𝑥0) Agora, vamos calcular o resíduo ou erro da aproximação: 𝑃1(𝑥) + 𝑅1(𝑥) = 𝑓(𝑥) → 𝑅1(𝑥) = 𝑓(𝑥) − 𝑃1(𝑥) Como nos pontos nodais 𝑓(𝑥𝑖) = 𝑃𝑛(𝑥𝑖), temos então, para o exemplo acima, que: • 𝑅1(𝑥0) = 0 • 𝑅1(𝑥1) = 0 Uma forma de escrevermos 𝑅1(𝑥) a fim de expressar isso, é: 𝑅1(𝑥) = 𝑔(𝑥)(𝑥 − 𝑥0)(𝑥 − 𝑥1) Sendo assim, sabendo que 𝑅1(𝑥) = 𝑓(𝑥) − 𝑃1(𝑥), temos: • 𝑅1(𝑥) = 𝑓(𝑥) − 𝑃1(𝑥) = 𝑓(𝑥) − 𝑓(𝑥0) − 𝑓[𝑥1, 𝑥0](𝑥 − 𝑥0) • 𝑅1(𝑥) = 𝑓(𝑥) − 𝑓(𝑥0) − 𝑓[𝑥1, 𝑥0](𝑥 − 𝑥0) • 𝑅1(𝑥) = [𝑓(𝑥) − 𝑓(𝑥0)] [ 𝑥−𝑥0 𝑥−𝑥0 ] − 𝑓[𝑥1, 𝑥0](𝑥 − 𝑥0) • 𝑅1(𝑥) = [ 𝑓(𝑥)−𝑓(𝑥0) 𝑥−𝑥0 ] (𝑥 − 𝑥0) − 𝑓[𝑥1, 𝑥0](𝑥 − 𝑥0) • 𝑅1(𝑥) = 𝑓[𝑥, 𝑥0](𝑥 − 𝑥0) − 𝑓[𝑥1, 𝑥0](𝑥 − 𝑥0) • 𝑅1(𝑥) = [𝑓[𝑥, 𝑥0] − 𝑓[𝑥1, 𝑥0]](𝑥 − 𝑥0) • 𝑅1(𝑥) = [𝑓[𝑥, 𝑥0] − 𝑓[𝑥1, 𝑥0]](𝑥 − 𝑥0) ∗ [ 𝑥−𝑥1 𝑥−𝑥1 ] • 𝑅1(𝑥) = [ 𝑓[𝑥,𝑥0]− 𝑓[𝑥1,𝑥0] 𝑥−𝑥1 ] (𝑥 − 𝑥0)(𝑥 − 𝑥1) = 𝑔(𝑥)(𝑥 − 𝑥0)(𝑥 − 𝑥1) Concluímos que: 𝑔(𝑥) = [ 𝑓[𝑥, 𝑥0] − 𝑓[𝑥1, 𝑥0] 𝑥 − 𝑥1 ] = 𝑓[𝑥, 𝑥1, 𝑥0] Mas não temos uma expressão genérica para “n” pontos nodais. Considere a seguinte função auxiliar: • 𝑄(𝑡) = 𝑓(𝑡) − 𝑃1(𝑡) − 𝑔(𝑥)(𝑡 − 𝑥0)(𝑡 − 𝑥1) • 𝑄(𝑡) tem pelo menos 3 raízes, quando: • { 𝑡 = 𝑥 𝑡 = 𝑥0 𝑡 = 𝑥1 Isso porque 𝑄(𝑡) é uma subtração entre duas formas diferentes de escrever 𝑅1(𝑥) ou 𝑅1(𝑡), que é naturalmente 0 quando t=x e nos pontos nodais a aproximação pelo polinômio é exata, tornando o resíduo nulo. Se derivarmos a função auxiliar 2 vezes, temos: • 𝑄(𝑡) = 𝑓(𝑡) − 𝑃1(𝑡) − 𝑔(𝑥)(𝑡² − 𝑡𝑥1 − 𝑡𝑥0 + 𝑥1𝑥0) Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier • 𝑄′(𝑡) = 𝑓′(𝑡) − 𝑃1 ′(𝑡) − 𝑔(𝑥)(2𝑡 − 𝑥1 − 𝑥0) • 𝑄′′(𝑡) = 𝑓′′(𝑡) − 𝑃1 ′′(𝑡) − 2𝑔(𝑥) Como 𝑃1(𝑡) é um polinômio de grau 1, derivar duas vezes ele resulta em 0, logo: • 𝑄′′(𝑡) = 𝑓′′(𝑡) − 2𝑔(𝑥) Como 𝑄(𝑡) tinha, pelo menos, 3 raízes, sua segunda derivada terá pelo menos uma raiz. Essa raiz acontecerá em t=ξ • 𝑄′′(ξ) = 𝑓′′(ξ) − 2𝑔(x) = 0 • 𝑔(𝑥) = 𝑓′′(ξ(𝑥)) 2 = 𝑓[𝑥, 𝑥1, 𝑥0] ; ξ ∈ [𝑥, 𝑥0] A fórmula acima decorre do teorema do valor médio. Para um polinômio de grau n, teremos: 𝑹𝒏(𝒙) = 𝒇(𝒏+𝟏)(𝛏(𝒙)) (𝒏 + 𝟏)! ∙∏ (𝒙 − 𝒙𝒊) 𝒏 𝒊=𝟎 = 𝒇[𝒙, 𝒙𝒏, 𝒙𝒏−𝟏, … 𝒙𝟎] ∙∏ (𝒙 − 𝒙𝒊) 𝒏 𝒊=𝟎 Podemos aproximar um valor do resíduo para: { 𝑹𝒏(𝒙) = 𝒇[𝒙, 𝒙𝒏, 𝒙𝒏−𝟏, … 𝒙𝟎] ∙∏ (𝒙 − 𝒙𝒊) 𝒏 𝒊=𝟎 𝑹𝒏(𝒙) ≅ 𝒇[𝒙𝒏+𝟏, 𝒙𝒏, 𝒙𝒏−𝟏, … 𝒙𝟎] ∙∏(𝒙 − 𝒙𝒊) 𝒏 𝒊=𝟎 Finalmente, reescrevemos o polinômio interpolador como: 𝑷𝒏(𝒙) = 𝒇[𝒙𝟎] + 𝒇[𝒙𝟎, 𝒙𝟏](𝒙 − 𝒙𝟎) + ⋯ 𝒇[𝒙𝟎, … 𝒙𝒏](𝒙 − 𝒙𝟎) … (𝒙 − 𝒙𝒏−𝟏) Uma propriedade importante das diferenças é que a posição dos pontos nodais no colchete não altera o seu valor. A tabela de Newton entra agora, como uma forma de calcular mais facilmente essas diferenças Ponto nodal Valor do Ponto (𝑥𝑖) 𝑓(𝑥𝑖) ∆1 ∆2 ∆3 𝑥0 0 -5 𝑥1 1 1 𝑥2 3 25 𝑥3 4 55 Sendo ∆1= 𝑓(𝑥𝑖) − 𝑓(𝑥𝑗) 𝑥𝑖 − 𝑥𝑗 = 𝑓[𝑥𝑖 , 𝑥𝑗], ∀𝑖 ≠ 𝑗 Temos: ➢ 𝑖 ≠ 𝑗 = {0,1} ∗ ➢ 𝑓[𝑥0, 𝑥1] = −5−1 0−1 = 6 • 𝑖 ≠ 𝑗 = {1,2} ∗ • 𝑓[𝑥2, 𝑥1] = 25−1 3−1 = 12 o 𝑖 ≠ 𝑗 = {2,3} ∗ o 𝑓[𝑥2, 𝑥3] = 55−25 4−3 = 30 ∗ 𝑑𝑒𝑐𝑜𝑟𝑟𝑒𝑛𝑡𝑒 𝑑𝑎 𝑝𝑟𝑜𝑝𝑟𝑖𝑒𝑑𝑎𝑑𝑒, 𝑛ã𝑜 𝑖𝑚𝑝𝑜𝑟𝑡𝑎 𝑞𝑢𝑒𝑚 é "i" ou "j" dentre os valores em {} A tabela acima foi construída de forma a dar espaços para adicionarmos os números calculados. Veja: Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier Ponto nodal Valor do Ponto (𝑥𝑖) 𝑓(𝑥𝑖) ∆1 ∆2 ∆3 𝑥0 0 -5 6 𝑥1 1 1 12 𝑥2 3 25 30 𝑥3 4 55 Sendo ∆2= 𝑓[𝑥𝑖 , 𝑥𝑗] − 𝑓[𝑥𝑘 , 𝑥𝑗] 𝑥𝑖 − 𝑥𝑗 = 𝑓[𝑥𝑖 , 𝑥𝑗 , 𝑥𝑘], ∀𝑖 ≠ 𝑗 ≠ 𝑘 Temos: • • o o Sendo , temos: Como regra geral, temos: Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier Agora, falta construir o polinômio. Para isso, considere: • 𝑃𝑛(𝑥) = 𝑓[𝑥0] + 𝑓[𝑥0,𝑥1](𝑥 − 𝑥0) + 𝑓[𝑥0,𝑥1,𝑥2](𝑥 − 𝑥0)(𝑥 − 𝑥1) + 𝑓[𝑥0, 𝑥1,𝑥2,𝑥3](𝑥 − 𝑥0)(𝑥 − 𝑥1)(𝑥 − 𝑥2) • 𝑃𝑛(𝑥) = −𝟓 + 𝟔(𝑥 − 0) + 𝟐(𝑥 − 0)(𝑥 − 1) + 𝟏(𝑥 − 0)(𝑥 − 1)(𝑥 − 3) • 𝑃𝑛(𝑥) = −5 + 6𝑥 + 2𝑥(𝑥 − 1) + 𝑥(𝑥 − 1)(𝑥 − 3) • 𝑃𝑛(𝑥) = −5 + 6𝑥 + 2𝑥2 − 2𝑥 + 𝑥(𝑥2 − 4𝑥 + 3) • 𝑃𝑛(𝑥) = −5 + 6𝑥 + 2𝑥2 − 2𝑥 + 𝑥3 − 4𝑥² + 3𝑥 • 𝑃𝑛(𝑥) = 𝑥3 − 2𝑥2 + 7𝑥 − 5 A ordem pela qual você envolve os números e constrói o polinômio não altera o polinômio final. Tente fazer tomando os números 55,30,6,1, substituindo a ordem dos Xi e verá que conseguirá o mesmo polinômio. Exemplo: Interpolar por um polinômio a função ln(x). Escolher 4 pontos nodais Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier • 𝑃𝑛(𝑥) = 𝑓[𝑥0] + 𝑓[𝑥0,𝑥1](𝑥 − 𝑥0) + 𝑓[𝑥0,𝑥1,𝑥2](𝑥 − 𝑥0)(𝑥 − 𝑥1) + 𝑓[𝑥0, 𝑥1,𝑥2,𝑥3](𝑥 − 𝑥0)(𝑥 − 𝑥1)(𝑥 − 𝑥2) • 𝑃𝑛(𝑥) = 𝟎 + 𝟎, 𝟔𝟗(𝑥 − 1) + −𝟎, 𝟏𝟒(𝑥 − 1)(𝑥 − 2) + 𝟎, 𝟎𝟐𝟔𝟕(𝑥 − 1)(𝑥 − 2)(𝑥 − 3) Interpolador de Lagrange Considere a seguinte forma polinomial 𝑃𝑛(𝑥) = 𝑏0(𝑥 − 𝑥1)(𝑥 − 𝑥2)… (𝑥 − 𝑥𝑛) + 𝑏1(𝑥 − 𝑥0)(𝑥 − 𝑥2)… (𝑥 − 𝑥𝑛) + 𝑏2(𝑥 − 𝑥0)(𝑥 − 𝑥1)(𝑥 − 𝑥3)… (𝑥 − 𝑥𝑛) + ⋯𝑏𝑛(𝑥 − 𝑥0)(𝑥 − 𝑥1)… (𝑥 − 𝑥𝑛−1) Quando 𝑥 = 𝑥0, todos os termos que possuem (𝑥 − 𝑥0) são anulados, sobrando somente um que não o possui. Logo: 𝑃𝑛(𝑥0) = 𝑏0(𝑥0 − 𝑥1)(𝑥0 − 𝑥2)… (𝑥0 − 𝑥𝑛) Assim, como 𝑓(𝑥𝑖) = 𝑃𝑛(𝑥𝑖), temos: 𝑏0 = 𝑓(𝑥0) (𝑥0 − 𝑥1)(𝑥0 − 𝑥2)… (𝑥0 − 𝑥𝑛) = 𝑓(𝑥0) ∏ (𝑥0 − 𝑥𝑖) 𝑛 𝑖=1 Usando o mesmo raciocínio para o próximo ponto nodal, temos: 𝑏1 = 𝑓(𝑥1) (𝑥1 − 𝑥0)(𝑥1 − 𝑥2)… (𝑥1 − 𝑥𝑛) = 𝑓(𝑥1) (𝑥1 − 𝑥0)∏ (𝑥1 − 𝑥𝑖) 𝑛 𝑖=2 E dai em diante. Substituindo na fórmula do polinômio: Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier 𝑃𝑛(𝑥) = 𝑓(𝑥0) ∏ (𝑥0 − 𝑥𝑖) 𝑛 𝑖=1 (𝑥 − 𝑥1)(𝑥 − 𝑥2)… (𝑥 − 𝑥𝑛) + 𝑓(𝑥1) (𝑥1 − 𝑥0)∏ (𝑥1 − 𝑥𝑖) 𝑛 𝑖=2 (𝑥 − 𝑥0)(𝑥 − 𝑥2)… (𝑥 − 𝑥𝑛) + ⋯ 𝑓(𝑥𝑛) (𝑥𝑛 − 𝑥0)(𝑥𝑛 − 𝑥1)… (𝑥𝑛 − 𝑥𝑛−1) (𝑥 − 𝑥0)(𝑥 − 𝑥1)… (𝑥 − 𝑥𝑛−1) Reescrevendo, temos: 𝑃𝑛(𝑥) = [ (𝑥 − 𝑥1)(𝑥 − 𝑥2)… (𝑥 − 𝑥𝑛) (𝑥0 − 𝑥1)(𝑥0 − 𝑥2)… (𝑥0 − 𝑥𝑛) ] 𝑓(𝑥0) + [ (𝑥 − 𝑥0)(𝑥 − 𝑥2)… (𝑥 − 𝑥𝑛) (𝑥1 − 𝑥0)(𝑥1 − 𝑥2)… (𝑥1 − 𝑥𝑛) ] 𝑓(𝑥1) + ⋯ [ (𝑥 − 𝑥0)(𝑥 − 𝑥1)… (𝑥 − 𝑥𝑛−1) (𝑥𝑛 − 𝑥0)(𝑥𝑛 − 𝑥1)… (𝑥𝑛 − 𝑥𝑛−1) ] 𝑓(𝑥𝑛) Ou ainda: 𝑷𝒏(𝒙) = ∑ 𝒍𝒋(𝒙)𝒇(𝒙𝒋) 𝒏 𝒋=𝟎 𝒍𝒋(𝒙) = ∏ (𝒙 − 𝒙𝒌) (𝒙𝒋 − 𝒙𝒌) 𝒏 𝑲=𝟎 𝑲≠𝑱 𝒍𝒋(𝒙) é o interpolador de Lagrange Exemplo Aproximar por interpolação de Lagrange a função ln(x) 𝑥𝑗 𝑓(𝑥𝑗) 𝑥0 1 0 𝑥1 2 0,69 𝑥2 3 1,1 Se 𝑙𝑗(𝑥) = ∏ (𝑥−𝑥𝑘) (𝑥𝑗−𝑥𝑘) 𝑛 𝐾=0 𝐾≠𝐽 , temos então: • 𝑙0(𝑥) = ∏ (𝑥−𝑥𝑘) (𝑥0−𝑥𝑘) 2 𝐾=1 = (𝑥−𝑥1) (𝑥0−𝑥1) ∙ (𝑥−𝑥2) (𝑥0−𝑥2) = (𝑥−2) (1−2) ∙ (𝑥−3) (1−3) = (𝑥−2)(𝑥−3) 2 • 𝑙0(𝑥) = 𝑥2−3𝑥−2𝑥+6 2 = 𝑥2−5𝑥+6 2 • 𝑙1(𝑥) = ∏ (𝑥−𝑥𝑘) (𝑥1−𝑥𝑘) 2 𝐾=0 𝐾≠1 = (𝑥−𝑥0) (𝑥1−𝑥0) ∙ (𝑥−𝑥2) (𝑥1−𝑥2) = (𝑥−1) (2−1) ∙ (𝑥−3) (2−3) = (𝑥 − 3)(1 − 𝑥) • 𝑙1(𝑥) = 𝑥 − 𝑥 2 − 3 + 3𝑥 = −𝑥2 + 4𝑥 − 3 • 𝑙2(𝑥) = ∏ (𝑥−𝑥𝑘) (𝑥2−𝑥𝑘) 2 𝐾=0 𝐾≠2 = (𝑥−𝑥0) (𝑥2−𝑥0) ∙ (𝑥−𝑥1) (𝑥2−𝑥1) = (𝑥−1) (3−1) ∙ (𝑥−2) (3−2) = (𝑥−1)(𝑥−2) 2 • 𝑙2(𝑥) = 𝑥2−2𝑥−𝑥+2 2 = 𝑥2−3𝑥+2 2 Temos agora: • 𝑃𝑛(𝑥) = ∑ 𝑙𝑗(𝑥)𝑓(𝑥𝑗) 𝑛 𝑗=0 • 𝑃𝑛(𝑥) = 𝑙0(𝑥)𝑓(𝑥0) + 𝑙1(𝑥)𝑓(𝑥2) + 𝑙2(𝑥)𝑓(𝑥2) • 𝑃𝑛(𝑥) = [ 𝑥2−5𝑥+6 2 ] (0) + [−𝑥2 + 4𝑥 − 3](0,69) + [ 𝑥2−3𝑥+2 2 ] (1,1) • 𝑃𝑛(𝑥) = [−0,69𝑥 2 + 2,76𝑥 − 2,07] + [0,55𝑥2 − 1,65𝑥 + 1,1] • 𝑃𝑛(𝑥) = −0,14𝑥 2 + 1,11𝑥 − 0,97 Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier Algumas propriedades do interpolador de Lagrange Polinômio Nodal Seja 𝑃𝑛+1(𝑥) = 𝑎𝑛+1(𝑥 − 𝑥0)(𝑥 − 𝑥1)… (𝑥 − 𝑥𝑛) = ∏ (𝑥 − 𝑥𝑘) 𝑛 𝐾=0 o polinômio nodal Seja 𝑙𝑗(𝑥) = ∏ (𝑥−𝑥𝑘) (𝑥𝑗−𝑥𝑘) 𝑛 𝐾=0 𝐾≠𝐽 , temos: 𝑞𝑗(𝑥) = ∏ (𝑥 − 𝑥𝑘) 𝑛 𝐾=0 𝐾≠𝐽 , logo: 𝑙𝑗(𝑥) = 𝑞𝑗(𝑥) 𝑞𝑗(𝑥𝑗) Então 𝑃𝑛+1(𝑥) (𝑥−𝑥𝑗) = ∏ (𝑥 − 𝑥𝑘) 𝑛 𝐾=0 𝐾≠𝐽 = 𝑞𝑗(𝑥) Fazendo o limite para 𝑥 → 𝑥𝑗 𝑞𝑗(𝑥𝑗) = lim 𝑥→𝑥𝑗 𝑞𝑗(𝑥) = lim 𝑥→𝑥𝑗 𝑃𝑛+1(𝑥) (𝑥 − 𝑥𝑗) → 𝐿′𝐻𝑜𝑝𝑖𝑡𝑎𝑙 → = lim 𝑥→𝑥𝑗 𝑃′𝑛+1(𝑥) 1 = 𝑃′𝑛+1(𝑥) Se{ 𝑞𝑗(𝑥) = 𝑃𝑛+1(𝑥) (𝑥−𝑥𝑗) 𝑞𝑗(𝑥𝑗) = 𝑃 ′ 𝑛+1(𝑥) Então: 𝒍𝒋(𝒙) = 𝑷𝒏+𝟏(𝒙) (𝒙 − 𝒙𝒋). 𝑷′𝒏+𝟏(𝒙) Análise de erros As fórmulas de erro até agora usada foram: • 𝑅𝑛(𝑥) = 𝑓(𝑛+1)(𝜉(𝑥)) (𝑛+1)! (𝑥 − 𝑥𝑜) 𝑛+1 → 𝑆é𝑟𝑖𝑒 𝑑𝑒 𝑇𝑎𝑦𝑙𝑜𝑟 Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier • 𝑅𝑛(𝑥) = 𝑓(𝑛+1)(ξ(𝑥)) (𝑛+1)! ∙ ∏ (𝑥 − 𝑥𝑖) 𝑛 𝑖=0 = 𝑓[𝑥, 𝑥𝑛 , 𝑥𝑛−1, … 𝑥0] ∙ ∏ (𝑥 − 𝑥𝑖) 𝑛 𝑖=0 → 𝐼𝑛𝑡𝑒𝑟𝑝𝑜𝑙𝑎çã𝑜 𝑃𝑜𝑙𝑖𝑛𝑜𝑚𝑖𝑎𝑙 Contudo, como o valor de 𝑓(𝑛+1)(ξ(𝑥)) não pode, geralmente, ser calculado por não conhecermos a função ξ(𝑥), podemos apenas estabelecer um limite superior para o erro da aproximação, tomando o valor máximo de |𝑓(𝑛+1)(ξ(𝑥)) | no intervalo [a, b]. Naturalmente, quando f(x) é conhecido, o erro é facilmente determinável por 𝑅𝑛(𝑥) = 𝑓(𝑥) − 𝑃𝑛(𝑥). No caso da interpolação polinomial, geralmente f(x) não é conhecido. Uma informação útil na análise de erros é conhecer o erro médio quadrático (MSE, Mean Square Error), que, para uma aproximação f(x) definida entre [a,b], é dada por: Que, normalizada para o intervalo [0,1], fica: Onde É possível determinar os pontos nodais que geram um polinômio interpolador com o menor resíduo possível entre polinômios de mesmo grau. Considere a seguinteexpressão de erro e 𝑃𝑛+1(𝑥) como o polinômio nodal com 𝑎𝑛+1 = 1: 𝑅𝑛(𝑥) = 𝑓(𝑛+1)(ξ(𝑥)) (𝑛 + 1)! ∙∏ (𝑥 − 𝑥𝑖) 𝑛 𝑖=0 = 𝑅𝑛(𝑥) = 𝑓(𝑛+1)(ξ(𝑥)) (𝑛 + 1)! ∙ 𝑃𝑛+1(𝑥) Reescrevendo 𝑃𝑛+1(𝑥) da forma: 𝑃𝑛+1(𝑥) = 𝑥 𝑛+1 + ∑𝑐𝑖𝑥 𝑖 𝑛 𝑖=0 E aplicando o teorema do valor médio, considerando que o mínimo de MSE ocorre quando a sua derivada em relação aos coeficientes é 0, temos que: O que permite concluir que 𝑃𝑛+1(𝑥) é um polinômio ortogonal no intervalo [0, 1] em relação à função peso w(x) = 1. Uma boa aproximação, que minimizaria MSE, seriam as raízes desse polinômio Critério Min-Max Ou ainda “Critério de minimização do erro máximo”, o critério min-max dá origem aos chamados Polinômios de Chebyshev. Qualquer função aproximada por polinômios de Chebyshev terá, em dado intervalo, distribuição de erro uniforme. Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier O Polinômio de Chebyshev é tabelado e conhecido, mas pode ser encontrado segunda a fórmula de recorrência: | 𝑻𝒏+𝟏(𝒙) = 𝟐𝒙𝑻𝒏(𝒙) − 𝑻𝒏−𝟏(𝒙) 𝑻𝟎(𝒙) = 𝟏 𝑻𝟏(𝒙) = 𝒙 Aproximamos uma função de f(x) usando o critério min-max da seguinte forma: 𝒇(𝒙) ≅∑𝒂𝒋 𝒏 𝒋=𝟎 𝑻𝒋(𝒙) Multiplicando os dois lados por 𝑇𝑖(𝑥) ( 1 √1−𝑥² ), tal que 𝑖 ≠ 𝑗, temos: 𝑓(𝑥)𝑇𝑖(𝑥) √1 − 𝑥² ≅∑ 𝑎𝑗𝑇𝑗(𝑥)𝑇𝑖(𝑥) √1 − 𝑥² 𝑛 𝑗=0 Integrando dos dois lados (dx), temos: ∫ 𝑓(𝑥)𝑇𝑖(𝑥) √1 − 𝑥² 𝑑𝑥 ≅∑∫ 𝑎𝑗𝑇𝑗(𝑥)𝑇𝑖(𝑥) √1 − 𝑥² 𝑑𝑥 𝑛 𝑗=0 Vamos guardar essa fórmula por enquanto e ver uma propriedade dos polinômios de Chebyshev. Se definidos em um intervalo 𝑥 ∈ [−1,1], então 𝑇𝑛(𝑥) é ortogonal com função peso 𝑤(𝑥) = 1 √𝑥2−1 . Dessa forma: ∫ 𝑻𝒊(𝒙)𝑻𝒋(𝒙) √𝟏 − 𝒙² 𝒅𝒙 𝟏 −𝟏 = { 𝟎, 𝒔𝒆 𝒊 ≠ 𝒋 𝝅, 𝒔𝒆 𝒊 = 𝒋 = 𝟎 𝝅 𝟐 , 𝒔𝒆 𝒊 = 𝒋 > 0 Portanto, vamos precisar definir as integrais da fórmula guardada no intervalo dos polinômios de Chebyshev. Para isso, fazer f(z) tal que Exemplo: • 𝑓(𝑧) = 𝑧2, 𝑧 ∈ [2,4] • 𝑥 = 2𝑧−4−2 4−2 = 2𝑧−6 2 = 𝑧 − 3 → 𝑧 = 𝑥 + 3 • Logo 𝑓(𝑧) = 𝑧² vira 𝑓(𝑥) = (𝑥 + 3)2; 𝑥 ∈ [−1,1] Isso se torna desnecessário caso a função original já esteja definida no intervalo correto. Agora, vamos retomar a fórmula que guardamos: ∫ 𝑓(𝑥)𝑇𝑖(𝑥) √1 − 𝑥² 𝑑𝑥 ≅∑∫ 𝑎𝑗𝑇𝑗(𝑥)𝑇𝑖(𝑥) √1 − 𝑥² 𝑑𝑥 𝑛 𝑗=0 E defini-la no intervalo [-1,1] Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier ∫ 𝑓(𝑥)𝑇𝑖(𝑥) √1 − 𝑥² 𝑑𝑥 1 −1 ≅∑∫ 𝑎𝑗𝑇𝑗(𝑥)𝑇𝑖(𝑥) √1 − 𝑥² 𝑑𝑥 1 −1 𝑛 𝑗=0 Retirando o termo “𝑎𝑗” da integral, temos ∫ 𝑓(𝑥)𝑇𝑖(𝑥) √1 − 𝑥² 𝑑𝑥 1 −1 ≅∑𝑎𝑗∫ 𝑻𝒋(𝒙)𝑻𝒊(𝒙) √𝟏 − 𝒙² 𝒅𝒙 𝟏 −𝟏 𝑛 𝑗=0 A parte em negrito e vermelho decorre da propriedade dos Polinômios de Chebyshev recém apresentada. Essa integral é 0 para todo j que não seja igual à i (e somente um será). Portanto, o somatório some: ∫ 𝑓(𝑥)𝑇𝑖(𝑥) √1 − 𝑥² 𝑑𝑥 1 −1 ≅ 𝑎𝑖∫ 𝑇𝑖(𝑥)𝑇𝑖(𝑥) √1 − 𝑥² 𝑑𝑥 1 −1 Explicitando o termo “𝑎𝑖”, temos: 𝑎𝑖 = ∫ 𝑓(𝑥)𝑇𝑖(𝑥) √1 − 𝑥² 𝑑𝑥 1 −1 ∫ (𝑇𝑖(𝑥)) 2 √1 − 𝑥² 𝑑𝑥 1 −1 = ∫ 𝑓(𝑥)𝑇𝑖(𝑥) √1 − 𝑥² 𝑑𝑥 1 −1 ‖𝑇𝑖(𝑥)‖2 Finalmente, pegando os valor de ‖𝑇𝑖(𝑥)‖ 2 dados nas propriedades, temos: { 𝒂𝟎 = 𝟏 𝝅 ∫ 𝒇(𝒙) √𝟏 − 𝒙² 𝒅𝒙 𝟏 −𝟏 𝒂𝒊 = 𝟐 𝝅 ∫ 𝒇(𝒙)𝑻𝒊(𝒙) √𝟏 − 𝒙² 𝒅𝒙 𝟏 −𝟏 , 𝒊 ≠ 𝟎 As raízes de um polinômio de chebyshev podem ser encontrados da seguinte forma: 𝒓𝒊 = 𝐜𝐨𝐬 [ (𝟐𝒊 − 𝟏)𝝅 𝟐𝒏 ] , 𝒊 = 𝟏, 𝟐, 𝟑, …𝒏 𝑻𝒊(𝒓𝒊) = 𝟎 Se utilizarmos 𝑟𝑖 como pontos nodais de 𝑃𝑛(𝑥) = ∑ 𝑙𝑗(𝑥)𝑓(𝑥𝑗) 𝑛 𝑗=0 , o polinômio encontrado é, por vezes igual, mas sempre suficientemente próximo de 𝑓(𝑥) ≅ ∑ 𝑎𝑗 𝑛 𝑗=0 𝑇𝑗(𝑥). Telescopagem de séries A telescopagem de séries de potências ou economia de Chebyshev consiste em expressar os monômios da série em termos dos polinômios de Chebyshev, coletar os coeficientes de cada polinômio Ti(x) e truncar a série nos monômios de Chebyshev de alta ordem sabendo que seu coeficiente representa o erro máximo da aproximação, pois |𝑇𝑖(𝑥)| ≤ 1. A série truncada pode então ser re-expressa em termos dos monômios de x. Este procedimento é equivalente a fazer sucessivas reduções de grau do polinômio até a precisão desejada usando o polinômio Chebyshev mônico. Definindo o polinômio de Chebyshev mônico: Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier 𝑛(𝑥) = 𝑇𝑛(𝑥) 2𝑛−1 Ao telescopar, estamos reduzindo o grau de um polinômio em 1. Só podemos telescopar se o intervalo de x for [-1,1] (caso contrário, lembrar da fórmula da mudança de variável). Ao telescopar, temos: 𝑃𝑛(𝑥) |→ 𝑃𝑛−1(𝑥) 𝑃𝑛−1(𝑥) = 𝑃𝑛(𝑥) − 𝑎𝑛 𝑛(𝑥) Onde 𝑎𝑛 é coeficiente de 𝑃𝑛(𝑥). Vamos telescopar, por exemplo, a função 𝑓(𝑥) = 𝑒 𝑥. Vamos considerar um erro de telescopagem máximo de 0,05. A primeira operação é transformar f(x) em 𝑃𝑛(𝑥). Usando a expansão em série de Taylor centrada em 0, para n=4, temos: • 𝑃𝑛(𝑥) = 1 + 𝑥 + 𝑥2 2 + 𝑥3 6 + 𝑥4 24 O erro dessa aproximação á calculado por • |𝑅𝑛(𝑥)| = | 𝑓(𝑛+1)(𝑥) (𝑛+1)! 𝑥𝑛+1| = | 𝑓′′′′′(𝑥) (5)! 𝑥5| = | 𝑥5𝑒𝑥 120 | • |𝑅𝑛(1)| = | 15𝑒1 120 | = 0,0226 • |𝑅𝑛(−1)| = | (−1)5𝑒−1 120 | = 0,0031 Como o erro para X=1 é o maior, vamos considerar ele somente. Afinal, queremos fazer operações de forma que a soma dos erros à cada operação não passe de 0,05, como estipulado, em todo intervalo de [-1,1]. Se considerarmos o erro menor, faremos mais operações do que deveríamos uma vez que iremos telescopar mais vezes e, portanto, não alcançaremos o limite de erro tão rápido. Telescopando pela primeira vez: • 𝑃𝑛−1(𝑥) = 𝑃𝑛(𝑥) − 𝑎𝑛 𝑛(𝑥) • 𝑃3(𝑥) = 𝑃4(𝑥) − 𝑎4 4(𝑥) • 𝑃3(𝑥) = 𝑃4(𝑥) − 𝑎4𝑇4(𝑥) 1 24−1 • 𝑃3(𝑥) = 1 + 𝑥 + 𝑥2 2 + 𝑥3 6 + 𝑥4 24 − ( 1 24 ) (8𝑥4 − 8𝑥2 + 1) ( 1 23 ) • 𝑃3(𝑥) = 1 + 𝑥 + 𝑥2 2 + 𝑥3 6 + 𝑥4 24 − ( 1 24 ) ( 8𝑥4− 8𝑥2+1 8 ) • 𝑃3(𝑥) = 1 + 𝑥 + 𝑥2 2 + 𝑥3 6 + 𝑥4 24 − ( 1 24 ) (𝑥4 − 𝑥2 + 1 8 ) • 𝑃3(𝑥) = 1 + 𝑥 + 𝑥2 2 + 𝑥3 6 + 𝑥4 24 − 𝑥4 24 + 𝑥2 24 − 1 192 • 𝑃3(𝑥) = 𝑥3 6 + 13𝑥2 24 + 𝑥 + 191 192 Calculando o erro da primeira telescopagem • 𝑃3(𝑥) = 𝑃4(𝑥) − 𝑎4 4(𝑥) • 𝑃3(𝑥) − 𝑃4(𝑥) = − 𝑎4 4(𝑥) • |𝑃3(𝑥) − 𝑃4(𝑥)| = |𝑎4 4(𝑥)| • 𝐸𝑟𝑟𝑜𝑡𝑒𝑙𝑒𝑠𝑐𝑜𝑝𝑎𝑔𝑒𝑚 = |𝑎4 4(𝑥)| Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier • 𝐸𝑡𝑙 = |( 1 24 ) ( 1 24−1 )| = 1 192 = 0,0052 O erro total de todas as operações feitas até agora é o erro da aproximação pra polinômio + o erro da primeira telescopagem • 𝐸𝑡𝑜𝑡 = 𝐸𝑎𝑝𝑥 + 𝐸𝑡𝑙 = 0,0226 + 0,0052 = 0,0278 Como o erro deu menor do que o estipulado, pelo menos uma telescopagem é possível. Devemos fazer uma segunda e calcular seu erro para ver se ultrapassa ou não o limite que impusemos. Se ultrapassar, então a função só pode ser telescopada uma vez, se não, pode no mínimo 2 vezes e a quantidade de vezes que pode vai depender do prosseguir das contas. Telescopando pela segunda vez: • 𝑃𝑛−1(𝑥) = 𝑃𝑛(𝑥) − 𝑎𝑛 𝑛(𝑥) • 𝑃2(𝑥) = 𝑃3(𝑥) − 𝑎3 3(𝑥) • 𝑃2(𝑥) = 𝑃3(𝑥) − 𝑎4𝑇3(𝑥)1 23−1 • 𝑃3(𝑥) = 191 192 + 𝑥 + 13𝑥2 24 + 𝑥3 6 − ( 1 6 ) (4𝑥3 − 3𝑥) ( 1 22−1 ) • 𝑃3(𝑥) = 191 192 + 𝑥 + 13𝑥2 24 + 𝑥3 6 − ( 1 6 ) ( 4𝑥3−3𝑥 4 ) • 𝑃3(𝑥) = 191 192 + 𝑥 + 13𝑥2 24 + 𝑥3 6 − ( 1 6 ) (𝑥3 − 3𝑥 4 ) • 𝑃3(𝑥) = 191 192 + 𝑥 + 13𝑥2 24 + 𝑥3 6 − 𝑥3 6 + 3𝑥 24 • 𝑃3(𝑥) = 191 192 + 𝑥 + 13𝑥2 24 + 𝑥3 6 − 𝑥3 6 + 3𝑥 24 • 𝑃3(𝑥) = 13𝑥2 24 + 9𝑥 8 + 191 192 Calculando o erro da primeira telescopagem • 𝑃2(𝑥) = 𝑃3(𝑥) − 𝑎3 3(𝑥) • 𝑃2(𝑥) − 𝑃3(𝑥) = − 𝑎3 3(𝑥) • |𝑃2(𝑥) − 𝑃3(𝑥)| = |𝑎3 3(𝑥)| • 𝐸𝑟𝑟𝑜𝑡𝑒𝑙𝑒𝑠𝑐𝑜𝑝𝑎𝑔𝑒𝑚 = |𝑎3 3(𝑥)| • 𝐸𝑡𝑙2 = |( 1 6 ) ( 1 23−1 )| = 1 24 = 0,0417 O erro total de todas as operações feitas até agora é o erro da aproximação pra polinômio + o erro da primeira telescopagem + o erro da segunda telescopagem • 𝐸𝑡𝑜𝑡 = 𝐸𝑎𝑝𝑥 + 𝐸𝑡𝑙1 + 𝐸𝑡𝑙2 = 0,0226 + 0,0052 + 0,0417 = 0,0695 Perceba que a segunda telescopagem forneceu erro maior do que o limite que estipulamos. Logo só podemos telescopar uma vez PERCEBA! Pela definição 𝑛(𝑥) = 𝑇𝑛(𝑥) 2𝑛−1 erro máximo do polinômio de Chebychev mônico é sempre 1 2𝑛−1 . A redução de 𝑃4(𝑥) = 1 + 𝑥 + 𝑥2 2 + 𝑥3 6 + 𝑥4 24 sem telescopagem é 𝑃3(𝑥) = 1 + 𝑥 + 𝑥2 2 + 𝑥3 6 e o erro é calculado da seguinte forma: Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier |𝑅𝑛=3(𝑥 = 1)| = | 𝑓(𝑛+1)(𝑥) (𝑛 + 1)! 𝑥𝑛+1| = | 𝑓′′′′(𝑥) (4)! 𝑥4| = | 𝑥4𝑒𝑥 24 | = | 14𝑒1 24 | = 𝑒 24 = 0,1132 Veja que o erro da redução sem telescopagem é maior que o dobro do limite estipulado por nós. A conclusão é que a telescopagem reduz a ordem de um polinômio mantendo a acurácia dele alta (enquanto essa simples redução não o faz) Abaixo e em ordem Comparação função original e expansão até n=4; Comparação função original e expansão até n=3; Comparação função original e primeira telescopagem; Comparação função original e segunda telescopagem. Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier Soluções de equações em uma variável Dado um fenômeno descrito por uma função de uma variável f(x), por vezes é interessante saber as raízes dessa função, que nem sempre são fáceis de obter, como no caso acima. Para isso, vamos propor métodos de identificar tais raízes. Métodos diretos Todos os métodos diretos de busca de raízes de equações algébricas não-lineares em uma variável iniciam com a busca do intervalo em que, obrigatoriamente, a raiz está contida. Sendo “a” a extremidade inferior do intervalo e “b” a extremidade superior do intervalo, deve-se ter necessariamente: Sabido o intervalo a,b , devemos chutar um valor de X. Logo temos: • 𝑥 = 𝑥(1) Sobrescrito (1) representa “primeira iteração”. Se o sobrescrito for 0 estamos considerando o primeiro chute ou tentativa. • 𝒙 = 𝒂 + 𝝀(𝒃 − 𝒂) ; 0 ≤ 𝜆 ≤ 1 Os métodos diretos diferem entre si simplesmente pela forma com que o parâmetro 𝜆 é escolhido em cada iteração. Método da bisseção ou dicotomia Método que consiste em manter “𝜆” constante em valor igual à ½ • 𝑥(0) = 𝑎 + (0,5)(𝑏 − 𝑎) • 𝑥(0) = 𝑎+𝑏 2 Uma vez encontrado 𝑥(0) , verificar 𝑓(𝑥(1)). Realizar: • 𝑓(𝑥(0)). 𝑓(𝑎) • 𝑓(𝑥(0)). 𝑓(𝑏) Somente um deles dará negativo. Vamos supor que seja o segundo. Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier Acima a representação gráfica do método. Veja que as notações “a” e “b” são, respectivamente, equivalentes à 𝑥𝐿 0 e 𝑥𝑅 0 no gráfico. Já que “𝑓(𝑥(0)). 𝑓(𝑏)” deu negativo, repetimos o processo fixando “b” e substituindo “a” por 𝑥(0). • 𝑥(1) = 𝑥(0) + (0,5)(𝑏 − 𝑥(0)) • 𝑥(0) = 𝑏+𝑥(0) 2 Uma vez encontrado 𝑥(1) , verificar 𝑓(𝑥(1)). Realizar: • 𝑓(𝑥(1)). 𝑓(𝑥(0)) • 𝑓(𝑥(1)). 𝑓(𝑏) Continuar até que 𝑓(𝑥(𝑘)) seja suficientemente próximo de 0, ou seja, até que: |𝒙(𝒌+𝟏) − 𝒙(𝒌)| < 𝜀 |𝒇(𝒙(𝒌+𝟏))| < 𝛿 Sendo “𝜀” e “δ” dependem da acurácia desejada O número máximo de iterações que esse método usa é: 𝒌𝒎𝒂𝒙 = 𝒏 = 𝐥𝐨𝐠𝟐 | 𝒃 − 𝒂 𝜺 | Uma alteração desse método é o método da busca aleatória que nada mais é do que o mesmo método mas com outros valores de lâmda gerados por uma função geradora de números aleatórios entre 0 e 1. Método das substituições sucessivas ou iteração de ponto fixo Dado um f(x), isola-se o “x” de forma que tenhamos: 𝒙 = 𝒈(𝒙) A forma na qual a função g(x) é construída não importa. Exemplos: • 𝑓(𝑥) = 2𝑥 + 5𝑥³ Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier • 𝑥 = 𝑔(𝑥) = −𝑥 − 5𝑥3 • 𝑥 = 𝑔(𝑥) = − 5𝑥3 2 • Etc. Dada uma estimativa inicial “𝑥(0)” { 𝒙(𝒌+𝟏) = 𝒈(𝒙(𝒌)), 𝒌 = 𝟎, 𝟏, 𝟐… 𝑫𝒂𝒅𝒐 𝒙(𝟎) Perceba que 𝑥 = 𝑔(𝑥) é o ponto onde 𝑔(𝑥) e ℎ(𝑥) = 𝑥, duas funções, se intersectam. Achar esse ponto é achar a raiz de 𝑓(𝑥). Logo • 𝑓(𝑥𝑟𝑎𝑖𝑧) = 0 • 𝐼𝑛𝑡𝑒𝑟𝑠𝑒𝑐𝑡[𝑥, 𝑔(𝑥)] = 𝑃𝑜𝑖𝑛𝑡 (𝑥𝑟𝑎𝑖𝑧, 𝑦𝑟𝑎𝑖𝑧) Estimativa inicial “𝑥(0)” Calcular 𝑔(𝑥(0)) • Como 𝑥 = 𝑔(𝑥), então 𝑥(1) = 𝑔(𝑥(0)) • Verificar se 𝑓(𝑥(1)) = 𝑓 (𝑔(𝑥(0))) = 0 Caso não seja, calcular 𝑔(𝑥(1)) • Como 𝑥 = 𝑔(𝑥), então 𝑥(2) = 𝑔(𝑥(1)) • Verificar se 𝑓(𝑥(2)) = 𝑓 (𝑔(𝑥(1))) = 0 Repetir o processo até que 𝑓(𝑥(𝑘+1)) = 0 ou até as condições de acurácia serem atendidas. |𝒙(𝒌+𝟏) − 𝒙(𝒌)| < 𝜀 |𝒇(𝒙(𝒌+𝟏))| < 𝛿 Outro teste Verificar se a inclinação de g(x) para 𝑥(𝑘) é menor ou igual à 1, pois se for maior ou igual à 1 as substituições sucessivas não convergirão. Veja abaixo, graficamente, a não convergência. |𝒈′(𝒙(𝒌))| ≤ 𝟏 Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier Voltando à fórmula do início do capítulo. Veja que ela tem três raízes. Aquela mesma função por esse método, fornece o seguinte gráfico: Método de Newton-Raphson (N-R) Nesse método, dado uma estimativa inicial 𝑥(0), calcula-se a inclinação da tangente à f(x) no ponto (𝑥(0), 𝑓(𝑥(0))). Calcula-se a interseção dessa reta com o eixo X e essa interseção será 𝑥(1). Repete-se o processo achando a equação da reta tangente à f(x) no ponto (𝑥(1), 𝑓(𝑥(1))) e a interseção dessa reta tangente com o eixo x em 𝑥(2). Repete-se o processo até que 𝑓(𝑥(𝑘)) = 0 seja verdade ou até que as condições de acurácia tenham sido atendidas. Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier { 𝒙(𝒌+𝟏) = 𝒙(𝒌) − 𝒇(𝒙(𝒌)) 𝒇′(𝒙(𝒌)) , 𝒌 = 𝟎, 𝟏, 𝟐… 𝑫𝒂𝒅𝒐 𝒙(𝟎) Esse método converge quadraticamente, enquanto substituições sucessivas converge linearmente. Isso significa que achamos a raiz ou uma aproximação suficientemente boa dela mais rápido por esse método. |𝒙(𝒌+𝟏) − 𝒙(𝒌)| < 𝜀 |𝒇(𝒙(𝒌+𝟏))| < 𝛿 Método de Newton-Raphson (N-R) modificado Nesse método, dado uma estimativa inicial 𝑥(0), calcula-se a inclinação da tangente à f(x) no ponto (𝑥(0), 𝑓(𝑥(0))). Calcula-se a interseção dessa reta com o eixo X e essa interseção será 𝑥(1). Repete-se o processo achando a equação da reta paralela à tangente encontrada anteriormente e que passa no ponto (𝑥(1), 𝑓(𝑥(1))) e a interseção dessa reta tangente com o eixo x em 𝑥(2).Repete-se o processo, tendo sempre retas paralelas (mas somente a primeira tangente à f(x), além disso) até que 𝑓(𝑥(𝑘)) = 0 seja verdade ou até que as condições de acurácia tenham sido atendidas. Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier { 𝒙(𝒌+𝟏) = 𝒙(𝒌) − 𝒇(𝒙(𝒌)) 𝒇′(𝒙(𝒎)) , 𝒌 = 𝟎, 𝟏, 𝟐… 𝑫𝒂𝒅𝒐 𝒙(𝟎), 𝒎 ≤ 𝒌 Esta modificação tem a vantagem de calcular um número menor de derivadas da função, mas apresenta uma menor taxa de convergência. No exemplo dado em texto, antes do gráfico, m=0. |𝒙(𝒌+𝟏) − 𝒙(𝒌)| < 𝜀 |𝒇(𝒙(𝒌+𝟏))| < 𝛿 Método de Quase-Newton ou Newton-Secante (N-S) Nesse método, dadas as estimativas iniciais 𝑥(0) 𝑒 𝑥(1), calcula-se a equação da reta secante à f(x) que passa pelos pontos (𝑥(0), 𝑓(𝑥(0))) e (𝑥(1), 𝑓(𝑥(1))). Calcula-se a interseção dessa reta com o eixo X e essa interseção será 𝑥(2). Repete-se o processo tomando os últimos dois pontos, isto é 𝑥(2) 𝑒 𝑥(1) e acha-se a equação da reta secante à f(x) que passa pelos pontos (𝑥(2), 𝑓(𝑥(2))) e (𝑥(1), 𝑓(𝑥(1))). A interseção dessa secante com o eixo x nos dá 𝑥(3). Repete- se o processo até que 𝑓(𝑥(𝑘)) = 0 seja verdade ou até que as condições de acurácia tenham sido atendidas. Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier { 𝒙(𝒌+𝟏) = 𝒙(𝒌) − 𝒇(𝒙(𝒌))(𝒙(𝒌) − 𝒙(𝒌−𝟏)) 𝒇(𝒙(𝒌)) − 𝒇(𝒙(𝒌−𝟏)) , 𝒌 = 𝟏, 𝟐… 𝑫𝒂𝒅𝒐𝒔 𝒙(𝟎) 𝒆 𝒙(𝟏) A convergência deste método é super-linear, isto é, mais rápida que a convergência linear do método das substituições sucessivas e mais lenta que a convergência quadrática do método de Newton-Raphson, possuindo a seguinte forma: |𝒙(𝒌+𝟏) − 𝒙(𝒌)| < 𝜀 |𝒇(𝒙(𝒌+𝟏))| < 𝛿 Método Regula Falsi Nesse método, dadas as estimativas iniciais 𝑥(0) 𝑒 𝑥(1), calcula-se a equação da reta secante à f(x) que passa pelos pontos (𝑥(0), 𝑓(𝑥(0))) e (𝑥(1), 𝑓(𝑥(1))). Calcula-se a interseção dessa reta com o eixo X e essa interseção será 𝑥(2). Repete-se o processo tomando a primeira estimativa (𝑥(0)) e a estimativa encontrada (𝑥(2)). Acha-se, então, a equação da reta secante à f(x) que passa pelos pontos (𝑥(2), 𝑓(𝑥(2))) e (𝑥(0), 𝑓(𝑥(0))). A interseção dessa secante com o eixo x nos dá 𝑥(3). Repete-se o processo até que 𝑓(𝑥(𝑘)) = 0 seja verdade ou até que as condições de acurácia tenham sido atendidas. { 𝒙(𝒌+𝟏) = 𝒙(𝒌) − 𝒇(𝒙(𝒌))(𝒙(𝒌) − 𝒙(𝟎)) 𝒇(𝒙(𝒌)) − 𝒇(𝒙(𝟎)) , 𝒌 = 𝟏, 𝟐… 𝑫𝒂𝒅𝒐𝒔 𝒙(𝟎) 𝒆 𝒙(𝟏) Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier O método da regula falsi (ou posição falsa) é uma modificação do método da secante, onde a derivada da função f(x) é grosseiramente aproximada pela equação das diferenças em relação a um ponto fixo. |𝒙(𝒌+𝟏) − 𝒙(𝒌)| < 𝜀 |𝒇(𝒙(𝒌+𝟏))| < 𝛿 Método Regula Falsi Modificada ou Método/Aceleração de Wegstein Nesse método, dadas as estimativas iniciais 𝑥(0) 𝑒 𝑥(1), tais que 𝑓(𝑥(0)). 𝑓(𝑥(1)) < 0 e calcula-se a equação da reta secante à f(x) que passa pelos pontos (𝑥(0), 𝑓(𝑥(0))) e (𝑥(1), 𝑓(𝑥(1))). Calcula-se a interseção dessa reta com o eixo X e essa interseção será 𝑥(2). Verifica-se 𝑓(𝑥(2)). 𝑓(𝑥(1)) < 0 ou se 𝑓(𝑥(0)). 𝑓(𝑥(2)) < 0 e repete-se o processo para as duas estimativas da equação verdadeira. Vamos supor que 𝑓(𝑥(2)). 𝑓(𝑥(1)) < 0 seja verdadeira dentre as duas. Toma-se 𝑥(2) 𝑒 𝑥(1), tais que 𝑓(𝑥(2)). 𝑓(𝑥(1)) < 0 e calcula-se a equação da reta secante à f(x) que passa pelos pontos (𝑥(2), 𝑓(𝑥(2))) e (𝑥(1), 𝑓(𝑥(1))). Calcula-se a interseção dessa reta com o eixo X e essa interseção será 𝑥(3). Verifica-se 𝑓(𝑥(3)). 𝑓(𝑥(1)) < 0 ou se 𝑓(𝑥(3)). 𝑓(𝑥(2)) < 0 e repete-se o processo para as duas estimativas da equação verdadeira dentre as duas. Repete-se o processo até que 𝑓(𝑥(𝑘)) = 0 seja verdade ou até que as condições de acurácia tenham sido atendidas. Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier { 𝒙(𝒌+𝟏) = 𝒙𝑹 (𝒌) − 𝒇(𝒙𝑹 (𝒌)) (𝒙𝑹 (𝒌) − 𝒙𝑳 (𝒌)) 𝒇 (𝒙𝑹 (𝒌)) − 𝒇 (𝒙𝑳 (𝒌)) 𝒌 = 𝟏, 𝟐… Onde 𝒙𝑹 (𝒌) = { 𝒙(𝒌), 𝒔𝒆 𝒇(𝒙(𝒌)) 𝒕𝒆𝒎 𝒐 𝒎𝒆𝒔𝒎𝒐 𝒔𝒊𝒏𝒂𝒍 𝒅𝒆𝒇 (𝒙𝑹 (𝒌−𝟏)) 𝒇 (𝒙𝑹 (𝒌−𝟏)) , 𝒄𝒂𝒔𝒐 𝒄𝒐𝒏𝒕𝒓á𝒓𝒊𝒐 E onde 𝒙𝑳 (𝒌) = { 𝒙(𝒌), 𝒔𝒆 𝒇(𝒙(𝒌)) 𝒕𝒆𝒎 𝒐 𝒎𝒆𝒔𝒎𝒐 𝒔𝒊𝒏𝒂𝒍 𝒅𝒆𝒇 (𝒙𝑳 (𝒌−𝟏)) 𝒇 (𝒙𝑳 (𝒌−𝟏)) , 𝒄𝒂𝒔𝒐 𝒄𝒐𝒏𝒕𝒓á𝒓𝒊𝒐 Dados 𝒙𝑹 (𝟎) 𝒆 𝒙𝑳 (𝟎) 𝒕𝒂𝒍 𝒒𝒖𝒆 𝒇 (𝒙𝑹 (𝟎)) . 𝒇 (𝒙𝑳 (𝟎)) < 0 No método da regula falsi modificado (ou método de Wegstein), ao invés de manter fixo o ponto base para o cálculo da aproximação da derivada da função f(x), atualiza-se este ponto de acordo com a posição do ponto obtido em cada iteração. O método consiste em um método Quasi-Newton onde sempre checamos se as duas estimativas que usaremos pra traçar a nova secante estão “estrangulando” a raiz. “Estrangular” a raiz significa que a raiz está dentro do intervalo definido pela nossa estimativa e, durante o processo iterativo, esse intervalo diminui cada vez mais. Sabemos que uma raiz está sendo estrangulada por um intervalo se , tal que |𝑏 − 𝑎| → 0 𝑒 𝑥∗ ∈ [𝑎, 𝑏] Condições de acurácia: |𝒙(𝒌+𝟏) − 𝒙(𝒌)| < 𝜀 |𝒇(𝒙(𝒌+𝟏))| < 𝛿 Se tomarmos a fórmula do método da bisseção e aplicarmos a expressão de lambda abaixo, teremos uma expressão para o método de Wegstein 𝜆 = 𝑓(𝑎) 𝑓(𝑎) − 𝑓(𝑏) Cálculo de raízes de polinômios A regra de descartes visa a localização preliminar das raízes de 𝑃𝑛(𝑥). Veja o exemplo: 𝑃𝑛(𝑥) = 𝑥 7 − 2𝑥5 − 3𝑥3 + 4𝑥2 − 5𝑥 + 6 Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier Graficamente, podemos ver que essa função tem 3 raízes reais. Mas nem sempre vamos ter o gráfico disponível. Como saber então, preliminarmente, quantas raízes reais e complexas esse polinômio tem. Definido “p” como o número de inversões de sinais, para esse polinômio, temos 4, veja: +𝑥7 → −2𝑥5 (1ª 𝑖𝑛𝑣𝑒𝑟𝑠ã𝑜) −2𝑥5 → −3𝑥3 (𝑠/𝑖𝑛𝑣𝑒𝑟𝑠ã𝑜) −3𝑥3 → +4𝑥2 (2ª 𝑖𝑛𝑣𝑒𝑟𝑠ã𝑜) +4𝑥2 → −5𝑥 (3ª 𝑖𝑛𝑣𝑒𝑟𝑠ã𝑜) −5𝑥 → +6 (4ª 𝑖𝑛𝑣𝑒𝑟𝑠ã𝑜) Podemos ter então “p” raízes reais positivas, ou então “p-2” raízes reais positivas, ou então “p-4” raízes reais positivas... No nosso exemplo, p=4. Logo ou temos 4 raízes reais positivas, ou 2 ou 0. Escrevendo agora a função P(-x), temos: 𝑃𝑛(−𝑥) = −𝑥 7 + 2𝑥5 + 3𝑥3 + 4𝑥2 − 5𝑥 + 6 Calculando o valor de p, temos: −𝑥7 → +2𝑥5 (1ª 𝑖𝑛𝑣𝑒𝑟𝑠ã𝑜) +2𝑥5 → +3𝑥3 (𝑠/𝑖𝑛𝑣𝑒𝑟𝑠ã𝑜) +3𝑥3 → +4𝑥2 (𝑠/𝑖𝑛𝑣𝑒𝑟𝑠ã𝑜) +4𝑥2 → +5𝑥 (𝑠/𝑖𝑛𝑣𝑒𝑟𝑠ã𝑜) +5𝑥 → +6 (𝑠/𝑖𝑛𝑣𝑒𝑟𝑠ã𝑜) Podemos ter então “p” raízes reais negativas, ou então “p-2” raízes reais negativas, ou então “p-4” raízes reais negativas... No nosso exemplo, p=1. Logo temos a certeza de que temos uma raiz real negativa (afinal não é possível ter p-2, p-4, p-6 ... raízes visto que p<2.) Graficamente vemos que isso é uma verdade Como é um polinômio de grau 7, temos que ter 7 raízes independente das combinações. Colocando nossas hipóteses em tabelas, temos: Raízes Hipótese A Hipótese B Hipótese C + 4 2 0 - 1 1 1 Complexas 1 par 2 pares 3 pares Total de raízes 7 7 7 Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier Agora que temos nossas hipóteses, devemos trabalhar com cada uma delas e estimar valores até acharmos todas as raízes. Quais estimativas iniciais escolher,no entanto? Uma boa estimativa inicial seria qualquer ponto do círculo definido pelo raio espectral. O raio espectral é definido como: 𝝆 = 𝟐.𝐦𝐚𝐱𝟎≤𝒊≤𝒏−𝟏 {| 𝒂𝒊 𝒂𝒏 | 𝟏 𝒏−𝒊 } Como nosso polinômio-exemplo é de 7º grau, 𝑎𝑛 = 𝑎7 = 1. Sendo 𝑎𝑖 um coeficiente do polinômio tal que 0 ≤ 𝑖 ≤ 𝑛 − 1, temos para nosso polinômio • 𝜌 = 2.𝑚𝑎𝑥 {|𝑎0| 1 7 ; |𝑎1| 1 6 ; |𝑎2| 1 5 ; |𝑎3| 1 4 ; |𝑎4| 1 3 ; |𝑎5| 1 2 ; |𝑎6| 1 1} Alguns desses coeficientes são nulos, logo: • 𝜌 = 2.𝑚𝑎𝑥 {|𝑎0| 1 7 ; |𝑎1| 1 6 ; |𝑎2| 1 5 ; |𝑎3| 1 4 ; |𝑎5| 1 2 } Substituindo os valores: • 𝜌 = 2.𝑚𝑎𝑥 {|6| 1 7 ; |−5| 1 6 ; |4| 1 5 ; |−3| 1 4 ; |−2| 1 2 } • 𝜌 = 2.𝑚𝑎𝑥{√6 7 ; √5 6 ; √4 5 ; √3 4 ; √2 } O maior número dentre os que estão apresentados é √2, logo: • 𝑚𝑎𝑥{√6 7 ; √5 6 ; √4 5 ; √3 4 ; √2 } = √2 • 𝜌 = 2. √2 = ~ 2,84 Todas as raízes estarão necessariamente dentro desse círculo, independente de qual hipótese (A,B, ou C) for real. Dessa forma, as raízes reais necessariamente estão no intervalo [−2.√2, 2. √2]. Saber disso já nos fornece um intervalo pequeno de valores com o qual será interessante trabalhar pra encontrar as raízes. Vamos aplicar agora N-R para o limite negativo do raio espectral, isto é, para 𝑥(0) = −𝜌 = −2.√2. Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier { 𝑥(𝑘+1) = 𝑥(𝑘) − 𝑃𝑛(𝑥 (𝑘)) 𝑃′𝑛(𝑥 (𝑘)) , 𝑘 = 0,1,2… 𝐷𝑎𝑑𝑜 𝑥(0) = −𝜌 Uma vez encontrada a primeira raiz (vamos chama-la de 𝑥1 ), se dividirmos o polinômio original por (𝑥 − 𝑥1), obtemos um novo polinômio de um grau inferior (OS: essa divisão é exata, sem resto). Temos assim: 𝑃𝑛−1(𝑥) = 𝑃𝑛−1(𝑥) (𝑥 − 𝑥1) Fazer essa divisão é denominado “deflatar o polinômio”. Aplicando N-R novamente nesse polinômio, temos: { 𝑥(𝑘+1) = 𝑥(𝑘) − 𝑃𝑛−1(𝑥 (𝑘)) 𝑃′𝑛−1(𝑥 (𝑘)) , 𝑘 = 0,1,2… 𝐷𝑎𝑑𝑜 𝑥(0) = −𝜌′ Onde “𝜌′” é o raio espectral do polinômio deflatado. E assim encontraremos a segunda raíz. Repetimos o processo até acharmos todas as raízes. Como, no entanto, esse método é trabalhoso e apresenta alguns problemas, é conveniente fazer a seguinte modificação de N-R: { 𝒙(𝒌+𝟏) = 𝒙(𝒌) − 𝑷𝒏−𝟏(𝒙 (𝒌)) 𝑷′𝒏−𝟏(𝒙 (𝒌)) [𝟏 − 𝑷𝒏−𝟏(𝒙 (𝒌)) 𝑷′𝒏−𝟏(𝒙 (𝒌)) ∙ ∑ 𝟏 (𝒙(𝒌) − 𝒙𝒊) 𝒓 𝒊=𝟏 ] , 𝒌 = 𝟎, 𝟏, 𝟐… 𝑫𝒂𝒅𝒐 𝒙(𝟎) = 𝒙𝒓 + ∆𝒙 • Onde ∆𝒙 ≈ 𝟎 • E “r” é o número de raízes já determinadas Vamos supor que a raiz (-1,96) desse polinômio tenha sido encontrada, logo 𝑥1 = −1,96 e r=1. Assim, temos: { 𝑥(𝑘+1) = 𝑥(𝑘) − 𝑃𝑛−1(𝑥 (𝑘)) 𝑃′𝑛−1(𝑥 (𝑘)) [1 − 𝑃𝑛−1(𝑥 (𝑘)) 𝑃′𝑛−1(𝑥 (𝑘)) ∙ 1 (𝑥(𝑘) + 1,96) ] , 𝑘 = 0,1,2… 𝐷𝑎𝑑𝑜 𝑥(0) = −1,96 + ∆𝑥 Realizando esse processo iterativo, encontraremos a segunda raiz. Digamos que a segunda raiz foi encontrada e a raiz encontrada foi (1,11) e 𝑥2 = 1,11. O processo iterativo fica: Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier { 𝑥(𝑘+1) = 𝑥(𝑘) − 𝑃𝑛−1(𝑥 (𝑘)) 𝑃′𝑛−1(𝑥 (𝑘)) [1 − 𝑃𝑛−1(𝑥 (𝑘)) 𝑃′𝑛−1(𝑥 (𝑘)) ∙ ( 1 (𝑥(𝑘) + 1,96) + 1 (𝑥(𝑘) − 1,11) )] , 𝑘 = 0,1,2… 𝐷𝑎𝑑𝑜 𝑥(0) = 1,11 + ∆𝑥 Realizando esse processo iterativo encontra-se a terceira e última raiz do polinômio exemplo, 𝑥3 = 1,54. Lembre-se que para cada raiz encontrada (e, portanto, pra cada processo iterativo) deve-se obedecer as condições de acurácia: |𝒙(𝒌+𝟏) − 𝒙(𝒌)| < 𝜀 |𝑷𝒏(𝒙 (𝒌+𝟏))| < 𝛿 Método de Müller O método de Müller pode ser classificado como um método de busca direta (sem cômputo de derivadas) eficiente para a determinação de raízes reais múltiplas e raízes complexas de funções, especialmente polinômios. Este método se fundamenta na busca de raízes de interpolações parabólicas sucessivas da função que se deseja determinar as raízes. Primeiro identifica-se 3 valores de 𝑥 e seus respectivos 𝑓(𝑥). Depois, pelo processo da tabela de Newton, calcula-se o polinômio interpolador da função f(x). 𝒙𝒊 𝒇(𝒙𝒊) ∆𝟏 ∆𝟐 𝑥1 𝑓(𝑥1) 𝑓(𝑥2)− 𝑓(𝑥1) 𝑥2− 𝑥1 = 𝑓[𝑥2, 𝑥1] 𝑥2 𝑓(𝑥2) 𝑓[𝑥3,𝑥2]−𝑓[𝑥2,𝑥1] 𝑥3− 𝑥1 = 𝑓[𝑥3, 𝑥2, 𝑥1] 𝑓(𝑥3)− 𝑓(𝑥2) 𝑥3− 𝑥2 = 𝑓[𝑥3, 𝑥2] 𝑥3 𝑓(𝑥3) 𝑷𝒏(𝒙) = 𝒇(𝒙𝟏) + 𝒇[𝒙𝟐, 𝒙𝟏](𝒙 − 𝒙𝟏) + 𝒇[𝒙𝟑, 𝒙𝟐, 𝒙𝟏](𝒙 − 𝒙𝟏)(𝒙 − 𝒙𝟐) ATENÇÃO! Os pontos escolhidos devem ser tais que: |𝒇(𝒙𝟑)| ≤ |𝒇(𝒙𝟐)| ≤ |𝒇(𝒙𝟏)| Reescrevendo a função com a mudança de variáveis “𝑧 = 𝑥 − 𝑥2" e definindo “h” como “ℎ = 𝑥2 − 𝑥1” • 𝑃𝑛(𝑥) = 𝑓(𝑥1) + 𝑓[𝑥2, 𝑥1](𝑥 − 𝑥1) + 𝑓[𝑥3, 𝑥2, 𝑥1](𝑥 − 𝑥1)(𝑥 − 𝑥2) • 𝑃𝑛(𝑧) = 𝑓(𝑥1) + 𝑓[𝑥2, 𝑥1](𝑥 − 𝑥2 + 𝑥2 − 𝑥1) + 𝑓[𝑥3, 𝑥2, 𝑥1](𝑥 − 𝑥2 + 𝑥2 − 𝑥1)(𝑥 − 𝑥2) • 𝑃𝑛(𝑧) = 𝑓(𝑥1) + 𝑓[𝑥2, 𝑥1](𝑧 + ℎ) + 𝑓[𝑥3, 𝑥2, 𝑥1](𝑧 + ℎ)(𝑧) • 𝑃𝑛(𝑧) = 𝑓(𝑥1) + 𝑧. 𝑓[𝑥2, 𝑥1] + ℎ. 𝑓[𝑥2, 𝑥1] + 𝑓[𝑥3, 𝑥2, 𝑥1](𝑧 2 + ℎ𝑧) • 𝑃𝑛(𝑧) = 𝑓(𝑥1) + 𝑧. 𝑓[𝑥2, 𝑥1] + ℎ. 𝑓[𝑥2, 𝑥1] + 𝑧 2. 𝑓[𝑥3, 𝑥2, 𝑥1] + 𝑧. ℎ. 𝑓[𝑥3, 𝑥2, 𝑥1] • 𝑃𝑛(𝑧) = (𝑓[𝑥3, 𝑥2, 𝑥1])𝑧 2 + (𝑓[𝑥2, 𝑥1] + ℎ. 𝑓[𝑥3, 𝑥2, 𝑥1])𝑧 + (𝑓(𝑥1).+ℎ. 𝑓[𝑥2, 𝑥1]) • 𝑃𝑛(𝑧) = 𝑎𝑧 2 + 𝑏𝑧 + 𝑐 { 𝑎 = 𝑓[𝑥3, 𝑥2, 𝑥1] 𝑏 = 𝑓[𝑥2, 𝑥1] + ℎ. 𝑓[𝑥3, 𝑥2, 𝑥1] 𝑐 = 𝑓(𝑥1).+ℎ. 𝑓[𝑥2, 𝑥1] Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier 𝑃𝑛(𝑧) = 0 𝑧 = −𝑏±√𝑏2−4𝑎𝑐 2𝑎 → 𝑧 = { 𝑟1 𝑟2 Uma vez encontrado os dois valores de “z”, encontramos dois valores de x. 𝑧 = 𝑥 − 𝑥2 𝑥 = 𝑧 + 𝑥2 Dentre esses dois valores de “X” , devemos escolher aquele com maior |𝑏 ± √𝑏2 − 4𝑎𝑐|. Escolhido ele, vamos chamar ele de “𝑥𝑛𝑜𝑣𝑜”. Temos então: 𝑥𝑛𝑜𝑣𝑜 = 𝑟1 𝑜𝑢 2 + 𝑥2 Uma vez obtido o “𝑥𝑛𝑜𝑣𝑜”, trocar “𝑥1” (o com maior |𝑓(𝑥𝑛𝑜𝑣𝑜)|) por ele na hora de fazer o polinômio interpolador e construir um novo polinômio interpolador. Esse método, portanto, consiste em sucessivas aproximações de f(x) por polinômios de 2º grau. Alguma hora a aproximação ovai ser tão boa que 𝑃𝑛(𝑥𝑛𝑜𝑣𝑜) = 0 e poderemos extrapolar a raiz desse polinômio (ou seja, 𝑥𝑛𝑜𝑣𝑜), pela raiz da função. Trocando “𝑥1” por 𝑥𝑛𝑜𝑣𝑜, temos: 𝒙𝒊 𝒇(𝒙𝒊) ∆𝟏 ∆𝟐 𝑥𝑛𝑜𝑣𝑜 𝑓(𝑥𝑛𝑜𝑣𝑜) 𝑓(𝑥2)− 𝑓(𝑥𝑛𝑜𝑣𝑜) 𝑥2− 𝑥𝑛𝑜𝑣𝑜 = 𝑓[𝑥2, 𝑥𝑛𝑜𝑣𝑜] 𝑥2 𝑓(𝑥2) 𝑓[𝑥3,𝑥2]−𝑓[𝑥2,𝑥𝑛𝑜𝑣𝑜] 𝑥3− 𝑥𝑛𝑜𝑣𝑜 = 𝑓[𝑥3, 𝑥2, 𝑥𝑛𝑜𝑣𝑜] 𝑓(𝑥3)− 𝑓(𝑥2) 𝑥3− 𝑥2 = 𝑓[𝑥3, 𝑥2] 𝑥3 𝑓(𝑥3) 𝑷𝒏(𝒙) = 𝒇(𝒙𝒏𝒐𝒗𝒐) + 𝒇[𝒙𝟐, 𝒙𝒏𝒐𝒗𝒐](𝒙 − 𝒙𝒏𝒐𝒗𝒐) + 𝒇[𝒙𝟑, 𝒙𝟐, 𝒙𝒏𝒐𝒗𝒐](𝒙 − 𝒙𝒏𝒐𝒗𝒐)(𝒙 − 𝒙𝟐) Sistemas de Equações Algébricas Dado um sistema de equações algébricas { 5𝑥 + 2𝑦 = 8 3𝑥 − 4𝑦 = 10 Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier Podemos reescrevê-lo da seguinte forma: { 5𝑥 + 2𝑦 − 8 = 0 3𝑥 − 4𝑦 − 10 = 0 𝐹(𝑥) = [ 𝑓1(𝑥, 𝑦) 𝑓2(𝑥, 𝑦) ] = [ 5𝑥 + 2𝑦 − 8 3𝑥 − 4𝑦 − 10 ] = [ 0 0 ] 𝐹(𝑥) = 𝐴𝑥 − 𝑏 → 𝑥 = 𝐴−1𝑏 𝑏 = [ 8 10 ] , 𝑥 = [ 𝑥 𝑦] , 𝐴 = [ 5 2 3 −4 ] Existe uma grande variedade de métodos para solução de sistemas lineares, sendo muitos deles dependentes da estrutura da matriz A. Para o caso não-linear, trataremos da solução do sistema de equações algébricas F(x) = 0 pelos métodos: • Substituições sucessivas • Newton-Raphson Pivotamento e eliminação GaussianaNa eliminação gaussiana, uma matriz A é reduzida à uma matriz diagonal ou triangular cujas informações já são suficientes pra resolver o sistema. Para realizar o pivotamento e reduzir essa matriz, precisaremos trocar linhas e/ou colunas de lugar e fazer operações de combinações lineares entre elas. Veja: { 2𝑥 − 2𝑦 + 10𝑧 = 12 10𝑥 − 5𝑦 + 𝑧 = 2 3𝑥 + 2𝑦 + 𝑧 = 30 Reescrevendo: 𝐴𝑥 = 𝑏 [ 2 −2 10 10 −5 1 3 2 1 ] [ 𝑥 𝑦 𝑧 ] = [ 12 2 30 ] A matriz aumentada é dada por: [ 2 −2 10 10 −5 1 3 2 1 ⋮ ⋮ ⋮ 12 2 30 ] Eliminando os números abaixo do 2 (primeiro pivô, elemento a11). Para isso, multiplicar primeira linha por (-5), somar à segunda linha e substituir o resultado na segunda linha: [ 2 −2 10 0 5 −49 3 2 1 ⋮ ⋮ ⋮ 12 −58 30 ] Multiplicar a primeira linha por (-3) e a terceira por (2) e somar ambas, substituindo o resultado na terceira linha: [ 2 −2 10 0 5 −49 0 10 −28 ⋮ ⋮ ⋮ 12 −58 24 ] Multiplicar a segunda linha por (-2) e somar à terceira, substituindo o resultado na terceira linha Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier [ 2 −2 10 0 5 −49 0 0 70 ⋮ ⋮ ⋮ 12 −58 140 ] A matriz está em formato de triângulo. A resolução do sistema é automático a partir dai. Podemos continuar a eliminação gaussiana até termos uma matriz identidade do lado esquerdo da aumentada. Assim, o resultado estará explicitando o valor de X,Y e Z. Dividindo a terceira linha por 70 e substituindo na terceira linha, temos: [ 2 −2 10 0 5 −49 0 0 1 ⋮ ⋮ ⋮ 12 −58 2 ] Sabemos que Z=2 então. Multiplicando a terceira linha por (49) e somando à segunda, substituindo o resultado na segunda, temos: [ 2 −2 10 0 5 0 0 0 1 ⋮ ⋮ ⋮ 12 40 2 ] Dividindo a segunda linha por (5) e substituindo na segunda linha o resultado, temos: [ 2 −2 10 0 1 0 0 0 1 ⋮ ⋮ ⋮ 12 8 2 ] Sabemos então que Y=8. Multiplicando a terceira linha por (-10) e somando à primeira, substituindo o resultado na primeira, temos: [ 2 −2 0 0 1 0 0 0 1 ⋮ ⋮ ⋮ −8 8 2 ] Multiplicando a segunda linha por (2) e somando à primeira, substituindo o resultado na primeira linha, temos: [ 2 0 0 0 1 0 0 0 1 ⋮ ⋮ ⋮ 8 8 2 ] Por fim, dividimos a primeira linha por (2) e substituímos o resultado na primeira linha. Temos: [ 1 0 0 0 1 0 0 0 1 ⋮ ⋮ ⋮ 4 8 2 ] A manipulação foi feita somente com linhas, mas poderia ser feita com colunas também. Perceba que a matriz identidade do lado esquerdo da aumentada explicita os valores de X,Y,Z que satisfazem o sistema de equações: [ 𝑥 𝑦 𝑧 ] = [ 4 8 2 ] Se tivéssemos fácil acesso à matriz inversa, poderíamos fazer: 𝑥 = 𝐴−1𝑏 Veja: Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier Acima, fizemos primeiro a triangularização da matriz aumentada, e depois a diagonalização. Para encontrar a matriz inversa acima, faz-se: [ 2 −2 10 10 −5 1 3 2 1 ⋮ ⋮ ⋮ 1 0 0 0 1 0 0 0 1 ] Os mesmos procedimentos feitos acima são repetidos (literalmente os mesmos), até que a matriz identidade deixe de ser a da direita e passe a ser à da esquerda. A matriz da direita vai ser a matriz inversa. Passo a passo feito anteriormente: 1. Multiplicar primeira linha por (-5), somar à segunda linha e substituir o resultado na segunda linha 2. Multiplicar a primeira linha por (-3) e a terceira por (2) e somar ambas, substituindo o resultado na terceira linha 3. Multiplicar a segunda linha por (-2) e somar à terceira, substituindo o resultado na terceira linha 4. Dividir a terceira linha por (70) e substituir na terceira linha 5. Multiplicar a terceira linha por (49) e somar à segunda, substituindo o resultado na segunda 6. Dividir a segunda linha por (5) e substituir na segunda linha o resultado 7. Multiplicar a terceira linha por (-10) e somar à primeira, substituindo o resultado na primeira 8. Multiplicar a segunda linha por (2) e somar à primeira, substituindo o resultado na primeira linha, temos 9. Dividir a primeira linha por (2) e substituir o resultado na primeira linha Por fim, ocorrerá: [ 2 −2 10 10 −5 1 3 2 1 ⋮ ⋮ ⋮ 1 0 0 0 1 0 0 0 1 ] → [ 1 0 0 0 1 0 0 0 1 ⋮ ⋮ ⋮ −0,02 0,0628 0,1371 −0,02 −0,08 0,28 0,1 −0,0286 −0,0286 ] Métodos iterativos para sistemas lineares Jacobi Seja a matriz A: [ 𝑎11 ⋯ 𝑎1𝑛 ⋮ ⋱ ⋮ 𝑎𝑛1 ⋯ 𝑎𝑛𝑛 ] Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier Com elementos 𝒂𝒊𝒋 { 𝒊 → 𝒍𝒊𝒏𝒉𝒂 𝒋 → 𝒄𝒐𝒍𝒖𝒏𝒂 Podemos reescrever “A” como • [ 𝑎11 ⋯ 𝑎1𝑛 ⋮ ⋱ ⋮ 𝑎𝑛1 ⋯ 𝑎𝑛𝑛 ] = [ 𝑎11 0 ⋮ 0 0 𝑎22 ⋮ 0 ⋯ ⋯ ⋱ ⋯ 0 0 ⋮ 𝑎𝑛𝑛 ] + [ 0 𝑎21 ⋮ 𝑎𝑛1 𝑎12 0 ⋮ 𝑎𝑛2 ⋯ ⋯ ⋱ ⋯ 𝑎1𝑛 𝑎2𝑛 ⋮ 0 ] • 𝐴 = 𝐷 + 𝑅 • Se 𝐴𝑥 = 𝑏 • Então (𝐷 + 𝑅)𝑥 = 𝑏 • Assim: 𝐷𝑥 = 𝑏 − 𝑅𝑥 • E por fim: 𝑥 = 𝐷−1(𝑏 − 𝑅𝑥) OBS: O inverso de uma matriz diagonal, é uma matriz diagonal cujos elementos são o inverso da matriz original (Exemplo, se em D 𝑎11 = 2, em 𝐷 −1, teremos 𝑎11 = 1 2 = 0,5.). Assim, temos: • 𝐷−1 = [ 1 𝑎11 0 ⋮ 0 0 1 𝑎22 ⋮ 0 ⋯ ⋯ ⋱ ⋯ 0 0 ⋮ 1 𝑎𝑛𝑛] OBS2: Se 𝑥 = [ 𝑥1 𝑥2 ⋮ 𝑥𝑛 ], então Rx = 𝑥1 [ 0 𝑎21 ⋮ 𝑎𝑛1 ] + 𝑥2 [ 𝑎12 0 ⋮ 𝑎𝑛2 ] + ⋯ 𝑥𝑛 [ 𝑎1𝑛 𝑎2𝑛 ⋮ 0 ], para cada um dos elementos do vetor Rx temos: • ∑ 𝑥𝑗 𝑛 𝑗=1 𝑗≠𝑖 𝑎𝑖𝑗 Por exemplo, se a linha é a linha 1 (logo primeiro elemento do vetor, temos i=1) • ∑ 𝑥𝑗 𝑛 𝑗=1 𝑗≠1 𝑎1𝑗 = ∑ 𝑥𝑖 𝑛 𝑗=2 𝑎1𝑗 Se a linha é a segunda... • ∑ 𝑥𝑗 𝑛 𝑗=1 𝑗≠2 𝑎2𝑗 = 𝑥1𝑎21 + ∑ 𝑥𝑗 𝑛 𝑗=3 𝑎2𝑗 Se a linha é a n: • ∑ 𝑥𝑗 𝑛 𝑗=1 𝑗≠𝑛 𝑎𝑛𝑗 Perceba que assim pulamos do somatório aquele referente à diagonal. Por fim: • 𝑅𝑥 = [ ∑ 𝑥𝑗 𝑛 𝑗=1 𝑗≠1 𝑎1𝑗 ∑ 𝑥𝑗 𝑛 𝑗=1 𝑗≠2 𝑎2𝑗 ⋮ ∑ 𝑥𝑗 𝑛 𝑗=1 𝑗≠𝑛 𝑎𝑛𝑗 ] Guia de Estudos – Métodos Numéricos – Prof. Argimiro – 2017.1 – por Rafael Ratier Se 𝑏 = [ 𝑏1 𝑏2 ⋮ 𝑏𝑛 ], então: • 𝑏 − 𝑅𝑥 = [ 𝑏1 −∑ 𝑥𝑗 𝑛 𝑗=1 𝑗≠1 𝑎1𝑗 𝑏2 −∑ 𝑥𝑗 𝑛 𝑗=1 𝑗≠2 𝑎2𝑗 𝑏𝑛 − ⋮ ∑ 𝑥𝑗 𝑛 𝑗=1 𝑗≠𝑛 𝑎𝑛𝑗 ] Se o vetor “𝑏 − 𝑅𝑥” multiplica a matriz “𝐷−1 = [ 1 𝑎11 0 ⋮ 0 0 1 𝑎22 ⋮ 0 ⋯ ⋯ ⋱ ⋯ 0 0 ⋮ 1 𝑎𝑛𝑛] ” então temos: • 𝐷−1(𝑏 − 𝑅𝑥) = [ 1 𝑎11 0 ⋮ 0 0 1 𝑎22 ⋮ 0 ⋯ ⋯ ⋱ ⋯ 0 0 ⋮ 1 𝑎𝑛𝑛] [ 𝑏1 − ∑ 𝑥𝑗 𝑛 𝑗=1 𝑗≠1 𝑎1𝑗 𝑏2 − ∑ 𝑥𝑗 𝑛 𝑗=1 𝑗≠2 𝑎2𝑗 𝑏𝑛 − ⋮ ∑ 𝑥𝑗 𝑛 𝑗=1 𝑗≠𝑛 𝑎𝑛𝑗 ] • 𝐷−1(𝑏 − 𝑅𝑥) = [ 𝑏1−∑ 𝑥𝑗 𝑛 𝑗=1 𝑗≠1 𝑎1𝑗 𝑎11 𝑏2−∑ 𝑥𝑗 𝑛 𝑗=1 𝑗≠2 𝑎2𝑗 𝑎22 𝑏𝑛− ⋮ ∑ 𝑥𝑗 𝑛 𝑗=1 𝑗≠𝑛 𝑎𝑛𝑗 𝑎𝑛𝑛 ] E se 𝑥 = 𝐷−1(𝑏 − 𝑅𝑥), sendo o “x” da esquerda uma próxima interação para dado x da direita inicial, temos: • 𝑥(𝑘+1) → = [ 𝑏1−∑ 𝑥𝑗 (𝑘)𝑛 𝑗=1 𝑗≠1 𝑎1𝑗 𝑎11 𝑏2−∑ 𝑥𝑗 (𝑘)𝑛 𝑗=1 𝑗≠2 𝑎2𝑗 𝑎22 𝑏𝑛− ⋮ ∑ 𝑥𝑗 (𝑘)𝑛 𝑗=1 𝑗≠𝑛 𝑎𝑛𝑗 𝑎𝑛𝑛 ] Logo para cada linha do vetor 𝑥(𝑘+1) → , escrevemos: 𝒙(𝒌+𝟏)𝒊 = 𝒃𝒊 − ∑ 𝒙𝒋 (𝒌)𝒏
Compartilhar