Interpolação por Sistema Linear

Teoria Completa

Introdução

Faaaaalaa aí meus caros, tudo certinho? Vamos começar a falar de um assunto muito usado em V-Á-R-I-A-S matérias...

Se prepara então, que estamos entrando em Interpolação! Mas, na real... tu sabes o que é interpolar?

Podemos citar diferentes exemplos, tipo na física 1, quando estamos estudando a variação da posição percorrida por um carro em relação ao tempo. Geralmente conseguimos uma série de pontos de tempo (eixo x) e a posição (que varia em função do tempo), com esses valores podemos montar gráficos, tabelas e etc.

Então, a primeira informação que sabemos é que temos uma série de pontos:

Perceba o que temos aqui, uma série de valores numéricos de uma função, e esses valores me dão vários conjuntos de pontos, mas e se nós quisermos calcular um valor não tabelado? Imagine que nosso fusquinha está andando (pensa num fusca rápido).

Qual é a posição percorrida em 5 segundos? Nesse caso é fácil né, olhando no gráfico, é fácil inferir que o valor está crescendo de forma linear e que a cada 3 segundos o fusquinha anda 60 metros (PASME!). E encontrando a função vemos que f x = 20 x .

Mas e se a solução não for tão óbvia assim? Aí o bicho pega! Como é que eu vou adivinhar e sin ⁡ x + 3 x ln ⁡ x ? Sem condições pra isso parceiro!

Então... veja bem, eu disse lá em cima que na interpolação nós precisamos de um conjunto de pontos. Basicamente o que acontece é: se qualquer função definida e contínua dentro de um intervalo. EXISTE um polinômio ( p ) muuuuuuuuito próxima da função real ( f ). Deu pra pescar a ideia?

Mesmo em casos que nós já conhecemos a função, é bem interessante encontrarmos uma interpolação simples de derivar e integrar, já que derivar polinômio é moleza!

E como fazemos isso?

Bom, vamos começar com uma definição importante. p n x é uma função de interpolação de grau n de f x se para n + 1 pontos x 0 , x 1 , … , x n conhecidos (chamados nós de interpolação), temos:

  p n x 0 = f x 0   p n x 1 = f x 1 ⋮   p n x n = f x n

Nós tiramos duas coisas daí. Primeiro que o valor da interpolação nos nós é o mesmo da função nos nós. Até aí tudo bem né? A segunda coisa é que precisamos de n + 1 nós para encontrarmos um polinômio de grau n . Sabe aquela história de que precisamos de 3 pontos para determinar uma parábola (grau 2 )? Então, é a mesma ideia, só extrapolamos para graus maiores.

Voltando, um palpite simples e que pode trazer bons resultados é ligar os pontos por uma reta, por exemplo. Imagine que queremos encontrar f 2,5 . Onde f x = x 2 + 2 e queremos interpolar no intervalo x ∈ [ - 3,3 ] .

Como 2 + 3 2 = 2,5 , se aproximarmos nossa f x para uma reta, temos que f 2,5 = f 2 + f 3 2 = 8,5 . Substituindo o valor na função de fato temos f 2,5 = 2,5 2 + 2 = 8,25 . Não foi nenhuma maravilha de aproximação, mas não foi um erro tão grande né? Vou fazer um desenho pra você visualizar melhor o que a gente fez agora:

Temos que a linha laranja é a nossa função, os pontos azuis são os pontos que conhecemos e as linhas azuis representam a aproximação linear que a gente fez. Deu pra ver que a aproximação é realmente razoável né?

Esse método, no entanto, é bem limitado e muito pouco confiável como podemos ver no exemplo abaixo com a função sin ⁡ 9 x + cos ⁡ 5 x - 0.3 :

Deu bem longe né? Mas, de acordo com nossa definição, essa aberração azul aí é uma função de interpolação! Só não é uma muito boa haha. Então agora que já sabemos com o que estamos lidando vamos aos métodos!

Interpolação Polinomial

Uma das interpolações mais conhecidas é a Interpolação Polinomial, basicamente vamos pegar um conjunto de pontos e transforma-los em um polinômio, também existem outras formas de interpolação como a exponencial e a trigonométrica.

Sendo assim, p n x pode ser escrita como:

p n x = a 0 + a 1 x + a 2 x 2 + … + a n x n

E também sabemos que p n x i = f x i , para todo i de 0 a n . Então, podemos escrever o sistema:

a 0 + a 1 x 0 + a 2 x 0 2 + … + a n x 0 n = f x 0 a 0 + a 1 x 1 + a 2 x 1 2 + … + a n x 1 n = f x 1 ⋮ a 0 + a 1 x n + a 2 x n 2 + … + a n x n n = f x n

Passando pra forma de matriz ficamos com:

1 x 0 x 0 2 ⋯ x 0 n 1 x 1 x 1 2 ⋯ x 1 n ⋮ ⋮ ⋮ ⋱ ⋮ 1 x n x n 2 ⋯ x n n a 0 a 1 a 2 ⋮ a n = f x 0 f x 1 ⋮ f x n

Veja bem, se todos os pontos x i forem diferentes, nosso sistema terá uma solução única.

Ou seja, existe apenas um polinômio p n x de grau n que interpola f x nos n + 1 pontos conhecidos e a nossa solução vai ser tãooooo próxima quanto quisermos!

E a primeira forma de achar esse polinômio nós acabamos de ver aqui haha. É só resolver esse sistema! Vamos ver um exemplo:

Encontre o polinômio que interpola os pontos da tabela abaixo:

Jogando esses pontos num gráfico, temos:

Como temos 3 nós de interpolação, nosso polinômio será de grau 2 (já que para um polinômio de grau n , temos n + 1 pontos):

p 2 x = a 0 + a 1 x + a 2 x 2

Para que p 2 x interpole f x precisamos que:

p 2 - 1 = f - 1 ⇔ a 0 + a 1 - 1 + a 2 - 1 2 = 4

p 2 0 = f 0 ⇔ a 0 + a 1 0 + a 2 0 2 = 1

p 2 2 = f 2 ⇔ a 0 + a 1 2 + a 2 2 2 = 3

Jogando numa matriz, teríamos:

1 - 1 1 1 0 0 1 2 4 a 0 a 1 a 2 = 4 1 3

Então ficamos com:

a 0 - a 1 + a 2 = 4 a 0 = 1 a 0 + 2 a 1 + 4 a 2 = 3       I I I I I I

Substituindo a 0 na equação ( I ) :

1 - a 1 + a 2 = 4

a 1 = 1 + a 2 - 4       I V

Substituindo a 0 e a expressão para a 1 na equação I I I :

1 + 2 a 2 - 3 + 4 a 2 = 3

6 a 2 = 8

a 2 = 4 3       V

Substituindo a 2 na equação I V :

a 1 = 4 3 - 3

a 1 = - 5 3

Logo, temos que:

p 2 x = 1 - 5 x 3 + 4 x 2 3

Vamos ver como fica esse polinômio junto com os pontos? Fica assim:

Ele representa bem os pontos dados!!

Bem tranquilo né? O único cuidado que precisamos ter aqui é com a nossa matriz de coeficientes. Lembra que nos métodos de solução de sistemas lineares tínhamos uma série de problemas como, por exemplo, o pivô ser zero ou próximo de zero?

Então imagina se sua matriz de coeficientes só tiver números próximos de zero! Tipo assim:

1 0.001 0.002 1 0.003 0.005 1 0.007 0.007 a 0 a 1 a 2 17 - 5 7

Nós provavelmente não chegaríamos a uma função de interpolação devido aos problemas nos métodos de solução de sistemas lineares. Mas relaxa que vamos nos preocupar com isso mais pra frente haha.

Algoritmo

Achou que ia ter algum algoritmo? Relaxa, era só isso mesmo. Basicamente nós resolvemos sistemas lineares.

O que nós fazemos é pegar o nosso conjuntinho de pontos (os nós de interpolação) e transforma-los em um sisteminha. Bora fazer exercício!

Expandir

Exercício Resolvido #1

Márcia A. Gomes Ruggiero e Vera Lúcia da Rocha Lopes, Cálculo Numérico – Aspectos Teóricos e Computacionais, 2ª ed. São Paulo: MAKRON Books, 1996, pag 256, exercício 1a.

Dada a tabela abaixo, calcule e 3.1 usando um polinômio de interpolação sobre três pontos.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Bom, esse é um exercício bem tranquilo né? É só pra gente dar uma treinada, uma fixada. Vamos lá!

Como queremos saber o valor de f x em 3.1 , vamos escolher 3 pontos próximos de 3.1 . Poderiam ser outros? Sim, nada impede, já que o intuito da interpolação é justamente achar um polinômio que interpole fora de um intervalo dado. Mas vamos pegar pontos perto do que a gente quer para melhorar nossa precisão. Afinal, vai que a gente pegue valores distantes e nossa interpolação não fique fiel o suficiente em 3.1 , tudo é possível né rs. Estamos pegando apenas 3 pontos dentre os 8 disponíveis, erros podem acontecer, ok?

Bem, como estamos interpolando usando 3 pontos chegaremos a um polinômio de segundo grau:

p 2 x = a 0 + a 1 x + a 2 x 2

E como o polinômio interpolador deve ter o mesmo valor da função nos nós de interpolação:

p 2 2.8 = e 2.8 ⇔ a 0 + a 1 2.8 + a 2 2.8 2 = 16.44

p 2 3.0 = e 3.0 ⟺ a 0 + a 1 3.0 + a 2 3.0 2 = 20.08

p 2 3.2 = e 3.2 ⟺ a 0 + a 1 3.2 + a 2 3.2 2 = 24.53

Agora passando para a forma matricial:

1 2.8 7.84 1 3.0 9.0 1 3.2 10.24 a 0 a 1 a 2 = 16.44 20.08 24.53

Passo 2

Agora calculamos esse sistema aí da forma que achar melhor. Vamos por eliminação de Gauss:

1 2.8 7.84 1 3.0 9.0 1 3.2 10.24 16.44 20.08 24.53

→ L 2 ← L 2 - L 1 L 3 ← L 3 - L 1

1 2.8 7.84 0 0.2 1.16 0 0.4 2.4 16.44 3.64 8.09

→ L 3 ← L 3 - 2 L 2

1 2.8 7.84 0 0.2 1.16 0 0 0.08 16.44 3.64 0.81

Disso temos:

a 2 = 0.81 0.08 = 10.125

0.2 a 1 = 3.64 - 1.16 10.125

a 1 = - 40.525

a 0 = 16.44 - 2.8 - 40.525 - 7.84 10.125

a 0 = 50.53

p 2 x = 50.53 - 40.525 x + 10.125 x 2

Passo 3

Show, achamos o polinômio interpolador, mas nosso trabalho não terminou ainda! Temos que jogar o 3.1 na função:

p 2 3.1 = 50.53 - 40.525 3.1 + 10.125 3.1 2

p 2 3.1 = 22.20375

Resposta

p 2 3.1 = 22.20375

Exercício Resolvido #2

Lista 4 – Professor Mauro – UFRJ – Questão 6a

Considere a tabela abaixo:

Usando um Polinômio Interpolador de grau dois, calcule a altura aproximada de uma pessoa com peso de 70   k g .

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Pra ficar mais fácil da gente visualizar vamos botar em ordem crescente de peso:

Como ele quer um polinômio interpolador de grau dois precisamos escolher 3 pontos. Vamos usar:

x 0 = 63

x 1 = 69

x 2 = 73

Então temos:

p 2 63 = f 63 ⇔ a 0 + a 1 63 + a 2 63 2 = 163

p 2 69 = f 69 ⇔ a 0 + a 1 69 + a 2 69 2 = 173

p 2 73 = f 73 ⇔ a 0 + a 1 73 + a 2 73 2 = 178

Passando para a forma matricial:

1 63 3969 1 69 4761 1 73 5329 a 0 a 1 a 2 = 163 173 178

Passo 2

Agora calculamos esse sistema aí da forma que achar melhor. Vamos por eliminação de Gauss:

1 63 3969 1 69 4761 1 73 5329 163 173 178 → L 2 ← L 2 - L 1 L 3 ← L 3 - L 1 1 63 3969 0 6 792 0 10 1360 163 10 15 → L 3 ← L 3 - 5 3 L 2 1 63 3969 0 6 792 0 0 40 163 10 - 5 3

Disso temos:

a 2 = - 5 120 = - 0.0417

6 a 1 = 10 - 792 - 0.0417

a 1 = 7.1667

a 0 = 163 - 63 7.1667 - 3969 - 0.0417

a 0 = - 123.125

p 2 x = - 123.125 + 7.1667 x - 0.0417 x 2

Passo 3

Agora jogamos os 70 quilos na nossa função:

p 2 70 = - 123.125 + 7.1667 ( 70 ) - 0.0417 70 2

p 2 70 = 174.214

Resposta

p 2 70 = 174.214

Exercício Resolvido #3

Richard L. Burden e J. Douglas Faires, Numerical Analysis, 9ª ed. Brooks/Cole, Cengage Learning, pag 114, exercício 1 adaptada.

Para as funções f x abaixo, sejam x 0 = 0 , x 1 = 0.6 e x 2 = 0.9 . Encontre funções de interpolação de grau 1 e 2 para aproximar f 0.45 e encontre o erro absoluto.

a f x = cos ⁡ x

b f x = 1 + x

c f x = ln ⁡ x + 1

d f x = tan ⁡ x

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

a Vamos encontrar o valor de f x nos pontos dados:

f x 0 = cos ⁡ 0 = 1

f x 1 = cos ⁡ 0.6 = 0.82534

f x 2 = cos ⁡ 0.9 = 0.62161

Vamos usar os pontos 0.6 e 0 para a função de interpolação de grau 1 :

a 0 + a 1 0.6 = 0.82534

a 0 + a 1 0 = 1

Logo,

a 0 = 1

a 1 = - 0.2911

Então,

p 1 x = 1 - 0.2911 x

Calculando o valor em 0.45 :

p 1 0.45 = 0.86901

O erro absoluto é:

E A = p 1 0.45 - f 0.45 = 0.03144

Passo 2

Agora usamos os 3 pontos para encontrarmos o polinômio interpolador de grau 2 :

a 0 + a 1 0 + a 2 0 2 = 1

a 0 + a 1 0.6 + a 2 0.6 2 = 0.82534

a 0 + a 1 0.9 + a 2 0.9 2 = 0.62161

Passando pra forma matricial e já aproveitando que a 0 = 1 da primeira equação.

0.6 0.36 0.9 0.81 - 0.17466 - 0.37839 → L 2 ← L 2 - 1.5 L 1 0.6 0.36 0 0.27 - 0.17466 - 0.1164

a 2 = - 0.43111

0.6 a 1 = - 0.17466 - 0.36 - 0.43111

a 1 = - 0.03243

Então,

p 2 x = 1 - 0.03243 x - 0.43111 x 2

Calculando o valor em 0.45 :

p 2 0.45 = 0.89811

O erro absoluto é:

E A = p 2 0.45 - f 0.45 = 0.00234

Passo 3

Vamos encontrar o valor de f x nos pontos dados:

f x 0 = 1 + 0 = 1

f x 1 = 1 + 0.6 = 1.26491

f x 2 = 1 + 0.9 = 1.3784

Vamos usar os pontos 0.6 e 0 para a função de interpolação de grau 1 :

a 0 + a 1 0.6 = 1.26491

a 0 = 1

Logo,

a 0 = 1

a 1 = 0.44152

Então,

p 1 x = 1 + 0.44152 x

Calculando o valor em 0.45 :

p 1 0.45 = 1.19868

O erro absoluto é:

E A = p 1 0.45 - f 0.45 = 0.00548

Passo 4

Agora usamos os 3 pontos para encontrarmos o polinômio interpolador de grau 2 :

a 0 + a 1 0 + a 2 0 2 = 1

a 0 + a 1 0.6 + a 2 0.6 2 = 1.26491

a 0 + a 1 0.9 + a 2 0.9 2 = 1.3784

Passando pra forma matricial e já aproveitando que a 0 = 1 da primeira equação.

0.6 0.36 0.9 0.81 0.26491 0.3785 → L 2 ← L 2 - 1.5 L 1 0.6 0.36 0 0.27 0.26491 - 0.01887

a 2 = - 0.06987

0.6 a 1 = 0.26491 - 0.36 - 0.06987

a 1 = 0.48344

Então,

p 2 x = 1 + 0.48344 x - 0.06987 x 2

Calculando o valor em 0.45 :

p 2 0.45 = 1.2034

O erro absoluto é:

E A = p 2 0.45 - f 0.45 = 7.6 × 10 - 4

Passo 5

Vamos encontrar o valor de f x