Escolar Documentos
Profissional Documentos
Cultura Documentos
1.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.4.2 Exercı́cios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3 Fatoração LU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
iii
iv SUMÁRIO
3 Interpolação Polinomial 45
3.7 Exercı́cios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4 Ajuste de Curvas 73
4.5 Exercı́cios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.3 Exercı́cios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
1
5.4 Regra de Simpson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3
5.4.1 Erro na Regra 13 de Simpson Repetida . . . . . . . . . . . . . . . . . . . . . . . . . 100
3
5.4.2 Regra 8 de Simpson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.5 Integração Numérica via iterações das Regras do Trapézio e Simpson . . . . . . . . . . . . 101
1.1 Introdução
f (x) = 0, (1.1)
x∗ (chamadas raı́zes) para esta equação, e como obter aproximações numéricas para estas soluções, caso
elas existam.
No caso particular em que f (x) = ax2 + bx + c é um polinômio de grau 2, sabemos que f possui raı́zes
√ √
−b + b2 − 4ac −b − b2 − 4ac
x∗1 = ∗
e x2 = .
2a 2a
No entanto, é muito comum nos depararmos com equações reais em uma variável para as quais a
solução exista, mas sua solução pode ter uma expressão analı́tica difı́cil de se obter ou impossı́vel de ser
Esta equação admite solução? Se sim, qual? Como obter uma expressão analı́tica desta solução (se é que
isto é possı́vel)?
O gráfico na Figura 1.1 nos permite ver que f (x) = 0 possui uma solução neste intervalo (entre 0 e
0.5), mas não podemos afirmar mais do que isso. Além disso, não podemos manipular algebricamente a
equação (1.2) para calcular esta raiz explicitamente. O leitor interessado deve-se sentir convidado - ou
1
2 CAPÍTULO 1. ZEROS DE FUNÇÕES REAIS
y
x∗
0
−1
0 0.5 1 1.5 2
x
√
Figura 1.1: Gráfico da função f (x) = 3 x − esen(x) , com x ∈ [0, 2].
desafiado - a tentar.
Tentaremos, então, encontrar um valor numérico aproximado para esta raiz. Para resolver este
problema, estudaremos métodos iterativos, isto é, métodos que, pela repetição de um procedimento,
{x(i) }∞
i=0 = {x
(0)
, x(1) , x(2) , ...}
quando pudermos garantir que a aproximação mais recente está satisfazendo a certos critérios de precisão.
Observação 1.1 A notação x(n) não se refere a uma potência ou a uma derivada, mas a um ı́ndice.
O seguinte teorema nos dá um critério para a existência de raı́zes para a equação f (x) = 0 num
Teorema 1.1 (Teorema de Bolzano) Se f : [a, b] → R, é uma função contı́nua tal que f (a) e f (b)
Observação 1.2 A condição “f (a) e f (b) tem sinais diferentes” é equivalente a f (a) · f (b) < 0.
√
Exemplo 1.1 Se f (x) = 3 x − esen(x) , x ∈ [0, 2], então
√
f (0) = −1 < 0 e f (2) = 3 2 − esen(2) > 0.
1.1. INTRODUÇÃO 3
Pelo Teorema de Bolzano, existe (pelo menos uma!) solução da equação f (x) = 0 no intervalo
x ∈ [0, 2].
Note que o Teorema não garante que exista apenas uma raı́z neste intervalo: é possı́vel existir mais do
que uma. Além disso, se f (a) e f (b) possuı́rem sinais iguais, é possı́vel existir ou não raı́zes no intervalo.
Exemplo 1.2 Se f (x) = −x2 + 5x − 6, x ∈ [1, 5], então f (1) = −2, f (5) = −6. Não podemos aplicar o
teorema de Bolzano, mas a função f (x) possui duas raı́zes no intervalo: x∗1 = 2 e x∗2 = 3.
Exemplo 1.3 Se g(x) = −x2 + 5x − 10, x ∈ [1, 5] então g(1) = −6, g(5) = −10. Não podemos aplicar
Exemplo 1.4 Vamos verificar que existe pelo menos uma solução da equação ex = 2x + 2 no intervalo
(−2, 0).
f (x) = ex − 2x − 2. Agora, como f (−2) = e−2 + 2 > 0 e f (0) = −1 < 0, temos do teorema de Bolzano
que existe pelo menos um zero de f (x) no intervalo (−2, 0). E, portanto, existe pelo menos uma solução
Quando procuramos aproximações para zeros de funções, é aconselhável isolar cada raiz em um
intervalo. Desta forma, gostarı́amos de poder garantir a existência e a unicidade da raiz dentro de um
dado intervalo. A seguinte proposição nos fornece condições suficientes para tanto.
Proposição 1.1 Se f : [a, b] → R é uma função diferenciável, f (a) · f (b) < 0 e f 0 (x) > 0 (ou f 0 (x) < 0)
para todo x ∈ (a, b), então existe um único x∗ ∈ (a, b) tal que f (x∗ ) = 0.
Em outras palavras, para garantirmos que exista um único zero de uma dada função diferenciável
em um intervalo, é suficiente que ela troque de sinal e seja monótona (apenas crescente, ou apenas
Exemplo 1.5 No Exemplo 1.4, mostramos que existe pelo menos um zero de f (x) = ex − 2x − 2 no
intervalo (−2, 0), pois f (x) é contı́nua e f (−2) e f (0) tem sinais diferentes. Agora, observamos que,
além disso, f 0 (x) = ex − 2 e, portanto, f 0 (x) < 0 para todo x ∈ (−2, 0). Logo, da Proposição 1.1, temos
Para se identificar os intervalos onde existam raı́zes de uma função f (x), a análise gráfica é fundamen-
tal. Para isso é recomendado usar alguma ferramenta computacional capaz de traçar gráficos de funções,
Exemplo 1.6 Uma estratégia possı́vel para detectar a existência possı́vel de zeros é montando uma tabela
de valores. Considere f (x) = x3 − 10x + 4. Podemos montar uma tabela de valores para f para tentar
x −10 −5 −4 −3 −2 −1 0 1 2 3 4 5 10
Pela mudança de sinais, vemos que existe uma raiz em (−4, −3), uma raiz em (0, 1) e uma raiz em
(2, 3). Como f é um polinômio de grau 3, ela possui no máximo 3 raı́zes reais, e portanto, não pode
haver mais raı́zes, tanto para valores fora desta tabela, quanto nos três intervalos detectados.
Como trataremos de aproximações para números, convém ter em mente a seguinte discussão sobre erros.
Vamos convencionar que x é uma aproximação para um número real x no sentido óbvio.
Definição 1.1 (Erro absoluto e relativo) Seja x um número real e x, sua aproximação. O erro
|x − x|.
|x − x|
, x 6= 0.
|x|
Observação 1.3 Observe que o erro relativo é adimensional e, muitas vezes, é expresso em porcentagens.
|x − x̄|
× 100%.
|x|
e o erro relativo é
|x − x̄| 456.789
= ≈ 0.00369999 ou 0.36%
|x| 123456.789
1.1. INTRODUÇÃO 5
que parece pequeno se compararmos com o exemplo anterior. Entretanto o erro relativo é
|y − ȳ| 0.10456789
= ≈ 0.08469999 ou 8.4%
|y| 1.23456789
Outra forma de medir a exatidão de uma aproximação numérica é contar o número de dı́gitos signi-
|x − x|
< 5 × 10−s .
|x|
|x − x| 0, 000333
= ≈ 0, 000999 ≤ 5 × 10−3 .
|x| 0, 333333
b) Considere as aproximações x̄1 = 0, 666 e x̄2 = 0, 667 de x = 0, 666888. Os erros relativos são
Note que x̄1 possui 3 dı́gitos significativos corretos e x̄2 possui 4 dı́gitos significativos (o quarto
dı́gito é o dı́gito 0 que não aparece a direita, i.e, x̄2 = 0.6670. Isto também leva a conclusão que x2
|x − x| |10 − 9, 999|
= ≈ 0, 0000999... < 5 × 10−4 .
|x| 10
1 com um dı́gito significativo correto (verifique), enquanto 1, 5 tem zero dı́gito significativo correto,
pois:
|1 − 1, 5|
= 5 × 10−1 < 5 × 100 .
|1|
Exercı́cio 1.1 Usando a ferramenta geradora de gráficos da sua preferência (Recomendação: Desmos
App ou pelo website https://www.desmos.com/), estime um intervalo onde f (x) = x · `n(x) − 1 possua
uma raiz.
Exercı́cio 1.2 Monte uma tabela de valores e identifique onde existam raı́zes para as funções abaixo,
1
com intervalos de comprimento 10 :
(a) x5 − x + 15 = 0
(b) x · e−2x + 3 = 0
2
(c) `n(x) − =0
x
Sugestão: Use o Excel.
Exercı́cio 1.3 Mostre que cos x = x tem solução no intervalo [0, π/2]. Mostre também que esta solução
é única.
Exercı́cio 1.4 Interprete a equação cos(x) = kx como o problema de encontrar a intersecção da curva
y = cos(x) com y = kx. Encontre o valor positivo k para o qual essa equação admite exatamente duas
1
ln(x) + x3 − = 10
x
1.2. O MÉTODO DA BISSECÇÃO 7
possui uma solução para cada v real e que esta solução é única.
O método da bissecção (ou bisseção) explora o fato de que uma função contı́nua f : [a, b] → R com
f (a) · f (b) < 0 tem um único zero no intervalo (a, b) (veja o teorema de Bolzano [1.1]). Assim, a ideia
para aproximar o zero de uma tal função f (x) é tomar, como aproximação inicial, o ponto médio do
Pode ocorrer de f (x(0) ) = 0 e, neste caso, o zero de f (x) é x∗ = x(0) . Caso contrário, pode ocorrer
1. Se f (a) · f (x(0) ) < 0: então x∗ ∈ (a, x(0) ). Neste caso, tomamos como nova aproximação do zero de
f (x) o ponto médio do intervalo [a, x(0) ], isto é, x(1) = (a + x(0) )/2.
2. Se f (x(0) ) · f (b) < 0: então, x∗ ∈ (x(0) , b). Neste caso, tomamos como nova aproximação do zero
de f (x) o ponto médio do intervalo [x(0) , b], isto é, x(1) = (x(0) + b)/2.
Repetimos este procedimento até obtermos a aproximação desejada (veja Figura 1.2).
Exemplo 1.11 Vamos aplicar o método da bissecção à função f (x) = ex − 2x − 2, com x ∈ (−2, 0). Já
donde vê-se que a raiz está entre x(0) e b(0) , pelo teorema de Bolzano aplicado ao intervalo x(0) , b(0) (é
nos extremos deste subintervalo que ocorre troca de sinal). Ou, conforme vimos, f (x(0) ) · f (b(0) ) < 0 ⇒
f (b)
a x(0)
x(1) b x
f (x(0) )
f (a)
Temos:
x a(1) = −1 x(1) = − 21 b(1) = 0
1
f (x) e−1 > 0 e− 2 − 1 < 0 −1 < 0
a(1) + b(1) 3
x(2) = =− .
2 4
Temos:
x a(2) = −1 x(2) = − 43 b(2) = − 21
3 1 1
f (x) e−1 > 0 e− 4 − 2 <0 e− 2 − 1 < 0
y 1
0
x(0) x(2) x(1)
−1
−2 −1.5 −1 −0.5 0
x
Figura 1.3: Pontos gerados pelo método da bissecção aplicados à função f (x) = ex − 2x − 2.
Vimos que o método de bissecção gera uma sequência {x(n) }. Suponha que queiramos obter uma apro-
ximação x(n) para a raiz x∗ de uma equação f (x) = 0 com x no intervalo (a, b), de forma que x(n)
Como sabemos que o intervalo (a(n+1) , b(n+1) ) tem a metade do intervalo (a(n) , b(n) ), para todo n,
então necessariamente após algum n, x(n) estará num intervalo suficientemente pequeno contendo x∗ .
Podemos então enunciar o critério de parada do método da bissecção: Dada uma tolerância ε > 0,
|b(n) − a(n) |
(b) < ε.
2
Se, na n−ésima iteração, nenhuma das duas situações acima ocorre, então iteramos mais uma véz o
método, obtendo a(n+1) , b(n+1) , x(n+1) e verificamos os itens (a) e (b) do critério novamente.
Observação 1.4 É incomum que aconteça a situação (a), sendo o critério (b) o mais usado.
Observação 1.5 Em geral, ε é um número positivo e relativamente próximo de zero, por exemplo,
ε = 10−3 . Não faz sentido escolher valores grandes (maiores que 1, por exemplo) para ε pois a margem
√ √
( 2)3 = 2 ⇒ ( 2)3 − 2 = 0,
3 3
√
basta escolher f (x) = x3 − 2. Como − 3 2 também é solução desta equação, escolheremos o intervalo
Assim, a(0) = 1, b(0) = 2 e iteramos até obter a aproximação desejada, conforme a tabela 1.1. Atente-
se para o detalhe que, se f (a(n) )f (x(n) ) < 0, então x∗ está entre a(n) e x(n) ; caso contrário, está entre
x(n) e b(n) .
|b(n) − a(n) |
n a(n) x(n) b(n) f (a(n) )f (x(n) )
2
0 1 1.5 2 <0 0.5 > ε
1 1 1.25 1.5 >0 0.25 > ε
2 1.25 1.375 1.5 <0 0.125 > ε
3 1.25 1.3125 1.375 <0 0.0625 > ε
4 1.25 1.28125 1.3125 <0 0.03125 < ε
Por fim, note que, como x(4) é o ponto médio do intervalo (a(4) , b(4) ), então a distância de x(4) até x∗
(ou seja, o erro absoluto da aproximação) é menor que a metade do comprimento do intervalo (a(4) , b(4) ).
Ou seja:
|b(4) − a(4) |
|x∗ − x(4) | < = 0.03125 < ε.
2
Vamos agora discutir sobre a convergência do método da bissecção, que é garantida pelo Teorema 1.2.
Teorema 1.2 (Convergência do método da bissecção) Sejam f : [a, b] → R uma função contı́nua
tal que f (a) · f (b) < 0 e x∗ o único zero de f (x) no intervalo (a, b). Então, a sequência {x(n) }n≥0 do
Prova: Conforme já discutido, a cada iteração a distância entre a aproximação x(n) e o zero x∗ da
função é menor ou igual que a metade do tamanho do intervalo [a(n) , b(n) ] (veja Figura 1.2), isto é:
b(n) − a(n)
|x(n) − x∗ | ≤ .
2
b(n−1) − a(n−1)
b(n) − a(n) = .
2
Desta forma:
b−a
Se n → ∞, 2n+1 → 0. Pelo Teorema do Confronto (vulgo “Teorema do Sanduı́che”),
lim |x(n) − x∗ | = 0.
n→∞
Exemplo 1.13 A partir do exemplo 1.11, depois de calculada a aproximação inicial x(0) = −1 ∈ [a, b] =
[−2, 0], podemos estimar o número de iterações suficientes do método da bissecção para computar uma
b−a
|x(n) − x∗ | ≤ , n ≥ 0.
2n+1
Logo, temos:
b−a 2
|x(n) − x∗ | < = n+1 = 2−n ,
2n+1 2
12 CAPÍTULO 1. ZEROS DE FUNÇÕES REAIS
3`n(10)
⇒ n> ≈ 9.96.
`n(2)
Como n precisa ser inteiro, n = 10 iterações são suficientes. É possı́vel que a precisão seja atingida
O método da bissecção tem a boa propriedade de garantia de convergência, bem como de fornecer
Exercı́cios da Seção
√
Exercı́cio 1.7 Considere a equação x = cos(x). Use o método da bissecção com intervalo inicial
[a, b] = [0, 1] e x(0) = (a + b)/2 para calcular a aproximação x(4) da solução desta equação.
Exercı́cio 1.8 Trace o gráfico e isole as três primeiras raı́zes positivas da função:
x
f (x) = 5 sen(x2 ) − e 10
em intervalos de comprimento 0.1. Então, use o método da bissecção para obter aproximações dos zeros
convergem?
Exercı́cio 1.10 Para cada uma das equações abaixo, estime o número de iterações necessárias para se
obter aproximações para as raı́zes, pelo método da bissecção, com duas casas decimais corretas. Use o
método da bissecção para obter aproximações dessas raı́zes. Se a equação possuir mais o que uma solução,
aproxime a menor raiz positiva. A quais soluções analı́ticas estas aproximações correspondem?
1.3. ARREDONDAMENTO E TRUNCAMENTO 13
(b) x3 − 7 = 0
(c) tan(x) − 2 = 0
Exercı́cio 1.11 Obtenha uma aproximação para π com cinco casas decimais corretas pelo método da
Bissecção.
Vamos nos familiarizar com duas maneiras distintas de se limitar a quantidade de dı́gitos de um número.
x = 12.3456789
e suponha que desejamos (ou estejamos limitados a!) trabalhar com apenas três dı́gitos após a vı́rgula
separadora. Assim, podemos efetuar um arredondamento para o número mais próximo com três casas
xarr = 12.346
ou um truncamento na terceira casa decimal, que consiste em descartar tudo após a terceira casa
decimal:
xtru = 12.345
Observa-se que o arredondamento diminui o erro (pois está mais próximo!) cometido ao se limitar
uma operação a mais (a de se decidir para qual número se deve realizar a alteração). Nos métodos que
estamos estudando, é usual efetuar o truncamento dos números, e não o arredondamento, pelo seguinte
motivo: havendo garantia de convergência da sequência gerada por um método iterativo (como o método
14 CAPÍTULO 1. ZEROS DE FUNÇÕES REAIS
da bissecção, ou o método de Newton, a seguir), a cada nova iteração o próximo elemento está mais
Finalmente, caso queiramos uma aproximação x̄ para a solução exata x∗ de uma equação f (x) = 0
com n casas decimais corretas, ou para atender a uma tolerância ε = 10−n , é preciso trabalhar com um
número de casas decimais maior que n (este que vos escreve prefere n + 2 ou mais). Garantindo n casas
corretas, o arredondamento não fará diferença; mais um motivo pelo qual truncamento é mais vantajoso.
Estudemos o método de Newton-Raphson (chamaremos apenas de método de Newton) para calcular zeros
Consideramos que x∗ seja um zero de uma dada função y = f (x), derivável e que cuja derivada seja
contı́nua. Vamos introduzir o método de Newton, cujas iterações são dada por:
f x(n)
(n+1) (n)
x =x − 0 (n) , n ≥ 0, (1.3)
f x
sendo x(0) uma aproximação inicial dada ou escolhida (veremos mais adiante como a escolha de x(0) deve
ser feita).
Vejamos uma justificativa geométrica para a equação (1.3). Seja uma dada função f (x) conforme
Figura 1.4. Para tanto, escolhemos uma aproximação inicial x(0) . Como a função é derivável, existe
uma reta tangente ao seu gráfico pelo ponto (x(0) , f (x(0) )).
Geometricamente, o ponto x(1) (próximo elemento da sequência) é a interseção desta reta tangente
com o eixo das abscissas. Com efeito, a equação desta reta é:
Assim, a interseção desta reta com o eixo das abscissas (y = 0) ocorre quando:
f (x(0) )
f 0 (x(0) )(x − x(0) ) + f (x(0) ) = 0 ⇒ x = x(0) − .
f 0 (x(0) )
f (x(0) )
x(1) = x(0) − .
f 0 (x(0) )
1.4. MÉTODO DE NEWTON 15
y
f (x(0) )
f (x(1) )
f (x(2) ) x
∗ (2) (1) (0)
x x x x
Ou seja, dada a aproximação x(n) , a próxima aproximação x(n+1) é o ponto de interseção entre o eixo
das abscissas e a reta tangente ao gráfico da função em x = x(n) . Observe a Figura 1.4.
Exemplo 1.14 Considere a função f (x) = ex − 2x − 2, que possui um único zero no intervalo (−2, 0).
(n)
ex − 2x(n) − 2
x(n+1) = x(n) − .
ex(n) − 2
As iterações são:
n = 0 ⇒ x(1) = −0.7746003264394359,
n = 1 ⇒ x(2) = −0.7680455068651546,
n = 2 ⇒ x(3) = −0.7680390470197671,
n = 3 ⇒ x(4) = −0.7680390470134656.
Podemos checar que, de fato, estes números estão sucessivamente mais próximos de um número x∗
16 CAPÍTULO 1. ZEROS DE FUNÇÕES REAIS
onde f (x∗ ) = 0:
f (x(0) ) = 0.3678794411714423,
f (x(1) ) = 0.01008860179942772,
No exemplo anterior, evidenciamos que o método de Newton consegue produzir uma sequência que
converge para uma raiz de maneira muito mais rápida que o método da bissecção, fazendo deste método
muito mais eficiente caso a função envolvida seja derivável. Vejamos algumas condições para a con-
Teorema 1.3 Seja f função com derivadas de primeira e segunda ordem contı́nuas num intervalo (a, b).
Assuma que exista x∗ ∈ (a, b) tal que f (x∗ ) = 0, f 0 (x∗ ) 6= 0. Então existe um número δ > 0, tal que a
sequência gerada pelo método de Newton converge para x∗ se a aproximação inicial x(0) ∈ (p − δ, p + δ).
O teorema acima nos diz que a aproximação inicial x(0) deve ser escolhida suficientemente próxima de
gerará uma sequência convergente para x∗ pelo método de Newton. Se a aproximação inicial for escolhida
afastada demais da raiz, não há garantia de convergência (veja a Figura 1.5). Este valor δ pode ser
calculado (ver [4]), mas na prática, se não for clara qual escolha inicial fazer, convém aplicar uma
combinação do método da bissecção (para obter um intervalo pequeno onde temos certeza da existência
Recorde que, no método de Bissecção, sempre havia a certeza de que a raiz está num intervalo de
determinado comprimento, de forma que podemos estimar a distância entre a aproximação e a raiz
mesmo sem conhecê-la. No método de Newton, esta estimativa não é tão simples, pois depende da
Podemos adotar então dois critérios distintos, que podem ser checados de maneira independente ou
x(1) mais
perto de x∗ x
Boa escolha Má escolha x(1) mais
para x(0) para x(0) longe de x∗
- ,
Suponha que o método de Newton tenha gerado aproximações x(0) , x(1) , x(2) , ... de uma sequência que
converge para x∗ . Como estes números tornam-se sucessivamente mais próximos de x∗ , eles também
ficam cada vez mais próximos um do outro, isto é, para qualquer > 0, existe n grande o suficiente para
que
Assim, por este critério, x(n) é a aproximação desejada se a equação (1.4) for satisfeita para uma
tolerância dada.
Como queremos uma aproximação para x∗ tal que f (x∗ ) = 0, então podemos avaliar se |f (x(n) )| < ,
para uma tolerância dada. Em outras palavras, por este critério, x(n) é a aproximação desejada se
√
x = ex − 1
com x ∈ (0.5, 1), satisfazendo a uma tolerância = 10−10 sobre os dois critérios acima. A solução da
Critério 1 Critério 2
(n)
n x |x − x(n−1) |
(n)
|f (x(n) )|
0 0.6 - 0.0475...>
1 0.5596113719844684 0.0017...> 0.0019...>
2 0.5578357709891212 3.4339... · 10−6 > 3.6999 · 10−6 >
3 0.5578323370066668 3.4058... · 10−12 < 1.3838 · 10−11 <
√
Tabela 1.2: Iterações do método de Newton para f (x) = ex − x − 1, x(0) = 0.6 até verificar a tolerância
= 10−10 .
cujo gráfico encontra-se na Figura 1.6. O processo iterativo do método de Newton aplicado a esta função
é: √
(n)
(n+1) (n) ex − x(n) − 1
x =x − .
ex(n) − √1 (n)
2 x
0.8
0.6
0.4
y
0.2
0
x∗
Escolhamos então a aproximação inicial x(0) = 0.6. Fazendo as iterações e checando os dois critérios
Observação 1.6 Em geral o critério 1 é mais adequado; é possı́vel construir uma função f (x) tal que,
para uma dada raiz x∗ e uma tolerância , o critério 2 seja satisfeito mas o critério 1 não. Além disso,
Vamos continuar a partir do Exemplo 1.15, realizando iterações do método de Newton, trabalhando
1.4. MÉTODO DE NEWTON 19
sempre com 16 dı́gitos após a vı́rgula; obteremos então os números da Tabela 1.3. Note que, após 4
n x(n)
0 0.6
1 0.5596113719844684
2 0.5578357709891212
3 0.5578323370066668
4 0.5578323369938233
5 0.5578323369938233
6 0.5578323369938233
√
Tabela 1.3: Cinco iterações do método de Newton para f (x) = ex − x − 1, x(0) = 0.6.
Se prosseguirmos com o processo, sempre com 16 casas decimais, o método produzirá sempre a mesma
aproximação. Isso significa que esta aproximação coincide com a solução x∗ nestas primeiras 16 casas
decimais; em outras palavras, estes dı́gitos se tornaram estáveis. Para calcular mais dı́gitos corretos para
esta aproximação, precisarı́amos de uma ferramente computacional capaz de representar mais dı́gitos;
a maioria das calculadoras cientı́ficas possui 10 dı́gitos e portanto não podem ser usadas para calcular
Assim, se quisermos obter, via método de Newton, uma aproximação para uma raiz x∗ com n casas
decimais corretas, basta fazer iterações até que se obtenha estabilidade em n dı́gitos significativos.
1.4.2 Exercı́cios
Exercı́cio 1.12 Encontre a raiz positiva da função f (x) = cos(x) − x2 pelo método de Newton iniciando
com x(0) = 1. Realize a iteração até obter estabilidade no quinto dı́gito significativo.
tan(x) = 2x2 .
a) Use o método gráfico para isolar as duas primeiras raı́zes positivas em pequenos intervalos. Use a
teoria para argumentar quanto à existência e unicidade das raı́zes dentro dos intervalos escolhidos.
b) Calcule cada uma das raı́zes pelo método de Newton com oito dı́gitos significativos.
20 CAPÍTULO 1. ZEROS DE FUNÇÕES REAIS
Exercı́cio 1.14 Isole e encontre as cinco primeiras raı́zes positivas da equação com 6 dı́gitos corretos
cos(10x) = e−x .
Exercı́cio 1.15 Encontre as raı́zes do polinômio f (x) = x4 − 4x2 + 4 através do método de Newton. O
x5
Exercı́cio 1.16 Encontre as raı́zes reais do polinômio f (x) = 100 + x4 + 3x + 1 isolando-as analisando
o gráfico e depois usando o método de Newton. Expresse a solução com 7 dı́gitos significativos.
Exercı́cio 1.17 Considere o método de Newton aplicado para encontrar a raiz de f (x) = x3 − 2x + 2.
O que acontece quando x(0) = 0? Escolha um valor adequado para inicializar o método e obter a única
2.1 Introdução
ESCREVER
Para minimizar o esforço computacional na resolução de um sistema linear AX = B (veja [6] para
recordar sistemas lineares e matrizes) uma estratégia possı́vel de ser adotada é escrever a matriz A numa
forma que diminua a quantidade de operações para se resolver o sistema. Se optarmos por usar matrizes
Primeiro, vejamos como obter a solução de um sistema linear cuja matriz é triangular. Considere um
a a12 ··· a1n x1 b
11 1
0 a22 ··· a2n
x2 b2
=
. .. ..
.. . .
.
. . . . .. ..
0 ... 0 ann xn bn
Vamos supor que o sistema admita uma única solução. Podemos resolver esse sistema iniciando pela
xn = bn /ann
21
22 CAPÍTULO 2. SISTEMAS LINEARES E MATRIZES
2 1 3 x 0 2x + y + 3z =0
−1 y = 1 que equivale a −y + 4z
0 4 =1
0 0 3 z −3 3z = −3
É imediato ver que o determinante da matriz A é −6,logo o sistema possui uma única solução. Da
2.3 Fatoração LU
Considere um sistema linear AX = B. A fim de resolver o sistema, podemos fatorar a matriz A como o
produto de uma matriz L triangular inferior (“Lower”) e uma matriz U triangular superior (“U pper”),
ou seja, A = LU .
2.3. FATORAÇÃO LU 23
AX = B (2.1)
(LU )X = B (2.2)
L(U X) = B (2.3)
LY = B e UX = Y (2.4)
Isto significa que, ao invés de resolvermos o sistema original, podemos resolver o sistema triangular
AX = B.
normal, as operações são feitas sobre a matriz A e não sobre a matriz aumentada do sistema (veja [6]).
Assim, por exemplo, em situações onde se precise resolver o sistema AX = B várias vezes por segundo,
Obteremos a fatoração LU de uma matriz A por via da eliminação de Gauss. Vamos considerar um
a11 x1 + a12 x2 + a13 x3 = b1
a21 x1 + a22 x2 + a23 x3 = b2
a31 x1 + a32 x2 + a33 x3 = b3
onde:
a11 a12 a13 x1 b1
A=
a21 a22 , X = x2 e B = b2 .
a23
a31 a32 a33 x3 b3
(0) (0) (0)
a11 a12 a13
A(0)
(0) (0) (0)
=
a21 a22 a23
(0) (0) (0)
a31 a32 a33
Significa que devemos realizar operações elementares de forma a transformar os elementos abaixo da
Para que os dois últimos elementos da primeira coluna de A(0) tornem-se zero, é preciso realizar as
(0)
operações elementares (supondo a11 6= 0):
(0)
a21
L2 − (0)
· L1 → L2 ,
a11
e
(0)
a31
L3 − (0)
· L1 → L3 ,
a11
(0) (0)
a21 a
m21 = (0)
, m31 = 31
(0)
.
a11 a11
Realizando estas operações sobre a matriz A(0) , obtemos uma nova matriz (que chamaremos de A(1) ):
(0) (0) (0) (1) (1) (1)
a11 a12 a13 a11 a12 a13
(1)
(0)
a − m a(0) (0) (0) (0) (0) (1) (1)
a22 − m21 a12 a23 − m21 a13 = 0 a22 a23 =A .
21 21 11
(0) (0) (0) (0) (0) (0) (1) (1)
a31 − m31 a11 a32 − m31 a12 a33 − m31 a13 0 a32 a33
(1)
Supondo que a22 6= 0, continuamos o procedimento: para que o elemento na terceira linha, segunda
(1)
a32
L3 − (1)
· L2 → L3 ,
a22
Realizando estas operações sobre a matriz A(1) , obtemos uma nova matriz (que chamaremos de A(2) ):
(1) (1) (1) (2) (2) (2)
a11 a12 a13 a11 a12 a13
(1) (1) (2) (2) (2)
= 0
=A .
0 a22 a23 a22 a23
(1) (1) (1) (2)
0 a32 − m32 a2 2(1) a33 − m32 a23 0 0 a33
Note que A(2) é triangular superior, portanto não precisamos mais realizar operações elementares.
2.3. FATORAÇÃO LU 25
Então chamaremos A(2) de U . Com os multiplicadores m21 , m31 e m32 , obtemos a seguinte matriz:
1 0 0
L=
m21 1 0
m31 m32 1
A = L · U,
1 1 1
2
1 −1
2 −1 1
1 1 1 1 1 1 1 1 1
2
1 −1 L2 − 2L1 → L2 0
−1 −3
0
−1 −3
2 −1 1 L3 − 2L1 → L3 0 −3 −1 L3 − 3L2 → L3 0 0 8
1 0 0 1 1 1
A=
2 1 0
0
−1 −3.
2 3 1 0 0 8
Exemplo 2.3 Vamos usar a fatoração do exemplo anterior para resolver o sistema
1 1 1 x1 −2
−1 x2 = 1 .
2 1
2 −1 1 x3 3
26 CAPÍTULO 2. SISTEMAS LINEARES E MATRIZES
Usando a fatoração LU :
1 0 0 1 1 1 x1 −2
−1 −3 x2 = 1
2 1 0 0
2 3 1 0 0 8 x3 3
Chamando
1 1 1 x1 y1
−1 −3 x2 = y2 (2.5)
0
0 0 8 x3 y3
então
1 0 0 y1 −2
y2 = 1
2 1 0
2 3 1 y3 3
y1 = −2
⇒ y2 = 1 − 2y1 = 5 .
1 1 1 x1 −2
−1 −3 x2 = 5
0
0 0 8 x3 −8
2.3. FATORAÇÃO LU 27
cuja solução pode ser calculada facilmente por substituição (começando por baixo):
−8
x3 = 8 = −1
5+3x3 5−3 .
⇒ x2 = −1 = −1 = −2
⇒ x1 = −2 − x2 − x1 = −2 + 2 + 1 = 1
Exercı́cios
Exercı́cio 2.1 Obtenha a fatoração LU das matrizes A abaixo e use-as para resolver o sistema AX = B,
se possı́vel, onde B é o vetor informado em cada caso. Você pode permutar linhas da matriz A, se
necessário.
3 1 4 1
(a) A =
0 2 3 , B = −3
1 2 1 4
0 1
2 2
(b) A =
3 , B = 0
−1 2
1 1 0 3
1 2 1 −1
(c) A =
2 4 2 , B =
1
1 3 −1 2
Exercı́cio 2.2 Use a fatoração LU das matrizes abaixo para calcular seu determinante e sua inversa.
1 2 1
(a) A =
2 4 2
1 3 −1
0.6326 0.5931 0.6546
(b) A =
0.4707 0.05192 0.002327
0.3156 0.8602 0.04206
28 CAPÍTULO 2. SISTEMAS LINEARES E MATRIZES
0.9031 0.6470.8513
(c) A =
0.5442 0.04307 0.664
0.4092 −0.1464 −0.1411
Nesta seção, obteremos a fatoração de Cholesky de uma matriz A a partir de sua fatoração LU. Esta
fatoração permite escrever A na forma A = G · Gt , onde G é uma matriz triangular inferior. No entanto,
Definição 2.1 Uma matriz simétrica An×n é definida positiva se, para todo vetor
x1
. n
.
. ∈R ,
X=
xn
tivermos
X t AX > 0.
Teorema 2.1 [Critério de Sylvester] Seja An×n matriz simétrica e Ak a submatriz k × k de A obtida
A1 = 2 ⇒ det(A1 ) = 2 > 0.
2 −1
A2 = ⇒ det(A2 ) = 3 > 0.
−1 2
2.4. FATORAÇÃO DE CHOLESKY 29
2 −1 0
A3 =
−1 2 −1 ⇒ det(A3 ) = 4 > 0.
0 −1 2
Teorema 2.2 Uma matriz A é definida positiva se e somente se ela pode ser escrita como um produto
A = LDLt ,
onde L é triangular inferior cujos elementos da diagonal principal são todos iguais a 1, e D é uma matriz
Note que, se D é uma matriz diagonal cujos elementos da diagonal principal são todos positivos,
digamos:
a 0 ··· 0
11
0 a22 ··· 0
, aii > 0, ∀i = 1, ..., n,
. .. .. ..
. .
. . .
0 0 ··· ann
D =D·D
onde
√
a 0 ··· 0
11
√
0 a22 ··· 0
D= . .
. .. .. ..
. . . .
√
0 0 ··· ann
30 CAPÍTULO 2. SISTEMAS LINEARES E MATRIZES
Como esta D é simétrica (pois é diagonal), então usando o Teorema 2.2, temos:
A = L · D · Lt
= L · D · D · Lt
t
= (L · D) · (D · Lt )
= (L · D) · (L · D)t
Chamando G = L · D, concluiremos que a matriz A, simétrica e definida positiva, pode ser escrita
como:
A = G · Gt (2.6)
A fatoração de Cholesky pode ser obtida a partir da fatoração LU de A, da seguinte maneira: seja A
A matriz L possui em sua diagonal principal apenas o número 1. Como a matriz U é triangular
D é triangular superior.
Como U t é triangular inferior, todos os elementos acima da diagonal são zero; por escalonamento, a
matriz D também será triangular inferior (verifique!). Como ela já é triangular superior, D é diagonal.
Como U t = M D, U = Dt M t = DM t , e temos
A = LDM t .
Usando um resultado presente em [2], é possı́vel provar que M = L (segue da simetria de A) e que todos
os elementos da diagonal principal de D são positivos (segue de A ser definida positiva). O fator de
1 0 0 0 16 −4 12 −4
− 1 1 0 0
0 1 2 0
4
A = LU =
3
2 1 0 0 0 1 1
4
− 14 0 1 1 0 0 0 81
16 0 0 0
0 1 0 0
D=
0 0 1 0
0 0 0 81
donde
4 0 0 0
0 1 0 0
D=
0 0 1 0
0 0 0 9
e o fator de Cholesky de A é
40 0 0
−1 1 0 0
G = LD =
3 2 1 0
−1 0 1 9
Exercı́cios
Exercı́cio 2.3 Verifique se as matrizes simétricas abaixo são positivas definidas. Se forem, encontre a
16 −8 −4 16 −12 −12 −16
(a) A = −8 29 12
−12 25 1 −4
(b) A =
−4 12 41 −12 1 17 14
−16 −4 14 57
32 CAPÍTULO 2. SISTEMAS LINEARES E MATRIZES
4 1 2 0.5 2
1 0.5 0 0 0
(c) A =
2 0 3 0 0
0.5 0 0 0.625 0
2 0 0 0 16
... 2 ... ...
... 8 10 −8
A= = GGt ,
3 10 14 −5
... −8 ... 29
obteve-se
1 0 0 0
2 ... 0 0
G=
... 2 1 0
0 −4 ... 2
Nas seções anteriores, tratamos de métodos diretos para a resolução de sistemas lineares. Em um método
direto (por exemplo, solução via fatoração LU) obtemos a solução (ou uma aproximação, devido a trun-
camento) após realizarmos um número finito de operações (só teremos a solução ao final do processo).
Veremos dois métodos iterativos básicos para obter uma aproximação para a solução de um sistema
linear. Geralmente em um método iterativo, iniciamos com uma aproximação para a solução (que pode
representar um erro grande em comparação com a solução exata) e vamos melhorando essa aproximação
Embora os exemplos feitos sejam para matrizes pequenas, deve-se considerar a dificuldade compu-
tacional de se resolver sistemas lineares AX = B para matrizes muito grandes. Nessa situação em
que a solução existe mas pode ser de obtenção inacessı́vel é que estes métodos iterativos para se obter
O método de Jacobi (também conhecido como Gauss-Jacobi, Jacobi-Richardson ou Método dos Deslo-
a11 x1 + a12 x2 + · · · + a1n xn = b1
a21 x1 + a22 x2 + · · · + a2n xn
= b2
.. ..
. .
a x + a x + ··· + a x
n1 1 n2 2 nn n = bn
(assumiremos que os elementos da diagonal principal da matriz deste sistema são todos não-nulos; mais
sobre isso adiante; assumiremos também que o sistema possui uma única solução) isolando-se o elemento
(k) (k)
b1 − a12 x2 + · · · + a1n xn
(k+1)
x1 =
a11
(k) (k) (k)
b2 − a21 x1 + a23 x3 + · · · + a2n xn
(k+1)
x2 =
a22
(2.7)
..
.
(k) (k) (k)
bn − an1 x1 + · · · + an,n−2 xn−2 + an,n−1 xn−1
x(k+1)
= .
n
ann
(0)
x1
(0)
x
2
X (0) = .
.
.
(0)
xn
pode ser escolhido como um vetor arbitrário qualquer (veja a seção “Critério de Convergência” abaixo).
34 CAPÍTULO 2. SISTEMAS LINEARES E MATRIZES
b
1
b2
.
.
.
bn
usando o método de Jacobi iniciando com x(0) = y (0) = 0. Como o sistema só tem duas equações e duas
x 2
= .
y 3
Veremos que a sequência gerada pelo Método de Jacobi aproxima-se desta solução conforme k cresce.
Isolando x na primeira linha, y na segunda linha e colocando os ı́ndices das iterações, temos o processo
iterativo:
x(k+1) 23−y (k)
=
10
y (k+1) 26−x(k)
=
8
x(1) 23−y (0) 23−0
= = = 2.3
10 10
(0)
.
y (1) 26−x 26−0
= = = 3.25
8 8
x(2) 23−y (1) 23−3.25
= = = 1.975
10 10
(1)
.
y (2) 26−x 26−2.3
= = = 2.9625
8 8
x(3) 23−y (2)
= = 2.00375
10
(2)
.
y (3) 26−x
= = 3.003125
8
E assim sucessivamente.
Exercı́cio 2.5 Realize três iterações do Método de Jacobi aplicado ao sistema linear do Exemplo 2.6
usando a aproximação inicial x(0) = 10, y (0) = −15. Verifique que a sequência gerada aproxima-se da
solução exata.
O processo iterativo (2.7) pode ser escrito em forma matricial da seguinte maneira: a partir da matriz A
A = L + D + U,
onde L é triangular inferior (formada pela parte de A abaixo da diagonal principal), D é diagonal (formada
Exemplo 2.7
1 2 3 0 0 0 1 0 0 0 2 3
A = 4 5 =
6 4 0 +
0 0 5 +
0 0 0 6 = L + D + U, respectivamente.
7 8 9 7 8 0 0 0 9 0 0 0
Suponha det(D) 6= 0 (se for zero, podemos realizar operações elementares sobre o sistema para obter
um novo sistema cuja diagonal principal da matriz seja formada apenas por elementos não nulos; recorde
que operações elementares não alteram a solução do sistema). Podemos reescrever o sistema:
AX = B
⇒ (L + D + U )X = B
⇒ DX = −(L + U )X + B
⇒ X = −D−1 (L + U )X + D−1 B.
Considere o sistema AX = B e uma tolerância > 0; assumiremos que o solução admite uma única
solução X ∗ (A é n × n e det(A) 6= 0). Sejam X (k+1) , X (k) duas aproximações consecutivas do método
de Jacobi.
(k+1) (k)
d(k+1) = máx 1≤i≤n |xi − xi |.
Em outras palavras, d(k+1) é maior módulo entre as coordenadas do vetor X (k+1) − X (k) , para
k = 0, 1, ....
1.975 2.00375
X (2) = (3)
,X = ,
2.9625 3.003125
então
2.00375 − 1.975 2.00375 − 1.975 0.02875
X (3) − X (2) = = =
3.003125 − 2.9625 3.003125 − 2.9625 0.040625
Como as duas coordenadas são positivas, elas coincidem com os seus respectivos módulos e portanto
d(3) = 0.040625.
1
X (0) =
1 .
−1
2.6. MÉTODO DE JACOBI 37
com o qual obtemos os seguintes resultados (trabalhando com apenas duas casas decimais e trunca-
mento):
1
• A aproximação inicial: X (0) =
1
−1
−0.50 −1.5
• Para k = 0: X (1) = (1) (0) (1)
0.80 , X − X = −0.2 e d = 2.14.
−3.14 −2.14
−1.08 −0.58
• Para k = 1: X (2) = (2) (1) (2)
1.82 , X − X = 1.02 e d = 1.02.
−2.62 0.51
−0.70 0.38
• Para k = 2: X (3) = (3) (2) (3)
1.96 , X − X = 0.13 e d = 0.38.
−2.90 −0.27
−0.73 −0.03
• Para k = 3: X (4) =
1.86 , X (4) − X (3) = −0.09 e d(4) = 0.16.
−3.06 −0.16
− 79
−0.77
12 ≈ 1.91 .
X= 23
− 109
36 −3.02
Se quisermos satisfazer a uma certa tolerância > 0 informada, devemos realizar iterações do método
até que tenhamos d(k+1) < . (Compare com o Critério 1 do Método de Newton, do primeiro capı́tulo).
d(k+1)
d(k+1)
r = (k+1)
,
máx 1≤i≤n |xi |
38 CAPÍTULO 2. SISTEMAS LINEARES E MATRIZES
(k+1)
(ver [5]), obtendo uma espécie de avaliação sobre o erro relativo; dr nada mais é do que d(k+1)
(k+1)
k dr
2.14
0 3.14 = 0.68
1.02
1 2.62 = 0.39
0.38
2 2.90 = 0.13
0.16
3 3.06 = 0.05
Seja AX = B um sistema linear, A uma matriz n × n com det(A) 6= 0. Considere os seguintes números:
n
X
|akj |
j=1
j6=k
αk = .
|akk |
Se αk ≤ 1 para todo k = 1, ..., n, então o método de Jacobi produz uma sequência {X (n) } que converge
para a solução X ∗ do sistema AX = B, independente da escolha da aproximação inicial X (0) (veja uma
−4 1 1
A=
2 5 1
2 3 7
donde podemos garantir que as iterações do método de Jacobi convergem para a solução exata.
2.7. MÉTODO DE GAUSS-SEIDEL 39
Em outras palavras, os números αk comparam, na linha k de A, a soma dos módulos dos termos fora
Exercı́cios
Exercı́cio 2.6 Verifique as condições para aplicar o método de Gauss-Jacobi e resolva os sistemas por
16x1 + 5x2
= 21
(a) , = 0.001 sobre erro relativo.
3x1 + 2.5x2
= 5.5
0.252x1 + 0.26x2 + 0.12x3 = 7
(b)
0.112x1 + 0.16x2 + 0.24x3 = 8 , = 0.05.
0.147x1 + 0.21x2 + 0.25x3 = 9
uma matriz n × n com det(A) 6= 0, escreve-se um processo iterativo de forma a obter-se uma aproximação
para a solução exata X ∗ . Usaremos a mesma notação e nomenclatura do método de Jacobi. A diferença
(k+1) (k+1)
no Método de Gauss-Seidel é que, em cada iteração k, ao se calcular x2 , o valor x1 já foi calculado;
(k) (k+1) (k+1) (k+1) (k) (k)
então ele é usado (ao invés de x1 ); ao se calcular x3 , usa-se x1 e x2 (ao invés de x1 e x2 ),
e assim sucessivamente.
Assim, se o sistema é
a11 x1 + a12 x2 + · · · + a1n xn = b1
a21 x1 + a22 x2 + · · · + a2n xn
= b2
.. .. ,
. .
a x + a x + ··· + a x
n1 1 n2 2 nn n = bn
40 CAPÍTULO 2. SISTEMAS LINEARES E MATRIZES
(k) (k)
b1 − a12 x2 + · · · + a1n xn
(k+1)
x1 =
a11
(k+1) (k) (k)
b2 − a21 x1 + a23 x3 + · · · + a2n xn
(k+1)
x2 =
a22
(2.9)
..
.
(k+1) (k+1) (k+1)
bn − an1 x1 + · · · + an,n−2 xn−2 + an,n−1 xn−1
x(k+1)
= .
n
ann
Por ser muito similar ao Método de Jacobi, os mesmos critérios de parada são utilizados.
Exemplo 2.12 Para podermos comparar com o método de Jacobi, vamos refazer um exemplo 2.9 da
−4x1 + x2 + x3 =2
2x1 + 5x2 + x3 =5 .
2x1 + 3x2 + 7x3 = −17
1
X (0) =
1 .
−1
(compare com o processo iterativo obtido no Exemplo 2.9) com o qual obtemos os seguintes resultados
−0.50 −1.5
(1) 1.88
• Para k = 0: X (1) = (1) (0) (1)
1.4 , X − X = 0.4 e d = 1.88, dr = 2.88 = 0.6527....
−2.88 −1.88
−0.87 −0.37
(2) 0.52
• Para k = 1: X (2) = (2) (1) (2)
1.92 , X − X = 0.52 e d = 0.52, dr = 3.00 = 0.1733....
−3.00 −0.12
−0.77 0.1
(3) 0.02
• Para k = 2: X (3) = (3) (2) (3)
1.90 , X − X = −0.02 e d = 0.02, dr = 3.02 = 0.00662....
−3.02 −0.02
−0.78 −0.01
(4) 0.01
• Para k = 3: X (4) = (4) (3) (4)
1.91 , X − X = 0.01 e d ≈ 0.01, dr = 3.02 = 0.00331....
−3.02 0.00
7
−
9 −0.77
X = 12 ≈ 1.91
23
.
− 109
36 −3.02
(L + D + U )X = B
⇒ (L + D)X = −U X + B
No entanto, como a matriz L é triangular inferior e D diagonal e invertı́vel, temos D−1 L triangular
de Sassenfeld.
Se |βj | < 1, para todo j = 1, ..., n, então o método de Gauss-Seidel produz uma sequência {X (k) } que
converge para X ∗ (no sentido que d(k) → 0 quando n → ∞), independente da escolha da aproximação
inicial X (0) .
Você pode encontrar uma demonstração para este fato em [2] e [4].
−4 1 1
A=
2 .
5 1
2 3 7
2.8. CONDIÇÃO DE CONVERGÊNCIA DO MÉTODO DE GAUSS-SEIDEL 43
Temos:
|1| + |1|
β1 = = 0.5,
| − 4|
|2| · 0.5 + |1|
β2 = = 0.4,
|5|
|2| · 0.5 + |3| · 0.4
β3 = = 0.31428...
7
e como são todos menores que 1, pelo critério de Sassenfeld, segue que a sequência gerada por Gauss-
Exercı́cios
Exercı́cio 2.7 Verifique as condições para aplicar o método de Gauss-Seidel e resolva os sistemas por
0.252x1 + 0.26x2 + 0.12x3 = 7
(b)
0.112x1 + 0.16x2 + 0.24x3 = 8 , = 0.01.
0.147x1 + 0.21x2 + 0.25x3 = 9
44 CAPÍTULO 2. SISTEMAS LINEARES E MATRIZES
Capı́tulo 3
Interpolação Polinomial
Interpolar uma função f (x) consiste em aproximá-la por uma outra função g(x) escolhida de maneira
adequada, de acordo com o contexto. A função aproximante g(x) pode ser do tipo polinomial, trigo-
nométrica, exponencial, ou uma combinação destas. Veremos como obter interpolações polinomiais,
isto é, construiremos uma função g(x) polinomial que coincida com uma função f (x) em um conjunto
finito de pontos. Isto pode ser usado como estratégia para extrapolar valores de f (x) para pontos x não
tabelados, ou caso a função f (x) seja dada por uma expressão de difı́cil manipulação, para obter seus
valores aproximados.
Exemplo 3.1 [5] Suponha que V seja a velocidade de propagação do som, sob a água, e T seja a
temperatura da água. Como a primeira varia conforme a segunda, podemos obter os seguintes dados
Como obter aproximações para valores não tabelados, como, por exemplo, a velocidade aproximada do
som quando a água está a exatamente 100◦ C? Ou a que temperatura a velocidade do som vale 1.540m/s?
45
46 CAPÍTULO 3. INTERPOLAÇÃO POLINOMIAL
Exemplo 3.2 Um dos problemas de interpolação mais simples é o de encontrar a equação da reta que
passa por dois pontos dados, ou seja, um polinômio de grau 1. Assim, podemos usar a relação:
y2 − y1
m= ,
x2 − x1
onde m é a inclinação da reta. No caso particular em que o conjunto de pontos é {(2, 3), (5, 6)}, obtemos
m = 1 e obtemos o polinômio f (x) = x + 1 que interpola estes pontos. Os pontos e a reta interpolada
y
(5, 6)
y2
1
x+
y=
(2, 3)
y1
x
x1 x2
O Exemplo 3.2 discute um dos casos mais simples de interpolação polinomial, o qual consiste em
interpolar uma reta por dois pontos. Se buscarmos interpolar uma parábola (polinômio de grau 2) pelos
dois pontos dados, o problema fica subdeterminado, pois existem infinitas parábolas que passam por dois
pontos dados. Além disso, se buscarmos interpolar uma reta por três pontos dados, o problema estaria
Suponha que tenhamos n + 1 pontos distintos: {(x0 , f (x0 )), (x1 , f (x1 )), ..., (xn , f (xn ))}, com todos
os xi distintos (são n + 1 pontos pois começamos a contagem do zero). Estes pontos são chamados de
nós da interpolação. O objetivo da interpolação é construir uma função polinomial g(x), de grau n,
que coincida com a função f (x) nos valores xi , para i = 0, 1, ..., n, ou seja,
g(x) = a0 + a1 x + a2 x2 + ... + an xn ,
3.1. INTERPOLAÇÃO POLINOMIAL 47
a0 + a1 x0 + a2 x20 + ... + an xn0 = f (x0 )
a0 + a1 x1 + a2 x21 + ... + an xn1 = f (x1 )
.. . (3.2)
.
a + a x + a x2 + ... + a xn = f (x )
0 1 n 2 n n n n
Note que no sistema (3.2), as variáveis são os números a0 , a1 , ..., an . O sistema (3.2) pode ser escrito
matricialmente como
1 x0 x20 ··· xn0 a0 f (x0 )
1 x1 x21 ··· n
x1 a1
f (x1 )
1 x2 x22 ··· xn2 a2 = f (x2 ) . (3.3)
.. .. .. .. .. .. ..
. . . . .
.
.
1 xn x2n ··· xnn an f (xn )
A matriz deste sistema é uma matriz de Vandermonde de ordem n cujo determinante é dado pelo
produtório duplo
Y
(xj − xi ) . (3.4)
1≤i<j≤n
É fácil ver, usando a equação (3.4), que se as abscissas xi dos nós da interpolação são diferentes dois
a dois, então o determinante é não nulo. Disto decorre que a matriz envolvida é inversı́vel e, portanto,
o sistema possui uma solução que é única. Isto significa que, para n + 1 nós com abcissas distintas, o
polinômio g(x) que os interpola existe e é único. Este fato esclarece quando um problema de interpolação
Observação 3.1 Em algumas situações atı́picas, o polinômio g(x) que interpola n + 1 nós com abcissas
Graficamente, o que um polinômio interpolador faz é “passar” pelos pontos (xi , f (xi )), conforme
ilustrado abaixo:
x -2 -1 0 2
f (x) 3 2 4 1
48 CAPÍTULO 3. INTERPOLAÇÃO POLINOMIAL
o polinômio que interpola estes pontos tem grau 3 é obtido resolvendo-se o sistema (3.2). Obtém-se:
2x3 x2 13x
g(x) = − − + + 4. (Verifique!)
3 2 6
(0, 4)
(−2, 3)
(−1, 2)
(2, 1)
Obter o polinômio interpolador através do sistema (3.2) é ineficiente devido ao grande número de
cálculos; além disso, caso existam truncamentos ou arredondamentos, os erros podem acumular-se signi-
ficativamente. Veremos duas formas de se obter um polinômio que interpola um conjunto dado de nós
sem precisar resolvê-lo. Ambos possuem suas vantagens e desvantagens que justificam suas aplicações
em diferentes contextos.
Suponha que tenhamos n + 1 nós, como anteriormente: (x0 , f (x0 )), ..., (xn , f (xn )). A forma de Lagrange
para o polinômio interpolador consiste em escrever o polinômio interpolador g(x) na seguinte forma:
n
X
g(x) = f (xi ) · Li (x), (3.5)
i=0
n
Y x − xj
Li (x) = (3.6)
xi − xj
j=0
j 6= i
3.1. INTERPOLAÇÃO POLINOMIAL 49
(note que o fator (x − xi ), que acompanharia o padrão, foi omitido) dividido pelo produto
(note que o fator (xi − xi ), que acompanharia o padrão, é omitido). Veja os Exercı́cios 3.3 e 3.4.
x -1 0 2
f (x) 4 1 -1
Temos n+1 = 3 nós. Para obter o polinômio interpolador g(x), cujo grau máximo é n = 2, calculamos
(x − x1 )(x − x2 ) (x − 0)(x − 2) x2 − 2x
L0 (x) = = = ,
(x0 − x1 )(x0 − x2 ) (−1 − 0)(−1 − 2) 3
(x − x0 )(x − x2 ) (x + 1)(x − 2) x2 − x − 2
L1 (x) = = =− ,
(x1 − x0 )(x1 − x2 ) (0 + 1)(0 − 2) 2
(x − x0 )(x − x1 ) (x + 1)(x − 0) x2 + x
L2 (x) = = = .
(x2 − x0 )(x2 − x1 ) (2 + 1)(2 − 0) 6
x2 − 2x
2
x −x−2 x2 + x
=4· +1· − + (−1) ·
3 2 6
2 2 7
= x − x + 1.
3 3
Usando esta interpolação, podemos usá-la como aproximação para a função f (x) e afirmar, por
exemplo, que o valor de f (1) (que não podemos calcular, dado que só conhecemos a f nos pontos
50 CAPÍTULO 3. INTERPOLAÇÃO POLINOMIAL
y
(−1, 4)
(0, 1)
(2, −1)
2
tabelados) é razoavelmente aproximado pelo valor de g(1) = − . Veremos mais sobre esta aplicações e
3
outras mais adiante.
Leitura Recomendada
Sobre a aplicação de interpolação para completar uma série de dados temporais com informações faltando
https://bit.ly/33I9Q0h
Exercı́cios da Seção
Exercı́cio 3.2 Para cada conjunto de n + 1 pontos abaixo, obtenha o polinômio que o interpola. Observe
que o grau dos polinômios é inferior a n. Você consegue dar uma explicação do por quê este grau é
inferior a n?
x -2 0 2
(i)
f (x) 10 0 -10
Exercı́cio 3.3 Verifique que, para cada Li (x) definido na equação (3.6), vale:
Li (xk ) = 0, se k 6= i, e Li (xk ) = 1 se i = k.
3.2. FORMA DE NEWTON PARA O POLINÔMIO INTERPOLADOR 51
Exercı́cio 3.4 Mostre que o polinômio g(x) definido na equação (3.5) de fato interpola os nós dados,
isto é,
g(xi ) = f (xi ),
Exercı́cio 3.5 Verifique que o polinômio interpolador feito com apenas dois nós coincide com a função
de grau 1 (cujo gráfico é uma reta) que conecta os pontos (x0 , f (x0 )) e (x1 , f (x1 )).
Exercı́cio 3.6 Encontre o polinômio interpolador para o conjunto de pontos {(−2, −47), (0, −3), (1, 4),
(2, 41)}. Então, faça um gráfico com os pontos e o polinômio interpolador encontrado.
Exercı́cio 3.7 Use a forma de Lagrange do polinômio interpolador para obter o polinômio g(x) do Exem-
plo 3.3.
Exercı́cio 3.8 Encontre o polinômio interpolador para o conjunto de pontos {(−1, 1.25), (0.5, 0.5), (1, 1.25),
Novamente, queremos g(x) interpolando os n + 1 nós (x0 , f (x0 )), ..., (xn , f (xn )). O objetivo é escrever
g(x) usando os chamados operadores de diferenças divididas. Estes operadores são construı́dos de
maneira iterativa, e cada um possui uma ordem. Estes são definidos da seguinte forma (não confundir
.. ..
. .
Observe que, para calcular os operadores de ordem 1, é preciso usar dois operadores de ordem zero;
para calcular os operadores de ordem 2, é preciso usar dois operadores de ordem 1 (que, por sua vez,
exigiram 2 operadores de ordem zero)... Podemos obter estes valores mais facilmente usando o esquema
abaixo. Nele, deve-se computar os elementos uma coluna por vez, de cima para baixo.
x0 f [x0 ]
f [x0 , x1 ]
x1 f [x1 ] f [x0 , x1 , x2 ]
f [x1 , x2 ] f [x0 , x1 , x2 , x3 ]
f [x2 , x3 ] f [x1 , x2 , x3 , x4 ]
x3 f [x3 ] f [x2 , x3 , x4 ]
..
f [x3 , x4 ] .
..
x4 f [x4 ] . f [xn−3 , xn−2 , xn−1 , xn ]
..
. f [xn−2 , xn−1 , xn ]
.. ..
. . f [xn−1 , xn ]
xn f [xn ]
Exemplo 3.5 Vejamos como obter os operadores de diferenças divididas a partir da seguinte tabela de
nós:
x -1 0 2
f (x) 4 1 -1
Como temos n + 1 = 3 pontos, devemos computar os operadores de ordem dividida até Ordem n = 2.
A primeira coluna contém os operadores de Ordem 0; estes são apenas os valores de f (x) em cada
-1 4
f [x0 , x1 ]
0 1 f [x0 , x1 , x2 ]
f [x1 , x2 ]
2 -1
f [x2 ] − f [x1 ] −1 − 1
f [x1 , x2 ] = = = −1.
x2 − x1 2−0
-1 4
-3
0 1 f [x0 , x1 , x2 ]
-1
2 -1
Por fim, calculamos f [x0 , x1 , x2 ]. Para este, usamos os elementos da coluna imediatamente à esquerda
(inferior menos superior), dividida pela diferença dos números xi correspondentes na coluna mais à
e portanto
−1 4
−3
2
0 1
3
−1
2 −1
54 CAPÍTULO 3. INTERPOLAÇÃO POLINOMIAL
x −1 0 1 2 3
,
f (x) 1 1 0 −1 −2
-1 1
0 1 − 21
1
-1 6
1
1 0 0 − 24
-1 0
2 -1 0
-1
3 -2
pela forma de Newton. Se temos n + 1 nós: (x0 , f (x0 )), ..., (xn , f (xn )), o polinômio que interpola
estes pontos é
+(x − x0 )(x − x1 )(x − x2 )f [x0 , x1 , x2 , x3 ] + ... + (x − x0 )(x − x1 )...(x − xn−1 )f [x0 , x1 , ..., xn ].
Exemplo 3.7 Usando a tabela do Exemplo 3.5, o polinômio que interpola estes três pontos é
2
= 4 + (x − (−1)) · (−3) + (x − (−1))(x − 0) · 3
= 23 x2 − 73 x + 1.
Vamos aplicar a técnica de interpolação vista para obter estimativas (ou extrapolar para valores de funções
quando não conhecemos a expressão que define f (x); neste caso, conhecemos o valor de f (x) apenas sobre
alguns valores de x, isto é, sobre x0 , x1 , ..., xn , e desejamos obter um valor para f (x) para algum número
Exemplo 3.8 Considere a tabela abaixo, onde conhecemos alguns valores de f (x) em alguns valores de
x.
Vamos calcular uma aproximação para f (0.25) usando interpolação. Naturalmente, poderı́amos obter
o polinômio que interpola a função f (x) usando todos os seis pontos da tabela e assim obtendo uma
Não é necessário utilizar todos os pontos como nós para realizar a interpolação. Uma maneira
alternativa é utilizar uma interpolação de menor grau. Esta abordagem reduz a quantidade cálculos
pontos consecutivos da tabela, de forma que 0.25 esteja no intervalo determinado pelas suas abcissas.
ou
Observação 3.2 Em situações como a do exemplo anterior em que não se conhece uma expressão para
f (x), não há como determinar uma quantidade de pontos ótima para realizar a interpolação; o leitor
interessado pode ler as Seções 3.2 e 3.3 de [2] para estratégias para lidar com este problema.
No exemplo a seguir vamos obter e analisar diversas interpolações distintas objetivando obter uma
mesma aproximação.
Exemplo 3.9 Vamos supor que um certo experimento fı́sico nos retorne os seguintes dados, que coloca-
Suponha que queiramos obter uma estimativa para f (2.5). Para isso, podemos usar a interpolação mais
simples, que é a que usa apenas os pontos (x2 , f (x2 )) = (2, 380.47) e (x3 , f (x3 )) = (3, 610.35) (que estão
em torno de x = 2.5), ou seja, por um polinômio de grau n = 1 (uma reta). Obteremos o polinômio
P1 (x):
e a aproximação
P1 (2.5) = 495.41.
Se escolhermos os pontos (x1 , f (x1 )) = (1, 32.44), (x2 , f (x2 )) = (2, 380.47) e (x3 , f (x3 )) = (3, 610.35)
e a estimativa
P2 (2.5) = 510.17875.
Se escolhermos (x2 , f (x2 )) = (2, 380.47), (x3 , f (x3 )) = (3, 610.35) e (x4 , f (x4 )) = (4, 98.12), obtere-
e a aproximação
Q2 (2.5) = 588.17375.
Os nós da interpolação, bem como os polinômios interpoladores P1 (x), P2 (x) e Q2 (x) estão represen-
588.17375
510.17875
495.41
Nós da Interpolação
P1 (x)
P2 (x)
Q2 (x)
Estimativas
x = 2.5
x
1 2 2.5 3 4
Considerando que não conhecemos uma expressão que descreva o fenômeno fı́sico f (x) subjacente aos
dados, é razoável escolher a aproximação que melhor respeita a concavidade dos dados.
Se focarmos nossa análise na interpolação obtida via P2 observa-se que, para valores maiores que
x = 3, a tendência da curva e dos dados são distintos. Situação similar acontece olhando-se para a reta
P1 (x) (que talvez fosse mais adequada se o comportamento dos nós fosse crescente em todo o pedaço
observado). Já observando a interpolação obtida via Q2 , há uma concordância maior entre os dados e a
curva. Usando este princı́pio, concluı́mos que a estimativa Q2 (2.5) = 588.17375 é mais razoável.
Exemplo 3.10 Interpolação sobre vários pontos dispersos Quando geramos um polinômio inter-
polador g(x) usando n + 1 nós, ele necessariamente passa por todos esses nós. Se os nós forem em grande
quantidade e “dispersos”, isto é, possuı́rem uma alta variância, a interpolação pode resultar em uma
curva que gera más estimativas. Por exemplo, considere a seguinte tabela de dados:
58 CAPÍTULO 3. INTERPOLAÇÃO POLINOMIAL
y
2
x
0.1 0.2 0.3 0.4 0.5 0.7
−1
−2
Neste caso, o polinômio interpolador cumpre seu papel de passar pelos nós, mas não é um bom
artifı́cio para extrapolar valores de f (x): o comportamento geral dos pontos aparenta ser decrescente, mas
o polinômio interpolador cresce após o último nó. Neste tipo de situação, outras estratégias são mais
viáveis para se estimar dados (como um ajuste de curvas, conforme veremos mais adiante no curso).
Exercı́cio 3.9 Obtenha a tabela de operadores de diferenças divididas do Exemplo 3.6. Verifique, usando
a forma de Newton, que o polinômio interpolador dos nós dados no Exemplo 3.6 é:
x4 x3 11x2 3x
g(x) = − + − − +1
24 4 24 4
Exercı́cio 3.10 Suponha que, na tabela do Exemplo 3.5, acrescentemos mais um ponto:
x -1 0 2 3
f (x) 4 1 -1 0
(a) Calcule o polinômio interpolador usando os três últimos nós da nova tabela.
Note que, na resolução deste exercı́cio, não é necessário recalcular todos os operadores de diferenças
(iv) Sabendo que a função f (x) é f (x) = e3x , use esta informação para avaliar a precisão das apro-
ximações obtidas.
(a) Calcule duas aproximações distintas para o valor de f (0.47) usando um polinômio interpolador de
grau 2.
(b) Monte um gráfico dos nós e do polinômios interpoladores obtidos no item (a) (use o Excel, Desmos
ou outra ferramenta). Qual dos dois polinômios aparenta possuir a melhor aproximação?
Considere um conjunto de n + 1 pontos {(x0 , f (x0 )), ..., (xn , f (xn ))}. Já vimos que usar o polinômio
que interpola a todos estes pontos pode resultar em uma função polinômial p(x) de grau muito grande
que não permite fazer boas estimativas. Uma alternativa para isto é interpolar a função agrupando os
nós em conjuntos com poucos pontos (de dois em dois, ou de três em três...). Esta técnica nos permite
obter uma interpolação mais refinada, permitindo inclusive obter uma função com derivadas contı́nuas
Na Figura 3.6, vemos uma função sendo aproximada por segmentos de retas. Neste caso obtemos, a
cada par de pontos, a reta que passa por eles. A nova função obtida é contı́nua, mas não é derivável em
4
y
x
−4 −2 2 4 6 8
−2
−4
Figura 3.6: Aproximação de uma função por funções lineares por partes
4
y
x
−4 −2 2 4 6 8
−2
−4
Figura 3.7: Aproximação de uma função por funções quadráticas por partes
Neste caso, ainda vemos que a função interpoladora por partes não é derivável sobre os nós.
Definição 3.1 ([5]) Dado um conjunto de n + 1 nós {(x0 , f (x0 )), ..., (xn , f (xn ))} (com xi < xj sempre
que i < j), uma função S(x) é uma spline de grau p sobre os nós (xi , f (xi )) se:
(b) S(x) é contı́nua em [x0 , xn ] e tem derivada contı́nua (até ordem p − 1) em (x0 , xn ), exceto talvez
Além disso:
O leitor interessado pode pesquisar por flat spline na Internet, a tı́tulo de curiosidade, para conhecer
a origem do nome.
Este tipo de aproximação é obtido usando-se polinômios de grau 1 (cujos gráficos são retas) para cada
par de pontos subsequentes dos nós {(x0 , f (x0 )), ..., (xn , f (xn ))}. Assim,
xi − x x − xi−1
si (x) = f (xi−1 ) + f (xi ) , para x ∈ [xi−1 , xi ].
xi − xi−1 xi − xi−1
é a função que descreve a reta que passa pelos pontos (xi−1 , f (xi−1 )) e (xi , f (xi )).
Esta expressão é obtida imediatamente usando a forma de Lagrange para o polinômio interpolador.
Além disso, é fácil verificar que ela satisfaz as condições (a), (b) e (c) da Definição 3.1.
xi −1 −0.5 0 0.5 1
x1 − x x − x0
s1 (x) = f (x0 ) + f (x1 )
x1 − x0 x1 − x0
−0.5 − x x − (−1)
= 0.0551 + 0.0364
−0.5 − (−1) −0.5 − (−1)
= −0.0374x + 0.0177,
y
1
0.5
x
−1 −0.5 0.5 1
Figura 3.8: A
−0.0374x + 0.0177, se x ∈ [−1, −0.5],
0.1272x + 0.1, se x ∈ [−0.5, 0],
S(x) =
−0.1488x + 0.1, se x ∈ [0, 0.5],
−0.1142x − 0.0827,
se x ∈ [0.5, 1].
Voltaremos a esta técnica de aproximar funções por polinômios por partes quando estudarmos métodos
de integração numérica. O que veremos a seguir é uma maneira de obter uma função aproximante que
Um spline cúbico (isto é, uma interpolação por partes usando polinômios de grau 3) é uma opção interes-
sante para garantirmos que a função spline interpolante seja derivável em todos os pontos, com derivada
eles têm 4 coeficientes a determinar, sobre os quais ganhamos a liberdade de poder impor condições
Definição 3.2 (ver [2]) Dada uma função f definida nos nós (x0 , f (x0 )),...,(xn , f (xn )), uma spline
(a) S(x) é um polinômio de grau 3, denotado si (x), em cada intervalo [xi , xi+1 ], para todo i =
0, 1, ..., n − 1.
(b) si (x) = f (xi ) e si (xi+1 ) = f (xi+1 ), para cada i = 0, 1, ..., n − 1. Em particular, si+1 (xi+1 ) =
si (xi+1 ).
Note que, para termos uma fronteira fixa, é preciso conhecer a expressão de f (x), ou pelo menos o
valor de suas derivadas (ao invés de conhecer apenas seus valores nos nós).
Exemplo 3.12 Construir uma spline cúbica natural que passe pelos nós dados pela tabela abaixo:
xi 1 2 3
f (xi ) 2 3 5
Esta spline consiste de duas cúbicas: uma entre os pontos (1, 2) e (2, 3) e outra entre (2, 3) e (3, 5),
e a segunda por
Observação 3.3 Em cada expressão de si (x), escrevemos as potências de x contraı́da no fator (x−xi )k ,
Temos 8 coeficientes a determinar. Como as cúbicas coincidem sobre os nós (item (b) da Definição
64 CAPÍTULO 3. INTERPOLAÇÃO POLINOMIAL
2 = f (1) = s0 (1) = a0 ,
3 = f (2) = s0 (2) = a0 + b0 + c0 + d0 ,
3 = f (2) = s1 (2) = a1 ,
5 = f (3) = s1 (3) = a1 + b1 + c1 + d1 .
Outras duas relações são dadas pelas derivadas de primeira e segunda ordem, que devem coincidir
Duas condições finais são obtidos pela condição de fronteira livre (item (e)(i) da Definição 3.2):
Obtemos o seguinte sistema linear (com alguns dos coeficientes já obtidos):
a0 = 2
a0 = 2
3
a0 + b0 + c0 + d0 = 3
b0 = 4
a1 = 3 c0 = 0
1
a1 + b1 + c1 + d1 = 5 d0 =
4
⇒
b0 + 2c0 + 3d0 − b1 = 0 a1 = 3
3
2c0 + 6d0 − 2c1 = 0 b1 =
2
3
c0 = 0 c1 =
4
= − 41
2c1 + 6d1 = 0 d1
Vejamos uma forma mais rápida de se calcular a spline cúbica interpolante. Sejam (x0 , f (x0 )),...,(xn , f (xn ))
3.6. SPLINE CÚBICA INTERPOLANTE 65
nós. O polinômio cúbico definido no intervalo [xi , xi+1 ] será denotado por
Além disso, denotaremos por hi o comprimento de cada intervalo [xi , xi+1 ], ou seja
hi = xi+1 − xi .
A construção do sistema linear feita no Exemplo 3.12 se reproduz para uma quantidade maior de nós.
Como
si (xi ) = ai = f (xi ),
= ai + bi hi + ci h2i + di h3i ,
obtemos s0i (xi ) = bi , para cada i = 0, 1, ..., n − 1. Usando a condição (c), temos:
ci+1 = ci + 3di hi .
h2i
ai+1 = ai + bi hi + (2ci + ci+1 ),
3
bi+1 = bi + hi (ci + ci+1 ).
1 hi
bi = (ai+1 − ai ) − (2ci + ci+1 ),
hi 3 (3.8)
1 hi−1
⇒ bi−1 = (ai − ai−1 ) − (2ci−1 + ci ).
hi−1 3
Nas equações (3.8) acima, apenas reorganizamos os ı́ndices ao passarmos de uma linha para a outra.
3 3
hi−1 ci−1 + 2(hi−1 + hi )ci + hi ci+1 = (ai+1 − ai ) − (ai − ai−1 ), (3.9)
hi hi−1
para cada i = 1, 2, ..., n − 1. As equações (3.9) nos permitem obter um sistema linear que envolve apenas
as variáveis ci , i = 0, 1, ..., n, uma vez que os valores hi são os comprimentos dos intervalos (portanto,
conhecidos) e os valores ai são os valores de f (xi ),i = 0, 1, ..., n − 1. Os coeficientes ci são obtidos,
AX = B,
onde:
1 0 0 0 ··· 0 0 0
h0
2(h0 + h1 ) h1 0 ··· 0 0 0
0 h1 2(h1 + h2 ) h2 ··· 0 0 0
A=
.. .. .. .. .. .. .. ,
..
.
. . . . . . .
0
0 0 0 ··· hn−2 2(hn−2 + hn−1 ) hn−1
0 0 0 0 ··· 0 0 1
0
c0
3 3
h1 (a2 − a 1 ) − h0 (a1 − a0 )
c
3 3
1
h2 (a3 − a2 ) − h1 (a2 − a1 )
B= , X = c2 .
..
.
.
..
3 (a − a 3
n−1 ) − hn−2 (an−1 − an−2 )
hn−1 n
cn
0
3.6. SPLINE CÚBICA INTERPOLANTE 67
Esta matriz é diagonalmente dominante; isso é suficiente para garantir que o sistema linear AX = B
admite uma solução única, donde obtemos os coeficientes ci . Os coeficientes restantes, bi e di , são
calculados diretamente pelas equações (3.8) e (3.7), respectivamente, dado que dependem dos ai , ci e hi
apenas.
2
Exemplo 3.13 Considere os seguintes dados obtidos a partir da função f (x) = e(x−1) · sen(2x):
xi 0 1 2 3 4
Note que, neste caso, todos os hi valem 1. Para computar a spline cúbica interpolante com fronteira
1 0 0 0 0 c0 0.0 c0 0.0
1 4 1 0 0 c1 −6.29 c1 −2.01
0
1 4 1 0 c2 = 4.38 ⇒ c2 = 1.75
0 0 1 4 1 c3 −0.804 c3 −0.64
0 0 0 0 1 c4 0.0 c4 0.0
b0 1.58 d0 −0.67
b1 −0.432 d1 1.25
= , =
b2 −0.685 d2 −0.799
b3 0.432 d3 0.213
1.58x − 0.67x3 , x ∈ [0, 1],
0.909 − 0.432(x − 1) − 2.01(x − 1)2 + 1.25(x − 1)3 ,
x ∈ [1, 2],
S(x) = .
−0.278 − 0.685(x − 2) + 1.75(x − 2)2 − 0.799(x − 2)3 , x ∈ [2, 3],
−0.00511 + 0.432(x − 3) − 0.64(x − 3)2 + 0.213(x − 3)3 ,
x ∈ [3, 4].
1
y
0.5
x
1 2 3 4
−0.5
Nós da Interpolação
2
e(x−1) sen(2x)
S(x)
2
Figura 3.9: Spline cúbica interpolante com fronteira livre para a função f (x) = e(x−1) · sen(2x)
A computação dos coeficientes é similar à forma feita com fronteira livre e não será refeita aqui (ver
[2]): obtemos um sistema linear que envolve apenas as variáveis ci , i = 0, 1, ..., n, os valores hi são os
comprimentos dos intervalos e os valores ai são os valores de f (xi ),i = 0, 1, ..., n − 1. Os coeficientes ci
AX = B,
3.6. SPLINE CÚBICA INTERPOLANTE 69
onde:
2h0 h0 0 0 ··· 0 0 0
h0
2(h0 + h1 ) h1 0 ··· 0 0 0
0 h1 2(h1 + h2 ) h2 ··· 0 0 0
A=
.. .. .. .. .. .. .. ,
..
.
. . . . . . .
0
0 0 0 ··· hn−2 2(hn−2 + hn−1 ) hn−1
0 0 0 0 ··· 0 hn−1 2hn−1
3
h0 (a1 − a0 ) − 3f 0 (x0 )
c0
3 3
h1 (a2 − a1 ) − h0 (a1 − a0 )
c
3 3
1
(a − a ) − (a − a )
3 2 2 1
h2 h 1
B= c2 .
,X =
..
.
.
.
.
3 (a − a 3
n−1 ) − hn−2 (an−1 − an−2 )
hn−1 n
cn
3
3f 0 (xn ) − hn−1 (an − an−1 )
admite uma solução única, donde obtemos os coeficientes ci . Os coeficientes restantes, bi e di , são
calculados diretamente pelas equações (3.8) e (3.7), respectivamente, dado que dependem dos ai , ci e hi
apenas.
2
Exemplo 3.14 Vamos usar os mesmos dados do Exemplo 3.12, a partir da função f (x) = e(x−1) ·
sen(2x):
xi 0 1 2 3 4
2 1 0 0 0 c0 0.52 c0 1.46
1 4 1 0 0 c1 −6.29 c1 −2.4
0
1 4 1 0 c2 = 4.38 ⇒ c2 = 1.85
0 0 1 4 1 c3 −0.804 c3 −0.642
0 0 0 1 2 c4 −0.822 c4 −0.0896
Os coeficientes ai são:
a0 0.0
a1 0.909
=
a2 −0.278
a3 −0.00511
b0 0.735 d0 −1.28
b1 −0.205 d1 1.41
= , =
b2 −0.75 d2 −0.833
b3 0.463 d3 0.184
1
y
0.5
x
1 2 3 4
−0.5
Nós da Interpolação
2
e(x−1) sen(2x)
S(x)
2
Figura 3.10: Spline cúbica interpolante com fronteira fixa para a função f (x) = e(x−1) · sen(2x)
0.735x + 1.46x2 − 1.28x3 , x ∈ [0, 1]
0.909 − 0.205(x − 1) − 2.4(x − 1)2 + 1.41(x − 1)3 ,
x ∈ [1, 2]
S(x) = .
−0.278 − 0.75(x − 2) + 1.85(x − 2)2 − 0.833(x − 2)3 , x ∈ [2, 3]
−0.00511 + 0.463(x − 3) − 0.642(x − 3)2 + 0.184(x − 3)3 ,
x ∈ [3, 4]
3.7 Exercı́cios
Exercı́cio 3.13 Determine a spline cúbica interpolante natural (com fronteira livre) para o conjunto de
Exercı́cio 3.14 Considere os pontos (2, 4.5), (5, −1.9), (9, 0.5) e (12, −0.5).
(a) Construa um spline cúbico com fronteira livre que passe pelos pontos dados. Coloque os pontos e a
(b) Construa um spline cúbico com fronteira fixa que passe pelos pontos dados e verifique S 0 (2) = 3,
(c) Construa um spline cúbico com fronteira fixa que passe pelos pontos dados e verifique S 0 (2) = −3,
(d) Compare os resultados obtidos nos items (a), (b) e (c). O que você observa?
72 CAPÍTULO 3. INTERPOLAÇÃO POLINOMIAL
Capı́tulo 4
Ajuste de Curvas
Enquanto a interpolação de funções nos permite fazer a estimativa de um valor f (x) para um certo x
a partir de um conjunto de dados, nem sempre ela permite uma boa previsão do comportamento do
fenômeno do ponto de vista global. Quando o conjunto de dados possui uma dispersão significativa
pode ser mais interessante analisar uma curva que siga a tendência geral dos pontos ao invés de seu
comportamento local.
Para isso, dado um conjunto de dados do tipo (xi , f (xi )), i = 1, ..., n, obteremos uma função φ(x)
O método dos mı́nimos quadrados fornece uma maneira para se “encaixar” uma curva (uma reta,
uma parábola, uma senóide, uma exponencial, etc...) num conjunto de dados, de maneira otimizada.
xi 1 2 3 4 5 6 7 8 9 10
f (xi ) 1.3 3.5 4.2 5.0 7.0 8.8 10.1 12.5 13.0 15.6
Podemos comparar a reta ajustada pelo método dos mı́nimos quadrados e o polinômio que interpola
estes nós olhando para a Figura 4.2. A reta ajustada é o gráfico da função
73
74 CAPÍTULO 4. AJUSTE DE CURVAS
y
14
12
10
2
x
1 2 3 4 5 6 7 8 9 10
y y
14 14
12 12
10 10
8 8
6 6
4 4
2 2
x x
1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10
Figura 4.2: Comparação entre a reta ajustada e a interpolação polinomial dos dados do Exemplo 4.1
Observa-se que a reta ajustada acompanha o comportamento crescente, quase linear, dos dados, en-
portanto, é uma ferramenta mais adequada quando queremos aproximar o comportamento global do con-
junto de dados, tais como: crescimento/decrescimento (e de que tipo aproximado: linear, quadrático,
Comecemos com o caso mais simples: o ajuste de uma reta a um conjunto de dados {(x1 , f (x1 )), ..., (xn , f (xn ))}.
Uma reta é o gráfico de uma função de primeiro grau; então consideramos a função
p(x) = a0 + a1 x.
Precisamos calcular os coeficientes a0 e a1 . Para cada xi dos pontos do conjunto de dados, definimos o
seguinte desvio di :
Para evitar problemas com desvios negativos, queremos que a reta p(x) minimize a soma dos quadrados
4.2. AJUSTE POLINOMIAL 75
e esta deve ser a mı́nima possı́vel. Para isto, os coeficientes a0 , a1 precisam ser determinados de forma a
minimizar esta soma S. Procurando por valores a0 , a1 crı́ticos (de derivada zero):
n
∂S X
=0⇒ (−2(f (xi ) − a0 − a1 xi )) = 0,
∂a0 i=1
n
∂S X
=0⇒ (−2(f (xi ) − a0 − a1 xi )) · xi = 0.
∂a1 i=1
n n
!
X X
n · a0 + xi a1 = f (xi )
i=1 i=1
n
! n
! n (4.2)
X X X
x2i
xi a0 + a1 = f (xi ) · xi .
i=1 i=1 i=1
n X n
a
X
n xi f (xi )
0
i=1
i=1
· = X . (4.3)
n n n
X
X
x2i f (xi ) · xi
xi
i=1 i=1
a1 i=1
Observação 4.1 O argumento acima consiste em, resumidamente, encontrar um ponto crı́tico da função
S com respeito às variáveis a0 , a1 , e checar que este é um ponto de mı́nimo. Não faremos aqui a checagem
Exemplo 4.2 Uma pessoa pesa-se uma vez por mês e obtém, ao longo de um ano, os pesos (em kg)
Mês 1 2 3 4 5 6 7 8 9 10 11 12
Peso (kg) 74.3 78.9 78.1 80.7 73.5 78.3 78.5 77.9 76.6 79.7 79.0 77.1
Neste caso, temos n = 12, onde os xi são os meses e os f (xi ) são os pesos a cada mês. Substituindo
76 CAPÍTULO 4. AJUSTE DE CURVAS
12 78 a0 932.6
· = .
78 650 a1 6079.8
a0 = 76.903,
a1 = 0.125.
x
1 2 3 4 5 6 7 8 9 10 11 12
Os desvios podem ser analisados geometricamente a partir da imagem anterior. Considere os desvios,
x
1 2 3 4 5 6 7 8 9 10 11 12
Cada um destes desvios é a diferença entre f (xi ) e p(xi ) para cada i. A reta p(x) é aquela tal que a
soma dos quadrados dos desvios é mı́nima. Por isso, mı́nimos quadrados. Esta soma S pode
ser calculada:
n
X
S= (f (xi ) − p(xi ))2 .
i=1
S = 45.856.
Neste caso, observando a reta ajustada aos dados, podemos inferir o comportamento crescente dos
O problema de se ajustar uma reta (como no exemplo anterior) é que ela não permite analisar se
os dados estão em aceleração ou desaceleração (funções de primeiro grau possuem derivada segunda
constante igual a zero). Para isso, podemos usar polinômios de grau maior.
polinomial é da forma
m
X
p(x) = a0 + a1 x + a2 x2 + ... + am xm = a j xj .
j=0
Usando a expressão para a soma dos quadrados dos desvios e derivando-a com relação aos coeficientes
n
X n
X n
X
n
X
n xi x2i ... xmi f (x i )
i=1 i=1 i=1
i=1
a0 X
n n n n n
X X X X
m+1
xi x2i x3i ... xi f (xi ) · xi
a1 i=1
i=1 i=1 i=1 i=1
n n n n n
m+2 a2 = 2. (4.4)
X 2 X X X X
x3i x4i
xi ... xi f (xi ) · xi
i=1 i=1 i=1 i=1 . i=1
..
. .. .. .. ..
..
.
. . . . . .
an
n n n n
n
X X X X X
xm
i xm+1
i xm+2
i ... x2mi
f (xi ) · xm i
i=1 i=1 i=1 i=1 i=1
Exemplo 4.3 Vamos ajustar uma parábola (polinômio de grau 2) aos dados do Exemplo 4.1. O sistema
linear fica
78 CAPÍTULO 4. AJUSTE DE CURVAS
10 55 385 a0 81.0
a1 = 572.4
55 385 3025
385 3025 25333 a2 4532.8
Graficamente:
16 y
14
12
10
8
6
4
2
x
1 2 3 4 5 6 7 8 9 10
Podemos afirmar uma aceleração de pequena intensidade do conjunto de dados conforme xi cresce,
Exemplo 4.4 Entre os ajustes obtidos pela reta do Exemplo 4.1 e pela parábola do Exemplo 4.3, como
determinar o melhor deles? Como ambas foram obtidas de forma a minimizar S, a soma dos quadrados
n
X
S= (f (xi ) − p(xi ))2 ≈ 2.34474.
i=1
n
X
S= (f (xi ) − q(xi ))2 ≈ 1.70351.
i=1
Conclui-se que uma parábola ajusta-se melhor aos dados do que uma reta.
4.3. AJUSTES NÃO POLINOMIAIS 79
Exercı́cios
Exercı́cio 4.1 Calcule a função ajustada aos dados no Exemplo 4.1 e a soma dos quadrados dos desvios.
Exercı́cio 4.2 Ajuste aos dados do Exemplo 4.1 uma curva dada pelo gráfico de uma função polinomial
de grau 3. Calcule a soma dos quadrados dos desvios. Comparando esta soma de quadrados, Esta nova
curva ajusta-se melhor ou pior do que a parábola? Melhor ou pior que a reta?
Exercı́cio 4.3 Determinar os polinômio de grau 2, 3 e 4 que melhor se ajustam aos seguintes dados.
Em seguida, coloque-os num gráfico junto com o polinômio obtido, estime f (8) e calcule a soma dos
xi f (xi )
0.23 5.64
1.01 7.83
2.29 17.04
2.87 21.38
4.15 24.56
5.36 16.21
5.51 14.57
6.36 0.78
6.84 -7.64
7.00 -12.52
Ajustes não-polinomiais por vezes são mais adequados e precisos, em especial quando se conhece a
natureza dos dados. Por exemplo, para fenômenos periódicos ou cı́clicos, um ajuste trigonométrico pode
ser melhor que um ajuste polinomial. Para fenômenos do tipo espalhamento de contaminação ou por
radiação, onde a taxa de variação instantânea de uma grandeza é proporcional à própria grandeza, um
Para isso, procedemos de forma a utilizar o que já fizemos nos ajustes polinomiais. Nos ajustes lineares
não polinomiais, busca-se ajustar uma combinação linear de funções não necessariamente polinomiais:
onde as funções φj são escolhidas previamente. Dessa forma, temos m parâmetros a1 , ..., am a serem
determinados.
Neste caso, aplicando-se a mesma técnica vista anteriormente, deriva-se a equação do desvio
n
X
S= (f (xi ) − φ(xi ))2
i=1
com respeito aos parâmetros a determinar ai e iguala-se cada equação a zero para encontrar pontos
Observação 4.2 Note que, se fizermos φj (x) = xj−1 , para j = 1, ..., m, obtemos novamente o ajuste
Exemplo 4.5 As receitas de uma empresa são dadas por trimestes. Entre os anos de 2016 e 2019, as
receitas (em milhões de dólares) foram auferidas conforme a Tabela 4.2 abaixo.
Vamos realizar um ajuste linear não polinomial a estes dados para tentar prever as receitas de 2020;
4.3. AJUSTES NÃO POLINOMIAIS 81
Enumerando os trimestres de 1 a 16 e colocando estes dados num diagrama, obtemos a Figura 4.6.
25 y
20
15
10
x
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Baseando-se em nosso repertório de funções cujos gráficos temos familiaridade, observamos que este
dados comportam-se de forma parecida à soma de uma função de primeiro grau crescente com uma função
Figura 4.7: Gráfico aproximado da soma de uma função de primeiro grau com uma função cosseno
como função a ser ajustada aos dados. Os coeficientes a0 , a1 e a2 precisam ser determinados e o
π
multiplicador α deve ser escolhido de forma a respeitar a sazonalidade dos dados. Façamos com α = 2
de forma que cos(αx) tenha perı́odo 4 (4 trimestres = 1 ano, o que parece ser o caso dos dados: a cada
πx
φ1 (x) = 1, φ2 (x) = x, φ3 (x) = cos .
2
82 CAPÍTULO 4. AJUSTE DE CURVAS
16 136 0 a0 254.6
a1 = 2383.6
136 1496 8
0 8 8 a2 27.4
de onde obtemos a função φ (com truncamento em quatro casas decimais) cujo gráfico está na Figura
4.8.
xπ
φ(x) = 10.9942 + 0.5786x + 2.8463 cos
2
25 y
20
15
10
x
1 2 3 4 5 6 7 8 9 1011121314151617181920
Na Tabela 4.3 temos uma comparação entre os dados e a função ajustada, bem como uma estimativa
Claro que estas previsões para 2020 são apenas isso: uma previsão. Um palpite qualificado. Dado
que toda previsão para um fenômeno assume uma certa regularidade do fenômeno, é provável que estas
Vejamos agora como ajustar a um conjunto de dados uma função que não é linear sobre os coeficientes
a serem ajustados, começando com um exemplo clássico: considere uma função do tipo
φ(x) = a1 ea2 x
a ser ajustada a um conjunto de dados (xi , f (xi )). Observe que φ não é linear nos coeficientes a1 , a2 .
Se queremos que os dados no eixo y sejam próximos aos valores da curva φ(x), então, queremos que
4.4. AJUSTES NÃO-LINEARES 83
Esta é a linearização desta função φ(x) = a1 ea2 x (note que, ao fazer isso, obtemos uma combinação
linear de funções). Fazendo isto, agora precisamos ajustar a função ln(φ(x)) = ln(a1 ) + a2 x (que é um
polinômio de grau 1) ao novo conjunto de dados (xi , ln(f (xi ))) para calcular os coeficientes ln(a1 ) e a2 .
Nota-se que, realizando a mudança f (xi ) → ln(f (xi )) nos dados, estes ficam mais alinhados com uma
reta (Figura 4.10), o que indica que a escolha da função φ(x) = a1 ea2 x é uma escolha adequada. Esta
Para ajustar a reta α1 + a2 x aos dados desta segunda tabela, basta fazer da mesma forma que fizemos
84 CAPÍTULO 4. AJUSTE DE CURVAS
40 y
30
20
10
x
−1 −0.5 0.5 1
x
−1 −0.5 0.5 1
−1
n X n
xi α1
X
n ln(f (xi ))
i=1 i=1
= n
Xn Xn X
2
ln(f (xi )) · xi
xi xi
i=1 i=1
a2 i=1
8 0.3 α1 8.571
⇒ =
0.3 3.59 a2 −8.340
α1 = 1.162, a2 = −2.420.
Observando a reta α1 + a2 x ajustada à segunda tabela na figura abaixo, notamos novamente o bom
x
−1 −0.5 0.5 1
−1
Como α1 = ln(a1 ), então a1 = eα1 = 3.196. A função φ(x) = a1 ea2 x portanto é:
φ(x) = 3.196e−2.420x .
40 y
30
20
10
x
−1 −0.5 0.5 1
Conforme vimos no exemplo anterior, para realizar um ajuste não linear é preciso efetuar uma linearização
da função a ser ajustada com relação aos novos coeficientes, e a mesma operação de linearização deve ser
realizada sobre os dados. Note que cada linearização exige um cálculo diferente dos coeficientes.
A função φ deve ser escolhida levando-se em conta o comportamento dos dados e a sua linearização.
1
- Ajuste por uma hipérbole: y ≈ φ(x) = , onde a linearização é feita pelo inverso multipli-
a1 + a2 x
cativo: y → y1 .
- Ajuste por uma exponencial de base distinta: y ≈ φ(x) = a1 · ax2 , onde a linearização é feita por
logaritmo: y → ln(y).
- Ajuste por uma curva geométrica: y ≈ φ = a1 xa2 , cuja linearização é feita usando logaritmo:
y → ln(y).
x
- Ajuste por uma função racional do tipo: y ≈ φ = , cuja linearização é feita pelo inverso
ax + b
multiplicativo: y → y1 .
Exemplo 4.7 ([3]) Por vezes, a linearização pode ser feita por manipulação algébrica, ao invés de
xi 0 1 2 3
f (xi ) 1 1 1.7 2.5
a 0 + x2
φ(x) = .
a1 + x
a0 + x2
f (x) ≈ ⇒ (a1 + x)φ(x) ≈ a0 + x2
a1 + x
a0 1
⇒ a1 f (x) ≈ a0 − xf (x) + x2 ⇒ f (x) ≈ a1 − a1 (x(f (x) − x)).
a0
Chamemos α = a1 , β = − a11 . Note que esta última expressão é linear sobre os coeficientes α e β, e
4 −2.1 a0 6.2
=
−2.1 2.61 a1 −4.77
1 1
β=− ⇒ a1 = − = 0.9950,
a1 β
4.5. EXERCÍCIOS 87
a0
α= = a0 = α · a1 = 1.0173.
a1
Assim:
1.0173 + x2
f (x) ≈ .
0.9950 + x
x
0.5 1
4.5 Exercı́cios
Exercı́cio 4.4 Considere um conjunto de dados (x1 , f (x1 )), ..., (xn , f (xn )). Suponha que se precise ajus-
tar a estes dados as funções φ a seguir. Qual deve ser a linearização feita? Como os dados deve ser
linearizados?
√
(a) φ(x) = a0 + a1 x.
xi −8 −6 −4 −2 0 2 4
yi 30 10 9 6 5 4 4
1 1
(a) Ajuste uma função φ(x) = a estes dados; faça o gráfico de yi e verifique se esta é uma
a1 + a2 x
boa aproximação pelo teste de alinhamento.
88 CAPÍTULO 4. AJUSTE DE CURVAS
(a) Compare as três aproximações colocando as informações em um gráfico e calculando a soma dos
Z 0.6
x2 · sen(x2 ) · e3x dx. (5.1)
0
Agora que você já se frustrou, pensemos: esta função é contı́nua no intervalo [0, 0.6], logo é integrável
e portanto a integral acima é um número real, bem determinado. No entanto, não temos técnicas para
calcular este número de forma analı́tica (da mesma forma que fazemos na integração de polinômios e de
funções elementares simples). Assim, é preciso obter aproximações numéricas para esta integral.
Aplicam-se técnicas de integração numérica também em outros contextos. Por exemplo, podemos
avaliar analiticamente:
2
e4 e2
Z
e2x dx = − .
1 2 2
Z 2
e2x dx = 23.60454697...
1
Este número já se trata de uma aproximação (pois a constante e é irracional!). Usando mais casas
decimais:
Z 2
e2x dx = 23.60454696710679442543991687114293529481...
1
Assim, uma vez que existe a necessidade de se obter aproximações, vejamos como fazê-las de forma mais
89
90 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS
eficiente.
Finalmente, podemos estimar o valor da integral de uma função f (x), com x ∈ [a, b], conhecendo o
valor de f apenas numa quantidade finita de pontos obtidos, por exemplo, via experimentos.
Quando a função f (x) é conhecida, podemos estimar o erro cometido ao obter uma aproximação.
Considere uma função f (x) contı́nua num intervalo I = [a, b]. Vamos dividir o intervalo I em n partes
x0 = a,
x1 = x0 + h,
x2 = x1 + h = x0 + 2h,
..
.
xn = xn−1 + h = x0 + n · h.
Dessa forma, obtemos n + 1 pontos igualmente espaçados no intervalo [a, b] x0 , x1 , ..., xn . O comprimento
Seja Pn (x) o polinômio interpolador dos nós (xj , f (xj )), j = 0, 1, ..., n − 1. Pela Forma de Lagrange,
temos:
n
X
Pn (x) = f (xi )Li (x).
i=1
Z b Z b Z b
f (x)dx = Pn (x)dx + Rn (x)dx,
a a a
de onde obtemos
Z b n
X
f (x)dx ≈ Ai f (xi ), (5.2)
a i=0
5.2. FÓRMULAS DE NEWTON-COTES 91
onde
Z b
Ai = Li (x)dx.
a
Expressões para aproximação do tipo (5.2) são chamadas Fórmulas de Newton-Cotes do tipo fechado
Para reduzir o esforço computacional envolvido, o que fazemos é aplicar a forma (5.2) a subconjuntos
Recorde que, para pontos (xj , f (xj )), j = 0, 1, ..., n, o polinômio que interpola estes pontos, pela Forma
de Lagrange, é:
n
X
Pn (x) = f (xk ) · Lk (x)
k=0
j 6= k
x − x0
u= . (5.3)
h
É fácil ver que, em função da variável u, para um inteiro qualquer r (entre 0 e n) e x ∈ [a, b] = [x0 , xn ],
vale:
x − xr = (u − r) · h. (5.4)
xr − xs = (r − s) · h. (5.5)
n
X (x − x0 )(x − x1 ) · · · (x − xk−1 )(x − xk+1 ) · · · (x − xn )
Pn (x) = f (xk )
(xk − x0 )(xk − x1 ) · · · (xk − xk−1 )(xk − xk+1 ) · · · (xk − xn )
k=0
92 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS
n
X u(u − 1) · · · (u − (k − 1))(u − (k + 1)) · · · (u − n)
Pn (x0 + uh) = f (xk ) (5.6)
k(k − 1) · · · (k − (k − 1))(k − (k + 1)) · · · (k − n)
k=0
Chamemos
u(u − 1) · · · (u − (k − 1))(u − (k + 1)) · · · (u − n)
λk (u) = .
k(k − 1) · · · (k − (k − 1))(k − (k + 1)) · · · (k − n)
A vantagem desta forma de se escrever o polinômio interpolador é que os fatores de Lagrange não
dx = h · du,
logo:
Z b n
X Z n
f (x)dx ≈ f (xk ) · h · λk (u)du.
a k=0 0
Denotando
Z n
λk (u)du = Ckn ,
0
obtemos
Z b n
X
f (x)dx ≈ f (xk ) · h · Ckn . (5.7)
a k=0
Observe que os Ckn podem ser calculados previamente e utilizados posteriormente para diferentes funções,
Vamos aplicar a técnica vista acima para aproximar a integral de f (x) entre x0 = a e x1 = b usando,
Usando (5.7):
Z xn 1
X
f (x)dx ≈ f (xk ) · h · Ck1 .
x0 k=0
Como:
1 1 2 1
u−1 u 1 1
Z Z
C01 = λ0 (u)du = du = − + u = − + 1 = ,
0 0 0−1 2 0 2 2
1 1 2 1
u−0 u 1
Z Z
C11 = λ1 (u)du = du = = .
0 0 1−0 2 0 2
5.2. FÓRMULAS DE NEWTON-COTES 93
y y y
x x x
x0 x1 x0 x1 x0 x1
Z x1
h
(a) f (x)dx (b) 2
(f (x0 ) + f (x1 )) (c) Erro da aproximação
x0
Portanto:
x1
h
Z
f (x)dx ≈ (f (x0 ) + f (x1 )). (5.8)
x0 2
A aproximação (5.8) é conhecida como Regra do Trapézio. Era ela que nós fomos buscar. Observe
que o lado direito da igualdade acima é exatamente a área de uma trapézio de altura h e bases f (x0 ) e
f (x1 ). Vemos na Figura 5.1 a integral da função, a aproximação por um polinômio interpolador de grau
1 e o erro cometido.
Observe que, se o intervalo de integração [a, b] é grande, o erro também pode ser grande. Podemos
b−a
dividir o intervalo [a, b] em N subintervalos de comprimento h = N , de forma que x0 = a, xN = b e,
em cada subintervalo [xj , xj+1 ], j = 0, 1, ..., N − 1, aplicar a Regra do Trapézio. Na Figura 5.2 vemos
a Regra do Trapézio aplicada três vezes (N = 3) à função da Figura 5.1. Atenção: não confundir o n
y
f (x2 )
f (x1 )
f (x3 )
f (x0 )
x
x0 x1 x2 x3
É evidente que, se fizermos h → 0 (isto é, N → ∞), o erro tenderá a zero, e portanto, a aproximação
94 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS
Z xN Z x1 Z x2 Z xN
f (x)dx = f (x)dx + f (x)dx + ... + f (x)dx
x0 x0 x1 xN −1
h
≈ 2 (f (x0 ) + f (x1 )) + h2 (f (x1 ) + f (x2 )) + ... + h2 (f (xN −1 ) + f (xN )).
Vemos, na última expressão que todos os termos f (xi ) aparecem duas vezes, exceto f (x0 ) e f (xN ).
Assim,
xN
h
Z
f (x)dx ≈ (f (x0 ) + 2f (x1 ) + 2f (x2 ) + ... + 2f (xN −1 ) + f (xN )). (5.9)
x0 2
Repetida. Em geral, quando nos referimos à Regra do Trapézio, queremos dizer a aproximação (5.9).
Exemplo 5.1 (ver [3]) Calcular, usando a Regra do Trapézio (5.9), uma aproximação para
Z 1.2
ex cos(x)dx,
0
usando h = 0.2. Os pontos que determinam os subintervalos, e os respectivos valores de f (x) = ex cos(x)
R 1.2 h
0
ex cos(x)dx ≈ 2 (f (x0 ) + 2f (x1 ) + 2f (x2 ) + ... + 2f (xN −1 ) + f (xN ))
0.2
= 2 (1 + 2(1.197 + 1.374 + 1.5038 + 1.5505 + 1.4686) + 1.203)
= 1.639.
Não faremos a dedução da estimativa do erro envolvido na Regra do Trapézio Repetida; a mesma está feita
em [3], [2] e [5] e pode ser escrita de várias formas distintas, todas elas equivalentes entre si, dependendo
Assuma que estamos aplicando a Regra do Trapézio Repetida para aproximar a integral de uma
função f (x) (contı́nua em [a, b], com derivadas de primeira e segunda ordem contı́nuas em (a, b)...) sobre
b−a
o intervalo fechado [a, b] usando subintervalos de comprimento h, com N = h .
5.2. FÓRMULAS DE NEWTON-COTES 95
Nesta situação, existe ξ ∈ (a, b) tal que o erro da Regra do Trapézio Repetida, ET R , é:
(b − a) 2 00
ET R = − h f (ξ), (5.10)
12
(b − a)3 00
ET R = − f (ξ). (5.11)
12N 2
Na prática, pode ser impossı́vel encontrar o número ξ exato. O que fazemos então, é trabalhar com
as seguinte desigualdades:
(b − a) 2 00 (b − a) 2 00 (b − a) 2
|ET R | = − h f (ξ) = h |f (ξ)| ≤ h máx |f 00 (x)| , (5.12)
12 12 12 x∈(a,b)
O problema agora fica reduzido a encontrar máx |f 00 (x)|. Para isso existem técnicas de Cálculo Di-
x∈(a,b)
ferencial. Usando as desigualdades (5.12) e (5.13) podemos estimar o erro cometido para um h escolhido,
Exemplo 5.2 Considere os dados do Exemplo 5.1. Temos: f (x) = ex cos(x), x ∈ [0, 1.2], logo
No intervalo [0, 1.2], sen(x) é positiva (cos(x) também), logo coincide com o seu valor absoluto e portanto
Com x ∈ [0, 1.2], f (3) (x) é negativa; então f 00 (x) é estritamente decrescente neste intervalo; como ela
96 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS
é negativa, ela atinge seu mı́nimo em x = 1.2, donde o máximo de |f 00 (x)| ocorre em x = 1.2, isto é
É suficiente tomar um valor ligeiramente maior que esta aproximação, digamos, |f 00 (x)| < 6.19. Usando
(b − a) 2
|ET R | ≤ h máx |f 00 (x)|
12 x∈(a,b)
1.2
≤ 12 · (0.2)2 · 6.19
= 0.02476.
Exemplo 5.3 Vamos estimar o número de subintervalos necessários para, na integral dos exemplos 5.1
Usaremos a desigualdade (5.13) e |f 00 (x)| < 6.19. Note que, para que |ET R | seja inferior a ε, é
suficiente que
(b − a)3 00 (b − a)3
|ET R | = 2
|f (x)| < · 6.19 < ε.
12N 12N 2
b−a
h= = 0.004
300
é um comprimento adequado, que divide o intervalo [a, b] em 300 partes de igual comprimento.
5.3 Exercı́cios
Exercı́cio 5.2 Calcule a integral do Exemplo 5.1 por partes e compare com a aproximação. O erro é
menor do que o estimado no Exemplo 5.2? Em seguida, aplique a Regra do Trapézio com h = 0.1, estime
o erro e compare.
Exercı́cio 5.3 Usando a Regra dos Trapézio, calcule aproximações para as integrais abaixo, usando
quatro e seis divisões do intervalo de integração. Compare com o valor exato da integral, calculada pelo
1
5.4. REGRA DE SIMPSON 97
3
método tradicional.
Z 2
(a) ex dx
1
Z 4 √
(b) xdx
1
14
1
Z
(c) √ dx.
2 x
Exercı́cio 5.4 Usando as integrais do exercı́cio anterior, com quantas divisões do intervalo, no mı́nimo,
Exercı́cio 5.5 Suponha que se conheça os valores de uma função f (x) através da seguinte tabela:
Aproxime
Z 3
f (x)dx
1
1
5.4 Regra de Simpson
3
Para a obtenção da Regra do Trapézio para integração de funções, fizemos uma interpolação por po-
linômios de grau 1 sobre os pontos tomados dois a dois. Vimos que pode ser necessário uma grande
quantidade de divisões no intervalo de integração para se atingir certa precisão. Uma maneira de se
obter aproximações para integrais com maior precisão e menor volume de cálculos consistem em realizar
interpolações com graus maiores (tomando pontos de dois em dois, três em três, etc.).
Considere
Z b
f (x)dx.
a
a+b
x0 = a, x1 = (ponto médio) , x2 = b.
2
Como temos três pontos, podemos obter um polinômio interpolador de grau 2 que passa pelos nós
98 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS
(x0 , f (x0 )), (x1 , f (x1 )), (x2 , f (x2 )). Dessa forma, Pela Equação 5.7, teremos:
Z x2 2
X
f (x)dx ≈ f (xk ) · h · Ck2 ,
x0 k=0
2 2 2
(u − 1)(u − 2) 1 1
Z Z Z
C02 = λ0 (u)du = du = u2 − 3u + 2 du = .
0 0 (0 − 1)(0 − 2) 2 0 3
2 2 2
(u − 0)(u − 2) 4
Z Z Z
C12 = λ1 (u)du = du = − u2 − 2udu = .
0 0 (1 − 0)(1 − 2) 0 3
2 2 2
(u − 0)(u − 1) (u − 1)u 1
Z Z Z
C22 = λ2 (u)du = du = du = .
0 0 (2 − 0)(2 − 1) 0 2 3
Assim:
R x2 1
+ 43 f (x1 ) + 13 f (x2 )
x0
f (x)dx ≈ h 3 f (x0 )
(5.14)
h
= 3 (f (x0 ) + 4f (x1 ) + f (x2 )).
Podemos generalizar esta regra da mesma forma que fizemos na Regra do Trapézio: dividindo o
b−a
h= .
2N
Dessa forma, podemos realizar a interpolação tomando os pontos de três em três (ou de dois em dois
Teremos:
Z x2N Z x2 Z x4 Z x2N
f (x)dx = f (x)dx + f (x)dx + ... + f (x)dx.
x0 x0 x2 x2N −2
x2N
h h
Z
f (x)dx ≈ (f (x0 ) + 4f (x1 ) + f (x2 )) + (f (x2 ) + 4f (x3 ) + f (x4 )) + ...
x0 3 3
h
+ (f (x2N −2 ) + 4f (x2N −1 ) + f (x2N ))
3
Reorganizando:
1
5.4. REGRA DE SIMPSON 99
3
y y y
x x x
Z x2N
(a) f (x)dx (b) Interpolação por parábolas (ver- (c) Erro da aproximação
x0 melhas) a cada dois intervalos
x2N
h
Z
f (x)dx ≈ (f (x0 ) + 4f (x1 ) + 2f (x2 )) + 4f (x3 ) + 2f (x4 ) + ... + 2f (x2N −2 ) + 4f (x2N −1 ) + f (x2N ))
x0 3
(5.15)
1
que é conhecida como Regra 3 de Simpson Generalizada (ou Repetida). Para memorização, basta
alternar os coeficientes 4, 2, 4, 2, ..., 2, 4 multiplicando os termos da soma, excluindo o inicial e final (ou
1
Exemplo 5.4 Vamos aplicar a Regra 3 de Simpson Generalizada (5.15) para aproximar
Z 1.2
ex cos(x)dx,
0
já aproximada anteriormente pela Regra do Trapézio. Podemos reutilizar a mesma tabela, que possui
uma quantidade par de subintervalos equidistantes (com truncamento em três casas decimais):
Temos:
Z 1.2
ex cos(x)dx ≈ h
3 (f (x0 ) + 4f (x1 ) + 2f (x2 )) + 4f (x3 ) + 2f (x4 ) + 4f (x5 ) + f (x6 ))
0
0.2
= 3 (1 + 4(1.197 + 1.5038 + 1.4686) + 2(1.374 + 1.5505) + 1.203)
= 1.64864.
100 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS
1
5.4.1 Erro na Regra 3
de Simpson Repetida
função f (x) (contı́nua em [a, b], com derivadas de primeira e segunda ordem contı́nuas em (a, b)...) sobre
b−a
o intervalo fechado [a, b] usando um número par de subintervalos de comprimento h, com N = 2h .
1
Nesta situação, existe ξ ∈ (a, b) tal que o erro da Regra 3 de Simpson Repetida, E 13 , é:
(b − a) 4 (4)
E 31 = − h f (ξ), (5.16)
180
(b − a)5 (4)
E 31 = − f (ξ). (5.17)
2880 · N 4
Na prática, pode ser impossı́vel encontrar o número ξ exato. O que fazemos então, é trabalhar com
as seguinte desigualdades:
(b − a) 4
|E 31 | ≤ h · máx f (4) (x) , (5.18)
180 x∈(a,b)
O problema agora fica reduzido a encontrar máx f (4) (x). Para isso existem técnicas de Cálculo Di-
x∈(a,b)
ferencial. Usando as desigualdades (5.18) e (5.19) podemos estimar o erro cometido para um h escolhido,
3
5.4.2 Regra 8
de Simpson
3
Podemos obter uma versão que resulta em aproximações ainda mais precisas, conhecida como Regra 8 de
Simpson, realizando interpolações por polinômios de grau 3 (de três em três subintervalos). A construção
1
é semelhante à feita nos casos da Regra do Trapézio e Regra 3 de Simpson: sua versão repetida resulta
na seguinte aproximação:
x3N
3
Z
f (x)dx ≈ h(f (x0 ) + 3f (x1 ) + 3f (x2 ) + 2f (x3 )+
x0 8
+3f (x4 ) + 3f (x5 ) + 2f (x6 ) + ...
3
O erro na Regra 8 é dado por:
(b − a)h4 (4)
E 38 = − · f (ξ)
80 5
(b − a)
= − · f (4) (ξ),
6480 · N 4
(b − a)
onde h = .
3N
e Simpson
Na prática, usar as expressões dos erros da Regra do Trapézio ou Simpson para se estimar uma quantidade
ótima de subintervalos a se trabalhar, objetivando-se atingir uma precisão ε dada, pode ser uma tarefa
erro por comparação entre as aproximações, de forma parecida com a que já fizemos antes.
1
Considere aplicar a Regra 3 de Simpson para integrar uma função contı́nua f (x) sobre um intervalo
[a, b] dividindo o intervalo em dois subintervalos (três pontos); obteremos uma aproximação que chama-
remos de I3 . Após isso, dividamos o intervalo em quatro subintervalos (cinco pontos) e reaplicamos a
|I5 − I3 |
E3,5 = .
|I5 |
Se este for menor que ε, então interrompemos o processo e tomamos I5 como aproximação que verifica
a precisão pedida. Caso contrário, obtemos I7 e realizamos uma nova checagem sobre E5,7 , e assim
sucessivamente.
Observação 5.1 O método acima pode ser reproduzido usando a Regra do Trapézio; neste caso seria
pelo processo iterativo determinado acima, usando a Regra 1/3 de Simpson, de forma a satisfazer a
precisão ε = 10−3 com respeito ao erro relativo sobre as aproximações. Truncaremos na 6a casa decimal.
102 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS
Z 1.2
ex · cos(x)dx ≈ h
3 (f (0) + 4f (0.6) + f (1.2))
0
0.6
= 3 (1 + 4 · 1.503859 + 1.203070)
= 1.643701 = I3 .
Z 1.2
ex · cos(x)dx ≈ h
3 (f (0) + 4f (0.3) + 2f (0.6) + 4f (0.9) + f (1.2))
0
0.3
= 3 (1 + 4 · 1.289569 + 2 · 1.503859 + 4 · 1.528913 + 1.203070)
= 1.648471 = I5 .
Checando erro:
|I5 − I3 |
E3,5 = ≈ 0.0028... > ε.
|I5 |
Z 1.2
ex · cos(x)dx ≈ h
3 (f (0) + 4f (0.2)2f (0.4) + 4f (0.6) + 2f (0.8) + 4f (1.0) + f (1.2))
0
0.2
= 3 (1 + 4 · 1.197056 + 2 · 1.374061 + 4 · 1.503859 + 2 · 1.550549 + 4 · 1.468693 + 1.203070)
= 1.648714 = I7 .
Checando erro:
|I7 − I5 |
E5,7 = ≈ 1.47 · 10−4 < ε,
|I7 |
5.6 Exercı́cios
Exercı́cio 5.6 Usando as regras de Simpson, calcule aproximações para as integrais abaixo, usando
quatro e seis divisões do intervalo de integração. Compare os resultados entre si, entre a aproximação
obtida via Regra do Trapézio (na seção anterior) e entre o valor exato da integral.
Z 2
(a) ex dx
1
Z 4 √
(b) x dx
1
5.7. QUADRATURA GAUSSIANA 103
14
1
Z
(c) √ dx.
2 x
Exercı́cio 5.7 Usando as integrais do exercı́cio anterior, com quantas divisões do intervalo, no mı́nimo,
podemos esperar obter erros menores que 10−5 , via as Regras de Simpson?
0.6
1
Z
Exercı́cio 5.8 Calcule o valor aproximado de dx com três casas decimais de precisão usando
0 1+x
as regras de Simpson.
Z 4
Exercı́cio 5.9 Qual o erro máximo cometido na aproximação de 3x3 − 3x + 1 dx pelas Regras de
0
Simpson com quatro subintervalos? Compare com o resultado obtido via Regra do Trapézio.
Exercı́cio 5.10 Suponha que se conheça os valores de uma função f (x) através da seguinte tabela:
Exercı́cio 5.11 Escolha um objeto ou superfı́cie plana cuja área não seja um polı́gono. Faça medições
para obter uma tabela parecida com a do Exercı́cio 5 e calcule uma aproximação para a área do objeto ou
superfı́cie. Um exemplo de questão que pode ser respondida via este método: qual a proporção da área
azul sobre toda a área da figura que forma o logotipo da marca Pepsi?
Z π
2
Exercı́cio 5.12 Determinar h (a distância entre xi e xi+1 ) necessária para se aproximar cos(x) dx
0
com erro inferior a = 10−3 pelas regras de Simpson.
O que veremos agora são as chamadas fórmulas de quadratura, que utilizam-se de pontos obtidos de forma
ótima, de forma a minimizar o erro. Focaremos naquela conhecida como Quadratura de Gauss-Legendre
(ou apenas Quadratura de Gauss). Para a seguinte construção teórica são necessários elementos de
Façamos uma construção resumida dos polinômios de Legendre; trata-se de uma famı́lia de polinômios
Observação 5.2 Recorde que dois vetores - no sentido geométrico - não nulos são ortogonais quando o
produto escalar deles vale zero. Geometricamente, isto significa que fazem ângulo reto ou são paralelos
interno que, a um par de polinômios na variável x, associe um número real (o produto escalar da Geo-
metria Analı́tica é um tipo de produto interno, mas existem outros como o que usaremos logo a seguir).
A ortogonalidade de uma base de vetores permite escrever um vetor qualquer deste espaço de maneira
otimizada; esta é a ideia principal das fórmulas de Quadratura. O ponto chave omitido aqui é que este
Considere o seguinte produto interno entre funções f (x) e g(x) contı́nuas no intervalo [−1, 1]:
Z 1
hf (x), g(x)i = f (x)g(x) dx.
−1
Sejam φ0 (x), φ1 (x), φ2 (x),..., uma famı́lia de polinômios de grau 0, 1, 2, ... respectivamente. Suponha
que:
hφi (x), φj (x)i = 0, para i 6= j,
e
hφi (x), φi (x)i =
6 0, para φi (x) 6= 0.
lização de Gram-Schmidt ao conjunto {1, x, x2 , ...} (este conjunto é uma base do espaço vetorial real dos
polinômios da variável x). Este processo equivale ao resultado enunciado pelo seguinte teorema (ver [3]).
Teorema 5.1 Considere os polinômios φ0 (x), φ1 (x), φ2 (x), ... de graus 0, 1, 2, ... respectivamente, defini-
dos por:
φ0 (x) = 1,
hx · φ0 (x), φ0 (x)i hx, 1i
φ1 (x) = x −
· φ0 (x) = x − ·1
hφ0 (x), φ0 (x)i h1, 1i (5.20)
e, para k = 2, 3, 4, ...,
φk+1 (x) = x · φk (x) − αk · φk (x) − βk · φk−1 (x),
5.7. QUADRATURA GAUSSIANA 105
onde
hx · φk (x), φk (x)i hφk (x), φk (x)i
αk = , βk = .
hφk (x), φk (x)i hφk−1 (x), φk−1 (x)i
Z 1
φi (x)φj (x) dx = 0.
−1
Exemplo 5.6 Vamos utilizar o último teorema para calcular alguns polinômios de Legendre. φ0 é esta-
φ0 (x) = 1,
R1
xdx x2 1
hx, 1i |
φ1 (x) = x − −1
·1 = x− R1 = x − 2 1−1 = x.
h1, 1i dx x|−1
−1
onde:
R1 3
hx · φ1 (x), φ1 (x)i x dx
α1 = = R−1
1 = 0,
hφ1 (x), φ1 (x)i x2 dx
−1
R1 2
hφ1 (x), φ1 (x)i x dx 1
β1 = = −1
R1 = ,
hφ0 (x), φ0 (x)i dx 3
−1
1
⇒ φ2 (x) = x2 − .
3
Repetindo este processo, obteremos:
3x
φ3 (x) = x3 − ,
5
6x2 3
φ4 (x) = x4 − + ,
7 35
10x3 5x
φ5 (x) = x5 − + .
9 21
..
.
A propriedade principal destes polinômios de Legendre pode ser enunciada da seguinte forma: cada
106 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS
φi (x) possui i raı́zes reais distintas em [−1, 1]; além disso, elas são duas a duas opostas: se x ∈ [−1, 1],
x 6= 0 é uma raiz de φi (x), então −x também é. Na Tabela 5.1 temos as raı́zes dos polinômios de Legendre
Façamos, inicialmente, a Quadratura para integrar uma função f (x) contı́nua no intervalo [−1, 1]. Para
um intervalo arbitrário [a, b] qualquer, será preciso realizar uma mudança de variáveis linear que trans-
A Quadratura de Gauss utiliza-se da famı́lia de polinômios ortogonais para obter uma aproximação
ótima da função f (x) contı́nua num intervalo [a, b]. A Quadratura de grau n consiste na seguinte apro-
ximação:
Z 1 n
X
f (x)dx ≈ Ak f (xk ), (5.21)
−1 k=1
onde:
R1
(ii) Ak = −1
Lk (x)dx, para k = 1, ..., n, onde os Lk são os fatores de Lagrange do polinômio interpo-
Note que a equação (5.21) é resultado da integração, de −1 até 1, do polinômio que interpola os nós
Z 1
cos(x) dx,
−1
1 1
x1 = − √ ≈ −0.57735, x2 = √ ≈ 0.57735.
3 3
x − x2 x − x1
L1 (x) = , L2 (x) = .
x1 − x2 x2 − x1
5.8. QUADRATURA DE GAUSS 107
i φi (x) Raı́zes
0 1 Nenhuma
1 x 0
− √13 ≈ −0.5773502691896258,
2 1
2 x − 3
√1 ≈ 0.5773502691896258,
3
√
− √35 ≈ −0.7745966692414833,
3 x3 − 35 x 0
√
√3 ≈ 0.7745966692414833,
5
√√
− 15+√35
2 30
≈ −0.8611363115940526
√√
− 15−√35
2 30
≈ −0.3399810435848562
4 x4 − 67 x2 + 3
35 √√
15− 2 30
√
35
≈ 0.3399810435848562
√√
15+ 2 30
√
35
≈ 0.8611363115940526
√√
− 35+3√27 70 ≈ −0.9061798459386639
√√
35− 2 70
− 3√7 ≈ −0.538469310105683
10 3 5
5 x5 − 9 x + 21 x
0
√√
35+ 2 70
√
3 7
≈ 0.538469310105683
√√
35+ 2 70
√
3 7
≈ 0.9061798459386639
1 1 1 2 1
x − x2 1 1 x
Z Z Z
A1 = L1 (x) dx = dx = x − x2 dx = − x · x2 = 1.
−1 −1 x1 − x2 x1 − x2 −1 x1 − x2 2 −1
e
Z 1
A2 = L2 (x) dx = 1.
−1
Temos:
Z 1 2
X
cos(x) dx ≈ Ak cos(xk )
−1 k=1
= A1 cos(x1 ) + A2 cos(x2 )
= 1 · 0.83791 + 1 · 0.83791
= 1.67582.
Z 1
cos(x) dx = sen(1) − sen(−1) ≈ 1.68294
−1
Observe que os valores de A1 e A2 no exemplo anterior independem da função f (x) sendo integrada.
Assim, podemos calculá-los de antemão para usarmos para diferentes funções a serem integradas.
Exemplo 5.8 Calculemos os termos A1 , A2 , A3 obtidos a partir dos fatores de Lagrange do polinômio
√ √
3 3
x1 = − √ ≈ −0.7745966692414833, x2 = 0 x3 = √ ≈ 0.7745966692414833
5 5
.
5.8. QUADRATURA DE GAUSS 109
Temos: Z 1
A1 = L1 (x) dx
−1
1
(x − x2 )(x − x3 )
Z
= dx ( como x2 = 0)
−1 (x1 − x2 )(x1 − x3 )
1
1
Z
= x2 − x3 · x dx
(x1 )(x1 − x3 ) −1
1 2
= · ( pois x1 = −x3 )
2x21 3
5
=
9
≈ 0.555555555555555...
Similarmente:
A2 = 0.888888888888888...
A3 = 0.555555555555555...
Para os demais graus, os Ak são calculados da mesma maneira. Estas informações podem ser resumidas
na Tabela 5.2, até n = 8. Note, observando a tabela, que os Ak possuem um padrão que se repete e são
sempre positivos.
Vejamos agora como usar Quadratura para aproximar integrais definidas num intervalo [a, b] que seja
diferente de [−1, 1]; a estratégia é efetuar uma mudança de coordenadas linear que transforme o intervalo
[a, b] em [−1, 1], que é o intervalo sobre o qual efetuamos a Quadratura. Aqui, supomos a 6= b e a 6=
−1, b 6= 1.
Assim, se queremos
Z b
f (x) dx, (5.22)
a
considere u(t) a função de primeiro grau cujo gráfico é a reta que passa pelos pontos (−1, a), (1, b), ou
seja:
b−a b+a
u(t) = t+ .
2 2
110 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS
xi Ai
n=2
−0.5773502691 1.0000000000
0.5773502691 1.0000000000
n=3
−0.7745966692 0.5555555555
0.0000000000 0.8888888888
0.7745966692 0.5555555555
n=4
−0.8611363115 0.3478548451
−0.3399810435 0.6521451548
0.3399810435 0.6521451548
0.8611363115 0.3478548451
n=5
−0.9061798459 0.2369268850
−0.5384693101 0.4786286704
0.0000000000 0.5688888888
0.5384693101 0.4786286704
0.9061798459 0.2369268850
n=6
−0.9324695142 0.1713244923
−0.6612093864 0.3607615730
−0.2386191860 0.4679139345
0.2386191860 0.4679139345
0.6612093864 0.3607615730
0.9324695142 0.1713244923
n=7
−0.9491079123 0.1294849661
−0.7415311855 0.2797053914
−0.4058451513 0.3818300505
0.0000000000 0.4179591836
0.4058451513 0.3818300505
0.7415311855 0.2797053914
0.9491079123 0.1294849661
n=8
−0.9602898564 0.1012285362
−0.7966664774 0.2223810344
−0.5255324099 0.3137066458
−0.1834346424 0.3626837833
0.1834346424 0.3626837833
0.5255324099 0.3137066458
0.7966664774 0.2223810344
0.9602898564 0.1012285362
du b−a
Assim, = e a integral (5.22) torna-se:
dt 2
1 1
b−a b−a
Z Z
f (u(t)) · dt = f (u(t)) dt.
−1 2 2 −1
Note que agora temos uma integral definida sobre o intervalo [−1, 1], sobre o qual já sabemos como
b 1 n
b−a b−a X
Z Z
f (x) dx = f (u(t)) dt ≈ · Ak · f (u(xk )).
a 2 −1 2
k=1
usando Quadratura com n = 4 e trabalhando com dez casas decimais. Por integração direta, sabemos que
ln(6) ≈ 1.7917594692...
2 − (−3) 2 + (−3) 5 1
u(t) = t+ = t− .
2 2 2 2
k xk Ak u(xk ) f (u(xk ))
2 4
1 b−a X
Z
dx ≈ · Ak · f (u(xk ))
−3 x+4 2
k=1
5
=
2
(0.3478548451 · 0.74230275399
+0.6521451548 · 0.37735174219
+0.6521451548 · 0.22988756199
+0.3478548451 · 0.1769022053)
= 1.7893951719.
Observação 5.3 O mesmo processo iterativo visto no Exemplo 5.5 pode ser aplicado usando Quadratura.
Observação 5.4 A Quadratura vista aqui é conhecida como Quadratura de Gauss-Legendre. Ela fun-
ciona melhor nos casos em que a função f (x) não possui assı́ntotas (verticais e horizontais) e onde o
intervalo de integração é limitado. Para integrandos f (x) que possuam assı́ntotas e/ou para integrais
Observação 5.5 Existem métodos numéricos similares para integrais múltiplas, ver [2].
5.9 Exercı́cios
Exercı́cio 5.13 Calcule as integrais das funções f (x) no intervalo [a, b] abaixo usando Quadratura de
Gauss com o valor de n indicado. Compare o resultado obtido com o valor obtido pelo cálculo direto, se
possı́vel.
√
x
(a) f (x) = e , [a, b] = [2, 4].
p
(b) f (x) = ln( 4 cos(x)2 + 1), [a, b] = [1, 1.5].
sen(x)
(c) f (x) = , [a, b] = [0, 1].
x
Exercı́cio 5.14 Obtenha aproximações para as integrais abaixo usando Quadratura de Gauss. Use o
processo iterativo para integrais do Exemplo 5.5 para obter erro relativo inferior ao ε indicado.
Z 2
2
(a) e−x dx, ε = 10−4 .
−2
5.9. EXERCÍCIOS 113
−2
x
Z
(b) dx, ε = 10−3 .
0 x2 + 3
Z 1.6
(c) x−x dx, ε = 10−3 .
0
114 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS
Capı́tulo 6
Diferenciais Ordinárias
Considere a equação diferencial ordinária de primeira ordem abaixo, com uma condição inicial informada
y 0 = f (x, y)
, (6.1)
y(x0 ) = y0
onde f (x, y) é uma função contı́nua de duas variáveis. A maior parte das equações diferenciais encontradas
na prática não podem ser resolvidas analiticamente; para compreender suas soluções, lançamos mão
de métodos numéricos. Os métodos que veremos aqui produzem discretizações aproximadas para as
soluções.
Em todos os métodos que veremos, será preciso escolher um h, que será conhecido como tamanho
xk+1 = x0 + h · xk , k = 0, 1, ..., n.
n é o número de passos e [x0 , xn ] é o intervalo sobre o qual queremos obter uma discretização aproxi-
mada da solução.
Seja y(x) a solução de (6.1). Para cada xk , obteremos uma aproximação yk ≈ y(xk ). Vamos também
115
116 CAPÍTULO 6. MÉTODOS NUMÉRICOS PARA EQUAÇÕES DIFERENCIAIS ORDINÁRIAS
denotar fk = f (xk , yk ).
O método mais geral para se obter uma aproximação numérica para a solução de 6.1 consiste em trabalhar
com polinômio de Taylor de f (x, y) de ordem q, assumindo que esta seja suficientemente derivável.
Seja y(x) a solução exada do PVI (6.1). O polinômio de Taylor de y(xk + h) com erro de Lagrange
h2 00
y(xk + h) = y(xk ) + hy 0 (xk ) + 2! y (xk ) + ...
q q+1
(6.2)
+ hq! y (q) (xk ) + h
(q+1)! y
(q+1)
(ξk ),
para algum ξk ∈ (xk , xk+1 ). Como não conhecemos y(x), as suas derivadas em (6.2) não são conhecidas;
no entanto, como y 0 (x) = f (x, y) e conhecemos f (x, y), podemos fazer as seguintes substituições abaixo
y0 = f (x, y),
∂f ∂f dy
y 00 = f0 = + = fx + fy f,
∂x ∂y dx
∂fx ∂fx dy
∂fy ∂fy dy
∂f ∂f dy
(6.3)
y (3) = f 00 = + + + f + fy +
∂x ∂y dx ∂x ∂y dx ∂x ∂y dx
Essas grandezas podem ser avaliadas em xk e substituı́das em (6.2). O cálculo das derivadas de ordem
superior de f pode tornar este método inviável para valores altos de q. A expressão (6.2), sem a expressão
hq (q−1)
y(xk + h) = y(xk ) + hf (xk , y(xk )) + ... + f (xk , y(xk )).
q!
(j)
Como a aproximação consiste em fazer y(xk ) ≈ yk e f (j) (xk , y(xk )) ≈ fk . Obtemos a seguinte expressão
No caso particular em que q = 1, este método também é conhecido como Método de Euler. Essa
yk+1 = yk + hfk ,
Vamos obter uma aproximação para a solução y(x) deste PVI usando h = 0.1 e o Método de Taylor
de ordem 2. Temos: x0 = 0, xn = 0.5, donde n = 5. Isso significa que obteremos aproximações para
(x0 , y(x0 )), (x1 , y(x1 )), ..., (x5 , y(x5 )),
onde
y0 = y(x0 ) = 1.
h2 0
yk+1 = yk + hfk + f , k = 0, 1, 2, 3, 4. (6.5)
2 k
Como
f = −y + x2 + 1 ⇒ fk = −yk + x2k + 1
então
para cada k = 0, 1, 2, 3, 4. Podemos substituir estas em (6.5), ou calcular estes termos à parte; faremos
Fazendo k = 0: x0 = 0, y0 = 1
portanto
0.01 0
y1 = y0 + 0.1 · f0 + f = 1.
2 0
Fazendo k = 1: x1 = 0.1, y1 = 1
portanto
0.01 0
y2 = y1 + 0.1 · f1 + f = 1.00195.
2 1
Sucessivamente: Fazendo k = 2:
Fazendo k = 3:
Finalmente, fazendo k = 4:
y(x) = −2e−x + x2 − 2x + 3.
6.3. MÉTODOS DE RUNGE-KUTTA 119
Temos estas aproximações sumarizadas e comparadas na Tabela 6.1. Na Figura 6.1 temos o gráfico da
xk yk y(xk ) Erro
0 1 1
0.1 1 1.00032516392808 3.25 · 10−4
0.2 1.00195 1.002538493844036 5.88 · 10−4
0.3 1.00756475 1.008363558636564 7.98 · 10−4
0.4 1.01839609875 1.019359907928721 9.63 · 10−4
0.5 1.03584846936875 1.036938680574733 1.09 · 10−3
Tabela 6.1: Resultados aproximados e exatos das soluções do PVI do Exemplo 6.1.
y
1.05
1
x
0.1 0.2 0.3 0.4 0.5
É importante notar que, conforme nos afastamos de x0 (isto é, k cresce), o erro tende a ir aumentando.
Uma estratégia paa reduzir este efeito é diminuir o tamanho do passo (o que implica numa quantidade
O método visto anteriormente destaca-se pela sua acessibilidade e baixa dependência de recursos compu-
tacionais. Havendo acesso a uma capacidade computacional mais potente, ou se não for possı́vel computar
Veremos apenas o Método de Runge-Kutta de 4 estágios e 4a ordem; ele (ou versões aperfeiçoadas
dele) é a mais comumente usada e implementada nos softwares de computação numérica. Como antes, h
A partir de um PVI
y 0 = f (x, y)
, (6.6)
y(x0 ) = y0
120 CAPÍTULO 6. MÉTODOS NUMÉRICOS PARA EQUAÇÕES DIFERENCIAIS ORDINÁRIAS
onde
R
X
φ(x, y, h) = cj Kj , onde:
j=1
K1 = f (x, y),
j−1
!
X
Kj = f x + aj h, y + h bjs Kj , j = 2, 3, ..., R,
s=1
j−1
X
aj = bjs , para j = 2, 3, ..., R.
s=1
Runge-Kutta de 4a ordem
Existem várias versões deste método; via de regra são todos equivalentes entre si. Usaremos a seguinte
(ver [3]):
K1 = f (xk , yk ),
= f xk + 21 h, yk + 12 hK1 ,
K2
= f xk + 21 h, yk + 12 hK2 ,
K3
K4 = f (xk + h, yk + hK3 ) .
Exemplo 6.2 Voltemos ao Exemplo 6.1; vamos aplicar a ele o Método de Runge-Kutta de 4a Ordem
onde:
Estes cálculos renderão os seguintes resultados (com truncamento em oito casas decimais), bem como
6.4. EXERCÍCIOS 121
xk K1 K2 K3 K4 yk y(xk ) Erro
0 − − − − 1 1 0
6.4 Exercı́cios
y(2) = 1.
(b) Se h = 0.125, calcule a quantidade de passos necessários para obter uma aproximação para y(5).
(c) Escreva o processo iterativo para o PVI dado usando o Método de Euler (método de Taylor com
q = 1) com o h informado.
(a) Use o método de Taylor com q = 2 para obter aproximações para y(2) e y(3). Use o Excel para
(b) Use o método de Runge-Kutta de 4a ordem para obter aproximações para y(2) e y(3). Use o Excel
Exercı́cio 6.3 Reescreva o processo iterativo do Método de Taylor dado na equação (6.4) com q = 3.
122 CAPÍTULO 6. MÉTODOS NUMÉRICOS PARA EQUAÇÕES DIFERENCIAIS ORDINÁRIAS
x
y0 = ,
y
y(1) = 2.
(a) Use o Métodos de Runge-Kutta de 4a ordem e um aplicativo de sua preferência (Ex: Excel) para
aproximar o valor da solução y(x) quando x = 5. Use os seguintes valores para h: 0.1, 0.125 e
0.05.
(b) Resolva o PVI e calcule y(5). Compare com as aproximações obtidas no item (a).
(c) Coloque, num mesmo sistema de eixos, o gráfico de y(x) e os pontos (xn , yn ) obtidos no item (a).
Ordinárias
y10 = f1 (x, y1 , y2 , ..., ym )
y20 = f2 (x, y1 , y2 , ..., ym )
.. (6.7)
.
y 0 = f (x, y , y , ..., y ).
m n 1 2 m
y0 = f (x, y),
6.5. MÉTODOS NUMÉRICOS PARA SISTEMAS DE EQUAÇÕES DIFERENCIAIS ORDINÁRIAS123
onde:
y1 f1 (x, y)
y2 f2 (x, y)
y= , f (x, y) = .
..
..
. .
ym fm (x, y)
e
y1,0
y2,0
y0 = y(x0 ) = . .
.
.
ym,0
Os métodos vistos anteriormente podem ser aplicados a sistemas de EDOS, desde que o processo
y0 = z
z 0 = y + ex
y(0) = 1, z(0) = 0,
y z
y= , f (x, y, z) = .
z y + ex
yk+1 = yk + h · f (xk , yk )
yk+1 = yk + h · f (xk , yk , zk ).
Temos:
yk+1 yk zk
= + h .
zk+1 zk yk + exk
124 CAPÍTULO 6. MÉTODOS NUMÉRICOS PARA EQUAÇÕES DIFERENCIAIS ORDINÁRIAS
y(x )
1
o que assumimos ser uma aproximação para .
z(x1 )
Fazendo k = 1: temos x2 = 0.2 e
y y
2 1 z1 1.02
= + h = ,
x1
z2 z1 y1 + e 0.4105
y(x2 )
o que assumimos ser uma aproximação para .
z(x2 )
É possı́vel escrever esta equação de ordem m como um sistema de m equações diferenciais de ordem
z10 = y 0 = z2
z20 = y 00 = z3
z30 = y 000 = z4
..
.
0
= y (m−1) = zm
zm−1
0
zm = y (m) = f (x, y, y 0 , ..., y (m−1) ).
6.7. EXERCÍCIOS 125
y 0 = z ⇒ z 0 = y 00 = y − ex
e obtemos
y0 = z
z 0 = y − ex
y(0) = 1
z(0) = 2
Dessa forma, pode-se aplicar os métodos numéricos vistos na forma vista na Seção 1 a equações de
6.7 Exercı́cios
Exercı́cio 6.5 Escreva o processo iterativo obtido aplicando ao seguinte PVI os métodos pedidos:
y 0 = x2 − z
z 0 = xy − zy
y(0) = 1.2, z(0) = 3
Exercı́cio 6.6 Para cada processo iterativo obtido no Exercı́cio anterior, calcule aproximações das soluções
(a) h = 0.1.
126 CAPÍTULO 6. MÉTODOS NUMÉRICOS PARA EQUAÇÕES DIFERENCIAIS ORDINÁRIAS
(b) h = 0.01.
(c) h = 0.001.
(c) y (4) − y = 0
x
(d) y 00 − = y2
y
Reduza cada uma das EDOs a um sistema de equações diferenciais de primeira ordem. Se h = 0.01,
escreva o processo iterativo obtido aplicando sobre este PVI os seguintes métodos:
edition, 1986.
[2] A. M. Burden, R. L. Burden, and D. J. Faires. Análise Numérica. CENGAGE - CTP Nacional, 2016.
[6] R. J. Santos. Um Curso de Geometria Analı́tica e Álgebra Linear. Imprensa Universitária UFMG,
[7] G. W. Stewart. Introduction to Matrix Computations. Computer Science and Applied Mathematics.
127