Cálculo Numérico com Octave · 2019. 3. 1. · na 3 em que a variável ^um _ foi atribuída ao...
Transcript of Cálculo Numérico com Octave · 2019. 3. 1. · na 3 em que a variável ^um _ foi atribuída ao...
Cálculo Numérico com Octave
Notas de Aula
Jonathan Tejeda Quartuccio
IMPORTANTE: Essas notas de aulas foram construídas com base no curso ministrado pelo pro-
fessor Ricardo Biloti, do IMEEC – Unicamp, no segundo semestre de 2018. Muitos exemplos e
figuras, inclusive a presente nessa capa, foram retiradas do material de autoria do professor
Biloti. O primeiro capítulo, de introdução ao Octave, foi feito de acordo com o arquivo “Introdu-
ção ao Octave”, de Fernando Lourenço de Souza.
Pág
ina2
Introdução ao Octave Ao executar o Octave (GUI) você verá essa tela surgir:
Aqui, os dois >> mostram que você pode digitar os comandos. Não vamos nos fixar nos erros
que podem surgir (você saberá muito bem quando um erro for cometido). Ao invés disso, vamos
nos focar no que nos interessa (uma vez que esse não é um curso intensivo de Octave).
Operadores aritméticos
No Octave, a ordem de precedência de operações é:
Potenciação (^)
Multiplicação/Divisão (* /)
Adição/Subtração (+ -)
onde os caracteres entre parêntesis são os usados para as respectivas operações. Assim, por
exemplo, a operação 5 + 17 fica:
Outro exemplo é o cálculo 2 + 35:
note que primeiro foi feito o cálculo 35 = 243 e depois foi somado 2. Os resultados são atribuídos
a uma variável “ans”. Vamos mudar isso criando uma variável “resposta”. Fazemos isso atribu-
indo, primeiro, resposta = ans. Assim:
Podemos guardar valores em variáveis e fazer uma operação só com essas variáveis. Ve-
jamos um exemplo:
Pág
ina3
em que a variável “um” foi atribuída ao número 1 e a variável “dois” foi atribuída ao número 2.
Variáveis
Octave é uma linguagem de programação, e por conta disso ele possui certas regras para
nomes de variáveis. As variáveis só podem ser iniciadas por letras e não podem conter espaços
e nem caracteres de pontuação. Assim como ocorre em outras linguagens, como C e Python, o
Octave faz acepção entre letras minúsculas e maiúsculas. Por exemplo, uma variável “nome” é
diferente de uma variável “Nome”.
As seguintes variáveis já possuem um significado pré-determinado e, por isso, não podem
ser usados como nomes de novas variáveis:
• ans – variável usada para resultados
• pi – variável que fornece o valor do número “pi”
• eps – menor número que, quando somado a 1, gera um número maior que 1 no com-
putador
• flops – armazena um número de operações em ponto flutuante
• inf – infinito
• NaN ou nan – significa um número indefinido
• i e j – unidade imaginária de um complexo
• nargin – número de argumentos de entrada de uma função
• nargout – número de argumentos de saída de uma função
• realmin – menor número que o computador pode armazenar em valor absoluto
• realmax – maior número que o computador pode armazenar em valor absoluto
• who – mostra as variáveis declaradas pelo usuário
• clear palavra – apaga a variável “palavra”
• clear – apaga todas as variáveis declaradas pelo usuário
Representação numérica no Octave
Se escrevemos 2/3 obteremos
Se quisermos representar o resultado com apenas 2 algarismos significativos, fazemos:
Pág
ina4
Se quisermos expressar o resultado com mais algarismos, usamos:
note que o resultado veio acompanhado do expoente -1.
Matrizes e Vetores
Elementos de grande importância são as matrizes e os vetores. Vamos criar a seguinte
matriz:
𝐴 = [2 1 65 10 −31 5 8
]
Para isso, faremos:
ou seja, os elementos entram dentro dos colchetes. Os elementos de uma mesma linha são se-
parados por vírgulas, enquanto que o ponto e vírgula pula para a próxima linha da matriz. Se
preferir, os elementos de uma mesma linha podem ser separados por espaços ao invés de vír-
gulas:
Caso você queria criar uma matriz e não fazer ela ser impressa na tela, você pode usar o ponto
e vírgula no final do comando (na verdade isso serve para qualquer operação que você fizer e
não quiser ver o resultado sendo mostrado):
Podemos gerar uma matriz-linha com números entre 2 e 20, iniciando no 2, de modo que
seus valores sejam espaçados por 4 (por exemplo). Nesse caso, escrevemos:
Pág
ina5
Ou seja, temos a sintaxe início : passo : fim
Podemos criar uma matriz identidade usando o comando “eye( )” onde o número entre
parêntesis indica a ordem da matriz. Por exemplo, uma matriz identidade de ordem 4:
A matriz cujo todos os elementos são unitários é gerado pelo comando “ones( )”. Por
exemplo, para ones(5):
Uma matriz de zeros é obtida com o comando “zeros( )”. Por exemplo, zeros(3):
Uma matriz com valores aleatórias é construída com o comando “rand( )”. Por exemplo,
rand(5):
Digamos que você deseja excluir a terceira linha da matriz A criada anteriormente. Para
isso usamos o comando A(3, : ) = [ ]
Pág
ina6
Para deletar uma coluna, por exemplo a segunda, fazemos A( :, 2) = [ ]
Podemos acessar um elementos específico da matriz A pelo comando A(i,j). Nesse caso, o
programa mostrará o elemento da linha i e coluna j:
Se quisermos acessar uma linha inteira, por exemplo a terceira, usamos A(3, : )
Se quisermos a primeira coluna inteira, o comando fica A(: ,1)
Podemos acrescentar novos elementos à nossa matriz A. Podemos fazer isso com o co-
mando:
Nesse caso criamos uma matriz B a partir de A. Para isso, inserimos na linha 1 de A o elemento
14, na linha 2 o elemento 20 e na linha 3 o elemento -3. Ou seja, criamos uma nova coluna em
A. O seguinte código cria uma nova matriz J a partir de A:
Pág
ina7
Nesse caso, a matriz J é a matriz A com uma linha a mais, cujos elementos são [5,5,5].
Operações entre matrizes
Vamos criar duas matrizes A e B:
Uma vez criada as matrizes, podemos fazer operações entre elas. A soma será:
Podemos multiplicar uma matriz por um número real:
Ou multiplicar matrizes:
ou
Pág
ina8
Atente que as operações devem seguir as regras da álgebra matricial. A operação A^2 é o mesmo
que A*A:
Já a operação A.^2 toma cada elemento de A e eleva ao quadrado:
O comando [v,x] = eig(A) retorna para v os autovetores de A e para x os autovalores de A.
Por exemplo:
Algumas funções elementares
Algumas funções pré-definidas em Octave são:
• abs(x) – valor absoluto de x
• acos(x) – arco-cosseno de x
Pág
ina9
• asin(x) – arco-seno de x
• atan(x) – arco-tangente de x
• cos(x) – cosseno de x
• sin(x) – seno de x
• tan(x) – tangente de x
• exp(x) – exponencial de x
• gcd(x,y) – máximo divisor comum de x e y
• lcm(x,y) – mínimo múltiplo comum de x e y
• log(x) – logaritmo de x na base 𝑒
• log10(x) – logaritmo de x na base 10
• rem(x,y) – resto da divisão de x por y
• sqrt(x) – raiz quadrada de x
Sistema Lineares
Vamos criar um sistema 3 × 3 de modo aleatório e um vetor, também aleatório, de modo
a obtermos a construção do tipo 𝐴𝑥 = 𝑏:
A solução desse sistema é dada por 𝑥 = 𝑏/𝐴, ou no comando em Octave: 𝑥 = 𝐴\𝑏:
O comando 𝑥 = 𝐴\𝑏 é equivalente a calcular 𝑥 = (𝐴)−1𝑏.
Sistemas não lineares
Vamos resolver o seguinte sistema não linear:
𝑦1 = −2𝑥12 + 3𝑥1𝑥2 + 4 sin(𝑥2) − 6
𝑦2 = 3𝑥12 − 2𝑥1𝑥2
2 + 3cos(𝑥1) + 4
Pág
ina1
0
partindo das condições iniciais 𝑦1 = 1 e 𝑦2 = 2. O comando em Octave para solucionar esse
sistema é:
Integral definida
O cálculo da integral definida é feita com o comando quad:
[v, ier, nfum, err] = quad("f", a, b, tol, sing)
No comando acima temos que f é a função a ser chamada para calcular o valor do integrando.
Já a e b são os limites de integração. O argumento tol é um vetor que se especifica a precisão do
resultado. O comando sing é um vetor de valores em que o integrando é conhecido como sin-
gular. Do lado esquerdo do comando temos que v é o resultado da integração. O argumento ier
é um código de erro, que retorna 0 para um cálculo bem sucedido. Já nfun indica o número de
iterações necessárias. Por fim, err é uma estimativa de erro.
Vamos calcular a integral
∫ 𝑥 sin (1
𝑥)√|1 − 𝑥|𝑑𝑥
3
0
O comando em Octave será:
Gráficos
Para gráficos existem dois comandos básicos: gplot (gráficos 2D) e gsplot (gráficos 3D).
Vejamos um exemplo:
O gráfico gerado está mostrado na imagem a seguir. Nesse exemplo geramos dois gráficos, um
com a curva do cosseno e o outro com a curva do seno. Para o cosseno indicamos, entre aspas,
que o gráfico deve ser gerado por uma linha sólida (-) na cor azul (b) e com a legenda cos(t). Para
Pág
ina1
1
o seno indicamos, também entre aspas, que a curva será representada por sinais positivos (+) a
cada três pontos (3) e na cor vermelha (r) com a legenda sin(t).
Os seguintes comandos são usados para plotar gráficos em 2D:
• bar(x,y) – a partir de dois vetores, x e y, um gráfico de barras é produzido
• loglog(args) – plota em escala logarítmica ambos eixos
• polar(𝜃, 𝜌) – gera um gráfico de acordo com as coordenadas polares 𝜃 e 𝜌
• semilogy(args) – gera um gráfico logarítmico somente no eixo y
• semilogx(args) – gera um gráfico logarítmico somente no eixo x
• stairs(x,y) – plota um gráfico em degrau
Para 3 dimensões precisamos, primeiro, criar uma malha de dados a serem visualizados.
Essa malha é criada com o comando meshgrid. Vejamos outros comandos:
• gsplot – plota um gráfico em 3D
• mplot(x1,y1,x2,y2) – plotamos diversos valores de x e y num mesmo gráfico
• plot border(args) – especifica o tipo de borda a ser usada de acordo com os seguintes
argumentos: blank; all; north; south; east; West
• subplot(rows,cols,index) – rows (número de linhas no subplot grid); cols (número de
colunas no subplot grid) e index (index de subplot onde se faz a próxima figura)
• grid – insere uma grade na figura plotada
• title(string) – fornece um título (string) para o gráfico
• xlabel(string) – nomeia o eixo x
• ylabel(string) – nomeia o eixo y
• zlabel(string) – nomeia o eixo z
Vamos construir uma malha usando o comando meshgrid e obter um gráfico em 3D:
Pág
ina1
2
Nesse ponto, surge a seguinte malha:
O código completo é:
E o gráfico gerado é:
O próximo exemplo cria um gráfico de potencial:
Pág
ina1
3
Aqui usei o comando surf, onde é gerado um gráfico de superfície:
Se ao invés de surf usarmos o comando mesh, obteremos:
Pág
ina1
4
Erros Dificilmente uma medida que fazemos coincide com o valor real do que estamos dese-
jando medir. Esses erros de medidas podem surgir devido a vários fatores, como, por exemplo,
problemas com o equipamento de medição. Vamos supor que 𝑥 seja o valor real do que deseja-
mos medir e 𝑥 seja o seu valor aproximado (obtido experimentalmente). Definimos o erro abso-
luto como:
𝐸𝑎𝑏𝑠(𝑥) = |𝑥 − 𝑥|
Um modo de minimizar o erro é calcular o erro relativo, da forma:
𝐸𝑟𝑒𝑙(𝑥) =|𝑥 − 𝑥|
|𝑥|
para 𝑥 ≠ 0. Entretanto, esse método necessita do conhecimento do valor exato de 𝑥, o que é
difícil já que queremos determinar esse valor. Entretanto, se determinarmos uma dimensão ca-
racterística 𝐿, podemos calcular o chamado erro adimensional:
𝐸𝑎𝑑𝑚(�̂�) =|𝑥 − 𝑥|
𝐿
Por exemplo, se quisermos determinar o tamanho de uma mesa, então 𝐿 = 1 m é uma dimen-
são razoável. Para calcular a distância entre duas cidades, 𝐿 = 1 km também é uma dimensão
razoável.
Exemplo 1: Seja 𝑥 = 1.00000 e 𝑥 = 1.00499. Os erros absoluto e relativo são
𝐸𝑎𝑏𝑠 = 1.00499 − 1.00000 = 4.99 ∙ 10−3
𝐸𝑟𝑒𝑙 =4.99 ∙ 10−3
1.00000= 4.99 ∙ 10−3
Exemplo 2: Seja 𝑥 = 9.00000 e 𝑥 = 8.99501. Os erros absoluto e relativo são
𝐸𝑎𝑏𝑠 = 9.00000 − 8.99501 = 4.99 ∙ 10−3
𝐸𝑟𝑒𝑙 =4.99 ∙ 10−3
9.00000= 5.54 ∙ 10−4
Através desses dois exemplos, vemos que, no geral, o erro relativo fornece uma aproxi-
mação melhor para o resultado desejado. Note que tanto em 1 quanto em 2, os erros absolutos
são os mesmos. Entretanto, o erro relativo em 2 é uma ordem de grandeza menor.
Exemplo 3: Vamos calcular a área de uma circunferência de raio 100 usando 𝜋1 = 3.14 e
𝜋2 = 3.141592.
A área é dada por 𝜋𝑅2. Logo:
𝐴1 = 𝜋1𝑅2 = 3.14 ∙ (100)2 = 31400
𝐴2 = 𝜋2𝑅2 = 3.141592 ∙ (100)2 = 31415.92
Pág
ina1
5
Como 𝜋2 tem um valor com mais casas decimais, vamos considera-lo como sendo o valor verda-
deiro. Assim:
𝐸𝑎𝑏𝑠 = |𝐴1 − 𝐴2| = 15.92
𝐸𝑟𝑒𝑙 =𝐸𝑎𝑏𝑠𝐴2
=15.92
31415.92= 5.07 ∙ 10−4
O exemplo 3 torna mais evidente como o erro relativo fornece uma melhor aproximação.
Os tipos de erros são:
Erros de medição ou de aquisição: esses erros podem ser diminuídos, mas nunca evitados.
A origem desses erros está na pessoa que faz a medida, no equipamento utilizado, em
precisões do experimento, etc.
Erros de representação: assim como os erros de medição, esses erros são inevitáveis. Es-
ses problemas surgem quando os dados são digitalizados. No geral, esses erros tem or-
dem de magnitude muito menor que a de outros erros.
Erros de cálculo em precisão finita: esse é o erro de maior interesse no cálculo numérico,
e está relacionado com o quanto de dígitos o computador pode armazenar.
Erros introduzidos por algoritmos numéricos: esses erros surgem quando usamos deter-
minados métodos de cálculo que apenas aproximam o resultado esperado.
Pág
ina1
6
Aritmética de Ponto Flutuante Para cálculos científicos em computadores, utilizamos a aritmética de ponto flutuante.
Um número 𝑥 é representado em ponto flutuante da seguinte forma:
𝑓𝑙(𝑥) = ±(0. 𝑑1𝑑2𝑑3…𝑑𝑛) ∙ 𝐵𝑒
onde 𝑑1𝑑2𝑑3…𝑑𝑛 representam os dígitos do número, que chamamos de mantissa. Por defini-
ção, o dígito 𝑑1 tem que ser diferente de zero (ao menos que o número que se deseja represen-
tar seja, de fato, o zero). Isso impede que um mesmo número tenha várias representações dife-
rentes. O valor 𝐵 é a base do número, enquanto que 𝑒 é o expoente. O expoente 𝑒 pertence a
determinado intervalo, de modo que −𝑀 < 𝑒 < 𝑀, onde −𝑀 é o limitante inferior e 𝑀 é o
limitante superior.
Exemplo 1: Escreva o número 0.025312 na base 10 com cinco dígitos.
Para tornar esse número em ponto flutuante, devemos andar uma casa para a esquerda.
Assim:
0.025312 = 0.25312 ∙ 10−1
Exemplo 2: Escreva o número 25.312 na base 10 com cinco dígitos.
Nesse caso, andamos com o ponto duas casas para a esquerda:
0.25312 ∙ 102
Exemplo 3: Converta 235.89(10)
O subscrito (10) significa que desejamos converter esse número em ponto flutuante na
base 10. Assim, andando com a vírgula 3 casas para a esquerda:
0.23589 ∙ 103
Note que, tanto no exemplo 2 quanto no 3, o expoente nada mais é do que o número de
algarismos que havia antes do ponto. De modo semelhante, no exemplo 1 o expoente negativo
mostra quantos zeros existem depois do ponto.
Exemplo 4: Converta 0.000875(10)
Como existem 3 zeros depois do ponto, teremos:
0.875 ∙ 10−3
Exemplo 5: Converta 101.01(2)
Nesse caso, estamos trabalhando na base 2 (binário). Fazemos:
0.10101 ∙ 211
Atenção: o expoente 11 não é o algarismo “onze”, mas sim o binário 1 1 (um, um). Como havia
três dígitos antes do ponto, então o expoente será 3. Entretanto, 3 em binário é representado
por 11.
Pág
ina1
7
Exemplo 6: Num sistema de ponto flutuante de base 10, capaz de armazenar 7 dígitos
para a mantissa, √2 é representado por 0.1414214 ∙ 101. Aqui é interessante um parêntesis.
Armazenando 8 dígitos vemos que √2 = 0.14142135 ∙ 101. Note que ao armazenar 7 dígitos,
arredondamos o 3 para 4. Faremos isso sempre que o próximo dígito, nesse caso o 5, for maior
ou igual a 5.
Exemplo 7: Represente o valor de 𝜋 em ponto flutuante na base 10 usando 5 dígitos.
Temos que 𝜋 = 3.141592654… Então
𝑓𝑙(𝜋) = 0.31416 ∙ 101
Exemplo 8: Qual o menor e o maior número representável num sistema de base 10, 5
dígitos para a mantissa e 2 para o expoente?
O menor número seria:
0.10000 ∙ 10−99
e o maior seria:
0.99999 ∙ 1099
Agora que temos uma ideia de como representar números em ponto flutuante, podemos
retomar ao estudo de erros.
O que faremos agora é determinar a diferença entre precisão e acurácia.
Precisão se refere a um propriedade do sistema de ponto flutuante da máquina. Já acu-
rácia diz respeito a como iremos fazer um cálculo de modo a obter a resposta o mais próximo
possível do valor real. Uma máquina possui grande precisão se os erros em operações matemá-
ticas forem pequenos. A acurácia irá mostrar o quão bom está o resultado.
Existem dois tipos de precisão, que chamamos de precisão simples e precisão dupla. A
diferença entre essas duas é o espaço utilizado para armazenamento de números de ponto flu-
tuante. Na precisão simples são utilizados 32 bits, enquanto que na dupla são 64. Abaixo temos
um esquema que descreve como os bits são distribuídos, de modo que 𝑠 é o sinal do número, 𝑒
é o expoente do número e 𝑓 é a mantissa.
O menor número 𝑢 positivo de ponto flutuante que satisfaz a relação
𝑓𝑙(1 + 𝑢) > 1
é denominado unidade de arredondamento.
Exemplo 9: Uma calculadora científica modelo 𝑓𝑥 − 82𝑀𝑆, da CASIO, possui uma unidade
de arredondamento na ordem de 10−9. Se fizermos 1 + 1 ∙ 10−9 teremos como resposta
Pág
ina1
8
1.000000001. Se fizemos 1 + 1 ∙ 10−10 teremos como resposta 1. Portanto a ordem de gran-
deza de 𝑢 é igual a 10−9.
Podemos, então, dizer que a unidade de arredondamento mede a precisão da máquina.
Um algoritmo para calcular com quantos dígitos uma máquina trabalha é:
1. 𝜖 = 1
2. Para j = 1,2,… faça
3. 𝜖 = 𝜖/2
4. Se 1 + 𝜖 > 1 então
5. Volte a 3
6. Caso contrário
7. Escreva o valor de j
Consideremos um sistema de ponto flutuante simples que seja capaz de representar ape-
nas cinco dígitos significativos de um número e um único digito para o expoente. Nesse sistema,
a unidade de arredondamento é 𝑢 = 10−4.
Exemplo 10: Num sistema de ponto flutuante com cinco dígitos significativos, calcule
49213 + 31.728 − 49244.
Calculando de modo direto, temos:
49213 + 31.728 − 49244 = 0.728
Agora, vamos transformar esses números em ponto flutuante para fazer o cálculo de forma nu-
mérica. Fazendo a primeira soma:
49213 + 31.728 = 49244.728
escrevendo na forma de ponto flutuante:
0.49245 ∙ 105
Tornando o ultimo termo em ponto flutuante
. 49244 ∙ 105
Fazendo a subtração:
0.49245 ∙ 105 − 0.49244 ∙ 105 = 0.00001 ∙ 105 = 1
Veja que o valor obtido foi diferente daquele calculando de forma direta. O erro relativo no cál-
culo foi
|1 − 0.728|
0.728= 3.74 ∙ 10−1
que é bem maior que a unidade de arredondamento do sistema que estamos usando (3.74 ∙
10−1 ≫ 10−4). Em que passo esse erro foi originado? Note que a primeira adição fornece um
resultado com 8 dígitos. Entretanto, nosso “computador de mão” guarda somente os 5 primeiros
dígitos. Esse problema de perda de dígitos não é preocupante para a adição em si. Entretanto,
Pág
ina1
9
na hora de realizar a subtração esses 3 dígitos perdidos passaram a fazer falta. Os cinco primei-
ros dígitos foram cancelados, mas os outros 3 seriam necessários para o cálculo exato.
Exemplo 11: Vamos determinar as raízes da equação 𝑎𝑥2 − 𝑏𝑥 + 𝑐 = 0.
Podemos resolver esse exercício aplicando diretamente:
𝑥1 =𝑏 + √𝑏2 − 4𝑎𝑐
2𝑎; 𝑥2 =
𝑏 − √𝑏2 − 4𝑎𝑐
2𝑎
O problema dessa solução ocorre quando 𝑏2 ≫ 4𝑎𝑐. Nesse caso, a raiz 𝑥2 será aproximada para
𝑥2 ≈𝑏2 − 𝑏2
2𝑎= 0
O fato é que haverá perdas de dígitos significativos ao fazer essa subtração, o que irá compro-
meter o resultado. Um modo de contornar isso é calcular 𝑥2 através de 𝑥1 usando a relação:
𝑥2 =𝑐
𝑥1𝑎
Consideremos a equação 𝑥2 − 100.22𝑥 + 1.2371 = 0. Usando aritmética de ponto flutuante
com cinco dígitos:
𝑏2 = 10044
𝑏2 − 4𝑎𝑐 = 10039
√𝑏2 − 4𝑎𝑐 = 100.19
Calculando as raízes usando o primeiro procedimento:
𝑥1 =100.22 + 100.19
2= 100.20
𝑥2 =100.22 − 100.19
2= 0.015
Calculando a segunda raiz do outro modo:
𝑥2 =𝑐
𝑥1𝑎=
1.2371
100.20 ∙ 1= 0.01235
Exemplo 12: Reescreva a expressão √𝑥2 + 1 − 𝑥 para reduzir os possíveis erros.
Note que um possível erro surge se 𝑥 ≫ 1. Nesse caso, a expressão será aproximada para
√𝑥2 − 𝑥 = 𝑥 − 𝑥 = 0. Um modo de reescrever essa equação é usar a racionalização:
√𝑥2 + 1 − 𝑥(√𝑥2 + 1 + 𝑥)
(√𝑥2 + 1 + 𝑥)
𝑥2 + 1 − 𝑥2
√𝑥2 + 1 + 𝑥=
1
√𝑥2 + 1 + 𝑥
Exemplo 13: Reescreva a expressão √1 + 𝑥2 − 1 para reduzir possíveis erros.
Nesse caso, se 𝑥 ≪ 1 a expressão se aproxima de √1 − 1 = 0. Fazendo o mesmo proce-
dimento do exercício 12:
Pág
ina2
0
√1 + 𝑥2 − 1(√1 + 𝑥2 + 1)
(√1 + 𝑥2 + 1)
1 + 𝑥2 − 1
√1 + 𝑥2 + 1=
𝑥2
√1 + 𝑥2 + 1
Exemplo 14: Reescreva a expressão (1 − 𝑐𝑜𝑠 𝑥)/ 𝑠𝑖𝑛 𝑥 para reduzir possíveis erros.
Um erro que pode ocorrer é se 𝑥 for próximo de zero. Nesse caso, teremos 𝑐𝑜𝑠 𝑥 ≈ 1, de
modo a anular o resultado. Vamos multiplicar por 𝑐𝑜𝑠 𝑥 / 𝑐𝑜𝑠 𝑥
1 − 𝑐𝑜𝑠 𝑥
𝑠𝑖𝑛 𝑥
(𝑐𝑜𝑠 𝑥)
(𝑐𝑜𝑠 𝑥)
𝑐𝑜𝑠 𝑥 + 𝑐𝑜𝑠2 𝑥
𝑠𝑖𝑛 𝑥 𝑐𝑜𝑠 𝑥
Pela trigonometria, temos
𝑠𝑖𝑛2 𝑥 + 𝑐𝑜𝑠2 𝑥 = 1
logo
𝑐𝑜𝑠2 𝑥 = 1 − 𝑠𝑖𝑛2 𝑥
Com isso, nossa expressão se torna:
𝑐𝑜𝑠 𝑥 + 1 − 𝑠𝑖𝑛2 𝑥
𝑠𝑖𝑛 𝑥 𝑐𝑜𝑠 𝑥
Nem sempre uma perda de dígitos significativos estará associada com a subtração de nú-
meros próximos. Por exemplo, computacionalmente não há como somar infinitos termos. Veja
a seguinte soma:
𝑆 = ∑1
𝑘2=𝜋2
6
∞
𝑘=1
computacionalmente esse resultado é aproximado para
𝑆 ≈ 𝑆𝑁 =∑1
𝑘2
𝑁
𝑘=1
Um algoritmo para realizar computacionalmente essa soma é:
𝑘 ← 2, 𝑠 ← 1
Enquanto 𝑘 ≤ 𝑁,
𝑠 ← 𝑠 + 1/𝑘²
𝑘 ← 𝑘 + 1
de modo que ← é o símbolo de atribuição.
Perdas de dígitos geram overflow e underflow.
Sabemos que um número em ponto flutuante é dado por
𝑓𝑙(base, números de dígitos, expoente)
Pág
ina2
1
Exemplo 15: Vejamos o caso dado por 𝑓𝑙(10, 3, −5, 5), ou seja, o expoente vai de −5 a 5.
Nessas condições, podemos escrever o número 235.89 como ponto flutuante?
Esse número pode ser escrito sem problema algum:
0.23589 ∙ 103
Como queremos 3 algarismos para a mantissa:
0.236 ∙ 103
Exemplo 16: Seguindo a mesma condição do exemplo 15, podemos representar o número
0.345 ∙ 10−7 em ponto flutuante?
Nesse caso, atente que o expoente está fora do intervalo de [−5,5]. O número que esta-
mos tentando representar é menor do que o número que nossa máquina pode computar. Isso é
o que caracteriza um underflow.
Exemplo 17: Seguindo a mesma condição do exemplo 15, podemos representar o número
0.875 ∙ 109 em ponto flutuante?
Novamente vemos que o expoente está fora do intervalo [−5,5]. Aqui, o número que es-
tamos tentando representar é muito maior do que o que podemos computar. Isso caracteriza
um overflow.
Exemplo 18: A norma euclidiana de um vetor 𝑥 = (𝑥1, 𝑥2, … , 𝑥𝑛)𝑇 é dada por
|𝑥|2 = √𝑥12 + 𝑥2
2 +⋯+ 𝑥𝑛2
Um algoritmo para calcular a norma seria
𝑘 ← 1, 𝑠 ← 0
Enquanto 𝑘 ≤ 𝑛:
𝑠 ← 𝑠 + (𝑥𝑘 ∙ 𝑥𝑘)
𝑘 ← 𝑘 + 1
𝑠 ← √𝑠
Considerando no máximo um dígito para o expoente, tomemos 𝑥 = (6 ∙ 104, 8 ∙ 104). Nesse
caso |𝑥|2 = 105. Seguindo o algoritmo, teremos:
𝑠 = 3.6 × 109 + (8 ∙ 104 × 8 ∙ 104) → 𝑜𝑣𝑒𝑟𝑓𝑙𝑜𝑤
note que o overflow surge logo na multiplicação entre parêntesis.
EXERCÍCIOS DE REVISÃO
Exercício 1: Considere o sistema 𝐹(10,4,−4,4). Represente os seguintes números: a)
432124; b) -0.0013523; c) 125.64; d) 0.00034
a) 432124 → 0.432124 ∙ 106 → nesse caso temos um overflow
b) −0.0013523 → −0.1352 ∙ 10−2
c) 125.64 → 0.1256 ∙ 103
Pág
ina2
2
d) 0.00034 → 0.3400 ∙ 10−3
Exercício 2: Mude os seguintes números: a) (1101)2 para base 10; b) (0.110)2 para base
10; c) (13)10 para base 2; d) (0.75)10 para base 2.
a) (1101)2 = 1 × 23 + 1 × 22 + 0 × 21 + 1 × 20 = 8 + 4 + 0 + 1 = 13
b) (0.110)2 = 1 × 2−1 + 1 × 2−2 + 0 × 2−3 = 1 ×
1
2+ 1 ×
1
4+ 0 ×
1
8= 0.5 + 0.25 =
0.75
c) (13)10 → aqui iremos dividido por 2, de modo a tomar o resto. Assim 13/2 = 6 (resto
1); 6/2 = 3 (resto 0); 3/2 = 1 (resto 1); 1/2 = 0 (resto 1). Logo, contando de trás para
frente temos 1310 = 11012.
d) Para converter números fracionários em binário devemos multiplicar o número por
dois e analisar o valor. Vejamos: 0.75 x 2 é igual a 1.5. Agora devemos analisar a parte
inteira e a parte decimal. A parte inteira é maior que 0.5, logo o valor retorna 1. Agora,
vamos multiplicar a parte decimal por 2: 0.5 x 2 = 1.0. Como obtivemos um valor maior
que 0.5, o valor retorna 1. Assim, 0.7510 = 0.112
Pág
ina2
3
Método de Newton Vamos analisar o problema de um canhão disparando um projétil, como mostra a figura.
As equações que regem o movimento do projétil, na direção vertical, são dadas por:
𝑦′′(𝑡) = −𝑔
𝑦(0) = 0
𝑦′(0) = 𝑣0 sin𝜃
𝑦(𝑡) = (𝑣0 sin𝜃)𝑡 −𝑔𝑡2
2
A partir delas, podemos determinar o tempo total de movimento, ou o tempo que o projétil
demora a atingir o alvo, como:
𝑦(𝑡) = 0 → 𝑡 =2𝑣0 sin𝜃
𝑔
Uma vez que a distância 𝑑 é dada por:
𝑑 = (𝑣0 cos𝜃)𝑡
podemos obter uma função que fornece a relação entre a distância e o ângulo de tiro:
𝑓(𝜃) =2𝑣0
2 sin𝜃 cos𝜃
𝑔− 𝑑 = 0
Ou seja, para calibrar o ângulo de tiro precisamos resolver a equação não-linear acima, de modo
que 𝑓(𝜃) = 0. Mas antes de tentar encontrar uma solução, é sensato pensar em algumas ques-
tões. Primeiro de tudo, será que essa equação possui, de fato, uma solução? Note que se 𝑑 >
𝑣02/𝑔, não teremos solução. Outro ponto em questão é que essa função pode ter mais de uma
solução. Em outras palavras, pode não haver unicidade. No caso de não haver unicidade, algu-
mas soluções podem não fazer sentido físico.
Antes de tentarmos resolver uma equação do tipo apresentada, é conveniente pensar se
existe algum meio de simplificar a função. Para alguns métodos que iremos estudar, a simplifi-
cação ajuda na determinação de uma solução. Além disso, alguns métodos necessitaram da de-
rivada da função. Portanto, devemos saber se 𝑓 é diferenciável.
Uma função contínua que troca de sinal nos extremos de um intervalo passa por pelo
menos um ponto do eixo das abscissas. Podemos exprimir isso através do teorema de Bolzano:
Pág
ina2
4
Seja 𝑓 uma função contínua em [a, b]. Se 𝑓(a) ∙ 𝑓(b) < 0, então existe um 𝑥 ∈ [a, b] tal que
𝑓(𝑥) = 0.
Esse teorema é uma consequência do teorema do valor intermediário, e é o principal resultado
que garante a existência de pelo menos uma solução da função. Porém, atente o seguinte: se na
figura anterior estivéssemos interessados nos pontos [0, b], então a função não trocaria de sinal
nesses extremos. Tanto em 0 quando em b a função é positiva, mesmo assim ela se anula em
dois pontos no interior desse intervalo. E isso exprime a dificuldade nesse método, visto que a
escolha do intervalo é um mero chute, por tentativa e erro.
Exemplo 1: Determine um intervalo onde ocorrem zeros da função 𝑓(𝑥) = 𝑥3 − 6𝑥 + 3.
Para 𝑥 = −3
𝑓(−3) = −6
Para 𝑥 = 3
𝑓(3) = 12
Ou seja, sabemos que no intervalo de [−3,3] a função passa por 𝑓(𝑥) = 0 pelo menos uma vez.
No exemplo 1 encontramos um intervalo onde a função troca de sinal. Porém não sabe-
mos dizer quantas vezes isso ocorre nesse intervalo. Em outras palavras, não sabemos dizer
quantas soluções existem entre [−3,3]. Para garantir a unicidade, devemos analisar todo o in-
tervalo escolhido. Se garantirmos a unicidade, então estaremos dizendo que no intervalo esco-
lhido a função corta o eixo 𝑥 somente em um ponto. Uma forma de garantir isso é tomar a
função estritamente crescente (𝑓(a) < 0 < 𝑓(b)) ou decrescente (𝑓(a) > 0 > 𝑓(b)). Podemos
exprimir melhor essa ideia com o teorema da unicidade: Seja 𝑓 diferenciável em [a, b]. Se 𝑓(a) ∙
𝑓(b) < 0 e 𝑓′(𝑥) não troca de sinal em (a, b), então existe um único 𝑥 ∈ (a, b) tal que 𝑓(𝑥) =
0.
Pág
ina2
5
Note que para funções crescentes, 𝑓′(𝑥) tem que ser maior que zero para todo valor no inter-
valo (a, b) e não somente nos extremos. O mesmo para funções decrescentes.
Exemplo 2: Voltemos à análise da função do exemplo 1. Vamos estudar a unicidade da
função fazendo a derivada. Assim 𝑓′(𝑥) = 3𝑥2 − 6. Para 𝑥 = −3, 𝑓′(−3) > 0. Se 𝑥 = 0, então
𝑓′(0) < 0. Portanto, não podemos assegurar a unicidade da solução dessa função. Entretanto,
vemos que 𝑓′(𝑥) > 0 para qualquer valor de 𝑥 > √2 (é estritamente crescente para 𝑥 maior que
√2). Para 𝑥 = 1.5 e 𝑥 = 3, temos que 𝑓(1.5) < 0 < 𝑓(3). Logo, podemos assegurar que no in-
tervalo (1.15,3) existe apenas um zero de 𝑓.
Exemplo 3: Localize os zeros da função
𝑓(𝑥) = 𝑥2 − √5𝑥 +1
4
Atente que essa função não está definida para 𝑥 < 0. Para 𝑥 = 1 temos 𝑓(1) < 0. Para 𝑥 = 2
temos 𝑓(2) > 0. Fazendo a derivada:
𝑓′(𝑥) = 2𝑥 −5
2√5𝑥
Se 𝑥 > 1, então 𝑓′(𝑥) > 0. Assim, existe um único zero de 𝑓 no intervalo (1,2).
Método da Bissecção
Um modo de determinar o zero de uma função é a partir do método da bissecção. Para
isso, partimos de um intervalo inicial [a, b] de modo que 𝑓(a) ∙ 𝑓(b) < 0. No ponto médio desse
intervalo nós calculamos o valor da função, de modo a reduzir o intervalo. Na imagem a seguir,
temos os dois pontos de partida, de modo que um é positivo e o outro negativo.
Pág
ina2
6
Calculando o ponto médio, encontramos:
Como o ponto médio é positivo, trazemos o ponto a para o centro, de modo a obter num novo
intervalo (menor que o original).
Agora iremos calcular o ponto médio desse novo intervalo, de modo a obter:
O ponto médio é negativo. Logo, vamos mover o extremo b para a esquerda:
Pág
ina2
7
Calculando novamente o ponto médio:
Esse novo ponto é positivo, logo devemos mover a para a direita:
Calculando, novamente, o ponto médio:
Pág
ina2
8
Note que esse ponto ficou bem próximo do eixo 𝑥. Poderíamos melhorar o resultado trazendo
b para a esquerda (visto que esse ponto é negativo). Entretanto, como esse ponto está bem
próximo da solução, podemos toma-lo como sendo a resposta. Assim:
Embora esse método nos forneça uma solução, ele é dificultado pela escolha do intervalo
[a, b]. Feita a escolha, temos certeza de que a solução será encontrada. Entretanto é provável
que muitas iterações terão de ser feitas, o que torna o método lento.
Aproximação linear: o método de Newton
O método de Newton parte do fato de que uma função diferenciável pode ser aproximada
pela reta tangente, pelo menos próximo do ponto de tangência. Por exemplo, tomemos 𝑥𝑘 como
uma aproximação para o zero da função 𝑓. No método de Newton, a função é aproximada pela
reta tangente em 𝑥𝑘, de modo a ser computado o zero dessa reta. Esse ponto zero passará a ser
𝑥𝑘+1, sendo a nova aproximação para o zero da função.
Assim, podemos calcular o zero da função através do método de Newton como:
𝑥𝑘+1 = 𝑥𝑘 −𝑓(𝑥𝑘)
𝑓′(𝑥𝑘)
Um algoritmo para o método de Newton seria:
Dados 𝑥0 uma aproximação razoável de 𝑥∗
Para 𝑘 = 0,1,2,…
Se 𝑓′(𝑥𝑘) ≠ 0, 𝑥𝑘+1 = 𝑥𝑘 −𝑓(𝑥𝑘)
𝑓′(𝑥𝑘)
Pág
ina2
9
Exemplo 1: Encontre o valor de √3.
Para encontrar quanto vale √3, devemos encontrar uma função cujo zero nos dê esse va-
lor. Podemos recorrer à função 𝑓(𝑥) = 𝑥2 − 3. Sendo a derivada 𝑓′(𝑥) = 2𝑥, devemos escolher
um ponto de partida, que acreditamos estar próximo do resultado. Vou “chutar” 𝑥𝑘 = 2. Fa-
zendo o cálculo em Octave:
Repare que na segunda iteração o método de Newton já fornece uma aproximação muito boa
para o resultado. Para ficar mais visível como utilizamos esse método, vamos fazer aqui, usando
uma calculadora científica.
𝑥𝑘 = 2
𝑥𝑘+1 = 2 −(2)2 − 3
2 ∙ (2)= 1.75
Agora, 1.75 será o novo valor de 𝑥𝑘:
𝑥𝑘+1 = 1.75 −(1.75)2 − 3
2 ∙ (1.75)= 1.732142857
Na mesma calculador, fazendo √3 encontramos 1.732050808, ou seja, em duas iterações já te-
mos uma aproximação da ordem de 10−4. O que ocorre se fizermos mais uma? Tomando
1.732142857 como o novo 𝑥𝑘:
𝑥𝑘+1 = 1.732142857 −(1.732142857)2 − 3
2 ∙ (1.732142857)= 1.73205081
onde obtivemos uma aproximação de 10−9. Se fizermos mais uma aproximação, então iremos
encontrar um valor mais preciso que nem a calculadora poderá computar.
Exemplo 2: Estime o valor de √103
.
Podemos escrever a função para calcular esse resultado como sendo 𝑓(𝑥) = 𝑥3 − 10, de
modo que 𝑓′(𝑥) = 3𝑥2. Novamente, vou usar 𝑥𝑘 = 2 como uma aproximação razoável.
𝑘𝑘+1 = 2 −(2)3 − 10
3 ∙ (2)2= 2.166666667
𝑥𝑘+1 = 2.166666667 −(2.166666667)3 − 10
3 ∙ (2.166666667)2= 2.154503616
Na mesma calculadora, √103
= 2.154433469. Assim, vemos que na segunda iteração já obtive-
mos uma boa aproximação para a raiz.
Exemplo 3: Calcule √103
usando o método da bissecção.
Pág
ina3
0
Para isso, precisamos, primeiro, definir dois pontos em que a função troca de sinal. Para
𝑥 = 2 temos:
𝑓(2) = 23 − 10 = −2 < 0
Para 𝑥 = 3:
𝑓(3) = 33 − 10 = 17 > 0
Portanto, podemos usar esse intervalo. Pelo método da bissecção, tomamos o valor médio entre
esses dois pontos:
𝑥𝑀 =2 + 3
2= 2.5
Para 2.5 temos 𝑓(2.5) = (2.5)3 − 10 = 5.625 > 0. Ou seja, agora nosso novo intervalor será
[2, 2.5]. Tomando a média:
𝑥𝑀 =2 + 2.5
2= 2.25
Para 2.25 temos 𝑓(2.25) = (2.25)3 − 10 = 1.39 > 0. Como o sinal é positivo, nosso novo in-
tervalo será [2, 2.25]:
𝑥𝑀 =2 + 2.25
2= 2.125
Para esse valor 𝑓(2.125) = −0.404 < 0. Como o valor é negativo, então o novo intervalo será
[2.125, 2.25]. Tomando a média:
𝑥𝑀 =2.125 + 2.25
2= 2.1875
Para esse valor, 𝑓(2.1875) = 0.468 > 0. Então o novo intervalo será [2.125, 2.1875]. O ponto
médio será 𝑥𝑀 = 2.156, de modo que 𝑓(2.156) = 0.0218 > 0. Com isso, o novo intervalo será
[2.125, 2.156]. Tomando a média, teremos 𝑥𝑀 = 2.141, de modo que 𝑓(2.141) = −0.19 < 0.
Assim, o novo intervalo será [2.141, 2.156], de modo que 𝑥𝑀 = 2.1485. Para esse valor,
𝑓(2.1485) = −0.082 < 0. O intervalo será [2.1485, 2.156]. O ponto médio é 𝑥𝑀 = 2.152. Po-
demos parar aqui, visto que esse foi o resultado mais próximo que encontramos (até aqui). Note
a diferença entre o método da bissecção e de Newton. A convergência do método de Newton é
muito mais rápida, contanto que tenhamos uma ideia do resultado.
Agora, podemos começar a fazer alguns questionamentos sobre o método de Newton.
Esse método tem convergência assegurada quando partimos de um ponto inicial próximo do
zero da função. Mas, o que vai ocorrer se não tivermos certeza do zero da função? Nesse caso,
poderíamos ficar fazendo iterações indefinidamente. Assim, é razoável supor que deve existir
um limite que que os cálculos sejam feitos, de modo que ao atingir esse limite estaremos próxi-
mos da solução desejada. Outro ponto, é que o método de Newton trabalha com uma divisão.
O que ocorre se o denominador for zero?
Pág
ina3
1
Para não aplicarmos indefinidamente o método de Newton, é conveniente definir um cri-
tério de parada. Esse critério pode ser dado para quando o erro de cálculo ficar abaixo de certo
nível aceitável, de modo que |𝑒𝑘| ≤ 𝜖|𝑒0|. O problema é medir o valor de 𝑒𝑘, uma vez que não
conhecemos o zero da função 𝑓.
Analisando os gráficos acima, e tomando 𝑥∗ como a possível solução, vemos que para
|𝑓′(𝑥∗)| ≪ 1, a função corta o eixo 𝑥 de forma rasante. Isso implica que, mesmo que um valor
de 𝑥 esteja bem afastado de 𝑥∗, a condição |𝑓(𝑥∗)| ≤ 𝜖 é satisfeita. Mas se |𝑓′(𝑥∗)| ≫ 1, então
a função corta o eixo 𝑥 num ponto bem específico, o que garante que o critério de parada só
será satisfeito se, de fato, 𝑥𝑘 estiver bem próximo de 𝑥∗. Podemos ver isso expandindo 𝑓 em
torno de 𝑥∗ em primeira ordem:
𝑓(𝑥𝑘) ≈ 𝑓(𝑥∗) + 𝑓′(𝑥∗)(𝑥𝑘 − 𝑥
∗) = 𝑓′(𝑥∗)(𝑥𝑘 − 𝑥∗)
pois 𝑓(𝑥∗) = 0. Logo:
|𝑒𝑘| = |𝑥𝑘 − 𝑥∗| ≈ |
𝑓(𝑥𝑘)
𝑓′(𝑥∗)| ≤
𝜖
|𝑓′(𝑥∗)|
se |𝑓(𝑥𝑘)| ≤ 𝜖.
Agora, voltemos ao problema da derivada nula. Se isso ocorrer, temos de contornar esse
problema escolhendo um outro ponto ou trocando de método. Mas nem sempre iremos encon-
trar uma derivada nula. Entretanto, se a derivada é quase nula então já temos um problema.
Como a reta tangente, num ponto onde a derivada é bem pequena, é praticamente paralela ao
eixo horizontal, sua intersecção ocorrerá num ponto muito distante. Isso ponde nos afastar de
ponto zero, de modo a cairmos num problema de divergência.
Pág
ina3
2
Seja 𝑓 ∈ 𝐶2 uma função com segunda derivada contínua. Vamos supor que exista um 𝑥∗
de modo que 𝑓(𝑥∗) = 0, 𝑓′(𝑥∗) ≠ 0. Então, existe uma vizinhança 𝑉 de 𝑥∗ tal que para qualquer
𝑥∗ ∈ 𝑉, a sequência gerada pelo método de Newton converge quadraticamente para 𝑥∗. Assim,
próximo da solução temos: 𝑒𝑘+1 ≈ 𝐶𝑒𝑘2.
Exemplo 4: Estime o valor de 𝜋 usando o método de Newton para 𝑓(𝑥) = 1 + cos𝑥.
Pela fórmula de Newton:
𝑥𝑘+1 = 𝑥𝑘 −(1 + cos 𝑥)
(− sin𝑥)= 𝑥𝑘 +
(1 + cos 𝑥)
sin𝑥
Usando 𝑥𝑘 = 3 (e lembrando que em computação só trabalhamos com radianos):
𝑥𝑘+1 = 3 +1 + cos3
sin3= 3.070914844
de modo que o novo 𝑥𝑘 assume o valor dado acima. A próxima interação:
𝑥𝑘+1 = 3.070914844 +1 + cos3.070914844
sin3.070914844= 3.106268467
Na próxima iteração:
𝑥𝑘+1 = 3.106268467 +1 + cos3.106268467
sin3.106268467= 3.123932397
E assim por diante. Fazendo o mesmo procedimento em Octave:
Vimos que 10 iterações fornecem um resultado bem aproximado.
Até o momento, percebemos que o método de Newton possui uma boa taxa de conver-
gência, se mostrando muito prático na resolução de exercícios como vimos até então. Mas esse
método possui alguns empecilhos, que algumas vezes dificultam seu uso. Talvez a grande difi-
culdade seja determinar um valor para uma aproximação inicial. Outro ponto, é que a taxa de
convergência é local. Porém, se estivermos próximos da solução, essa taxa será quadrática, de
Pág
ina3
3
modo a se aproximar da solução rapidamente. Por fim, o método de Newton necessita de uma
derivada a cada iteração.
Exemplo 5: Quantas soluções existem para 𝑓(𝑧) = 𝑧3 − 1 = 0, de modo que 𝑧 ∈ ℂ?
Esse é um caso envolvendo uma função complexa. No plano complexo/real, as soluções
são dadas por
que correspondem aos valores 1 e −1
2± 𝑖√3. Na figura a segui, cada cor representa uma raiz da
função dada (laranja, azul escuro e azul claro).
Cada ponto no plano foi pintado com uma dessas três cores para indicar para qual zero a se-
quência gerada pelo método de Newton converge quando iniciado naquele ponto. A intensidade
da cor indica a quantidade de iterações necessárias para obter a convergência. Se não ocorrer
convergência, o ponto é pintado de preto. Repare que próximo de cada um dos zeros é certo que
o método irá convergir. Por outro lado, se o ponto inicial não estiver muito próximo de um dos
Pág
ina3
4
zeros, então é praticamente impossível saber para onde o ponto irá convergir. Essa figura é de-
nominada fractal.
Métodos Quase-Newton
Nem sempre a derivada de uma função é simples de ser obtida. Quando isso ocorre, po-
demos recorrer a métodos que aproximam a derivada da função. Esses métodos são chamados
de métodos quase-Newton. Um desses métodos é o método das cordas:
Nesse método, a derivada é computada somente na primeira iteração, de modo a manter o valor
nas iterações seguintes.
Existe ainda o método das secantes, em que a reta tangente é substituída por uma reta
secante. Para esse método, é necessário iniciar com dois pontos.
Para esse método, temos:
𝑥𝑘+1 = 𝑥𝑘 −𝑓(𝑥𝑘)
𝑔𝑘
onde
𝑔𝑘 =𝑓(𝑥𝑘) − 𝑓(𝑥𝑘−1)
𝑥𝑘 − 𝑥𝑘−1
Exemplo 1: Use o método das secantes para calcular √3.
Fazemos 𝑓(𝑥) = 𝑥2 − 3. Agora, devemos escolher dois pontos próximos. Vou tomar 𝑥𝑘 =
2 e 𝑥𝑘−1 = 1.2. Com isso:
𝑔𝑘 =(2)2 − 3 − ((1.2)2 − 3)
2 − 1.2= 3.2
Pág
ina3
5
𝑥𝑘+1 = 2 −(2)2 − 3
3.2= 1.6875
Agora, o novo valor de 𝑥𝑘 = 1.6875 e o valor anterior fica 𝑥𝑘−1 = 2. Com isso
𝑔𝑘 =(1.6875)2 − 3 − ((2)2 − 3)
1.6875 − 2= 3.6875
𝑥𝑘+1 = 1.6875 −(1.6875)2 − 3
3.6875= 1.7288
Então 𝑥𝑘 = 1.7288 e 𝑥𝑘−1 = 1.6875:
𝑔𝑘 =(1.7288)2 − 3 − ((1.6875)2 − 3)
1.7288 − 1.6875= 3.4163
𝑥𝑘+1 = 1.7288 −(1.7288)2 − 3
3.4163= 1.7321
o que já é uma boa aproximação. Note que o número de iterações foi superior à do método de
Newton.
Exemplo 2: Resolva 𝑓(𝑥) = 3𝑥2 − 𝑒𝑥 usando o método mais conveniente.
Encontrar os zeros dessa função pode não ser tão trivial. Porém, podemos pensar que,
para 𝑥 = 1 teremos 𝑓(1) ≈ 0, que é um valor próximo do zero. Usando o método de Newton:
Um algoritmo para o método das secantes é:
Dados 𝑥0, 𝑥1, 𝑓(𝑥), 𝜖1 e/ou 𝜖2
Para 𝑘 = 0,1,2,…
𝑥𝑘+1 =𝑥𝑘+1𝑓(𝑥𝑘) − 𝑥𝑘𝑓(𝑥𝑘−1)
𝑓(𝑥𝑘) − 𝑓(𝑥𝑘−1)
Se |𝑓(𝑥𝑘+1)| < 𝜖1 então 𝑥∗ = 𝑥𝑘+1
ou
Se |𝑥𝑘+1 − 𝑥𝑘| < 𝜖2 então 𝑥∗ = 𝑥𝑘+1
EXERCÍCIOS DE REVISÃO
Exercício 1: Identifique um intervalo que contenha pelo menos uma raiz e analise se é
possível garantir a unicidade nesse intervalo para 𝑓(𝑥) = 4 cos(𝑥) − 𝑒2𝑥
Sabemos que existe uma raiz se 𝑓(𝑎) ∙ 𝑓(𝑏) < 0. Para o intervalo [0,1] temos
𝑓(0) = 3 > 0
𝑓(1) = −5.2 < 0
Portanto sabemos que existe uma raiz nesse intervalo. Agora devemos analisar a derivada:
Pág
ina3
6
𝑓′(𝑥) = −4sin(𝑥) − 2𝑒2𝑥
Assim, vemos que 𝑓′(0) = −2 < 0. Para 𝑓′(1) = −18 < 0. Como o sinal foi preservado, então
existe uma única solução nesse intervalo. No gráfico, a linha verde representa a função 4 cos(𝑥),
enquanto que a vermelha é dada por −𝑒2𝑥. A curva preta mostra a função sobreposta.
Exercício 2: Dada 𝜖 > 0, qual é o menor número de iterações necessárias para que o mé-
todo da bissecção encontre raízes com uma precisão 𝜖? Considere [𝑎, 𝑏].
Pelo método da bissecção:
𝑏𝑘 − 𝑎𝑘 =𝑏𝑘−1 − 𝑎𝑘−1
2=𝑏0 − 𝑎02𝑘
Queremos 𝑘 tal que 𝑏𝑘 − 𝑎𝑘 < 𝜖. Assim:
𝑏0 − 𝑎02𝑘
< 𝜖
2𝑘 >𝑏0 − 𝑎0𝜖
Tomando o logaritmo em ambos lados:
𝑘 log 2 > log(𝑏0 − 𝑎0) − log 𝜖
𝑘 >log(𝑏0 − 𝑎0) − log 𝜖
log 2
Exercício 3: Mostre que os iterandos do método de Newton para resolver a equação 𝑥2 −
𝑎 = 0 são da forma dada a seguir. Em seguida, use esse método para calcular √5 com precisão
de 10−8, partindo de 𝑥 = 1.5.
𝑥𝑘+1 =1
2(𝑥𝑘 +
𝑎
𝑥𝑘) ; 𝑘 = 0,1,2,3,…
O método de Newton diz que
𝑥𝑘+1 = 𝑥𝑘 −𝑓(𝑥)
𝑓′(𝑥)
Assim
Pág
ina3
7
𝑥𝑘+1 = 𝑥𝑘 −𝑥𝑘2 − 𝑎
2𝑥𝑘
𝑥𝑘+1 =2𝑥𝑘
2 − (𝑥𝑘2 − 𝑎)
2𝑥𝑘
𝑥𝑘+1 =𝑥𝑘2 + 𝑎
2𝑥𝑘
𝑥𝑘+1 =𝑥𝑘 (𝑥𝑘 +
𝑎𝑥𝑘)
2𝑥𝑘
𝑥𝑘+1 =𝑥𝑘 +
𝑎𝑥𝑘
2
que é a expressão que queríamos demonstrar. Para calcular √5 usamos a função 𝑥2 − 5. Logo,
a iteração será dada por:
𝑥𝑘+1 =1
2(𝑥𝑘 +
5
𝑥𝑘)
Partindo de 𝑥1 = 1.5, para 𝑘 = 0.
𝑥1 =1
2(1.5 +
5
1.5) = 2.41666667
Para 𝑘 = 1
𝑥2 =1
2(2.41666667 +
5
2.41666667) = 2.24281609
Para 𝑘 = 2
𝑥3 =1
2(2.24281609 +
5
2.24281609) = 2.23607813
Para 𝑘 = 3
𝑥4 =1
2(2.23607813 +
5
2.23607813) = 2.23606798
|2.23606798 − √5| = 2.5 ∙ 10−9
Assim, com 3 iterações já conseguimos uma precisão de 10−9.
Exercício 4: A figura a seguir mostra um caso em que a aplicação do método de Newton
falha para a função 𝑓(𝑥) = 𝑥4 − 𝑥2. Encontre os pontos iniciais tais que isso ocorre.
Pág
ina3
8
Temos que 𝑓(𝑥) = 𝑥4 − 𝑥2 e 𝑓′(𝑥) = 4𝑥3 − 2𝑥. Nesse caso, temos que 𝑥𝑘+1 = −𝑥𝑘. As-
sim:
−𝑥𝑘 = 𝑥𝑘 −𝑥𝑘4 − 𝑥𝑘
2
4𝑥𝑘3 − 2𝑥𝑘
−2𝑥𝑘 = −𝑥𝑘2(𝑥𝑘
2 − 1)
2𝑥𝑘(2𝑥𝑘2 − 1)
−2𝑥𝑘 = −𝑥𝑘(𝑥𝑘
2 − 1)
2(2𝑥𝑘2 − 1)
→ 2 =(𝑥𝑘
2 − 1)
2(2𝑥𝑘2 − 1)
4 =𝑥𝑘2 − 1
2𝑥𝑘2 − 1
8𝑥𝑘2 − 4 = 𝑥𝑘
2 − 1
−𝑥𝑘2 + 8𝑥𝑘
2 = 4 − 1
7𝑥𝑘2 = 3
𝑥𝑘 = ±√3
7
Exercício 5: Uma corrente oscilante em um circuito elétrico é descrita por
𝐼 = 10𝑒−𝑡 sin(2𝜋𝑡)
onde 𝑡 é dada em segundos. A) Determine uma aproximação para o último momento tal que 𝐼 =
2 utilizando o método de Newton, com 𝑡0 = 1.5 e precisões 𝜖1 = 𝜖2 = 10−3.
Para 𝐼 = 2
𝑓(𝑡) = 10𝑒−𝑡 sin(2𝜋𝑡) = 2
𝑓(𝑡) = 10𝑒−𝑡 sin(2𝜋𝑡) − 2 = 0
Temos que 𝑓′(𝑡) = −10𝑒−𝑡 sin(2𝜋𝑡) + 2𝜋10𝑒−𝑡 cos(2𝜋𝑡), ou
𝑓′(𝑡) = 10𝑒−𝑡[−sin(2𝜋𝑡) + 2𝜋 cos(2𝜋𝑡)]
Usando Newton:
𝑡𝑘+1 = 𝑡𝑘 −10𝑒−𝑡 sin(2𝜋𝑡) − 2
10𝑒−𝑡[2𝜋 cos(2𝜋𝑡) − sin(2𝜋𝑡)]
𝑡𝑘+1 = 𝑡𝑘 −sin(2𝜋𝑡𝑘) − 0.2𝑒
𝑡𝑘
[2𝜋 cos(2𝜋𝑡𝑘) − sin(2𝜋𝑡𝑘)]
Para 𝑘 = 0 e 𝑡0 = 1.5
𝑓(1.5) = 10𝑒−1.5 sin(2𝜋 ∙ 1.5) − 2
𝑓(1.5) = −2
𝑡1 = 1.5 −−0.8963
−6.2832= 1.5 − 0.1427 = 1.3573
Para 𝑘 = 1 e 𝑡1 = 1.3573
𝑓(1.3573) = 0.0105
Pág
ina3
9
𝑡2 = 1.3573 −4.0779 × 10−3
−4.7036= 1.3582
Para 𝑘 = 2 e 𝑡2 = 1.3582
𝑓(1.3582) = −0.0004
de modo que alcançamos 𝑓(𝑡𝑘) < 𝜖
𝑡3 = 1.3582 −−1.6439 × 10−4
−4.7277= 1.3582
Pág
ina4
0
Sistemas Lineares Em nossos estudos, nos preocuparemos apenas na resolução de sistemas lineares qua-
drados. Iremos focar em dois métodos: a eliminação gaussiana e a fatoração, ou decomposição,
LU.
Considere 𝐴 ∈ ℝ𝑛×𝑛 e 𝑏 ∈ ℝ𝑛. Queremos encontrar um 𝑥 tal que:
𝐴𝑥 = 𝑏
A grande dificuldade na resolução de um sistema linear está embutida na forma da matriz
de coeficientes. O caso mais trivial ocorre quando essa matriz é identidade. Uma solução simples
também ocorre para a matriz ser diagonal.
Uma tática que usaremos é transformar a matriz numa matriz triangular, de modo que,
com isso, a resolução se torna muito simples (por substituição).
Vejamos como resolver um sistema linear triangular:
{
𝑎11𝑥1 + 𝑎12𝑥2 + 𝑎13𝑥3 + 𝑎14𝑥4 = 𝑏1 𝑎22𝑥2 + 𝑎23𝑥3 + 𝑎24𝑥4 = 𝑏2 𝑎33𝑥3 + 𝑎34𝑥4 = 𝑏3 𝑎44𝑥4 = 𝑏4
Fazendo a substituição reversa:
𝑥4 = 𝑏4/𝑎44
𝑥3 = (𝑏3 − 𝑎34𝑥4)/𝑎33
𝑥2 = (𝑏2 − 𝑎23𝑥3 − 𝑎24𝑥4)/𝑎22
𝑥4 = (𝑏1 − 𝑎12𝑥2 − 𝑎13𝑥3 − 𝑎14𝑥4)/𝑎11
ou
𝑥𝑘 =𝑏𝑘 − ∑ 𝑎𝑘𝑗𝑥𝑗
𝑛𝑗=𝑘+1
𝑎𝑘𝑘, 𝑘 = 𝑛, 𝑛 − 1,… , 1
Qual o custo do algoritmo para a resolução de sistemas lineares? Podemos medir esse
custo contando o número de operações de ponto flutuante realizadas. Vejamos o seguinte al-
goritmo:
Pág
ina4
1
Em 𝑥𝑛 ← bn/ann temos uma (1) operação. Em 𝑘 = (𝑛 − 1), (𝑛 − 2),… ,1 temos um número de
operações dada pelo somatório de 𝑘 = 1 até 𝑛 − 1. Em 𝑗 = (𝑘 + 1), (𝑘 + 2),… , 𝑛 ocorrem um
número de operações dada pelo somatório de 𝑗 = 𝑘 + 1 até 𝑛. No passo seguinte, temos uma
subtração e um produto, ou seja, duas (2) operações. Na última linha, ocorre uma (1) operação
dada pela divisão. Assim, o custo total será:
1 +∑ [( ∑ 2
𝑛
𝑗=𝑘+1
)+ 1]
𝑛−1
𝑘=1
= 1 +∑[2(𝑛 − 𝑘) + 1]
𝑛−1
𝑘=1
= 1 + (2𝑛 + 1)(𝑛 − 1) − 2∑𝑘
𝑛−1
𝑘=1
= 1 + 2𝑛2 − 𝑛 − 1 − 2𝑛(𝑛 − 1)
2= 𝑛2
Podemos contar o número de operações partindo de algumas identidades. Vejamos:
∑1
𝑛
𝑘=1
= 𝑛
Podemos chegar a isso aproximando a soma por integrais:
∑1
𝑛
𝑘=1
≈ ∫ 1𝑑𝑘𝑛
0
= 𝑛
A segunda identidade é:
∑𝑘
𝑛
𝑘=1
=𝑛(𝑛 + 1)
2
Aproximando pela integral:
∑𝑘
𝑛
𝑘=1
≈ ∫ 𝑘𝑑𝑘𝑛
0
=1
2𝑘2 =
1
2𝑛2
Por fim:
∑𝑘2𝑛
𝑘=1
=𝑛(𝑛 + 1/2)(𝑛 + 1)
3
Pela integral:
∑𝑘2𝑛
𝑘=1
≈ ∫ 𝑘2𝑑𝑘𝑛
0
=1
3𝑘3 =
1
3𝑛3
Operações elementares
Para resolver um sistema linear em forma de matriz (ou não, necessariamente) podemos
aplicar algumas operações elementares. Essas operações consistem em:
• Multiplicar uma equação, ou linha da matriz, por um escalar não-nulo
• Trocar a posição de duas equações, ou linhas
Pág
ina4
2
• Somar/subtrair uma equação, ou linha, por outra
Exemplo 1: vamos utilizar operações elementares para transformar o sistema linear em
outro sistema equivalente. Definição: dois sistemas são ditos equivalentes se possuírem exata-
mente as mesmas soluções.
𝐴𝑥 = 𝑏
Vejamos
As matrizes acima são chamadas de matrizes aumentadas, em que inserimos uma coluna com
os valores da matriz 𝑏. Assim, a matriz aumentada é [𝐴|𝑏]. Começamos analisando a primeira
linha. Essa linha não foi alterada. A segunda linha foi substituída da seguinte maneira: multipli-
camos a primeira linha por -2 e somamos com a segunda linha. O mesmo foi feito na terceira
linha. A quarta linha foi substituída fazendo a primeira linha vezes -3 e somando com a quarta
linha. A matriz equivalente está à direita. Note que todos os termos da primeira coluna abaixo
do primeiro termo foram zerados. Agora, vamos para a segunda linha:
Como a análise se inicia na segunda linha, então não vamos alterá-la. As operações elementares
feitas sobre as linhas 3 e 4 estão mostradas. Note que isso zerou todos os elementos da segunda
coluna abaixo do segundo elemento da segunda linha. O próximo passo é analisar a linha 3:
Nessa etapa, somente a linha 4 será alterada. Agora, nosso sistema se resume a um sistema
triangular, cuja solução é obtida por substituição.
Pág
ina4
3
O que fizemos no exemplo 1 foram operações de escalonamento, em que zeramos todos
os elementos abaixo da diagonal principal. Basicamente, ao escalonar uma matriz, ou um sis-
tema, estamos obtendo um sistema equivalente triangular, de modo que a solução se torna
trivial. O sistema obtido no exemplo 1 é denominado triangular superior.
Quando aplicamos as operações sobre a matriz [𝐴|𝑏], vimos que fomos alterando valores
de 𝐴 e de 𝑏. Entretanto, apenas as entradas da matriz 𝐴 foram determinantes na definição de
cada operação. Mesmo sendo alterados, os valores de 𝑏 não foram decisivos para a escolha das
operações elementares. Com isso, podemos pensar o seguinte: se no meio de processo de es-
calonamento vimos que “copiamos” um valor errado para 𝑏, teríamos de retomar os cálculos do
zero? Se na matriz original ao invés de 𝑏𝑇 = (3, 6, 4, 3) fosse, na verdade, 𝑏𝑇 = (13, 6, 4, 3),
teríamos de fazer os cálculos do zero? A resposta é não! Podemos escalonar qualquer sistema
sem nos preocuparmos com o vetor 𝑏. Fazemos as operações e guardamos os cálculos usados.
No final, usamos esses cálculos e aplicamos somente em 𝑏. O cuidado que devemos ter é guar-
dar as operações!
Uma maneira de guardar as operações feitas é a seguinte: perceba que o resultado pro-
duzido por essas operações pode ser obtido através de um produto matricial. Vamos analisar
isso com um segundo exemplo:
Exemplo 2:
Aqui não estamos interessados no vetor 𝑏, de modo que realizaremos as operações somente na
matriz 𝐴.
Pág
ina4
4
ou
Observe que o produto da matriz 𝐿1 pela matriz 𝐴 produz o mesmo resultado de três operações
elementares. A matriz 𝐿1 é uma matriz triangular inferior, como os elementos da diagonal prin-
cipal iguais a 1. O primeiro elemento da primeira linha, 2, foi usado para zerar os elementos
abaixo dele (como fizemos no exemplo 1). Esse elemento é chamado de pivô. Com isso, zeramos
todos os elementos da primeira coluna (exceto o pivô). Assim, na matriz 𝐿1 inserimos os coefici-
entes usados nas operações elementares, colocando-os nas respectivas posições dos elementos
zerados. Agora, o próximo pivô será o número 1 na segunda linha:
Tomando uma nova matriz 𝐿1, que para diferenciar chamaremos de 𝐿2, iremos inserir os valores
-1 e - 0 nas respectivas posições dos elementos zerados. Assim, a operação acima pode ser des-
crita como:
Note que estamos aplicando 𝐿2 sobre a matriz obtida quando aplicamos 𝐿1 sobre 𝐴. Ou seja,
estamos aplicando 𝐿2 sobre 𝐿1𝐴. Agora, o pivô será o elemento 2 da terceira linha:
Vamos criar uma matriz 𝐿3 e inserir nela o elemento -3. Assim, teremos 𝐿3 aplicada em 𝐿2𝐿1𝐴:
Pág
ina4
5
Note que a matriz final é semelhante a matriz final 𝐴 no exemplo 1. A matriz triangular
superior obtida acima é chamada de matriz 𝑈. Assim, 𝑈 = 𝐿3𝐿2𝐿1𝐴:
O nome 𝑈 vem de “upper” (superior). Já as matrizes 𝐿 provém de “lower” (inferior), visto que
são matrizes triangulares inferiores. Assim:
𝐴 = (𝐿3𝐿2𝐿1)−1𝑈 = (𝐿1
−1𝐿2−1𝐿3
−1)𝑈
O que precisamos é saber como fazer para computar as matrizes 𝐿𝑗−1.
Para o casos dessas matrizes, encontrar a 𝐿𝑗−1 não é nada difícil. Por exemplo, na primeira
iteração, as linhas 2, 3 e 4 foram mudadas para outros valores através das operações:
ℓ̃2 = −2ℓ1 + ℓ2
ℓ̃3 = −2ℓ1 + ℓ3
ℓ̃4 = −3ℓ1 + ℓ4
de modo que ℓ̃𝑖 representa a nova linha 𝑖. Para voltar ao valor original, fazemos:
ℓ̃2 + 2ℓ1 = ℓ2
ℓ̃3 + 2ℓ1 = ℓ3
ℓ̃4 + 3ℓ1 = ℓ4
Portanto, a obtenção de 𝐿𝑗−1 é feita invertendo os sinais dos valores abaixo da diagonal de 𝐿𝑗.
Outro fato peculiar desse tipo de matriz é que o produto de 𝐿1−1𝐿2
−1𝐿3−1 é uma matriz 𝐿
com a junção dos valores de cada matriz:
Pág
ina4
6
Decomposição LU
A decomposição LU consiste, então, de uma fatoração da matriz 𝐴 em um produto de
duas matrizes, uma triangular inferior com diagonal unitária e outra diagonal superior:
Um algoritmo para a fatoração LU é:
O número de operações é:
∑ ∑ [1 + 2(𝑛 − 𝑗)] ≈2
3𝑛3 flops
𝑛
𝑖=𝑗+1
𝑛−1
𝑗=1
em que “flops” é a quantidade de operações de ponto flutuante que seu computador pode re-
alizar por segundo.
Através da decomposição LU, a resolução de um sistema linear quadrado se restringe a
resolver dois sistemas triangulares em sequência. Para resolver 𝐴𝑥 = 𝑏 tomamos 𝐴 = 𝐿𝑈, de
modo a obter 𝐿𝑈𝑥 = 𝑏. Definindo 𝑈𝑥 = 𝑦, teremos dois sistemas lineares para resolver:
{𝐿𝑦 = 𝑏𝑈𝑥 = 𝑦
A resolução se inicia por 𝐿𝑦 = 𝑏. Sendo 𝑙𝑖𝑗 um elemento particular da matriz 𝐿, os elementos de
𝑦 serão dados por:
Pág
ina4
7
𝑦𝑖 =1
𝑙𝑖𝑖(𝑏𝑖 −∑𝑙𝑖𝑗𝑦𝑗
𝑖−1
𝑗=1
)
O número de operações será:
∑[2 + (𝑖 − 1) + (𝑖 − 2)] ≈
𝑛
𝑖=1
𝑛2 flops
Uma vez computado o valor de 𝑦, resolvemos o sistema triangular superior 𝑈𝑥 = 𝑦. Após obter
o vetor 𝑥, teremos a solução do sistema linear original.
O que nos resta saber agora é: será que sempre é possível resolver um sistema através da
decomposição LU?
Nem sempre isso será possível. A condição necessária para que ocorra a decomposição
LU é dada pelo seguinte teorema: Seja 𝐴 uma matriz quadrada com todos os menores principais
não-singulares. Então 𝐴 pode ser fatorada de maneira única no produto 𝐴 = 𝐿𝑈. Porém, deter-
minar se esse teorema é satisfeito pode custar um pouco caro. Sendo assim, é muito mais van-
tajoso aplicar o algoritmo para o cálculo dos fatores de 𝐿 e de 𝑈 e ver se conseguimos resolver.
Exemplo 1: A seguinte matriz
𝐴 = [0 11 1
]
não possui decomposição LU. Entretanto
Numericamente, como 𝑢 ≈ 10−16, temos que 𝑓𝑙(1 − 1020) = −1020. Isso já é suficiente para
tornar o produto LU bem diferente de A:
Quando se computam os fatores L e U, dificilmente será computado o produto deles e compa-
rado com a matriz A original. Assim, seria arriscado usar esses valores para tentar resolver o
sistema linear.
O problema com o sistema acima é que o pivô, embora não seja nulo, é muito pequeno. Como
no algoritmo usamos a divisão pelo pivô, teremos como resposta um número muito grande. Isso
vai acarretar perdas de dígitos significativos. Por conta disso, vamos tomar como estratégia evi-
tar pivôs pequenos.
Pág
ina4
8
Pivoteamento
A estratégia que iremos adotar é a seguinte: o pivô será o maior número (em módulo) da
coluna, de modo que iremos aplicando o escalonamento como fizemos até então. Vejamos:
Após zerar os termos abaixo de 𝑥11, passamos para 𝑥22 (na matriz acima, estamos generalizando
para 𝑥𝑘𝑘). Vamos zerar os elementos abaixo de 𝑥22. Porém, vamos supor que 𝑥22 não seja o
maior elemento, mas existam elementos maiores que ele nas linhas debaixo (note que só nos
interessam os elementos das linhas de baixo. Se o elemento 𝑥12 for maior que o 𝑥22 não faremos
nada, pois as operações sobre a primeira linha já foram feitas). Nas operações sobre linhas, ze-
ramos apenas os elementos abaixo da diagonal principal. Vamos supor que 𝑥42 seja o maior
número abaixo de 𝑥22. Assim, 𝑥42 será o pivô e deverá ser usado para cancelar os termos acima
e abaixo dele (exceto o termo 𝑥12, por motivos descritos acima). Assim:
Quando trocamos o pivô, o ideal é trocar as linhas envolvendo esses números. Essa troca de
linhas irá ser expressa numa matriz, que chamaremos de matriz 𝑃. Vejamos um exemplo para
ficar mais claro.
Exemplo 1: Vamos fazer o pivoteamento da matriz a seguir.
A matriz 𝑃 é uma matriz de permutação, que se incia como uma matriz identidade, de modo que
𝐼𝐴 = 𝑃𝐴. Assim:
Pág
ina4
9
Começando pelo elemento 𝑎11 = 2, vemos que ele não é o maior termo de sua coluna. O maior
termo é 𝑎41 = 6. Portanto, vamos trocar a linha 1 com a linha 4 em 𝐴 e fazer o mesmo na matriz
𝑃.
Agora, vamos zerar os termos abaixo de 𝑎11. Para zerar o 4 da segunda linha, faremos −4
6 vezes
a primeira linha mais a segunda linha. Para zerar o 4 da terceira linha faremos a mesma conta.
Para zerar o 2 da última linha, fazemos −2
6 vezes a primeira linha mais a última linha. Note que
os coeficientes que irão zerar os elementos 𝑎𝑖𝑗 abaixo do pivô são dados por −𝑎𝑖𝑗/𝑥𝑘, em que
𝑥𝑘 é o pivô. Assim, inserimos esses termos numa matriz L:
Agora, vamos para a próxima linha, onde o pivô será 𝑎22 = 1. O termo abaixo dele é igual, por-
tanto não precisamos inverter as linhas. Assim, para zerar 𝑎32 = 1 fazemos −1 vezes a segunda
linha e somamos com a terceira. Nossas novas matrizes serão:
O próximo termo será 𝑎33 = 2. Como o termo abaixo dele é igual (em módulo) não precisamos
inverter as linhas. Para zerar 𝑎43 = −2 multiplicamos a terceira linha por 1 e somamos com a
quarta. Portanto:
O que obtivemos então foi:
𝑃𝐴 = 𝐿𝑈
Pág
ina5
0
Diferente do que ocorre com a decomposição LU sem pivoteamento, a decomposição
com pivoteamento sempre existe.
Teorema: qualquer matriz quadrada 𝐴 pode ser fatorada como 𝑃𝐴 = 𝐿𝑈, com 𝑃 sendo a
matriz de permutação da matriz identidade.
Para resolver um sistema do tipo 𝐴𝑥 = 𝑏, de modo que 𝑃𝐴 = 𝐿𝑈, fazemos 𝑃𝐴𝑥 = 𝑃𝑏.
Como 𝑃𝐴 = 𝐿𝑈, temos 𝐿𝑈𝑥 = 𝑃𝑏. Definindo 𝑦 = 𝑈𝑥, obtemos dois sistemas triangulares:
{𝐿𝑦 = 𝑃𝑏𝑈𝑥 = 𝑦
Exemplo 2: Vamos resolver o sistema abaixo através da decomposição LU com pivotea-
mento:
𝐴𝑥 = 𝑏
(2 3 46 1 54 2 2
)𝑥 = (−13−10−4
)
A primeira coisa a fazer é escrever a matriz 𝑃 e a matriz 𝐿:
𝑃 = (1 0 00 1 00 0 1
) ; 𝐿 = (1 0 00 1 00 0 1
)
Assim
(𝟐 3 46 1 54 2 2
)
2 é o primeiro termo da primeira linha e primeira coluna. Porém, ele não é o maior termo de sua
coluna. O maior termo é o 6. Assim, vamos trocar a linha 1 com a linha 2, de modo a fazer o
mesmo na matriz P:
𝑃 = (0 1 01 0 00 0 1
)
𝑃𝐴 = (𝟔 1 52 3 44 2 2
)
A matriz 𝑏 também deve ser trocada (embora podemos aplicar 𝑃 em 𝑏 somente na hora de re-
solver 𝐿𝑦 = 𝑏):
𝑃𝑏 = (−10−13−4
)
Pág
ina5
1
Para zerar os termos 𝑎21 e 𝑎31 faremos 𝑙2 = −2
6𝑙1 + 𝑙2 e 𝑙3 = −
4
6𝑙1 + 𝑙3. Assim, a matriz L será:
𝐿 =
(
1 0 02
61 0
4
60 1
)
o que fornecerá
𝑃𝐴 =
(
6 1 5
0𝟖
𝟑
7
3
04
3−4
3)
O próximo pivô é 𝑎22 = 8/3. Como esse número é maior que 4/3, então ele será o pivô. Para
zerar o termo 𝑎32, fazemos
𝑙3 = −1
2𝑙2 + 𝑙3
A matriz L será
𝐿 =
(
1 0 02
61 0
4
6
1
21)
e
𝑃𝐴 =
(
6 1 5
08
3
7
3
0 0 −15
6 )
Como 𝑃𝐴 = 𝐿𝑈, então
𝑈 =
(
6 1 5
08
3
7
3
0 0 −15
6 )
Como 𝐿𝑦 = 𝑃𝑏:
(
1 0 02
61 0
4
6
1
21)
(
𝑦1𝑦2𝑦3) = (
−10−13−4
)
Vamos resolver esse sistema:
𝑦1 = −10
2
6𝑦1 + 𝑦2 = −13
Pág
ina5
2
2
6(−10) + 𝑦2 = −13
−20
6+ 𝑦2 = −13 → 𝑦2 = −13 +
20
6
𝑦2 =−78 + 20
6= −
58
6
4
6𝑦1 +
1
2𝑦2 + 𝑦3 = −4
4
6(−10) +
1
2(−
58
6) + 𝑦3 = −4
−40
6−29
6+ 𝑦3 = −4
−69
6+ 𝑦3 = −4
𝑦3 =69
6− 4
𝑦3 = 11.5 − 4 → 𝑦3 = 7.5
Portanto
𝑦1 = −10; 𝑦2 = −58
6; 𝑦3 = 7.5
ou
𝑦 = (
−10
−58
67.5
)
Por fim, 𝑈𝑥 = 𝑦:
(
6 1 5
08
3
7
3
0 0 −15
6 )
(
𝑥1𝑥2𝑥3) = (
−10
−58
67.5
)
Usando a substituição reversa
−15
6𝑥3 = 7.5
𝑥3 = 7.5 (−6
15) = −
45
15= −3
8
3𝑥2 +
7
3𝑥3 = −
58
6
8
3𝑥2 +
7
3(−3) = −
58
6
8
3𝑥2 − 7 = −
58
6
8
3𝑥2 = −
58
6+ 7
Pág
ina5
3
8
3𝑥2 =
−58 + 42
6=−16
6→ 𝑥2 =
−16
6
3
8=−48
48= −1
6𝑥1 + 1𝑥2 + 5𝑥3 = −10
6𝑥1 − 1 − 15 = −10
6𝑥1 = −10 + 16
6𝑥1 = 6
𝑥1 = 1
Então
𝑥 = (1−1−3)
Assim:
(2 3 46 1 54 2 2
)(1−1−3) = (
−13−10−4
)
Esse exemplo mostra muito bem o algoritmo que usaremos para realizar a decomposição
LU com pivoteamento. Então, sempre iniciamos escrevendo as matrizes 𝑃 e 𝐿. Se for necessário
trocar duas linhas de 𝐴 para o pivoteamento, teremos de trocar as mesmas linhas de 𝑃 e de 𝑏.
Assim, a nova matriz não será 𝐴, mas sim 𝑃𝐴.
Exemplo 3: Encontre a decomposição LU com pivoteamento para
𝐴 = (2 1 46 1 54 2 2
)
Comecemos escrevendo as matrizes P e L:
𝑃 = (1 0 00 1 00 0 1
) ; 𝐿 = (1 0 00 1 00 0 1
)
Trocando a primeira linha com a segunda:
𝑃𝐴 = (𝟔 1 52 1 44 2 2
)
𝑃 = (0 1 01 0 00 0 1
)
Para eliminar 𝑎21 fazemos 𝑙2 = −2
6𝑙1 + 𝑙2. Para eliminar 𝑎31 fazemos 𝑙3 = −
4
6𝑙1 + 𝑙3
𝑃𝐴 = (6 1 50 2/3 7/30 4/3 −4/3
)
Nossa matriz L fica:
Pág
ina5
4
𝐿 = (1 0 02/6 1 04/6 0 1
)
Note que como 4/3 é maior que 2/3, então teremos de inverter a linha 2 com a 3:
𝑃𝐴 = (6 1 50 4/3 −4/30 2/3 7/3
)
e
𝑃 = (0 1 00 0 11 0 0
)
Assim, é necessário inverter os elementos de 𝐿 também:
𝐿 = (1 0 04/6 1 02/6 0 1
)
Para zerar 𝑎32 fazemos 𝑙3 = −1
2𝑙2 + 𝑙3. Logo:
𝑃𝐴 = (6 1 50 4/3 −4/30 0 3
)
o que fornece
𝐿 = (1 0 04/6 1 02/6 1/2 1
)
e
𝑃𝐴 = 𝐿𝑈 → 𝑈 = (6 1 50 4/3 −4/30 0 3
)
Exemplo 4: Resolva o sistema usando decomposição LU com pivoteamento.
𝐴𝑥 = 𝑏
(1 3 52 4 71 1 0
)(
𝑥1𝑥2𝑥3) = (
01−2)
Novamente devemos fazer 𝐴 = 𝐿𝑈, de modo que 𝐿𝑈𝑥 = 𝑏. Assim, comecemos por 𝐿𝑦 = 𝑏. Es-
crevendo a matrizes de permutação e a matriz 𝐿:
𝑃 = (1 0 00 1 00 0 1
) ; 𝐿 = (1 0 00 1 00 0 1
)
Para a matriz A
(𝟏 3 52 4 71 1 0
)
precisamos inverter a primeira linha com a segunda:
Pág
ina5
5
𝑃 = (0 1 01 0 00 0 1
)
𝑃𝐴 = (𝟐 4 71 3 51 1 0
)
𝑃𝑏 = (10−2)
As operações de linha serão: 𝑙2 = −1
2𝑙1 + 𝑙2 e 𝑙3 = −
1
2𝑙1 + 𝑙3:
𝑃𝐴 = (
𝟐 4 70 1 3/20 −1 −7/2
)
Com isso, obtemos
𝐿 = (1 0 01/2 1 01/2 0 1
)
O próximo pivô será:
𝑃𝐴 = (2 4 70 𝟏 3/20 −1 −7/2
)
Assim, a operação entre linhas será 𝑙3 = 𝑙2 + 𝑙3:
𝑃𝐴 = (2 4 70 𝟏 3/20 0 −2
)
e
𝐿 = (
1 0 01/2 1 01/2 −1 1
)
Assim,
𝑃𝐴 = 𝑈 = (2 4 70 1 3/20 0 −2
)
Como 𝐿𝑦 = 𝑃𝑏:
(1 0 01/2 1 01/2 −1 1
)(
𝑦1𝑦2𝑦3) = (
10−2)
Fazendo substituição direta:
𝑦1 = 1
1
2𝑦1 + 1𝑦2 = 0
1
2+ 𝑦2 = 0
Pág
ina5
6
𝑦2 = 0 −1
2= −
1
2
1
2𝑦1 − 1𝑦2 + 1𝑦3 = −2
1
2+1
2+ 𝑦3 = −2
𝑦3 = −2 − 1
𝑦3 = −3
Assim
𝑦 = (−11/2−3
)
Por fim:
𝑈𝑥 = 𝑦
(2 4 70 1 3/20 0 −2
)(
𝑥1𝑥2𝑥3) = (
1−1/2−3
)
Fazendo a substituição reversa:
−2𝑥3 = −3
𝑥3 = 3/2
𝑥2 +3
2𝑥3 = −
1
2
𝑥2 +3
2(3
2) = −
1
2
𝑥2 = −1
2−9
4
𝑥2 =−4− 18
8= −
22
8= −
11
4
2𝑥1 + 4𝑥2 + 7𝑥3 = 1
2𝑥1 + 4(−11
4) + 7(
3
2) = 1
2𝑥1 − 11 +21
2= 1
2𝑥1 +−22 + 21
2= 1
2𝑥1 −1
2= 1
2𝑥1 = 1 +1
2
2𝑥1 =3
2
𝑥1 =3
4
Pág
ina5
7
Assim
𝑥 = (
3/4 −11/43/4
)
ou
𝑥 = (0.75 −2.751.5
)
Métodos Iterativos I
O custo computacional, como vimos, para resolver um sistema é 𝒪 (2
3𝑛3). Agora, como
devemos proceder quando não tivermos tantos recursos? Se nosso dinheiro não conseguir pa-
gar todas as iterações? E se não houver tempo? E se não houver espaço na memória?
Nesse casos, podemos recorrer a métodos que fornecem uma aproximação para o que
desejamos. Vamos tomar como exemplo o seguinte sistema:
Exemplo 1:
{−7.5𝑥1 + 7.3𝑥2 = −4.65−2.8𝑥1 + 9.0𝑥2 = 49.80
Vamos isolar o termo com 𝑥1 na primeira linha e o termo com 𝑥2 na segunda:
{−7.5𝑥1 = −4.65 − 7.3𝑥29.0𝑥2 = 49.80 + 2.8𝑥1
Se usarmos uma aproximação para (𝑥1, 𝑥2), digamos que sejam 𝑥𝑘 = (𝑥1𝑘 , 𝑥2
𝑘), então podemos
construir novas aproximações 𝑥(𝑘+1) = (𝑥1(𝑘+1)
, 𝑥2(𝑘+1)
). Assim, a próxima iteração será:
{−7.5𝑥1
(𝑘+1) = −4.65 − 7.3𝑥2𝑘
9.0𝑥2(𝑘+1) = 49.80 + 2.8𝑥1
𝑘
Isolando os termos que desejamos calcular:
{
𝑥1(𝑘+1)
=(4.65 + 7.3𝑥2
𝑘)
7.5
𝑥2(𝑘+1) =
49.80 + 2.8𝑥1𝑘
9.0
podemos calcular os valores para 𝑥1(𝑘+1) e 𝑥2
(𝑘+1) usando as aproximações iniciais para 𝑥1𝑘 e 𝑥2
𝑘.
Para ver como as iterações podem nos aproximar da solução da equação, iremos esboçar a so-
lução através das retas descritas pelas equações. A primeira equação será a reta vermelha, e a
segunda será a reta azul
{−7.5𝑥1 + 7.3𝑥2 = −4.65−2.8𝑥1 + 9.0𝑥2 = 49.80
Na imagem a seguir, o ponto 1 marca a nossa aproximação inicial. O ponto 2 é o resultado após
a segunda iteração:
Pág
ina5
8
Então, é nítido como o ponto 2 está mais próximo da solução. Esse ponto foi obtido da seguinte
maneira: a equação vermelha faz com que o ponto 1 se mova em direção à reta vermelha, hori-
zontalmente. A equação azul faz com que o ponto 1 se mova em direção à reta azul, vertical-
mente. Assim, o ponto 2 é a intersecção dos prolongamentos desses deslocamentos. As próximas
iteração irão nos aproximar ainda mais da solução:
Agora, tomemos o mesmo sistema, mas trocando a ordem das equações. O que será que irá
ocorrer?
{−2.8𝑥1 + 9.0𝑥2 = 49.80−7.5𝑥1 + 7.3𝑥2 = −4.65
Como já temos uma ideia da solução desse problema, vamos escolher um ponto bem próximo
dela:
Sabemos que cada iteração move o ponto na horizontal em direção à reta vermelha e na vertical
em direção à reta azul. Após algumas iterações, nosso ponto será:
Pág
ina5
9
Ou seja, a simples troca da ordem das equações faz com que nossa solução comece a divergir.
O exemplo 1 mostra como a ordem das equações pode alterar o modo como nossa solu-
ção irá convergir. Esse método de resolução é denominado Método de Gauss-Jacobi, ou sim-
plesmente Método de Jacobi. Algumas propriedades desse método: ele é fácil de construir; nem
sempre converge; a convergência depende da ordem das equações; mesmo que convirja, pode
ser lento.
Um método parecido com o de Jacobi é o Método de Gauss-Seidel. Esse método busca
acelerar o método de Jacobi, de modo que a cada iteração é utilizado o novo valor de 𝑥(𝑘+1) já
calculado na equação seguinte.
Exemplo 2: Resolva o seguinte sistema usando o método de Jacobi
{
4.00𝑥1 + 0.24𝑥2 − 0.08𝑥3 = 8.000.09𝑥1 + 3.00𝑥2 − 0.15𝑥3 = 9.000.04𝑥1 − 0.08𝑥2 + 4.00𝑥3 = 20.00
Isolando 𝑥1 na primeira equação, 𝑥2 na segunda e 𝑥3 na terceira:
𝑥1 = (8.00 − 0.24𝑥2 + 0.08𝑥3)/4.00𝑥2 = (9.00 − 0.09𝑥1 + 0.15𝑥3)/3.00𝑥3 = (20.00 − 0.04𝑥1 + 0.08𝑥2)/4.00
ou
𝑥1(𝑘+1)
= 2.00 − 0.06𝑥2𝑘 + 0.02𝑥3
𝑘
𝑥2(𝑘+1) = 3.00 − 0.03𝑥1
𝑘 + 0.05𝑥3𝑘
𝑥3(𝑘+1) = 5.00 − 0.01𝑥1
𝑘 + 0.02𝑥2𝑘
Tomando 𝑥(0) = (0,0,0):
𝑥11 = 2.00 − 0.06 ∙ 0 + 0.02 ∙ 0 = 2.00
𝑥21 = 3.00 − 0.03 ∙ 0 + 0.05 ∙ 0 = 3.00
𝑥31 = 5.00 − 0.01 ∙ 0 + 0.02 ∙ 0 = 5.00
Assim, obtivemos os novos valores de 𝑥1, 𝑥2 e 𝑥3. Usando esses valores na próxima iteração:
𝑥12 = 2.00 − 0.06 ∙ 3.00 + 0.02 ∙ 5.00 = 1.92
𝑥22 = 3.00 − 0.03 ∙ 2.00 + 0.05 ∙ 5.00 = 3.19
𝑥32 = 5.00 − 0.01 ∙ 2.00 + 0.02 ∙ 3.00 = 5.04
Pág
ina6
0
A próxima iteração será:
𝑥13 = 2.00 − 0.06 ∙ 3.19 + 0.02 ∙ 5.04 = 1.9094
𝑥23 = 3.00 − 0.03 ∙ 1.92 + 0.05 ∙ 5.04 = 3.1944
𝑥33 = 5.00 − 0.01 ∙ 1.92 + 0.02 ∙ 3.19 = 5.0446
Exemplo 3: Resolva o mesmo exercício anterior usando Gauss-Seidel.
A diferença nesse método é que teremos uma convergência mais rápida. O fato é que, ao
invés de calcular as três equações separadamente, calculamos primeiro 𝑥1 e então substituímos
na equação de 𝑥2. Ao descobrir 𝑥2, usamos o resultado em 𝑥3 e assim por diante.
Tomando 𝑥(0) = (0,0,0):
𝑥11 = 2.00 − 0.06 ∙ 0 + 0.02 ∙ 0 = 2.00
Agora, 𝑥1 = 2.00:
𝑥21 = 3.00 − 0.03 ∙ 2.00 + 0.05 ∙ 0 = 2.94
Para 𝑥3:
𝑥31 = 5.00 − 0.01 ∙ 2.00 + 0.02 ∙ 2.94 = 5.0388
Calculando 𝑥1 novamente:
𝑥12 = 2.00 − 0.06 ∙ 2.94 + 0.02 ∙ 5.0388 = 1.924376
Calculando 𝑥2:
𝑥22 = 3.00 − 0.03 ∙ 1.924376 + 0.05 ∙ 5.0388 = 3.194208
Calculando 𝑥3:
𝑥32 = 5.00 − 0.01 ∙ 1.924376 + 0.02 ∙ 3.194208 = 5.04464
Assim temos uma convergência mais rápida.
Assim como o método de Jacobi, o método de Gauss-Seidel é fácil de ser construído. En-
tretanto, nem sempre irá convergir, de modo a também depender da ordem das equações. En-
tretanto, se ocorre convergência ela é mais rápida que Jacobi.
Métodos Iterativos II
Temos que encontrar a solução de um problema. Vamos chamar essa solução de 𝑥∗. To-
memos 𝑥0 como uma aproximação inicial dessa solução. A cada iteração feita usando o método
conveniente, estaremos calculando uma solução 𝑥(𝑘+1)dada por
𝑥(𝑘+1) = Φ(𝑥(𝑘))
onde Φ é o método usado (é a nossa função de iteração) e 𝑥(𝑘+1) é o iterando. Por exemplo, no
método de Newton
𝑥(𝑘+1) = 𝑥𝑘 −𝑓(𝑥𝑘)
𝑓′(𝑥𝑘)
temos que
Pág
ina6
1
Φ(𝑥(𝑘)) = 𝑥𝑘 −𝑓(𝑥𝑘)
𝑓′(𝑥𝑘)
Uma propriedade de todo método iterativo é que 𝑥∗ = Φ(𝑥∗). Ou seja, se o valor esco-
lhido for a própria solução, o método não irá divergir desse valor. Essa propriedade é chamada
de condição de ponto fixo (𝑥∗). Para o método funcionar, essa propriedade é necessária, mas
não suficiente.
Para sistema lineares, temos 𝐴𝑥∗ = 𝑏. Assim, devemos construir um método iterativo
para resolver esse sistema. Vejamos como fazer isso. Se 𝐴𝑥∗ = 𝑏 é verdade, podemos somar 𝑥∗
em ambos lados:
𝑥∗ + 𝐴𝑥∗ = 𝑥∗ + 𝑏
isolando o 𝑥∗ do lado esquerdo:
𝑥∗ = 𝑥∗ − 𝐴𝑥∗ + 𝑏
𝑥∗ = 𝑥∗(𝐼 − 𝐴) + 𝑏
onde 𝐼 é a matriz identidade. Assim:
𝑥∗ = Φ(𝑥∗)
Esse é um método iterativo.
Vamos analisar outro método partindo do fato de que uma matriz pode ser escrita como
a soma de outras duas matrizes:
𝐴 = 𝑀 +𝑁
Assim, para o sistema 𝐴𝑥∗ = 𝑏 teremos:
(𝑀 +𝑁)𝑥∗ = 𝑏
𝑀𝑥∗ + 𝑁𝑥∗ = 𝑏
𝑀𝑥∗ = −𝑁𝑥∗ + 𝑏
𝑥∗ = 𝑀−1(−𝑁𝑥∗ + 𝑏)
𝑥∗ = Φ(𝑥∗)
ou ainda
𝑥∗ = −𝑀−1𝑁𝑥∗ +𝑀−1𝑏
tomando −𝑀−1𝑁 ≡ 𝐵 e 𝑀−1𝑏 ≡ 𝐶:
𝑥∗ = 𝐵𝑥∗ + 𝐶
de modo que
Φ(𝑥) = 𝐵𝑥 + 𝐶
é o protótipo para métodos iterativos para sistemas lineares. Se 𝐵 e 𝐶 não dependerem dos
passos 𝑘, então o método é dito ser estacionário. Em outras palavras, 𝐵 e 𝐶 não mudam. Um
algoritmo geral seria:
Pág
ina6
2
Precisamos, agora, determinar se há convergência nos métodos usados. Em outras pala-
vras: será que 𝑥(𝑘) → 𝑥∗?
Um método de determinar a convergência é analisar o erro. Definimos, então, 𝑒(𝑘) =
𝑥(𝑘) − 𝑥∗. O método vai convergir se ||𝑒(𝑘)|| → 0.
Lembre-se que, para um vetor 𝑥 = (𝑥1, 𝑥2, … , 𝑥𝑛), a norma euclidiana é dada por:
||𝑥||2= √𝑥1
2 + 𝑥22 +⋯+ 𝑥𝑛
2
A norma é uma representação do comprimento de um vetor. Um outro modo de medir o com-
primento é usando a norma 1:
||𝑥||1= |𝑥1| + |𝑥2| + ⋯+ |𝑥𝑛|
e a norma infinita:
||𝑥||∞= max{|𝑥𝑗|}
Então, queremos ver se 𝑒(𝑘) está diminuindo quando tende para 𝑒(𝑘+1). Assim
𝑒(𝑘+1) = 𝑥(𝑘+1) − 𝑥∗
= Φ(𝑥𝑘) − Φ(𝑥∗)
= 𝐵𝑥𝑘 + 𝐶 − (𝐵𝑥∗ + 𝐶)
= 𝐵(𝑥𝑘 − 𝑥∗) = 𝐵𝑒𝑘
logo
𝑒(𝑘+1) = 𝐵𝑒𝑘
||𝑒(𝑘+1)|| = ||𝐵𝑒𝑘||
Entretanto, 𝐵 é uma matriz. Assim, é necessário obter a norma dessa matriz.
Seja uma matriz 𝐴 dada por:
𝐴 = (⋮ ⋮ ⋮ ⋮𝑎1 𝑎2 ⋯ 𝑎𝑛⋮ ⋮ ⋮ ⋮
)
onde 𝑎𝑗 é a coluna 𝑗. Assim:
||𝐴||1= max {||𝑎𝑗||
1}
Por exemplo:
𝐴 = (2 5 1−3 4 02 2 6
)
Pág
ina6
3
a norma da primeira coluna é 7 (|2| + |−3| + |2| = 2 + 3 + 2 = 7). A norma da segunda coluna
é 11. A norma da terceira coluna é 7. Portanto:
||𝐴||1= 11
Seja uma matriz dada por:
𝐴 = (
⋯ 𝑎1 ⋯⋯ 𝑎2 ⋯⋯⋯
⋮𝑎𝑛
⋯⋯
)
onde 𝑎𝑗 é a linha 𝑗. Assim:
||𝐴||∞= max {||𝑎𝑗||
1}
Por exemplo:
𝐴 = (2 5 1−3 4 02 2 6
)
a norma da primeira linha é 8 (|2| + |5| + |1| = 2 + 5 + 1 = 8). A norma da segunda linha é 7.
A norma da terceira linha é 10. Logo:
||𝐴||∞= 10
Uma propriedade da normal matricial é:
||𝐴𝑥||𝑛≤ ||𝐴||
𝑛∙ ||𝑋||
𝑛
Portanto:
||𝑒(𝑘+1)|| ≤ ||𝐵|| ∙ ||𝑒(𝑘)||
Até agora vimos que
||𝑒(𝑘)|| ≤ ||𝐵|| ∙ ||𝑒(𝑘−1)||
isso vale para qualquer 𝑘. Então
||𝑒(𝑘−1)|| ≤ ||𝐵|| ∙ ||𝑒(𝑘−2)||
logo
||𝑒(𝑘)|| ≤ ||𝐵|| ∙ ||𝐵|| ∙ ||𝑒(𝑘−2)||
||𝑒(𝑘)|| ≤ ||𝐵||2∙ ||𝑒(𝑘−2)||
O próximo termo seria
||𝑒(𝑘)|| ≤ ||𝐵||3∙ ||𝑒(𝑘−3)||
e assim por diante. Fazemos isso até
||𝑒(𝑘)|| ≤ (||𝐵||)𝑛∙ ||𝑒(0)||
Se ||𝐵| < 1, então
Pág
ina6
4
lim𝑘→∞
||𝑒(𝑘)|| ≤ lim𝑘→∞
(||𝐵||)2∙ ||𝑒(0)|| = 0
o que significa que ||𝑒(𝑘)|| → 0.
Exemplo 1: Considere
(1.3 0.2−0.4 1.5
) 𝑥∗ = (11)
Somando 𝑥∗ em ambos lados:
𝑥∗ + 𝐴𝑥∗ = 𝑥∗ + 𝑏
𝑥∗ = (𝐼 − 𝐴)𝑥∗ + 𝑏
Φ(𝑥) = (𝐼 − 𝐴)𝑥 + 𝑏
tomando (𝐼 − 𝐴)𝑥 = 𝐵, teremos
𝐵 = (1 00 1
) − (1.3 0.2−0.4 1.5
) = (−0.3 −0.2−0.4 −0.5
)
a norma da primeira linha é 0.5. A norma da segunda linha é 0.9. A norma da primeira coluna é
0.7 e a norma da segunda coluna é 0.7. Assim:
||𝐵||1= 0.7
||𝐵||∞= 0.9
Como ||𝐵|| tem que ser menor que 1, então as duas normas são satisfeitas.
Exemplo 2: Considere
(5 1−2 −4
)𝑥∗ = (11)
Para esse caso:
𝐼 − 𝐴 = 𝐵 = (−4 −12 5
)
A norma da primeira linha é 5. A norma da segunda linha é 7. A norma da primeira coluna é 6.
A norma da segunda coluna é 6. Assim, temos que ||𝐵|| > 1 tanto para norma 1 quanto para
norma infinita. Assim, nosso método não funciona para esse sistema.
Esse método iterativo é chamado de Método de Richardson, mas não é muito usado pois
nem sempre dá certo.
Métodos baseados em Splitting
O método de splitting (separação) é o caso em que dividimos uma matriz em duas partes:
𝐴 = 𝑀 +𝑁, de modo que 𝑥∗ = −𝑀−1𝑁𝑥∗ +𝑀−1𝑏, em que ||𝐵|| = ||𝑀−1𝑁||. Vejamos dois
casos para esse método que, no fundo, são casos já bem conhecidos:
- Caso 1: Método de Jacobi
Nesse caso, a matriz 𝐴 é dividida em uma matriz triangular inferior, 𝐿, uma matriz diago-
nal, 𝐷, e uma matriz triangular inferior, 𝑈:
Pág
ina6
5
𝐴 = 𝐿 + 𝐷 + 𝑈
Com isso:
𝑀 = 𝐷; 𝑁 = (𝐿 + 𝑈)
e
𝐵 = −𝑀−1𝑁 = −𝐷−1(𝐿 + 𝑈)
logo
𝐴𝑥∗ = 𝑏
(𝐿 + 𝐷 + 𝑈)𝑥∗ = 𝑏
Isolando a matriz 𝐷:
𝐷𝑥∗ = −(𝐿 + 𝑈)𝑥∗ + 𝑏
𝐷𝑥(𝑘+1) = −(𝐿 + 𝑈)𝑥(𝑘) + 𝑏
Exemplo 1: Seja o sistema
{2𝑥1 − 3𝑥2 + 4𝑥3 = 5𝑥1 + 4𝑥2 − 𝑥3 = 0𝑥1 + 6𝑥3 = 1
Note que a resolução nada mais é do que 𝐷(𝑘+1) = −(𝐿 + 𝑈)𝑥(𝑘) + 𝑏:
{
𝑥1 = (5 + 3𝑥2 − 4𝑥3)/2
𝑥2 = (−𝑥1 + 𝑥3)/4
𝑥3 = (1 − 𝑥1)/6
Exemplo 2: Sabemos que pelo método de Richardson, a seguinte matriz
𝐴 = (5 1−2 −4
)
possui norma maior que 1. Aplicando a matriz de iteração de Jacobi, teremos:
𝐷 = (5 00 −4
) ; (𝐿 + 𝑈) = 𝑁 = (0 1−2 0
)
Sendo 𝐵 = −𝑀−1𝑁:
𝐵 = −(1/5 00 −1/4
)(0 1−2 0
) = −(0 1/51/2 0
)
Agora, vemos que ||𝐵||1= ||𝐵||
∞= 0.5.
De forma geral, observando a matriz de iteração do método de Jacobi é possível vislum-
brar um critério de convergência baseado diretamente nas entradas da matriz 𝐴 original. O cri-
tério das linhas garante que o método de Jacobi será convergente se os elementos da diagonal
Pág
ina6
6
da matriz dominarem os restantes dos elementos das linhas. Ou seja, se em cada linha o ele-
mento da diagonal, em módulo, for maior que a soma dos elementos fora da diagonal (em mó-
dulo). Matrizes com essa propriedade são chamadas de matrizes diagonalmente dominantes por
linhas. Portanto:
||𝐵||∞= max {||𝛽𝑖||1} < 1
||𝛽𝑖||1 =∑|𝑎𝑖𝑗|
|𝑎𝑖𝑖|< 1
𝑛
𝑗=1𝑗≠𝑖
∑|𝑎𝑖𝑗| < |𝑎𝑖𝑖|; ∀𝑖
𝑛
𝑗=1𝑗≠𝑖
onde 𝛽𝑖 é a norma da linha 𝑖. Assim, no exemplo 1 o critério de linhas não é satisfeito, pois na
primeira linha temos que |2| < |3| + |4|. A segunda linha é satisfeita, pois |4| > |1| + |1|. A
terceira linha também é satisfeita, pois |6| > |1| + |0|. Porém, é suficiente que apenas uma
linha não satisfaça o critério para que a convergência não seja satisfeita.
A seguinte matriz é satisfeita:
(−7.5 7.32.8 9.0
)
pois |𝑎𝑖𝑗| < |𝑎𝑖𝑖|. Mas
(2.8 9.0−7.5 7.3
)
não é satisfeita. Assim, note que, para aplicarmos o método de Jacobi, basta que permutamos
as linhas da matriz.
Exemplo 3: Para a seguinte matriz, o critério de linhas não é satisfeito
(5 1 −12 2 81 6 −3
)
Isso fica evidente na linha 2. Entretanto, permutando as linhas 2 e 3, obteremos uma matriz que
satisfaz o critério:
(5 1 −11 6 −32 2 8
)
Na prática, entretanto, não precisamos formar matrizes de iteração de Jacobi.
- Caso 2: Método de Gauss-Seidel
Para o método de Gauss-Seidel, temos
𝐴 = 𝐿 + (𝐷 + 𝑈)
𝐿𝑥(𝑘+1) = −(𝐷 + 𝑈)𝑥(𝑘) + 𝑏
Pág
ina6
7
que nada mais é do que a resolução de um sistema triangular. Uma matriz que funciona para
Jacobi funcionara para Gauss-Seidel.
Exercício de Revisão
Exercício 1: Considere uma máquina que trabalha no sistema decimal com aritmética de
ponto flutuante utilizando arredondamento e 5 dígitos na mantissa. Sejam 𝐴 e 𝑏 tais que
𝐴 = (−0.20000 ∙ 10−6 0.50000 ∙ 100
0.20000 ∙ 100 0.10000 ∙ 100) ; 𝑏 = (0.50000 ∙ 10
0
0.30000 ∙ 100)
a) Calcule 0.1 ∙ 100 + 0.5 ∙ 106 na máquina. Qual o erro relativo? b) Resolva 𝐴𝑥 = 𝑏 usando eli-
minação Gaussiana sem pivoteamento parcial. c) Resolva 𝐴𝑥 = 𝑏 usando eliminação Gaussiana
com pivoteamento parcial. d) compare as soluções encontradas em b) e em c).
Seja 0.1 ∙ 100 = 0.0000001 ∙ 106. Fazemos isso para poder realizar a soma:
0.0000001 ∙ 106 + 0.50000 ∙ 106 = 0.5000001 ∙ 106
Como a máquina trabalha com 5 dígitos, então o resultado da soma é:
0.50000 ∙ 106
Assim, o erro relativo é:
|0.5000001 ∙ 106 − 0.50000 ∙ 106|
0.50000 ∙ 106= 2 ∙ 10−7
b) Na máquina, temos
(−0.20000 ∙ 10−6 0.50000 ∙ 100
0.20000 ∙ 100 0.10000 ∙ 100 0.50000 ∙ 100
0.30000 ∙ 100)
Para zerar o termo 𝑎21 fazemos 𝑙2 = 𝑙2 + 106𝑙1
(−0.20000 ∙ 10−6 0.50000 ∙ 100
0 0.50000 ∙ 106 0.50000 ∙ 100
0.50000 ∙ 106)
Assim
𝑥2 = 0.10000 ∙ 101 = 1
−0.20000 ∙ 106𝑥1 + 0.50000 ∙ 100 ∙ 0.10000 ∙ 101 = 0.50000 ∙ 100
𝑥1 = −0.0000025
𝑥1 = 0
ou
𝑥𝑏 = (01)
c) Por pivoteamento parcial, teremos de inverter as linhas:
( 0.20000 ∙ 100 0.10000 ∙ 100
−0.20000 ∙ 10−6 0.50000 ∙ 100 0.30000 ∙ 100
0.50000 ∙ 100)
Fazemos 𝑙2 = 𝑙2 + 10−6𝑙1
(0.20000 ∙ 100 0.10000 ∙ 100
0 0.50000 ∙ 100 0.30000 ∙ 100
0.50000 ∙ 100)
Pág
ina6
8
Portanto
𝑥2 = 1
0.20000 ∙ 100𝑥1 + 0.10000 ∙ 100 ∙ 1 = 0.30000 ∙ 100
𝑥1 = 1
ou
𝑥𝑐 = (11)
d) Analisando o primeiro caso (sem pivoteamento):
𝐴𝑥𝑏 = 𝑏
(−0.20000 ∙ 10−6 0.50000 ∙ 100
0.20000 ∙ 100 0.10000 ∙ 100) (01) = (
0.50.1)
esse resultado não está tão próximo de 𝑏 = (0.5, 0.3)𝑇. Vejamos o caso com pivoteamento:
(−0.20000 ∙ 10−6 0.50000 ∙ 100
0.20000 ∙ 100 0.10000 ∙ 100) (11) ≈ (
0.50.3)
Ou seja, por pivoteamento encontramos uma solução muito mais próxima do valor real.
Pág
ina6
9
Sistemas Não-Lineares Agora, nosso interesse está em resolver um sistema não linear:
{
𝑓1(𝑥1, 𝑥2, 𝑥3, … , 𝑥𝑛) = 0
𝑓2(𝑥1, 𝑥2, 𝑥3, … , 𝑥𝑛) = 0⋮
𝑓𝑛(𝑥1, 𝑥2, 𝑥3, … , 𝑥𝑛) = 0
Exemplo 1: Seja o seguinte sistema
{(𝑥 − 𝑥0)
2 + (𝑦 − 𝑦0)2 − 1 = 0
𝑎𝑥 + 𝑏𝑦 + 𝑐 = 0
A primeira equação representa um círculo de raio 1, enquanto que a segunda equação repre-
senta uma reta. A solução desse sistema seria a intersecção das duas equações. Podemos ter o
caso onde não existe nenhuma solução (reta não toca o círculo); podemos ter uma solução (reta
tangente ao círculo) ou podemos ter duas soluções (reta secante ao círculo). A imagem mostra
a situação onde temos duas soluções.
O problema de sistemas não-lineares é que nem sempre é simples localizar suas soluções.
Iremos adotar uma notação vetorial, de modo que
𝑥 ∈ ℝ𝑛; 𝑥 = (𝑥1, 𝑥2, … , 𝑛𝑛)𝑇
e
𝐹:ℝ𝑛 → ℝ𝑛
𝐹(𝑥) = (𝑓1(𝑥), 𝑓2(𝑥),… , 𝑓𝑛(𝑥))𝑇
Queremos encontrar 𝑥∗ ∈ ℝ𝑛 tal que 𝐹(𝑥∗) = 0. Aqui iremos trabalhar somente com casos
onde 𝐹 é diferencial (embora nem toda função seja assim).
Exemplo 2: Seja o sistema
{𝑥12 − 𝑒−𝑥1𝑥2 = 0
𝑥1𝑥2 + sin 𝑥1 = 0
Nesse caso, criamos uma matriz 𝐹(𝑥) cujas linhas serão as linhas dos sistema não-linear:
𝐹(𝑥) = (𝑥12 − 𝑒−𝑥1𝑥2
𝑥1𝑥2 + sin𝑥1)
Iremos fazer um tratamento de modo a analisar a função através de uma expansão em
Taylor. Nesse caso:
𝐹(𝑥 + 𝑠) = 𝐹(𝑥) + 𝐽(𝑥)𝑠 + 𝒪 (||𝑠||2)
Pág
ina7
0
Iremos escrever a expansão em Taylor para cada variável. Aqui, 𝐽(𝑥) é denominada matriz jaco-
biana de 𝐹. Ela é dada por
𝐽(𝑥) =
(
∇𝑇𝑓1(𝑥)
∇𝑇𝑓2(𝑥)⋮
∇𝑇𝑓𝑛(𝑥))
Exemplo 3: Usando o sistema do exemplo 1, vamos aplicar a matriz jacobiana. A primeira
linha da matriz será a derivada da primeira linha de 𝐹(𝑥) com respeito a 𝑥1 e 𝑥2, de modo que
cada derivada irá compor uma coluna da matriz 𝐽(𝑥). A segunda linha será a derivada da se-
gunda linha de 𝐹(𝑥). Assim:
𝐽(𝑥) = (2𝑥1 + 𝑥2𝑒
−𝑥1𝑥2 𝑥1𝑒−𝑥1𝑥2
𝑥2 + cos𝑥1 𝑥1)
Na expansão em Taylor, podemos desconsiderar o termo 𝒪 (||𝑠||2) que diz respeito ao
erro. Logo
𝐹(𝑥 + 𝑠) ≈ 𝐹(𝑥) + 𝐽(𝑥)𝑠
Se tomarmos 𝑥 + 𝑠 = 𝑥∗, então teremos de resolver a equação 𝐹(𝑥) + 𝐽(𝑥)𝑠 = 0. Ou seja,
nosso objetivo é determinar 𝑠. Note que, se 𝑥 é um vetor, 𝑠 também será um vetor. Para deter-
minado 𝑥 fixo, 𝐽(𝑥)𝑠 é uma matriz numérica e 𝐹(𝑥) é um vetor. Assim, 𝐹(𝑥) + 𝐽(𝑥)𝑠 = 0 é um
sistema linear. Ou seja:
𝐽(𝑥)𝑠 = −𝐹(𝑥)
Esse nada mais é do que o método de Newton para sistemas lineares. Assim, se descobrimos 𝑠
teremos de somar com 𝑥, de modo a adquirir uma aproximação da solução. Assim, um algoritmo
para esse método é semelhante ao algoritmo do método de Newton.
Seja 𝑥(0) uma aproximação razoável de 𝑥∗
Exemplo 4: Continuemos a resolução dos exemplos 2 e 3. Primeiro, devemos escolher um
ponto de partida. Tomemos 𝑥(0) = (2,1)𝑇:
𝐹(𝑥(0)) = ((2)2 − 𝑒−2∙1
2 ∙ 1 + sin2)
𝐹(𝑥(0)) = (3.86472.9093
)
𝐽(𝑥(0)) = (2 ∙ 2 + 1𝑒−2∙1 2𝑒−2∙1
1 + cos 2 2)
𝐽(𝑥(0)) = (4.1353 0.27070.5839 2.0000
)
Pág
ina7
1
Tomando a norma de 𝐹
||𝐹(𝑥(0))||∞= 3.8647
A norma mede o quão próximo nosso valor está de 𝐹(𝑥) = 0. O resultado que obtivemos está
longe de zero. Logo, precisamos ir para a segunda iteração. Para isso, precisamos resolver
𝐽(𝑥(0))𝑠(0) = −𝐹(𝑥(0)):
(4.1353 0.27070.5839 2.0000
) 𝑠(0) = −(3.86472.9093
)
Fazendo 𝑙2 = 𝑙2 −0.5839
4.1353𝑙1
(4.1353 0.27070 1.9618
) 𝑠(0) = −(3.86472.3636
)
Logo
𝑠2(0)= −1.2048
𝑠1(0) = −0.8557
assim
𝑠(0) = (−0.8557,−1.2049)𝑇
Somando 𝑠(0) com 𝑥(0) teremos
𝑥(1) = 𝑥(0) + 𝑠(0) = (2,1𝑇) + (−0.8557,−1.2049)𝑇
𝑥(1) = (1.1443,−0.2049)𝑇
Agora, devemos aplicar esses novos valores em 𝐹(𝑥):
𝐹(𝑥(1)) = ((1.1443)2 − 𝑒−1.1443∙(−0.2049)
1.1443 ∙ (−0.2049) + sin 1.1443)
𝐹(𝑥(1)) = (0.04530.6760
)
Nesse caso, ||𝐹(𝑥(1))||∞= 0.6760. Note que esse resultado está bem melhor que o resultado
original. Resolvendo a matriz jacobiana:
𝐽(𝑥(0)) = (2 ∙ 1.1443 − 0.2049𝑒−1.1443∙(−0.2049) 1.1443𝑒−1.1443∙(−0.2049)
−0.2049 + cos 1.1443 1.1443)
𝐽(𝑥(0)) = (2.0297 1.44660.2088 1.1443
)
Resolvendo o sistema 𝐽(𝑥(1))𝑠(1) = −𝐹(𝑥(1)):
(2.0297 1.44660.2088 1.1443
) 𝑠(1) = −(0.04530.6760
)
Fazendo 𝑙2 = 𝑙2 −0.2088
2.0297𝑙1
(2.0297 1.44660 0.9955
) 𝑠(1) = −(0.04530.6713
)
𝑠2(1) = −0.6743
𝑠1(1) = 0.4583
Pág
ina7
2
logo 𝑠(1) = (0.4583,−0.6743)𝑇. Somando com 𝑥(1), obtemos 𝑥(2):
𝑥(2) = 𝑥(1) + 𝑠(1) = (1.6026,−.8792)𝑇
Agora, devemos aplicar esses novos valores, mais uma vez, em 𝐹(𝑥). Ao fazer isso, teremos uma
surpresa:
𝐹(𝑥(2)) = (−1.5239−0.4097
)
de modo que ||𝐹(𝑥(2))||∞= 1.5239. Aparentemente, nosso resultado começou a divergir da
solução. Será que fizemos alguma coisa errada? Antes de criarmos pânico, continuemos resol-
vendo a partir desse ponto. Iremos encontrar:
𝑥(3) = (1.5569,−0.6497)𝑇
de modo que
𝐹(𝑥(3)) = (−0.3256−0.0115
) ; ||𝐹(𝑥(3))||∞= 0.3256
assim, a próxima iteração nos forneceu um resultado ainda mais próximo da solução. Analisando
o gráfico, conseguimos ver que a cada iteração nos aproximamos mais da solução, mesmo, apa-
rentemente, o resultado ter divergido.
Mais duas iterações já nos colocaria numa região muito próxima da solução. A partir da terceira
iteração, a convergência passaria a ser quadrática:
O critério de parada para a resolução de uma equação não-linear é semelhante ao critério
usado para soluções lineares:
||𝑠(𝑘)|| ≤ 𝜖 ||𝑠(0)||
||𝐹(𝑥(𝑘))|| ≤ 𝜖 ||𝐹(𝑥(0))||
Pág
ina7
3
||𝐹(𝑥(𝑘))|| ≤ 𝜖1 ||𝐹(𝑥(0))|| + 𝜖2
O algoritmo é:
Seja 𝑥(0) uma aproximação razoável de 𝑥∗:
Para o método de Newton para sistemas não-lineares, devemos ter em mente como re-
solver o sistema linear gerada a cada iteração. Esses subsistemas compreendem o chamado sub-
problema:
𝐽(𝑥(𝑘))𝑠(𝑘) = −𝐹(𝑥(𝑘))
Para o subproblema, tanto métodos diretos quanto métodos iterativos podem ser utilizados. No
caso de métodos iterativos, podemos emprega-los até atingir a convergência ou até atingir uma
solução aproximada.
Exercício 1: Dado o sistema a seguir, obtenha seu gráfico. Obtenha, também, a matriz
jacobiana e mostre qual o sistema linear deve ser resolvido a cada iteração.
{𝑥12 + 𝑥2
2 − 2 = 0𝑥1𝑥2 − 1 = 0
A primeira equação representa uma circunferência de raio √2. Já a segunda equação representa
uma hipérbole (𝑥2 = 1/𝑥1). Assim, o gráfico é dado por:
A matriz jacobiana é:
𝐽(𝑥) = (2𝑥1 2𝑥2𝑥2 𝑥1
)
O sistema linear que deve ser resolvido a cada iteração é:
Pág
ina7
4
𝐽(𝑥)𝑠 = −𝐹(𝑥)
(2𝑥1 2𝑥2𝑥2 𝑥1
) 𝑠 = −(𝑥12 + 𝑥2
2 − 2𝑥1𝑥1 − 1
)
Pág
ina7
5
Interpolação Suponha que tenhamos uma tabela com os seguintes valores:
x y
2 1
3 7
4 8,5
6 12
Nossa meta é obter uma função que passe por esses pontos. Assim, podemos definir o problema
de interpolação como: dado um conjunto de pontos, devemos encontrar uma função que passe
por esses pontos.
Exemplo 1: Vamos considerar a função seno. Conhecemos os valores dessa função para
alguns pontos notáveis, como mostrado na tabela.
Partindo dos valores que dispomos, como podemos aproximar os valores da função para outros
pontos não tabelados? A curva tracejada preta representa o gráfico da função seno.
Nosso objetivo pode ser descrito como: desejamos encontrar uma função contínua que passe
pelos pontos marcados no gráfico. Será que há precisão? Quando temos poucos pontos e dese-
jamos encontrar uma função, temos uma informação muito vaga. Note que na figura acima, a
função tracejada em azul também passa pelos pontos tabelados.
Com o exemplo 1, vimos que procurar uma função que passe pelos pontos indicados é
uma formulação muito vaga do problema, de modo que podemos ter infinitas funções que sa-
tisfaçam nosso problema. Assim, devemos especificar o tipo de curva que nos interessa. Em
nosso tratamento, iremos trabalhar apenas com interpolação polinomial. Portanto, nossa mis-
são é encontrar um polinômio que passe pelos pontos prescritos.
Um polinômio é da forma:
𝑝𝑛(𝑥) = 𝑎0 + 𝑎1𝑥 + 𝑎2𝑥2 + 𝑎3𝑥
3 +⋯+ 𝑎𝑛𝑥𝑛
Pág
ina7
6
Nossa condição de interpolação é dada pela equação linear 𝑝(𝑥𝑖) = 𝑦𝑖. Então, o problema
de interpolação pode ser descrito como: dados 𝑥0 < 𝑥1 < 𝑥2 < ⋯ < 𝑥𝑛 e 𝑦0, 𝑦1, 𝑦2, … , 𝑦𝑛, que-
remos encontrar um polinômio de grau menor ou igual a 𝑛, tal que 𝑝(𝑥𝑖) = 𝑦𝑖, para 𝑖 =
0,1,… , 𝑛.
Exemplo 2: Sejam os seguintes pontos
Vamos encontrar um polinômio que os contenha. Como temos três pontos, nosso polinômio deve
ser de, no máximo, grau 2. Portanto
𝑝(𝑥) = 𝑎0 + 𝑎1𝑥 + 𝑎2𝑥2
ou
𝑝(𝑥) = 𝑎 + 𝑏𝑥 + 𝑐𝑥2
Usando os valores da tabela:
𝑝(−1) = 𝑎 − 𝑏 + 𝑐 = 6
𝑝(2) = 𝑎 + 2𝑏 + 4𝑐 = 3
𝑝(3) = 𝑎 + 3𝑏 + 9𝑐 = 10
Devemos resolver esse sistema:
(1 −1 11 2 41 3 9
)(𝑎𝑏𝑐) = (
6310)
A solução é: 𝑎 = 1; 𝑏 = −3; 𝑐 = 2. Com isso:
𝑝(𝑥) = 1 − 3𝑥 + 2𝑥2
Exemplo 3: Aproxime 𝑓 por um polinômio sabendo que: 𝑓(0) = 𝑎, 𝑓′(0) = 𝑏 e 𝑓(𝐿) = 𝑐.
Será possível determinar o ponto de mínimo dessa função? Um palpite para isso é interpolar uma
parábola e chutar que o mínimo da função seja o mínimo da parábola. Qual o polinômio que
descreve esse problema?
Para esse caso temos 𝑝(𝑥) = 𝑎 + 𝑏𝑥 + 𝑐𝑥2, pois no-
vamente estamos trabalhando com três pontos. Para
𝑝(0) = 𝑓(0) → 𝑝(0) = 𝑎. Portanto, 𝑎 = 𝑓(0). Para
𝑝′(0) = 𝑓′(0) → 𝑝′(𝑥) = 𝑏 + 2𝑐𝑥 → 𝑝′(0) = 𝑏, en-
tão 𝑏 = 𝑓′(0). Por fim, 𝑝(𝐿) = 𝑓(𝐿) → 𝑎 + 𝑏𝐿 +
𝑐𝐿2 = 𝑓(𝐿). Isolando 𝑐:
𝑐 =𝑓(𝐿) − 𝑓(0) − 𝑓′(0)𝐿
𝐿2
Exemplo 4: Encontre o polinômio para os seguintes pontos:
Pág
ina7
7
Como temos 4 pontos, buscamos um polinômio de grau 3:
𝑝(𝑥) = 𝑎 + 𝑏𝑥 + 𝑐𝑥2 + 𝑑𝑥3
E como temos uma derivada envolvida:
𝑝′(𝑥) = 𝑏 + 2𝑐𝑥 + 3𝑑𝑥2
Com isso
𝑝(1) = 𝑎 + 𝑏 + 𝑐 + 𝑑 = 1
𝑝(2) = 𝑎 + 2𝑏 + 4𝑐 + 8𝑑 = −2
𝑝′(1) = 𝑏 + 2𝑐 + 3𝑑 = −1
𝑝′(2) = 𝑏 + 4𝑐 + 12𝑑 = −7
O sistema que devemos resolver é:
(
1 1 1 11 2 4 800
11
24
312
)(
𝑎𝑏𝑐𝑑
) = (
1−2−1−7
)
A resolução fornece 𝑎 = 4; 𝑏 = −7; 𝑐 = 6 e 𝑑 = −2. Portanto, nosso polinômio é
𝑝(𝑥) = 4 − 7𝑥 + 6𝑥2 − 2𝑥3
Vamos nos situar. Estamos analisando o seguinte problema: dado Ω = {(𝑥𝑘 , 𝑦𝑙)|𝑥𝑘 <
𝑥𝑘+1, 𝑘 = 0,1,2,… , 𝑛}, queremos encontrar um polinômio 𝑝 de grau no máximo 𝑛 tal que
𝑝(𝑥𝑘) = 𝑦𝑘. Portanto, procuramos um polinômio do tipo 𝑝(𝑥) = 𝑎0 + 𝑎1𝑥 + 𝑎2𝑥2 +⋯+
𝑎𝑛𝑥𝑛, de modo que 𝑝 é uma combinação linear do conjunto das funções {1, 𝑥, 𝑥2, … , 𝑥𝑛}. Esse
conjunto é denominado base canônica. Assim
𝑝(𝑥0) = 𝑎0 + 𝑎1𝑥0 + 𝑎2𝑥02 +⋯+ 𝑎𝑛𝑥0
𝑛 = 𝑦0
𝑝(𝑥1) = 𝑎0 + 𝑎1𝑥1 + 𝑎2𝑥12 +⋯+ 𝑎𝑛𝑥1
𝑛 = 𝑦1
⋮
𝑝(𝑥𝑛) = 𝑎0 + 𝑎1𝑥𝑛 + 𝑎2𝑥𝑛2 +⋯+ 𝑎𝑛𝑥𝑛
𝑛 = 𝑦𝑛
Escrevendo esse sistema em notação matricial:
(
1 𝑥0 𝑥02… 𝑥0
𝑛
1 𝑥1 𝑥12… 𝑥1
𝑛
⋮1 𝑥𝑛 𝑥𝑛
2… 𝑥𝑛𝑛)
(
𝑎0𝑎1⋮𝑎𝑛
) = (
𝑦0𝑦1⋮𝑦𝑛
)
A matriz de coeficientes é denominada matriz de Vandermond.
Podemos resolver a interpolação de modos mais diretos, recorrendo à outras bases canô-
nicas, de modo que a matriz de Vandermond seja triangular ou diagonal.
Pág
ina7
8
Seja {𝑙0, 𝑙1, … , 𝑙𝑛} uma base de polinômios de grau menor ou igual a 𝑛. Um polinômio de
grau 𝑛 qualquer será da forma 𝑝(𝑥) = 𝑎0𝑙0(𝑥) + 𝑎1𝑙1(𝑥) + ⋯+ 𝑎𝑛𝑙𝑛(𝑥). Nosso sistema será:
𝑝(𝑥0) = 𝑎0𝑙0(𝑥0) + 𝑎1𝑙1(𝑥0) + ⋯+ 𝑎𝑛𝑙𝑛(𝑥0) = 𝑦0
𝑝(𝑥1) = 𝑎0𝑙0(𝑥1) + 𝑎1𝑙1(𝑥1) + ⋯+ 𝑎𝑛𝑙𝑛(𝑥1) = 𝑦1
⋮
𝑝(𝑥𝑛) = 𝑎0𝑙0(𝑥𝑛) + 𝑎1𝑙1(𝑥𝑛) + ⋯+ 𝑎𝑛𝑙𝑛(𝑥𝑛) = 𝑦𝑛
A matriz de Vandermond será
(
𝑙0(𝑥0) 𝑙1(𝑥0) … 𝑙𝑛(𝑥0)
𝑙0(𝑥1) 𝑙1(𝑥1) … 𝑙𝑛(𝑥1)⋮
𝑙0(𝑥𝑛) 𝑙1(𝑥𝑛) … 𝑙𝑛(𝑥𝑛)
)
ou seja, vamos escolher os valores de modo a tornar a matriz acima triangular ou diagonal. Uma
escolha possível é fazer
𝑙𝑘(𝑥𝑗) = {1, se 𝑗 = 𝑘0, se 𝑗 ≠ 𝑘
que nada mais é do que uma matriz identidade. Além disso, 𝑙𝑘 tem de ser um polinômio de grau
𝑛. Um polinômio de grau 𝑛 possui até 𝑛 raízes. Assim, se 𝑗 ≠ 𝑘, então já temos uma solução.
Por exemplo, se 𝑛 = 4 e 𝑙2, teremos:
𝑙2(𝑥) =(𝑥 − 𝑥0)(𝑥 − 𝑥1)(𝑥 − 𝑥3)(𝑥 − 𝑥4)
(𝑥2 − 𝑥0)(𝑥2 − 𝑥1)(𝑥2 − 𝑥3)(𝑥2 − 𝑥4)
Chamamos esses valores de polinômios de Lagrange. No geral:
𝑙𝑘(𝑥) =∏(𝑥 − 𝑥𝑗)
(𝑥𝑘 − 𝑥𝑗)
𝑛
𝑗=0𝑗≠𝑘
Assim, um polinômio por Lagrange fornece:
𝑝(𝑥) = 𝑦0𝑙0(𝑥) + 𝑦1𝑙1(𝑥) + ⋯+ 𝑦𝑛𝑙𝑛(𝑥)
Exemplo 5: Construa um polinômio para 𝑓(𝑥) = √𝑥 em 𝑥 = 1, 2 e 4.
Como temos 3 pontos, precisamos de um polinômio de, no máximo, grau 2. Recorrendo à
Lagrange:
𝑝(𝑥) = √1(𝑥 − 2)(𝑥 − 4)
(1 − 2)(1 − 4)+ √2
(𝑥 − 1)(𝑥 − 4)
(2 − 1)(2 − 4)+ √4
(𝑥 − 1)(𝑥 − 2)
(4 − 1)(4 − 2)
𝑝(𝑥) = 1(𝑥 − 2)(𝑥 − 4)
(1 − 2)(1 − 4)+ √2
(𝑥 − 1)(𝑥 − 4)
(2 − 1)(2 − 4)+ 2
(𝑥 − 1)(𝑥 − 2)
(4 − 1)(4 − 2)
𝑝(𝑥) = 1(𝑥 − 2)(𝑥 − 4)
(−1)(−3)+ √2
(𝑥 − 1)(𝑥 − 4)
(1)(−2)+ 2
(𝑥 − 1)(𝑥 − 2)
(3)(2)
𝑝(𝑥) = 1(𝑥 − 2)(𝑥 − 4)
3+ √2
(𝑥 − 1)(𝑥 − 4)
−2+ 2
(𝑥 − 1)(𝑥 − 2)
6
Note que o polinômio encontrado é de grau 2.
Pág
ina7
9
Exemplo 6: Interpole os pontos (−3,−1), (3, −2) e (6,10) na forma de polinômios de La-
grange.
Como temos 3 pontos, buscamos um polinômio de grau máximo 2:
𝑝(𝑥) = 𝑦0𝑙0(𝑥) + 𝑦1𝑙1(𝑥) + 𝑦2𝑙2(𝑥)
O que irá fornecer:
𝑝(𝑥) = −1(𝑥 − 3)(𝑥 − 6)
(−3 − 3)(−3 − 6)− 2
(𝑥 − (−3))(𝑥 − 6)
(3 − (−3))(3 − 6)+ 10
(𝑥 − (−3))(𝑥 − 3)
(6 − (−3))(6 − 3)
Exemplo 7: Interpole os pontos (1,0), (2,1) e (3,4) na forma de polinômios de Lagrange.
Novamente temos 3 pontos, o que implica num polinômio de grau 2:
𝑝(𝑥) = 𝑦0𝑙0(𝑥) + 𝑦1𝑙1(𝑥) + 𝑦2𝑙2(𝑥)
Logo:
𝑝(𝑥) = 0(𝑥 − 2)(𝑥 − 3)
(1 − 2)(1 − 3)+ 1
(𝑥 − 1)(𝑥 − 3)
(2 − 1)(2 − 3)+ 4
(𝑥 − 1)(𝑥 − 2)
(3 − 1)(3 − 2)
O polinômio interpolador de Lagrange, se feito de forma displicente, pode ser caro, visto
que muitas operações podem ser necessárias. Outro fato é que podem ocorrer overflow e un-
derflow. Por outro lado, se o polinômio é implementado de forma criteriosa, esses problemas
podem ser evitados. Em outras palavras, esses problemas não são devido ao uso de Lagrange
em si, mas sim devido ao uso de um algoritmo ingênuo.
Temos, também, a interpolação baricêntrica. Essa interpolação nada mais é do que um
algoritmo eficiente para Lagrange. O primeiro passo dessa interpolação é notar que os fatores
constantes que surgem em cada polinômio de Lagrange podem ser pré-computados, de modo
a reduzir o custo computacional. Note também que todos os polinômios de Lagrange diferem
entre si apenas por um único monômio.
𝑙𝑗(𝑥) =(𝑥 − 𝑥0)… (𝑥 − 𝑥𝑗−1)(𝑥 − 𝑥𝑗+1)… (𝑥 − 𝑥𝑛)
(𝑥𝑗 − 𝑥0)… (𝑥𝑘 − 𝑥𝑗−1)(𝑥𝑗 − 𝑥𝑗+1)… (𝑥𝑗 − 𝑥𝑛)
Se
𝑙(𝑥) = (𝑥 − 𝑥0)(𝑥 − 𝑥1)… (𝑥 − 𝑥𝑛)
𝑤𝑗 =1
∏ (𝑥𝑗 − 𝑥𝑘)𝑘=0𝑘≠𝑗
então
𝑙𝑗(𝑥) = 𝑙(𝑥)𝑤𝑗
𝑥 − 𝑥𝑗
Utilizando os coeficientes 𝑤𝑘 e o polinômio 𝑙 de grau (𝑛 + 1), o polinômio interpolador pode
ser reescrito de forma mais compacta:
𝑝(𝑥) = 𝑦0𝑙0(𝑥) + 𝑦1𝑙1(𝑥) + ⋯+ 𝑦𝑛𝑙𝑛(𝑥)
Pág
ina8
0
= 𝑦0𝑙(𝑥)𝑤0
𝑥 − 𝑥0+ 𝑦1𝑙(𝑥)
𝑤1𝑥 − 𝑥1
+⋯+ 𝑦𝑛𝑙(𝑥)𝑤𝑛
𝑥 − 𝑥𝑛
𝑝(𝑥) = 𝑙(𝑥) (𝑦0𝑤0
𝑥 − 𝑥0+ 𝑦1
𝑤1𝑥 − 𝑥1
+⋯+ 𝑦𝑛𝑤𝑛
𝑥 − 𝑥𝑛)
Escrevendo na forma baricêntrica, reduzimos todos os problemas de interpolação por Lagrange.
𝑝(𝑥) = 𝑙(𝑥)∑𝑦𝑗𝑤𝑗
𝑥 − 𝑥𝑗
𝑛
𝑗=0
𝑤𝑗 =1
∏ (𝑥𝑗 − 𝑥𝑘)𝑘=0𝑘≠𝑗
Se estivermos interpolando uma tabela de pontos, então não faz sentido perguntar qual
o erro de interpolação, visto que nosso polinômio terá exatamente esses pontos. Entretanto, ao
interpolar uma função podemos nos perguntar o quão próximo nosso resultado está, de fato,
da função. Em outras palavras, quão boa será nossa aproximação para a função desejada?
Para responder à questão apresentada, podemos recorrer a algumas hipóteses. Primeira,
a função 𝑓 tem de possuir (𝑛 + 1) derivadas contínuas. Segunda, o polinômio 𝑝 tem de possuir
grau no máximo 𝑛. Terceira, o polinômio 𝑝 tem que interpolar 𝑓 em {𝑥0, 𝑥1, … , 𝑥𝑛} ⊂ [𝑎, 𝑏].
Para um 𝑥 fixo, o erro de interpolação é dado por
𝐸(𝑥) ≡ 𝑓(𝑥) − 𝑝(𝑥)
de modo que 𝑥 ∉ {𝑥0, 𝑥1, … , 𝑥𝑛}
Vamos construir uma função auxiliar dada por
𝑔(𝑧) ≡ 𝐸(𝑥)𝜔(𝑧) − 𝐸(𝑧)𝜔(𝑥)
em que 𝜔(𝑧) ≡ (𝑧 − 𝑥0)(𝑧 − 𝑥1)… (𝑧 − 𝑥𝑛) e 𝜔(𝑥) ≡ (𝑥 − 𝑥0)(𝑥 − 𝑥1)… (𝑥 − 𝑥𝑛). Note que
𝜔 é um polinômio de grau (𝑛 + 1). Quantas derivadas possui a função 𝑔? Um polinômio é uma
função infinitamente diferenciável. Como 𝑓 possui (𝑛 + 1) derivadas contínuas, então 𝑔 possui
(𝑛 + 1) derivadas contínuas. A função 𝑔 se anula em 𝑥, 𝑥1, … , 𝑥𝑛.
Se uma função possui pontos de mesmo valor em a e b, então existe um ponto c dentro
desse intervalo cuja derivada é zero.
Sabemos que 𝑔 tem pelo menos (𝑛 + 2) zeros. Pelo teorema de Rolle, 𝑔′ terá pelo menos
(𝑛 + 1) zeros. De modo análogo, 𝑔′′ possui, pelo menos, 𝑛 zeros. Prosseguindo dessa maneira,
vemos que 𝑔(𝑛+1) tem, pelo menos, 1 zero. Seja 𝜉 um zero de 𝑔(𝑛+1). Temos
Pág
ina8
1
𝜔(𝑛+1)(𝑥) = (𝑛 + 1)!
𝐸(𝑛+1)(𝑥) = 𝑓(𝑛+1)(𝑥) − 0
𝑔(𝑛+1)(𝑧) = 𝐸(𝑥)(𝑛 + 1)! − 𝑓(𝑛+1)(𝑧)𝜔(𝑥)
Como 𝜉 é um zero de 𝑔(𝑛+1):
𝑔(𝑛+1)(𝜉) = 𝐸(𝑥)(𝑛 + 1)! − 𝑓(𝑛+1)(𝜉)𝜔(𝑥) = 0
Como queremos o erro:
𝐸(𝑥) =𝑓(𝑛+1)(𝜉)
(𝑛 + 1)! 𝜔(𝑥)
Esse erro diz respeito apenas à região de interpolação.
Exemplo 8: Seja 𝑓(𝑥) = √𝑥 nos pontos 1, 2 e 4. Como temos 3 pontos, nosso polinômio
tem grau 𝑛 = 2. Logo
𝐸(𝑥) =𝑓′′′(𝜉)
3!(𝑥 − 1)(𝑥 − 2)(𝑥 − 4)
Tomando as derivadas:
𝑓′(𝑥) =1
2𝑥−1/2; 𝑓′′(𝑥) = −
1
4𝑥−3/2; 𝑓′′′(𝑥) =
3
8𝑥−5/2
Para 𝑥 ∈ (1,4), qual o máximo que 𝑓′′′(𝑥) assume? O valor máximo corresponde a
𝑀3 = max|𝑓′′′(𝑥)| =
3
8
O termo 𝑀3 corresponde ao máximo da terceira derivada, que ocorre para quando 𝑥 = 1 (teste
com os valores 2 e 4 para certificar isso). Então
|𝐸(𝑥)| ≤ max|𝑓′′′(𝜉)| ∙ max|𝜔(𝑥)| ∙1
3!
Essa fórmula nada mais é do que a fórmula do erro
𝐸(𝑥) =𝑓(𝑛+1)(𝜉)
(𝑛 + 1)! 𝜔(𝑥)
tomando os máximos de 𝑓(𝑛+1)(𝜉) e 𝜔(𝑥). Precisamos calcular o máximo de 𝜔(𝑥). O máximo
ocorre no ponto onde a derivada é zero. Para esse caso:
𝜔(𝑥) = (𝑥 − 1)(𝑥 − 2)(𝑥 − 4)
Fazendo a derivada pela regra do produto e igualando a zero:
(𝑥 − 2)(𝑥 − 4) + (𝑥 − 1)(𝑥 − 4) + (𝑥 − 1)(𝑥 − 2) = 0
Fazendo a distributiva:
𝑥2 − 6𝑥 + 8 + 𝑥2 − 5𝑥 + 4 + 𝑥2 − 3𝑥 + 2 = 0
3𝑥2 − 14𝑥 + 14 = 0
𝑥 =14 ± √196 − 168
6
Pág
ina8
2
𝑥 =14 ± √28
6=14 ± 2√7
6
𝑥 =7 ± √7
3
Como queremos o valor máximo
𝑥 =7 + √7
3
Com isso
max|𝜔(𝑥)| = |𝜔 (7 + √7
3)| = |𝜔(3,215250437)|
Assim
|𝜔(𝑥)| = |(3,215250437 − 1)(3,215250437 − 2)(3,215250437 − 4)| = 2,1126
Por fim
|𝐸(𝑥)| ≤
38 ∙ 2,1126
3!= 0,13204
Exemplo 9: Com que grau de precisão podemos aproximar √115 usando interpolação
quadrática sobre os pontos 100, 121 e 144.
Novamente temos 3 pontos, de modo que 𝑛 = 2. Usando a mesma diferenciação do exem-
plo 8, temos:
𝑓′′′(𝑥) =3
8𝑥−5/2
de modo que o máximo ocorre para o ponto 100:
𝑓′′′(100) =3
8
1
(100)5/2=3
8∙ 10−5
O erro é
|𝐸(𝑥)| ≤𝑀33!𝜔(𝑥)
Note que nesse exemplo, 𝜔(𝑥) = 𝜔(115). Com isso
𝜔(115) = (115 − 100)(115 − 121)(115 − 144) = 2610
Logo
|𝐸(𝑥)| ≤3
8∙ 10−5
1
3!∙ 2610 = 1.631 ∙ 10−3
Suponha que uma função foi interpolada em apenas dois pontos. De acordo com a ima-
gem a seguir, é nítido que uma interpolação que passe apenas por esses dois pontos não seja
suficiente. Afinal, uma função que contenha esses dois pontos pode ser uma reta, mas a função
procurada pode ser bem diferente disso. Porém, podemos nos aproximar de uma melhor
Pág
ina8
3
solução se tivermos mais pontos para interpolar. Na figura, a curva representa a função dese-
jada, enquanto que a reta vermelha mostra a interpolação com apenas dois pontos.
Na imagem a seguir fizemos interpolações usando 3 pontos (𝑝2), 4 pontos (𝑝3) e 5 pontos (𝑝4).
De forma nítida, o polinômio 𝑝4 foi o que mais se aproximou da função real que buscamos.
A partir dessa análise, podemos nos questionar: será que inserindo mais pontos chegare-
mos cada vez mais próximos da função procurada?
A resposta é negativa. A adição de mais pontos pode ocasionar um aumento no erro de
interpolação, gerando o que chamamos de fenômeno de Runge. Na figura a seguir é possível ver
um polinômio interpolar de grau 6 (isso é, possui 7 pontos) em azul e um polinômio interpolar
de grau 10 (com 11 pontos) em vermelho. Note que o erro máximo de interpolação é maior no
polinômio de grau 10.
Em uma malha de pontos regularmente espaçados, os polinômios interpolares em geral
divergem. Entretanto, é possível garantir que o polinômio interpolar convirja para a função
Pág
ina8
4
mesmo adicionando mais pontos (contanto que esses pontos sejam cuidadosamente seleciona-
dos). Na figura seguinte temos uma interpolação com 11 pontos igualmente espaçados (com
erro grande) e mais duas interpolações, com 11 e 15 pontos, criteriosamente escolhidos. Na
interpolação com 15 pontos é mais difícil distinguir visualmente a função original do polinômio
interpolador.
Os pontos que garantem a convergência do polinômio interpolador são os zeros de poli-
nômios especiais, denominados polinômios de Chebyshev.
A grande dificuldade de fugir do fenômeno de Runge é que, em problemas práticos, é
bem difícil escolher quais pontos usaremos na interpolação.
Vejamos um caso onde temos que interpolar 7 pontos. Uma maneira de proceder é: ao
invés de procurar um polinômio de grau 6, podemos, a cada dois pontos, interpolar um polinô-
mio de grau 1. Dessa maneira utilizaremos todos os 7 pontos e evitaremos o fenômeno de
Runge.
Note que a função de interpolação não é mais um polinômio, mas sim uma função definida de
forma diferente em cada subintervalo. Em cada subintervalo, a função é um polinômio de grau
diferente. Uma função definida dessa forma é dita ser um polinômio de grau 1 por partes. Como
a condição de interpolação em cada ponto é satisfeita, então a função como um todo é contínua.
Mas ao invés de tomarmos apenas 2 pontos, podemos tomar 3 e construir um polinômio
de grau 2. Semelhante ao que vimos anteriormente, a função interpolar, nesse caso, é dita ser
Pág
ina8
5
um polinômio de grau 2 por partes. Assim como o polinômio de grau 1, para grau 2 obtemos
uma função contínua.
Podemos prosseguir o raciocínio e montar um polinômio de grau 3, tomando 4 pontos. O
problema aqui é que, embora não fique evidente na figura, a função não é diferenciável no
ponto 𝑥 = 3. O fato é que nesse ponto os dois polinômios de grau 3 estão “colados”.
Quando fazemos uma interpolação por partes, o conjunto de pontos de interpolação deve
ser fracionado em porções menores.
Suponha que desejamos interpolar os pontos por um
polinômio de grau, no máximo, 2. Assim, devemos esco-
lher regiões que possua conjuntos de 3 pontos.
Sejam os pontos de interpolação original dados por
(𝑥0, 𝑦0), (𝑥1, 𝑦1), … , (𝑥𝑛, 𝑦𝑛), ordenados de tal forma
que 𝑥𝑘 > 𝑥𝑗 se 𝑘 > 𝑗. O intervalo de interpolação 𝐼 =
[𝑥0, 𝑥𝑛] pode então ser escrito como 𝐼 = 𝐼0 ∪ 𝐼1 ∪ …𝐼𝑚. Dessa forma, precisamos resolver 𝑚
problemas de interpolação, um para cada subintervalo. Dizemos que 𝑝𝑖 é o polinômio interpo-
lador no intervalo 𝐼𝑗. O grau de cada polinômio interpolador depende de quantos pontos de
interpolação há em cada subintervalo 𝐼𝑘. Se todos os polinômios tiverem o mesmo grau, diga-
mos 𝑞, dizemos que a função 𝑠 é um polinômio por partes de grau 𝑞:
𝑠(𝑥) = 𝑝𝑘(𝑥)
Pág
ina8
6
se 𝑥 ∈ 𝐼𝑘. O erro de interpolação é limitado pelo erro em cada subintervalo. Para interpolação
linear por partes, chamadas de splines lineares, temos:
|𝐸(𝑥)| ≤𝑀2ℎ
2
8
onde ℎ = max|𝑥𝑘 − 𝑥𝑘−1|. Podemos entender o valor de ℎ, também, da seguinte maneira: te-
mos um intervalo de interpolação [𝑎, 𝑏] dividido em 𝑛 subintervalos. Então, ℎ será o compri-
mento de cada subintervalo, dado por:
ℎ =|𝑏 − 𝑎|
𝑛
Exemplo 10: Em quantos pontos regularmente amostrados em [0,2] devemos tabelar a
função 𝑓(𝑥) = (2𝑥 + 1)/(𝑥 − 3) de modo a garantir um erro inferior a 10−4 com splines linea-
res?
Temos que
𝑓′(𝑥) =2(𝑥 − 3) − (2𝑥 + 1)
(𝑥 − 3)2= −
7
(𝑥 − 3)2
Como precisamos de 𝑀2:
𝑓′′(𝑥) =7 ∙ 2(𝑥 − 3)
(𝑥 − 3)4=
14
(𝑥 − 3)3
Analisando nos extremos:
𝑓′′(0) =14
−27
𝑓′′(2) =14
1= 14 → máximo
Como queremos um erro inferior a 10−4:
10−4 >𝑀2ℎ
2
8
ℎ2 <8 ∙ 10−4
𝑀2
Lembrando que ℎ = |𝑏 − 𝑎|/𝑛
(2 − 0
𝑛)2
<8 ∙ 10−4
𝑀2
2
𝑛< √
8 ∙ 10−4
14→ 𝑛 ≥ 265
Exemplo 11: Em quantos pontos é necessário tabelar a função cosseno para que sua apro-
ximação por splines lineares tenha sempre erro inferior à 10−4?
Primeiramente, devemos encontrar um intervalo para analisar nossa função. Como a fun-
ção cosseno é periódica, é suficiente analisa-la no intervalo [0, 𝜋/2]. Assim:
Pág
ina8
7
𝐸máx ≤𝑀2ℎ
2
8; ℎ =
|𝑏 − 𝑎|
𝑛
Tomando as derivadas da nossa função:
𝑓(𝑥) = cos(𝑥) → 𝑓′(𝑥) = − sin(𝑥) → 𝑓′′(𝑥) = −cos(𝑥)
O valor máximo do cosseno é 1, logo 𝑀2 = 1. Portanto
ℎ2 < 8 ∙ 10−4
ℎ < √8 ∙ 10−4
ℎ < √8 ∙ 10−2
𝜋/2 − 0
𝑛< √8 ∙ 10−2
𝑛 >𝜋
2√8102 ≈ 55.5
Ou seja, precisamos de, pelo menos, 57 pontos.
Polinômios de grau 3 por partes que possuem, pelo menos, duas derivadas são denomi-
nados splines cúbicos. Dado um conjunto de pontos 𝑥0 < 𝑥1 < ⋯ < 𝑥𝑛, uma spline cúbica é
uma função 𝑠 ∈ 𝐶2, de modo que 𝑠|[𝑥𝑘−1,𝑥𝑘] ∈ 𝒫3([𝑥𝑘−1, 𝑥𝑘]). Na interpolação por splines cúbi-
cos, um polinômio de grau 3 é utilizado a cada dois pontos, ao invés de 4 pontos como é o caso
da interpolação polinomial de grau 3 por partes. A imagem a seguir mostra a spline cúbica inter-
polante para os mesmos pontos vistos nos exemplos anteriores.
A imagem a seguir mostra o resultado obtido por um polinômio de grau 3 por partes:
Pág
ina8
8
EXERCÍCIOS DE REVISÃO
Exercício 1: Um veículo de fabricação nacional, após vários testes, apresentou os resulta-
dos a seguir. Analisou-se o consumo de combustível de acordo com a velocidade média imposta
ao veículo. Os testes foram realizados em operação normal de tráfego, numa distância de 72 km.
A) determine o consumo aproximado para o caso de ser desenvolvida a velocidade de 80 km/h.
B) calcule a velocidade média para que o consumo seja de 12 km/l.
A) Vamos tentar determinar uma função para o consumo através de polinômios de Lagrange.
Tomando 3 pontos próximos de 80 km/h:
𝑝(𝑥) = 𝑦0𝑙0 + 𝑦1𝑙1 + 𝑦2𝑙2
escolhendo os valores de 𝑥𝑖 = 70, 85 e 100, obtemos:
𝑝(𝑥) = 13.56(𝑥 − 85)(𝑥 − 100)
(70 − 85)(70 − 100)+ 13.28
(𝑥 − 70)(𝑥 − 100)
(85 − 70)(85 − 100)
+ 12.27(𝑥 − 70)(𝑥 − 85)
(100 − 70)(100 − 85)
𝑝(𝑥) = 13.56(𝑥 − 85)(𝑥 − 100)
450− 13.28
(𝑥 − 70)(𝑥 − 100)
225+ 12.27
(𝑥 − 70)(𝑥 − 85)
450
Uma vez que queremos 𝑥 = 80:
𝑝(80) = 13.56(80 − 85)(80 − 100)
450− 13.28
(80 − 70)(80 − 100)
225
+ 12.27(80 − 70)(80 − 85)
450
𝑝(80) = 13.56100
450+ 13.28
200
225− 12.27
50
450= 13.45
B) Note que o consumo é função da velocidade. Chamando o consumo de 𝑦 e a velocidade de 𝑥,
temos 𝑦 = 𝑓(𝑥). Ou seja, em A) determinamos 𝑦 a partir de 𝑥. Agora, a partir de um valor de 𝑦,
queremos determinar 𝑥, ou seja, estamos trabalhando com um problema inverso. Por conta
disso, devemos fazer a interpolação inversa:
𝑝(𝑥)−1 = 𝑥0𝑙0−1 + 𝑥1𝑙1
−1 + 𝑥2𝑙2−1
Como queremos o consumo para 𝑦 = 12, vamos tomar 𝑦𝑖 = 12.27, 11.30 e 10.40. Portanto
𝑝(𝑥)−1 = 100(𝑦 − 11.30)(𝑦 − 10.40)
(12.27 − 11.30)(12.27 − 10.40)+ 115
(𝑦 − 12.27)(𝑦 − 10.40)
(11.30 − 12.27)(11.30 − 10.40)
+ 130(𝑦 − 12.27)(𝑦 − 11.30)
(10.40 − 12.27)(10.40 − 11.30)
𝑝(𝑥)−1 = 100(𝑦 − 11.30)(𝑦 − 10.40)
1.8139− 115
(𝑦 − 12.27)(𝑦 − 10.40)
0.873
+ 130(𝑦 − 12.27)(𝑦 − 11.30)
1.683
Pág
ina8
9
Como queremos 𝑦 = 12:
𝑝(𝑥)−1 = 100(12 − 11.30)(12 − 10.40)
1.8139− 115
(12 − 12.27)(12 − 10.40)
0.873
+ 130(12 − 12.27)(12 − 11.30)
1.683
𝑝(𝑥)−1 = 61.745 + 56.907 − 14.599
𝑝(𝑥)−1 = 104.053
Pág
ina9
0
Quadrados mínimos O gráfico a seguir mostra um conjunto de 160 pontos. Vamos supor que esses pontos
tenham sido obtidos experimentalmente, de modo a possuírem contaminação com erros. De-
vemos, então, buscar uma função de se ajuste a esses pontos. Note que mesmo não podendo
confiar em nenhum ponto isoladamente, podemos ter uma boa noção de como a função se
comporta.
Portanto, nessa seção nosso problema será o seguinte: dado um conjunto de pontos, de-
vemos encontrar uma função que melhor se ajuste a eles.
Usaremos um exemplo de modo a desenvolver o ajuste de curvas. Começaremos consi-
derando os 17 pontos mostrados no gráfico a seguir.
Olhando a distribuição de pontos é justo pensar que sua curva é descrita por um polinômio de
grau 3. Se de fato estivermos certos quanto a isso, qual o melhor polinômio que se ajusta aos
pontos mostrados? De um modo geral, podemos tomar o seguinte polinômio:
𝜙(𝑥) = 𝑐1𝜙1(𝑥) + 𝑐2𝜙2(𝑥) + 𝑐3𝜙3(𝑥) + 𝑐4𝜙4(𝑥)
onde 𝜙1(𝑥) = 1;𝜙2(𝑥) = 𝑥;𝜙3(𝑥) = 𝑥2 e 𝜙4(𝑥) = 𝑥
3. Agora, o problema passa a ser o de de-
terminar os coeficientes 𝑐1, 𝑐2, 𝑐3 e 𝑐4. Como saber se 𝜙
se ajusta bem aos dados? Podemos propor vários crité-
rios para definir a qualidade de um ajuste dos dados de
uma função. A imagem ao lado mostra o ajuste de alguns
pontos (em preto) por uma reta. As riscas em vermelho representam a diferença entre o valor
Pág
ina9
1
registrado (coordenada vertical de cada ponto) e o valor predito pelo ajuste (coordenada verti-
cal sobre a reta). Um possível critério para quantificar a qualidade do ajuste seria somar esses
desvios em vermelho. O melhor ajuste seria aquele que desse a menor somar possível. A medida
a ser minimizada seria, então, a soma dos módulos. Assim, sendo 𝜙(𝑥𝑖) o valor predito pelo
ajuste e 𝑦𝑖 os valores registrados, teríamos que minimizar
|𝜙 − 𝑦|2 =∑(𝜙(𝑥𝑖) − 𝑦𝑖)2
𝑚
𝑖=1
Podemos resumir nosso problema da seguinte forma: dado {(𝑥1, 𝑦1), … (𝑥𝑚, 𝑦𝑚)} ⊂ ℝ2,
queremos encontrar 𝜙(𝑥) = 𝑐1𝜙1(𝑥) + 𝑐2𝜙2(𝑥) + 𝑐3𝜙3(𝑥) + 𝑐4𝜙4(𝑥) que minimize
|𝜙 − 𝑦|2 =∑(𝜙(𝑥𝑖) − 𝑦𝑖)2
𝑚
𝑖=1
Uma notação que iremos usar é de transpostas: 𝜙 = (𝜙(𝑥1), 𝜙(𝑥2),… , 𝜙(𝑥𝑚))𝑇
e 𝑦 =
(𝑦1, 𝑦2, … , 𝑦𝑚)𝑇.
O problema de ajuste é o de encontrar a função 𝜙, que é uma combinação linear das
funções prescritas, que minimiza a soma dos quadrados dos desvios entre os valores amostrados
e os valores preditos pela função 𝜙. Assim, o critério dos quadrados mínimos será |𝜙 − 𝑦|2.
Usando a definição de função 𝜙, podemos reescrever de forma explícita o vetor 𝜙 em
função dos coeficientes 𝑐𝑖:
𝜙 = (
𝜙(𝑥1)
𝜙(𝑥2)⋮
𝜙(𝑥𝑚)
) = (
𝑐1𝜙1(𝑥1) + 𝑐2𝜙2(𝑥1) + 𝑐3𝜙3(𝑥1) + 𝑐4𝜙4(𝑥1)
𝑐1𝜙1(𝑥2) + 𝑐2𝜙2(𝑥2) + 𝑐3𝜙3(𝑥2) + 𝑐4𝜙4(𝑥2)⋮
𝑐1𝜙1(𝑥𝑚) + 𝑐2𝜙2(𝑥𝑚) + 𝑐3𝜙3(𝑥𝑚) + 𝑐4𝜙4(𝑥𝑚)
)
O vetor 𝜙 pode ser representado por um produto matricial Φ𝑐, onde cada elemento de Φ é a
avaliação de uma das funções 𝜙𝑗 prescritas em um dos pontos 𝑥𝑖 amostrados. Aqui, 𝑐 é a matriz
dos coeficientes a serem determinados. Assim:
𝜙 = Φ𝑐
Φ = (
𝜙1(𝑥1) 𝜙2(𝑥1) 𝜙3(𝑥1) 𝜙4(𝑥1)
𝜙1(𝑥2) 𝜙2(𝑥2) 𝜙3(𝑥2) 𝜙4(𝑥2)⋮
𝜙1(𝑥𝑚) 𝜙2(𝑥𝑚) 𝜙3(𝑥𝑚) 𝜙4(𝑥𝑚)
)
𝑐 = (
𝑐1𝑐2𝑐3𝑐4
)
Usando a propriedade de que |𝑢|2 = 𝑢𝑇𝑢, temos que a função objetivo, dada por
|𝜙 − 𝑦|2, pode ser reescrita como uma quadrática em 𝑐:
|𝜙 − 𝑦|2 = |Φ𝑐 − 𝑦|2
= (Φ𝑐 − 𝑦)𝑇(Φ𝑐 − 𝑦)
Pág
ina9
2
= 𝑐𝑇(Φ𝑇Φ)𝑐 − 2𝑐𝑇Φ𝑇𝑦 + 𝑦𝑇𝑦
Vamos lembrar uma propriedade do cálculo: se 𝑀 ∈ ℝ𝑛×𝑛 e 𝑥, 𝑦 ∈ ℝ𝑛, então
∇𝑥(𝑥𝑇𝑀𝑥) = 𝑀𝑥 −𝑀𝑇𝑥
∇𝑥(𝑥𝑇𝑀𝑦) = 𝑀𝑦
Como queremos minimizar |𝜙 − 𝑦|2, então o gradiente deve se anular (ponto de mí-
nimo):
∇(|𝜙 − 𝑦|2) = 0
Com isso:
∇(|𝜙 − 𝑦|2) = ∇(𝑐𝑇(Φ𝑇Φ)𝑐 − 2𝑐𝑇Φ𝑇𝑦 + 𝑦𝑇𝑦) = 2Φ𝑇Φ𝑐 − 2Φ𝑇𝑦
ou
Φ𝑇Φ𝑐 = Φ𝑇𝑦
Agora estamos prontos para voltar ao nosso gráfico de pontos. Lembre-se- se que deter-
minar que o polinômio que o descreve é, aparentemente, de grau 3, de modo que
𝜙(𝑥) = 𝑐1𝜙1(𝑥) + 𝑐2𝜙2(𝑥) + 𝑐3𝜙3(𝑥) + 𝑐4𝜙4(𝑥)
onde 𝜙1(𝑥) = 1;𝜙2(𝑥) = 𝑥;𝜙3(𝑥) = 𝑥2 e 𝜙4(𝑥) = 𝑥
3. Com isso, nossa matriz Φ será:
Φ =
(
1 𝑥1 𝑥12 𝑥1
3
1 𝑥2 𝑥22 𝑥2
3
⋮1 𝑥𝑚 𝑥𝑚
2 𝑥𝑚3 )
Exemplo 1: Vamos analisar um caso numérico. Vamos exibir graficamente os pontos
amostrados e ajusta-los por uma curva adequada.
Vamos utilizar o Matlab/Octave para nos ajudar. Primeiro, vamos construir o gráfico gerando
uma matriz para 𝑓(𝑥). Tomando 𝑓(𝑥) = 𝑦, fazemos:
Vamos fazer o mesmo para 𝑥:
Pág
ina9
3
Agora devemos construir o gráfico de pontos. Vamos representar os pontos por bolinhas. Assim,
fazemos:
Olhando a curva obtida é sensato supor que estamos diante de um gráfico de logaritmo. Assim,
nossa função será:
𝜙(𝑥) = 𝑐1𝜙1(𝑥) + 𝑐2𝜙2(𝑥)
𝜙(𝑥) = 𝑐1 + 𝑐2 log(𝑥)
de modo que 𝜙1(𝑥) = 1 e 𝜙2(𝑥) = log(𝑥). Note que é sempre bom tomar 𝜙1(𝑥) como sendo
1, de modo que 𝜙2(𝑥) é a função desejada. Vamos construir a matriz Φ, de modo que a primeira
coluna será os valores de 𝜙1(𝑥) aplicados aos pontos de 𝑥 e a segunda coluna será os valores de
log(𝑥) aplicados aos valores de 𝑥. Denotando a matriz Φ por p:
O comando ones(7,1) cria um vetor de 7 linhas com valor 1. O próximo passo é calcular pTp
(Φ𝑇Φ). Vamos chamar esse produto de A:
Note que estamos resolvendo o sistema 𝐴𝑐 = 𝑏, de modo que 𝐴 = Φ𝑇Φ e 𝑏 = Φ𝑇𝑦. Calculando
𝑏:
Pág
ina9
4
Agora, por fim, vamos encontrar os coeficientes 𝑐𝑖:
Assim, nossa função se torna 𝜙(𝑥) = 0.98935 + 5.47411 ∙ log(𝑥). Plotando o gráfico com essa
função:
Com isso vemos que nosso ajuste está satisfatório.
Etapas para trabalhar com quadrados mínimos
Para resolver problemas através de quadrados mínimos é conveniente seguir algumas
etapas. Vamos analisa-las aqui, de modo a generalizar nosso estudo.
A qualidade de um ajuste depende da escolha do espaço de aproximação. Por exemplo,
no exemplo anterior, aproximamos o polinômio por uma função logarítmica. Podemos usar as
seguintes aproximações:
• Polinômios
{1, 𝑥, 𝑥2, … , 𝑥𝑛}
• Polinômios trigonométricos
{1, cos(𝑥) , sin(𝑥) , … , cos(𝑘𝑥) , sin(𝑘𝑥)}
• Exponenciais
{𝑒−𝑘𝑥, … , 𝑒−𝑥, 1, 𝑒𝑥, … , 𝑒𝑘𝑥}
Pág
ina9
5
A próxima etapa é construir a matriz Φ. Essa é uma matriz 𝑚× 𝑛, de modo que (Φ)𝑖𝑗 =
𝜙𝑗(𝑥𝑖). A matriz 𝐴 é definida por 𝐴 = (Φ𝑇Φ), de modo a ser de ordem 𝑛 × 𝑛. Essa é uma matriz
simétrica, pois 𝐴 = Φ𝑇Φ → 𝐴𝑇 = (Φ𝑇Φ)𝑇 = Φ𝑇Φ𝑇𝑇 = Φ𝑇Φ = 𝐴.
Por fim, a última etapa consiste em resolver um sistema normal, dado por 𝐴𝑐 = 𝑏, onde
𝐴 = Φ𝑇Φ e 𝑏 = Φ𝑇𝑦. Para resolver esse sistema podemos recorrer à eliminação de Gauss, de-
composição de Cholesky, decomposição QR ou decomposição SVD. Como sabemos, o custo da
eliminação de Gauss é de 2/3 𝑛³. Na decomposição de Cholesky, o custo é 1/3 𝑛³. Já na decom-
posição QR, o custo é 4/3 𝑛³. Embora seja mais cara, a decomposição QR é mais confiável. Por
fim, a decomposição SVD tem um custo de 10/3 𝑛³, mas é o método que melhor resolve pro-
blemas mais complexos.
Exemplo 2: Exiba graficamente os pontos amostrados e a eles ajuste a curva 𝜙(𝑥) =
𝑐1𝑒−𝑥 + 𝑐2 + 𝑐3𝑒
𝑥.
Vamos montar o gráfico em Matlab/Octave.
O gráfico está mostrado a seguir. Agora, devemos criar a matriz Φ. Aplicando os valores de 𝜙(𝑥)
atribuídos à curva, teremos:
Agora, vamos criar a matriz 𝐴 = Φ𝑇Φ:
Pág
ina9
6
O próximo passo é calcular a matriz 𝑏 = Φ𝑇𝑦:
Agora, vamos resolver o sistema 𝐴𝑐 = 𝑏:
O gráfico a seguir é a distribuição dos pontos.
Usando os valores de 𝑐 em 𝜙(𝑥) = 𝑐1𝑒−𝑥 + 𝑐2 + 𝑐3𝑒
𝑥 teremos a curva:
Pág
ina9
7
Ajuste não linear
Nem sempre iremos conseguir ajustar pontos amostrados à todas as curvas. O fato é que
existem curvas não lineares. Entretanto, muitas dessas curvas podem ser linearizadas.
Exemplo 3: A curva 𝜙(𝑥) = 𝛼𝑒𝛽𝑥 pode ser linearizada?
Podemos linearizar a curva tomando o logaritmo em ambos lados:
ln 𝜙(𝑥) = ln 𝛼 + 𝛽𝑥
de modo que ln 𝛼 é nosso 𝑐1 e 𝛽 é nosso 𝑐2.
Exemplo 4: A curva 𝜙(𝑥) = 1/(𝑐1 + 𝑐2𝑥) pode ser linearizada?
Esse caso é simples. Basta invertemos ambos lados:
1
𝜙(𝑥)= 𝑐1 + 𝑐2𝑥
Exemplo 5: linearize a curva 𝜙(𝑥) = 𝑥 + 𝑥2/(𝛼 + 𝛽𝑥)
Subtraindo 𝑥 em ambos lados:
𝜙(𝑥) − 𝑥 =𝑥2
𝛼 + 𝛽𝑥
Invertendo ambos lados
1
𝜙(𝑥) − 𝑥=𝛼 + 𝛽𝑥
𝑥2
𝑥2
𝜙(𝑥) − 𝑥= 𝛼 + 𝛽𝑥
Podemos, se preferir, chamar o lado esquerdo da equação acima de 𝑧. Assim:
𝑧 = 𝛼 + 𝛽𝑥
Exemplo 6: Linearize 𝜙(𝑥) = 𝑎0 cos(𝑎1𝑥)
Esse é um exemplo de curva que não podemos linearizar. Assim, nem sempre podemos
ajustar curvas não lineares.
EXERCÍCIOS DE REVISÃO
Exercício 1: Ajuste uma curva aos pontos dados: 𝑓(𝑥) → 𝑓(−20) = 0,128; 𝑓(10) =
0,134 e 𝑓(70) = 0,144.
Plotando o gráfico, temos a imagem
ao lado. Um bom palpite é aproximar a fun-
ção para uma reta. Assim:
𝜙(𝑥) = 𝑐1𝑥 + 𝑐2
Agora devemos gerar a matriz Φ. Ela é ge-
rada aplicando 𝜙𝑖(𝑥) nos pontos dados (de
modo que 𝜙1(𝑥) = 𝑥 e 𝜙2(𝑥) = 1). Assim:
Pág
ina9
8
Φ = (−20 110 170 1
)
O próximo passo é calcular a matriz 𝐴 = Φ𝑇Φ:
𝐴 = (−20 10 701 1 1
) (−20 110 170 1
)
𝐴 = (5400 6060 3
)
Agora calculamos a matriz 𝑏 = Φ𝑇𝑦:
𝑏 = (−20 10 701 1 1
) (0,1280,1340,144
)
𝑏 = (8,8600,406
)
O que nos resta é resolver o sistema 𝐴𝑐 = 𝑏
(5400 6060 3
) (𝑐1𝑐2) = (
8,8600,406
)
Resolvendo por eliminação gaussiana, fazemos 𝑙2 = 𝑙2 −60
5400𝑙1
(5400 600 2,3333
) (𝑐1𝑐2) = (
8,8600,3075
)
Com isso, 𝑐2 = 0,1318 e 𝑐1 = 0,0001763. Logo
𝜙(𝑥) = 0,0001763𝑥 + 0,1318
Plotando o gráfico:
Assim, nossa aproximação está satisfatória.
Exercício 2: Ajuste uma curva aos pontos 𝑥 = (−1,0,2) e 𝑦 = (4,1,−1).
A construção do gráfico está mostrada a seguir. Note que um bom palpite é que a função
seja exponencial decrescente. Vamos, primeiro, escrever o polinômio 𝜙(𝑥):
𝜙(𝑥) = 𝑐1 + 𝑐2𝑒−𝑥
Pág
ina9
9
Eu poderia escolher um outro polinômio com expoente, por exemplo 𝜙(𝑥) = 𝑐1𝑒−𝑥 somente ou
até 𝜙(𝑥) = 𝑐1𝑒−𝑥 + 𝑐2 + 𝑐3𝑒
𝑥. Mas optei por trabalhar dessa forma. Assim, a matriz Φ será
𝜙𝑖(𝑥) aplicado aos valores de 𝑥, onde aqui 𝜙1(𝑥) = 1 e 𝜙2(𝑥) = 𝑒−𝑥. Assim:
Φ = (1 2,71831 1 1 0,1353
)
O próximo passo é calcular 𝐴 = Φ𝑇Φ
𝐴 = (1 1 1
2,7183 1 0,1353)(1 2,71831 1 1 0,1353
)
𝐴 = (3 3,85363,8536 8,4075
)
Agora, fazemos 𝑏 = Φ𝑇𝑦
𝑏 = (1 1 1
2,7183 1 0,1353)(
41−1)
𝑏 = (4
11,7379)
Por fim, devemos resolver o sistema 𝐴𝑐 = 𝑏
(3 3,85363,8536 8,4075
) (𝑐1𝑐2) = (
411,7379
)
Por eliminação de Gauss, fazemos 𝑙2 = 𝑙2 −3,8536
3𝑙1
(3 3,85360 3,4574
) (𝑐1𝑐2) = (
46,5998
)
O que fornece 𝑐2 = 1,9089 e 𝑐1 = −1,1187. Logo
𝜙(𝑥) = −1,1187 + 1,9089𝑒−𝑥
Pág
ina1
00
Exercício 3: Construa um polinômio para 𝑓(𝑥) = √𝑥 nos pontos 𝑥 = 1, 2 e 4.
Esse exercício foi feito no exemplo 5 da seção de interpolação. Vamos aplicar o método
de Lagrange. Como temos 3 pontos, então buscamos um polinômio de grau máximo 2. Logo:
𝑝(𝑥) = 𝑦0𝑙0(𝑥) + 𝑦1𝑙1(𝑥) + 𝑦2𝑙2(𝑥)
Como 𝑦 = 𝑓(𝑥) = √𝑥, para 𝑥0 = 1, 𝑥1 = 2 e 𝑥2 = 4 teremos:
𝑦0 = 1
𝑦1 = √2
𝑦2 = 2
Fazendo a construção pela fórmula de Lagrange:
𝑙0 =(𝑥 − 𝑥1)(𝑥 − 𝑥2)
(𝑥0 − 𝑥1)(𝑥0 − 𝑥2)=(𝑥 − 2)(𝑥 − 4)
(1 − 2)(1 − 4)
𝑙1 =(𝑥 − 𝑥0)(𝑥 − 𝑥2)
(𝑥1 − 𝑥0)(𝑥1 − 𝑥2)=(𝑥 − 1)(𝑥 − 4)
(2 − 1)(2 − 4)
𝑙2 =(𝑥 − 𝑥0)(𝑥 − 𝑥1)
(𝑥2 − 𝑥0)(𝑥2 − 𝑥1)=(𝑥 − 1)(𝑥 − 2)
(4 − 1)(4 − 2)
Com isso, obtemos o seguinte polinômio:
𝑝(𝑥) = 1(𝑥 − 2)(𝑥 − 4)
(1 − 2)(1 − 4)+ √2
(𝑥 − 1)(𝑥 − 4)
(2 − 1)(2 − 4)+ 2
(𝑥 − 1)(𝑥 − 2)
(4 − 1)(4 − 2)
Agora o tratamento é puramente algébrico. Fazendo as distributivas e juntando os termos se-
melhantes (e aqui também usei uma aproximação para √2), teremos:
𝑝(𝑥) = −0,042𝑥2 + 0,535𝑥 + 0,505
Que é o polinômio procurado.
Exercício 4: Refaça o exercício anterior usando quadrados mínimos.
Agora, vamos tentar obter a mesma resposta por quadrados mínimos. Como buscamos
um polinômio de grau 2, irei escrever a função 𝜙 como:
𝜙(𝑥) = 𝑐1𝜙1(𝑥) + 𝑐2𝜙2(𝑥) + 𝑐3𝜙3(𝑥)
de modo que 𝜙1(𝑥) = 𝑥2; 𝜙2(𝑥) = 𝑥 e 𝜙3(𝑥) = 1. A matriz Φ será:
Φ = (1 1 14 2 116 4 1
)
Agora, fazemos a matriz 𝐴 = Φ𝑇Φ:
𝐴 = (1 4 161 2 41 1 1
)(1 1 14 2 116 4 1
) = (273 73 2173 21 721 7 3
)
O próximo passo é calcular 𝑏 = Φ𝑇𝑦
𝑏 = (1 4 161 2 41 1 1
) (1
1,4142
) = (38,65611,8284,414
)
Pág
ina1
01
Como descobrimos a matriz 𝐴 e 𝑏, devemos resolver o sistema 𝐴𝑐 = 𝑏:
(273 73 2173 21 721 7 3
)(
𝑐1𝑐2𝑐3) = (
38,65611,8284,414
)
Recorrendo à eliminação de Gauss, faremos:
𝑙2 = 𝑙2 −73
273𝑙1
𝑙3 = 𝑙3 −21
273𝑙1
(273 73 210 1,47985 1,384620 1,38462 1,38462
)(
𝑐1𝑐2𝑐3) = (
38,6561,49141,44046
)
Agora fazemos
𝑙3 = 𝑙3 −1,38462
1,47985𝑙2
(273 73 210 1,47985 1,384620 0 0,08910
)(
𝑐1𝑐2𝑐3) = (
38,6561,49140,04503
)
Logo, temos 𝑐3 = 0,505; 𝑐2 = 0,535 e 𝑐1 = −0,0403. Nossa função 𝜙 se torna:
𝜙(𝑥) = −0,0403𝑥2 + 0,535𝑥 + 0,505
Esse é um resultado muito próximo daquele encontrado pelo método de Lagrange. A imagem
mostra o ajuste realizado por esse polinômio.
O programa em Matlab/Octave é:
Exercício 5: Usando o método dos quadrados mínimos, determine a solução aproximada
do sistema linear incompatível:
Pág
ina1
02
Um sistema é dito ser incompatível quando não admite soluções. Seja esse sistema ex-
presso por 𝐴𝑥 = 𝑦, de modo que
𝐴 =
(
1 −32 −5−131
2−12 )
; 𝑦 =
(
0.91.9−0.93.01.1 )
Podemos obter a solução aproximada fazendo 𝐴𝑇𝐴𝑥 = 𝐴𝑇𝑦
(1 2 − 1 3 1−3 − 5 2 − 1 2
)
(
1 −32 −5−131
2−12 )
(𝑎𝑏) = (
1 2 − 1 3 1−3 − 5 2 − 1 2
)
(
0.91.9−0.93.01.1 )
(16 −16−16 43
)(𝑎𝑏) = (
15.7−14.8
)
O que fornece 𝑎 = 1.01458 e 𝑏 = 0.03333.
Para ficar claro como a escolha de mais parâmetros pode gerar melhores resultados, a
imagem a seguir mostra duas aproximações feitas levando em conta uma função 𝐟(𝐱) = 𝐚 +
𝐛𝐱𝟏/𝟐 + 𝐜𝐱 e outra 𝐟(𝐱) = 𝐚 + 𝐛𝐱𝟏/𝟐. Esse é o caso do exemplo 1, mas usando uma função
raiz ao invés de uma função logarítmica.
Exercício 6: Três quantidades experimentais foram medidas e estão mostradas a seguir
𝑢 2.1 4.5 5.3 6.2 9.0
𝑣 3.2 3.2 4.6 6.1 2.2
𝑧 1.1 0.1 1.1 10.0 − 13.5
Pág
ina1
03
Supondo que o valor de 𝑧 seja determinado por 𝑢 e por 𝑣, descubra os melhores parâmetros 𝑐1
e 𝑐2 tais que 𝑧 ≈ 𝑐1(𝑢 − 5) + 𝑐2(𝑢 − 5)(𝑣 − 4), no sentido de quadrados mínimos. Com os co-
eficientes descobertos, calcule o valor estimado para 𝑧, usando os valores tabelados de 𝑢 e 𝑣 e
compute o resíduo (a soma das diferenças ao quadrado).
Nosso polinômio é do tipo 𝜙 = 𝑐1𝜙1 + 𝑐2𝜙2, onde 𝜙1 = (𝑢 − 5) e 𝜙2 = (𝑢 − 5)(𝑣 − 4).
Com isso, obtemos a matriz Φ:
Φ = (𝜙1(𝑢) 𝜙2(𝑢, 𝑣))
Φ =
(
2.1 − 5 (2.1 − 5)(3.2 − 4)
4.5 − 5 (4.5 − 5)(3.2 − 4)
5.3 − 5 (5.3 − 5)(4.6 − 4)
6.2 − 5 (6.2 − 5)(6.1 − 4)9.0 − 5 (9.0 − 5)(2.2 − 4))
=
(
−2.9 2.32−0.5 0.40 0.3 0.18 1.2 2.52
4.0 − 7.20)
Vamos calcular as matrizes 𝐴 = Φ𝑇Φ e 𝑏 = Φ𝑇𝑦, onde 𝑦 = 𝑧𝑇
𝐴 = (−2.9 −0.5 0.3 1.2 4.02.32 0.40 0.18 2.52 −7.20
)
(
−2.9 2.32−0.5 0.40 0.3 0.18 1.2 2.52
4.0 − 7.20)
𝐴 = (26.19 −32.65−32.65 63.77
)
𝑏 = (−2.9 −0.5 0.3 1.2 4.02.32 0.40 0.18 2.52 −7.20
)
(
1.10.11.110.0−13.5)
𝑏 = (−44.91125.19
)
Logo, nosso sistema linear será:
𝐴𝑐 = 𝑏
(26.19 −32.65−32.65 63.77
) (𝑐1𝑐2) = (
−44.91125.19
)
Fazendo 𝑙2 → 𝑙2 + (32.65
26.19) 𝑙1
(26.19 −32.650 23.067
) (𝑐1𝑐2) = (
−44.9169.203
)
Portanto
𝑐2 = 3
26.19𝑐1 − 32.65(3) = −44.91
26.19𝑐1 = 53.04
𝑐1 = 2.01
Nossa solução é 𝑐1 = 2.01 e 𝑐2 = 3. Vejamos:
𝑧1 = 2.01(2.1 − 5) + 3(2.1 − 5)(3.2 − 4) = 1.131
Pág
ina1
04
𝑧2 = 2.01(4.5 − 5) + 3(4.5 − 5)(3.2 − 4) = 0.195
𝑧3 = 2.01(5.3 − 5) + 3(5.3 − 5)(4.6 − 4) = 1.143
𝑧4 = 2.01(6.2 − 5) + 3(6.2 − 5)(6.1 − 4) = 9.972
𝑧5 = 2.01(9.0 − 5) + 3(9.0 − 5)(2.2 − 4) = −13.56
Computando o resíduo:
|1.1 − 1.131|2 = 0.000961
|0.1 − 0.195|2 = 0.009025
|1.1 − 1.143|2 = 0.001849
|10.0 − 9.972|2 = 0.000784
|−13.5 + 13.56|2 = 0.0036
Pág
ina1
05
Integração Numérica Vamos supor que temos que calcular a seguinte integral
𝐼 = ∫ 𝑓(𝑥)𝑑𝑥𝑏
𝑎
de modo que 𝑎, 𝑏 ∈ ℝ (é uma integral definida). Entretanto, alguns empecilhos podem surgir.
Podemos nos deparar com uma integral difícil de ser calculada. Por outro lado, podemos até
saber calcular a integral, mas a expressão é muito complicada. Outro fator é que podemos ser
apresentados a uma tabela de pontos, e não a uma função propriamente dita.
Um modo de proceder na resolução de integrais complicadas é substituir a função 𝑓 por
uma outra função 𝑓′ mais simples. Feito isso, nossa integral é realizada sobre 𝑓′. Um caso fácil é
aproximar 𝑓 por um polinômio.
Sabemos que a integral fornece a área abaixo de um gráfico. Vamos analisar uma função
𝑓(𝑥) qualquer, cujo gráfico é:
Vamos supor que queremos calcular a integral num intervalo [𝑎, 𝑏]. Podemos aproximar a área
da integral com um retângulo que passa pelos pontos. Assim, a integral será a área do retângulo.
Sabemos que a área é a multiplicação da base pela altura. Aqui, a base é o comprimento 𝑏 − 𝑎
e a altura, como mostra a figura, é 𝑓(𝑎).
Com isso a integral será aproximada para:
𝐼 ≈ 𝑓(𝑎) ∙ (𝑏 − 𝑎)
Esse resultado é denominado quadratura do retângulo, pois a área do gráfico foi aproximada
pela área de um retângulo. Poderíamos ter obtido um retângulo cuja altura passe pelo ponto
𝑓(𝑏):
Pág
ina1
06
Nesse caso
𝐼 ≈ 𝑓(𝑏) ∙ (𝑏 − 𝑎)
Note que em ambos casos, a área não foi exatamente a desejada. No primeiro caso en-
contramos uma área menor e no segundo encontramos uma área maior.
Vejamos um caso em que usamos uma melhor aproximação. Vamos traçar uma reta li-
gando os pontos 𝑓(𝑎) e 𝑓(𝑏). Nesse caso, a figura obtida será um trapézio:
Lembrando que a área de um trapézio é (base maior + base menor) ∙ altura/2, teremos:
𝐼 ≈(𝑓(𝑏) + 𝑓(𝑎)) ∙ (𝑏 − 𝑎)
2
Essa fórmula, que fornece uma área mais próxima da procurada, é denominada quadratura do
trapézio.
Outro método é usar um retângulo cuja altura seja um ponto médio entre 𝑓(𝑎) e 𝑓(𝑏).
Nesse caso, a altura é dada por
𝑓(𝑏) + 𝑓(𝑎)
2
Logo, a área será:
𝐼 ≈ (𝑏 − 𝑎)𝑓(𝑏) + 𝑓(𝑎)
2
Pág
ina1
07
O que vimos até aqui compreendem quatro quadraturas, sendo três de retângulos e uma
de trapézio:
𝑄𝑅[𝑓] = 𝑓(𝑎) ∙ (𝑏 − 𝑎)
𝑄𝑅[𝑓] = 𝑓(𝑏) ∙ (𝑏 − 𝑎)
𝑄𝑅[𝑓] = (𝑏 − 𝑎)𝑓(𝑏) − 𝑓(𝑎)
2
𝑄𝑇[𝑓] =(𝑓(𝑏) + 𝑓(𝑎)) ∙ (𝑏 − 𝑎)
2
Uma notação útil será escrever 𝑏 − 𝑎 = ℎ.
O melhor jeito para encontrar a área do gráfico é aproximando a curva por um polinômio.
Agora podemos generalizar o cálculo da integral levando em conta o erro associado ao valor
obtido. No caso de um polinômio de grau 2, a integral será aproximada por:
∫𝑓(𝑥)𝑑𝑥 ≈ ∫𝑝2(𝑥) + ∫𝐸(𝑥)
onde 𝐸(𝑥) representa o erro. Vamos tomar o caso do trapézio, que nada mais é do que um
polinômio de grau 1. Com isso
𝑓(𝑥) = 𝑝1(𝑥) +𝑓′′(𝜉)
2!(𝑥 − 𝑎)(𝑥 − 𝑏)
Isolando o erro e integrando
∫𝑓(𝑥) − 𝑝1(𝑥)𝑑𝑥 = ∫𝑓′′(𝜉)
2!(𝑥 − 𝑎)(𝑥 − 𝑏)𝑑𝑥
𝐼 − 𝑄𝑇[𝑓] = ∫𝑓′′(𝜉)
2!(𝑥 − 𝑎)(𝑥 − 𝑏)𝑑𝑥
𝑏
𝑎
O grande problema dessa integral é que desconhecemos 𝜉, e esse valor, por sua vez, é depen-
dente de 𝑥. Entretanto, podemos recorrer ao teorema do valor médio. Se
∫𝑢(𝑥)𝑣(𝑥)𝑑𝑥
de modo que 𝑢(𝑥) não troca de sinal. Com isso
𝑣(𝜉)∫𝑢(𝑥)𝑑𝑥 = ∫ 𝑢(𝑥)𝑣(𝑥)𝑑𝑥𝑏
𝑎
No caso em questão, (𝑥 − 𝑎)(𝑥 − 𝑏) não troca de sinal. Logo
Pág
ina1
08
∫𝑓′′(𝜉)
2!(𝑥 − 𝑎)(𝑥 − 𝑏)𝑑𝑥
𝑏
𝑎
=𝑓′′(𝜉)
2∫ (𝑥 − 𝑎)(𝑥 − 𝑏)𝑑𝑥𝑏
𝑎
Usando o fato de 𝑏 − 𝑎 = ℎ, teremos:
∫ (𝑥 − 𝑎)(𝑥 − 𝑏)𝑑𝑥𝑏
𝑎
= −ℎ3
6
o que fornece
𝑓′′(𝜉)
2∫ (𝑥 − 𝑎)(𝑥 − 𝑏)𝑑𝑥𝑏
𝑎
= −𝑓′′(𝜉)ℎ3
12
Portanto
𝐼 − 𝑄𝑇[𝑓] = −𝑓′′(𝜉)ℎ3
12
Como nosso interesse está no mínimo de erro que podemos obter, então queremos
|𝐼 − 𝑄𝑇| ≤𝑀2ℎ
3
12
onde 𝑀2 = max|𝑓′′(𝜉)|.
Exemplo 1: Usando a quadratura do trapézio, calcule
∫ 𝑒−𝑡2𝑑𝑡
2
0
A quadratura do trapézio diz que
𝑄𝑇[𝑓] =𝑓(𝑎) + 𝑓(𝑏)
2(𝑏 − 𝑎)
Temos 𝑏 − 𝑎 = 2 − 0 = 2; 𝑓(0) = 𝑒−02= 1 e 𝑓(2) = 𝑒−2
2= 0,0183. Logo
𝑄𝑇[𝑓] =1 + 0,0183
22 = 1,0183
Exemplo 2: Qual o erro máximo encontrado para o exemplo 1?
O erro máximo é dado para 𝑀2 = max|𝑓′′(𝑡)|. Logo, precisamos da segunda derivada:
𝑓′(𝑡) = −2𝑡𝑒−𝑡2
𝑓′′(𝑡) = 4𝑡2𝑒−𝑡2− 2𝑒𝑡
2= 𝑒−𝑡
2(4𝑡2 − 2)
Entretanto, devemos determinar o valor de 𝑡 para que ocorra o ponto máximo. Para isso, deve-
mos derivar novamente e igualar a zero:
𝑓′′′(𝑡) = −4𝑡𝑒−𝑡2[2𝑡2 − 3] = 0
Assim, 𝑡 = 0 ou 𝑡 = √3/2. Testando os valores:
𝑒−02(4 ∙ 02 − 2) = −2
𝑒−3/2 (4 ∙3
2− 2) = 0,89
Como queremos o erro máximo em módulo, então 𝑀2 = max|𝑓′′(𝑡)| = 2. Assim:
Pág
ina1
09
|𝐼 − 𝑄𝑇| ≤𝑀2ℎ
3
12
|𝐼 − 𝑄𝑇| ≤2 ∙ 23
12
|𝐼 − 𝑄𝑇| ≤ 1,333…
O exemplo 2 mostra como, nem sempre, o método usado fornece uma boa estimativa.
Calculamos que a integral é igual a 1,0183 e encontramos um erro maior que a área encontrada
(1,333)! Onde foi que erramos? Na verdade, nosso cálculo está correto. Entretanto estamos ten-
tando aproximar uma curva por uma reta, de modo a estarmos perdendo muitas informações.
Uma saída para esse problema é tomar várias retas, de modo a diminuir cada vez mais a área
perdida no gráfico pela aproximação. Assim, cada sub-trapézio criado por cada reta terá um
intervalo ℎ.
Como isso, a integral será:
∫ 𝑓(𝑥)𝑑𝑥 ≈𝑓(𝑥0) + 𝑓(𝑥1)
2ℎ +
𝑓(𝑥1) + 𝑓(𝑥2)
2ℎ +⋯+
𝑓(𝑥𝑛−1) + 𝑓(𝑥𝑛)
2ℎ
𝑏
𝑎
ou
𝑄𝑇𝑅[𝑓] = ℎ [𝑓(𝑥0)
2+ 𝑓(𝑥1) + ⋯+
𝑓(𝑥𝑛)
2]
Essa é a fórmula da quadratura do trapézio repetida. Nesse caso, teremos um erro associado a
cada subintervalo 𝑛:
|𝐼 − 𝑄𝑇𝑅| ≤∑𝑀2(𝑖)ℎ3
12≤𝑀2𝑛ℎ
3
12
𝑛
𝑖=1
Nesse caso, temos
ℎ =𝑏 − 𝑎
𝑛
logo
|𝐼 − 𝑄𝑇𝑅| ≤𝑀2ℎ
2(𝑏 − 𝑎)
12
Exemplo 3: Voltando ao caso do exemplo 1, em quantos intervalos teríamos de dividir o
gráfico para obter um erro menor que 10−6? Como 𝑏 − 𝑎 = 2, temos:
Pág
ina1
10
|𝐼 − 𝑄𝑇𝑅| ≤2ℎ2(2)
12=1
3ℎ2
Como queremos um erro menor que 10−6:
1
3ℎ2 < 10−6
ℎ2 < 3 ∙ 10−6
ℎ < √3 ∙ 10−3
como ℎ = 𝑏 − 𝑎/𝑛
𝑏 − 𝑎
𝑛< √3 ∙ 10−3
2
𝑛< √3 ∙ 10−3
o que fornece
𝑛 >2
√3∙ 103
Exemplo 4: Aproxime
∫1
𝑥𝑒𝑥/2𝑑𝑥
4
1
usando 3 intervalos.
Nesse caso, usemos a fórmula da quadratura do trapézio repetida:
𝐼 = 𝑄𝑇𝑅 = ℎ [𝑓(𝑥0)
2+ 𝑓(𝑥1) + 𝑓(𝑥2) +
𝑓(𝑥3)
2]
𝐼 =4 − 1
3[𝑓(1)
2+ 𝑓(2) + 𝑓(3) +
𝑓(4)
2]
𝐼 =3
3[0,82436 + 1,3514 + 1,49389 + 0,92363]
𝐼 = 4,59328
Exemplo 5: Em quantos intervalos devemos trabalhar para estimar a integral abaixo com
quatro casas de precisão?
𝐼 = ∫ 𝑒−𝑥2𝑑𝑥
1
0
Queremos
|𝐼 − 𝑄𝑇𝑅| ≤𝑀2ℎ
2(𝑏 − 𝑎)
12< 10−4
Pelo exemplo 1, sabemos que 𝑀2 = 2. Aqui, 𝑏 − 𝑎 = 1:
2ℎ2(1)
12< 10−4
ℎ2 < 6 × 10−4
ℎ < √6 ∙ 10−2
Pág
ina1
11
1
𝑛< √6 ∙ 10−2
Logo
𝑛 >1
√6∙ 10²
O que fornece 𝑛 ≥ 41.
Exemplo 6: Aproxime a integral a seguir para 3 subintervalos. Determine quantos interva-
los devem ser tomados para que o erro seja inferior a 10−5.
∫1
1 + 𝑡𝑑𝑡
3
2
Tomando 𝑓(𝑡) = (1 + 𝑡)−1. Vamos tomar os pontos 2; 2,25; 2,5 e 3:
𝐼 = 𝑄𝑇𝑅[𝑓] =𝑏 − 𝑎
𝑛[𝑓(𝑡0)
2+ 𝑓(𝑡1) + 𝑓(𝑡2) +
𝑓(𝑡3)
2]
𝐼 =1
3[0,1666 + 0,30769 + 0,28571 + 0,125] = 0,295
Para calcular o erro, devemos fazer a derivada da nossa função:
𝑓′(𝑡) = −(1 + 𝑡)−2
𝑓′′(𝑡) = 2(1 + 𝑡)−3
O máximo ocorre para 𝑓′′(𝑡) = 0
2(1 + 𝑡)−3 = 0
Como nosso intervalo está entre 2 e 3, testamos o resultado acima para esses dois pontos:
2(1 + 2)−3 = 0,074
2(1 + 3)−3 = 0,03125
Como o erro depende do máximo, temos
𝑀2 = max|𝑓′′(𝑡)| = 0,074
Portanto
|𝐼 − 𝑄𝑇𝑅| ≤𝑀2ℎ
2(𝑏 − 𝑎)
12< 10−5
0,074ℎ2(3 − 2)
12< 10−5
0,074ℎ2
12< 10−5
6,2 ∙ 10−3ℎ2 < 10−5
ℎ2 <1
6,2∙ 10−2
ℎ <1
√6,2∙ 10−1
1
𝑛<
1
√6,2∙ 10−1
Pág
ina1
12
𝑛 > √6,2 ∙ 10
Ou seja, 𝑛 tem que ser maior ou igual a 25 pontos.
Retomando o raciocínio, vimos que podemos aproximar a área de um gráfico por um po-
linômio. No caso da quadratura do trapézio, o polinômio em questão é de grau 1, pois lidamos
com dois pontos:
𝑓(𝑥) ≈ 𝑝1(𝑥)
A integral é dada por
𝐼 = ∫ 𝑓(𝑥)𝑏
𝑎
𝑑𝑥 = ∫ 𝑝1(𝑥)𝑏
𝑎
+∫ 𝐸(𝑥)𝑏
𝑎
𝑑𝑥
onde 𝐸(𝑥) é o erro. Pro caso do trapézio com repetição:
|𝐸(𝑥)| ≤𝑀2ℎ
3
12
lembrando que
ℎ =𝑏 − 𝑎
𝑛
sendo 𝑛 o número de intervalos entre 𝑎 e 𝑏.
Agora, para melhorar nosso cálculo vamos aproximar nossa função por um polinômio de
grau 2, de modo que 𝑓(𝑥) = 𝑝2(𝑥) + 𝐸(𝑥). Nosso polinômio passará pelos pontos 𝑎, 𝑚 e 𝑏, de
modo que 𝑚 é um ponto médio entre os extremos.
Podemos calcular o polinômio da maneira que quisermos (por Lagrange, por exemplo). Inde-
pendentemente do método, deveremos encontrar:
𝐼 ≈ ∫ 𝑝2(𝑥)𝑏
𝑎
𝑑𝑥 =ℎ
3[𝑓(𝑎) + 4𝑓(𝑚) + 𝑓(𝑏)]
em que
ℎ =𝑏 − 𝑎
2
e
𝑚 =𝑏 + 𝑎
2
Essa é a fórmula da quadratura de Simpson, também chamada de 1/3 de Simpson.
Pág
ina1
13
Assim como fatiamos um intervalo em várias regiões na quadratura do trapézio, podemos
fazer o mesmo com o método de Simpson. Entretanto, como estamos criando polinômios a par-
tir de 3 pontos, é importante frisar que o número de intervalos tem que ser sempre par. Na
imagem a seguir dividimos o intervalo em 6 intervalos. Note que 𝑥1 é o ponto médio entre 𝑥0 e
𝑥2, 𝑥3 é o ponto médio entre 𝑥2 e 𝑥4 e 𝑥5 é o ponto médio entre 𝑥4 e 𝑥6. Aqui devemos atentar
que o valor de ℎ é dado por
ℎ =𝑥6 − 𝑥02 ∙ 3
=𝑥6 − 𝑥06
pois dividimos o intervalo de 𝑎 até 𝑏 em 3 partes. Como cada parte é dividida, também, na
metade, obtemos 6 intervalos. De modo geral
ℎ =𝑏 − 𝑎
𝑛
que é semelhante ao que tínhamos anteriormente.
No caso em que temos 𝑛 subintervalos, o método de Simpson se torna:
𝐼 =ℎ
3[𝑓(𝑥0) + 4𝑓(𝑥1) + 2𝑓(𝑥2) + 4𝑓(𝑥3) + 2𝑓(𝑥4) + 4𝑓(𝑥5) + 𝑓(𝑥6)]
repare que os termos entre colchetes começam sendo multiplicados pelo coeficiente 1 e, então,
são intercalador entre 4 e 2 até chegar no ultimo termo, que será multiplicado também por 1.
Essa expressão representa o método de Simpson composto.
Para um polinômio de grau 2, o erro será dado por
|𝐼 − 𝑄𝑆| = ∫𝑓′′′(𝜉𝑥)
3!(𝑥 − 𝑎)(𝑥 − 𝑚)(𝑥 − 𝑏)𝑑𝑥
𝑏
𝑎
esse é um resultado difícil de ser integrado. Por conta disso, vamos simplesmente mostrar a
resposta aqui:
|𝐼 − 𝑄𝑆| = −(𝑏 − 𝑎
2)5 1
90𝑓(4)(𝜉) = −
ℎ5
90𝑓(4)(𝜉)
ou
|𝐼 − 𝑄𝑆| ≤𝑀4ℎ
5
90
Esse é o erro do método de Simpson simples. Para o método composto:
Pág
ina1
14
|𝐼 − 𝑄𝑆| ≤𝑀4ℎ
5
90∙𝑛
2=(𝑏 − 𝑎)𝑀4180
ℎ4
Veja como esse resultado é interessante. Estamos trabalhando com um polinômio de grau 2, o
que implica que na terceira derivada já teremos encontrado uma constante. Só que o erro do
polinômio aqui obtido diz respeito a uma derivada de quarta ordem. Ora, se a terceira derivada
é um número constante, então a derivada quarta será zero. Traduzindo, para polinômios de grau
3 o erro de Simpson é dado por 𝑀4 = 0, ou seja, o resultado é exato!
Exemplo 7: Vamos refazer o exemplo 5, mas dessa vez usando Simpson composto.
Queremos saber em quantos intervalos entre [0,1] devemos particionar a integral para
encontrar um valor com 4 casas decimais de precisão.
𝐼 = ∫ 𝑒−𝑥2𝑑𝑥
1
0
Tomando e erro de Simpson composto
|𝐼 − 𝑄𝑆| ≤(𝑏 − 𝑎)𝑀4180
ℎ4
(1 − 0)𝑀4
180ℎ4 ≤ 10−4
𝑓′(𝑥) = −2𝑥𝑒−𝑥2; 𝑓′′(𝑥) = −2𝑒−𝑥
2+ 4𝑥2𝑒−𝑥
2
𝑓′′′(𝑥) = 12𝑥𝑒−𝑥2− 8𝑥3𝑒−𝑥
2
𝑓′′′′(𝑥) = 16𝑥4𝑒−𝑥2− 48𝑥2𝑒−𝑥
2+ 12𝑒−𝑥
2
Para 𝑓′′′′(1) ≈ −7,357. Para 𝑓′′′′(0) = 12. Logo
𝑀2 = 𝑚𝑎𝑥|𝑓′′′′(𝑥)| = 12
Portanto
12
180ℎ4 ≤ 10−4
ℎ4 ≤ 15 ∙ 10−4
ℎ ≤ √154
∙ 10−1
𝑏 − 𝑎
𝑛≤ √15
4∙ 10−1
1
𝑛≤ √15
4∙ 10−1
𝑛 ≥1
√154
∙ 10−1
𝑛 ≥ 0,5 × 101
𝑛 ≥ 5
Ou seja, temos que ter um intervalo maior ou igual a 5. Mas cuidado! Para trabalhar com Simp-
son composto devemos ter intervalos PARES. Logo, 𝑛 = 6!!!
Pág
ina1
15
Quando devemos usar Simpson e quando devemos usar trapézio? Tentemos fixar da se-
guinte maneira: se o número de pontos amostrados for ÍMPAR, então usamos SIMPSON. Caso
contrário, usamos trapézio.
EXERCÍCIOS DE REVISÃO
Exercício 1: Aproxime a integral 𝐼 = ∫ [𝑥3 + ln 𝑥]𝑑𝑥2
1, pela regra de Simpson, usando a
menor quantidade de subintervalos necessários para garantir um erro inferior a 10−3.
Como queremos um erro inferior a 10−3, usando Simpson Composto teremos:
𝑀4ℎ4(𝑏 − 𝑎)
180≤ 10−3
Devemos, primeiro, calcular o valor máximo para a derivada quarta da função:
𝑓(𝑥) = 𝑥3 + ln𝑥 → 𝑓′(𝑥) = 3𝑥2 +1
𝑥→ 𝑓′′(𝑥) = 6𝑥 −
1
𝑥2
𝑓′′′(𝑥) = 6 +2
𝑥3→ 𝑓′′′′(𝑥) = −
6
𝑥4
O máximo ocorre para 𝑓′′′′(1) = −6. Logo 𝑀4 = 6. Assim:
6ℎ4(2 − 1)
180≤ 10−3
ℎ4 ≤180
610−3
ℎ ≤ √30 ∙ 10−34
ℎ ≤ 0.416
2 − 1
𝑛≤ 0.416
Logo 𝑛 ≥ 2.4. Como Simpson trabalha melhor com números pares de subintervalos, 𝑛 = 4.
Como temos 4 subintervalos, teremos 5 pontos para analisar, sendo eles 𝑥0 = 1, 𝑥1 = 1,25,
𝑥2 = 1,5, 𝑥3 = 1,75 e 𝑥4 = 2. Para obter esses valores, dividi (2 − 1) = 1 por 4, de modo a
obter 0,25, que é o tamanho do passo dentro do intervalo [0,1]. Simpson composto diz que:
𝑄𝑆 =ℎ
3[𝑓𝑥0 + 4𝑓𝑥1 + 2𝑓𝑥2 + 4𝑓𝑥3 + 𝑓𝑥4]
Como ℎ = (𝑏 − 𝑎)/𝑛, e usando os valores de 𝑥𝑖 na função, teremos:
𝑄𝑠 =1
4 ∙ 3[1 + 8.705 + 7.562 + 23.676 + 8.693]
𝑄𝑆 = 4.13625
Pág
ina1
16
Métodos para Equações Diferenciais Equações cuja incógnita é uma função e que envolvem derivadas dessa função são cha-
madas de equações diferenciais. Como exemplos:
𝑦′(𝑡) = 2𝑡
possui solução
𝑦(𝑡) = 𝑡2 + 𝑐
e
𝑢′ = 𝑢
tem solução
𝑢(𝑡) = 𝑐𝑒𝑡
Uma equação diferencial é classificada de acordo com sua ordem. A ordem mais alta que
aparece irá determinar a ordem da equação. A quantidade de constantes arbitrárias na solução
geral da equação diferencial é igual a ordem da equação. Aqui iremos nos focar em equações de
primeira ordem do tipo
𝑦′(𝑡) = 𝑓(𝑡, 𝑦(𝑡))
de modo que a resolução nos fornece uma família de soluções, ao invés de uma única. Para
selecionar uma única solução, uma condição deve existir, como um valor inicial, por exemplo
𝑦(𝑡0) = 𝑦0
Se a equação é de segunda ordem, então duas condições iniciais serão necessárias.
A partir de condições iniciais, temos um problema de valor inicial (PVI). Todo PVI pode ser
escrito em termos de uma derivada de primeira ordem. Nosso PVI padrão é:
{𝑦′(𝑡) = 𝑓(𝑡, 𝑦(𝑡)); 𝑡 > 𝑡0𝑦(𝑡0) = 𝑦0
Antes de tentar resolver uma equação diferencial ordinária (EDO), precisamos saber se,
de fato, existe alguma solução. Assim recorremos ao teorema da existência e unicidade. Seja
𝑅 = [𝑎, 𝑏] × [𝑐, 𝑑]. Para que o teorema seja satisfeito, devemos ter:
• 𝑓 contínua em 𝑅
• 𝑓 é Lipschitz contínua em 𝑦 em 𝑅, isso é
|𝑓(𝑡, 𝑦1) − 𝑓(𝑡, 𝑦2)| ≤ 𝐿|𝑦1 − 𝑦2|
para 𝐿 > 0
• (𝑡0, 𝑦0) ∈ 𝑅
Essas condições garantem que nosso PVI terá solução.
Pág
ina1
17
Exemplo 1: Considere 𝑅 = [0,3] × [0,4]. A EDO 𝑦′ = 𝑡2 − 𝑦 é contínua no intervalo dado
e é Lipschitz contínua (é diferenciável). A EDO 𝑦′ = 𝑒−2𝑡 − 2𝑦 também é contínua e também é
diferenciável. Entretanto, 𝑦′ = 2𝑡 + ln(𝑦) não é contínua no intervalo dado por conta do ponto
0.
Vamos supor que desejamos encontrar uma aproximação para a
curva do gráfico. Devemos começar por um ponto inicial dado. Ire-
mos criar alguns pontos sobre 𝑡, de modo a gerar uma função que
se aproxime da curva somente por esses pontos, de modo que
𝑡0 < 𝑡1 < 𝑡2 < ⋯ < 𝑡𝑁
Nossa aproximação será
𝑦(𝑡𝑛) ≈ 𝑦𝑛
definindo ℎ𝑛 = 𝑡𝑛 − 𝑡𝑛−1 como o tamanho do passo.
Como desejamos resolver 𝑦′(𝑡) = 𝑓(𝑡, 𝑦(𝑡)) podemos começar integrando ambos lados
∫ 𝑦′(𝑡)𝑑𝑡𝑡𝑛
𝑡𝑛−1
= ∫ 𝑓(𝑡, 𝑦(𝑡))𝑑𝑡𝑡𝑛
𝑡𝑛−1
𝑦(𝑡𝑛) − 𝑦(𝑡𝑛−1) = ∫ 𝑓(𝑡, 𝑦(𝑡))𝑑𝑡𝑡𝑛
𝑡𝑛−1
A integral da função 𝑓(𝑡, 𝑦(𝑡)) é feita numericamente. Supondo que usemos o método do re-
tângulo como aproximação, teremos
𝑦(𝑡𝑛) − 𝑦(𝑡𝑛−1) ≅ ℎ𝑛𝑓(𝑡𝑛−1, 𝑦𝑛−1)
Pág
ina1
18
𝑦(𝑡𝑛) ≅ 𝑦(𝑡𝑛−1) + ℎ𝑛𝑓(𝑡𝑛−1, 𝑦𝑛−1)
Aproximando para 𝑡𝑛, onde 𝑛 = 1,2,3,…
𝑦𝑛 ≅ 𝑦𝑛−1 + ℎ𝑛𝑓(𝑡𝑛−1, 𝑦𝑛−1)
Esse é o método de Euler.
Exemplo 2: Encontre uma aproximação para 𝑦(1), pelo método de Euler, utilizando passo
ℎ = 1/2.
{𝑦′(𝑡) = −2𝑡𝑦; 𝑡 > 0
𝑦(0) = 1
Note que a condição inicial foi dada para 𝑡0 = 0 (expresso na segunda linha do sistema acima).
Esse marca o ponto inicial. O próximo passo será 𝑡1 = 𝑡0 + ℎ = 0 + 1/2 = 1/2, e, por fim, 𝑡2 =
𝑡1 + ℎ = 1/2 + 1/2 = 1. Para 𝑛 = 1, temos:
𝑦1 = 𝑦0 + ℎ𝑓(𝑡0, 𝑦0)
Temos
𝑓(𝑡, 𝑦) = −2𝑡𝑦
de modo que
𝑓(𝑡0, 𝑦0) = −2 ∙ 0 ∙ 1 = 0
Logo
𝑦1 = 1 +1
2(0) = 1
A próxima iteração será para 𝑛 = 2:
𝑦2 = 𝑦1 + ℎ𝑓(𝑡1, 𝑦1)
𝑦2 = 1 +1
2(−2 ∙
1
2∙ 1) = 1 −
1
2=1
2
Como 𝑦2 ≈ 𝑦(𝑡2) = 𝑦(1), obtemos 𝑦(1) ≈ 1/2.
Exemplo 3: usando passo ℎ = 0,05, determine valores aproximados para
{𝑦′ = 1 − 𝑡 + 4𝑦
𝑦(0) = 1
Usando a relação de Euler
𝑦𝑛 = 𝑦𝑛−1 + ℎ𝑓(𝑡𝑛−1, 𝑦𝑛−1)
podemos ir construindo uma tabela, de modo que nossa solução seja resumida a preencher a
tabela. Tomando 𝑓(𝑡, 𝑦) = 1 − 𝑡 + 4𝑦, 𝑦0 = 1, 𝑡0 = 0 e lembrando que 𝑡𝑛 = 𝑡𝑛−1 + ℎ, tere-
mos:
Pág
ina1
19
𝑛 𝑦𝑛−1 𝑡𝑛 𝑦𝑛
1 1 0,05 1,25
2 1,25 0,10 1,5475
3 1,5475 0,15 1,902
4 1,902 0,20 2,3249
5 2,3249 0,25 2,82988
6 2,82988 0,30 3,433356
Para ficar claro, vou fazer algumas iterações passo-a-passo. Partindo de 𝑦0 = 1 e 𝑡1 = 𝑡0 + ℎ =
0 + 0,05 = 0,05, para 𝑛 = 1 teremos
𝑦1 = 𝑦0 + ℎ𝑓(𝑡0, 𝑦0)
𝑦1 = 1 + 0,05(1 − 0 + 4 ∙ 1) = 1,25
Para 𝑛 = 2:
𝑦2 = 𝑦1 + ℎ𝑓(𝑡1, 𝑦1)
𝑦2 = 1,25 + 0,05(1 − 0,05 + 4 ∙ 1,25) = 1,5475
Para 𝑛 = 3 e 𝑡2 = 𝑡1 + ℎ = 0,05 + 0,05 = 0,10
𝑦3 = 𝑦2 + ℎ𝑓(𝑡2, 𝑦2)
𝑦3 = 1,5475 + 0,05(1 − 0,10 + 4 ∙ 1,5475) = 1,902
E assim por diante.
Métodos tipo Runge-Kutta
Esses são métodos mais precisos e mais simples de serem aplicados. Para isso, esses mé-
todos não utilizam derivadas da função 𝑓, mas fazem múltiplas avaliações de sua função.
Podemos obter métodos de Runge-Kutta partindo de regras de integração numérica. Por
exemplo, podemos recorrer à regra do trapézio:
Sendo ℎ𝑛 = 𝑡𝑛 − 𝑡𝑛−1 teremos
𝑦𝑛 = 𝑦𝑛−1 +ℎ𝑛2[𝑓(𝑡𝑛−1, 𝑦𝑛−1) + 𝑓(𝑡𝑛, 𝑦𝑛)]
Note que calcular 𝑦𝑛 pelo método do trapézio depende do próprio valor de 𝑦𝑛. Por conta
disso, esse método é chamado de implícito. Sendo assim, o cálculo de 𝑦𝑛 necessita de um mé-
todo auxiliar.
Pág
ina1
20
Um modo de explicitar o método do trapézio é construindo uma aproximação para 𝑦𝑛.
Podemos criar um valor aproximado pelo método de Euler. Com isso, obtemos o método do
trapézio explícito ou método de Heun. Nossa aproximação para 𝑦𝑛 é:
�̂�𝑛 = 𝑦𝑛−1 + ℎ𝑛𝑓(𝑡𝑛−1, 𝑦𝑛−1)
Assim
𝑦𝑛 = 𝑦𝑛−1 +ℎ𝑛2[𝑓(𝑡𝑛−1, 𝑦𝑛−1) + 𝑓(𝑡𝑛, �̂�𝑛)]
No final do intervalo, o erro será de ordem
|𝑦(𝑡𝑛) − 𝑦𝑛| = 𝒪(ℎ2)
Outro método de Runge-Kutta de segunda ordem ocorre quando aproximamos a integral
de 𝑓 pela área do retângulo com a altura igual ao valor de 𝑓 no ponto médio do intervalo ℎ𝑛:
𝑦𝑛 = 𝑦𝑛−1 + ℎ𝑛𝑓 (𝑡𝑛−1/2,𝑦𝑛−1 + 𝑦𝑛
2)
Note que, assim como o método do trapézio, o método do ponto médio é implícito. Usando
Euler, teremos o método do ponto médio explícito:
�̂�𝑛−1/2 = 𝑦𝑛−1 +ℎ𝑛2𝑓(𝑡𝑛−1, 𝑦𝑛−1)
𝑦𝑛 = 𝑦𝑛−1 + ℎ𝑛𝑓(𝑡𝑛−1/2, �̂�𝑛−1/2)
Podemos construir métodos de Runge-Kutta de qualquer ordem. Vejamos o caso de um
método de quarta ordem:
𝑦𝑛 = 𝑦𝑛−1 +ℎ𝑛6[𝑓(𝑡𝑛−1, 𝑌1) + 2𝑓(𝑡𝑛−1/2, 𝑌2) + 2𝑓(𝑡𝑛−1/2, 𝑌3) + 𝑓(𝑡𝑛, 𝑌4)]
em que
𝑌1 = 𝑦𝑛−1
𝑌2 = 𝑦𝑛−1 +ℎ𝑛2𝑓(𝑡𝑛−1, 𝑌1)
𝑌3 = 𝑦𝑛−1 +ℎ𝑛2𝑓(𝑡𝑛−1/2, 𝑌2)
𝑌4 = 𝑦𝑛−1 + ℎ𝑛𝑓(𝑡𝑛−1/2, 𝑌3)
Exemplo 4: Resolva 𝑥𝑦′ = 𝑥 − 𝑦 para 𝑦(2) = 2. Quanto é 𝑦(3)? Use como passo ℎ =
1/2.
A primeira coisa a fazer é colocar a EDO na forma padrão:
𝑦′ = 1 −𝑦
𝑡= 𝑓(𝑡, 𝑦)
Vamos resolver por Euler, de modo que 𝑡0 = 2 para 𝑦0 = 2. Com isso, 𝑡1 = 𝑡0 + ℎ = 2 + 0,5 =
2,5. Para 𝑛 = 1:
𝑦1 = 𝑦0 + ℎ𝑓(𝑡0, 𝑦0)
Pág
ina1
21
𝑦1 = 2 + 0,5 (1 −2
2) = 2
Para 𝑛 = 2
𝑦2 = 𝑦1 + ℎ𝑓(𝑡1, 𝑦1)
𝑦2 = 2 + 0,5 (1 −2
2,5) = 2,1
Agora faremos o mesmo exercício, mas usando o método do ponto médio explícito. Nesse
caso, teremos o ponto médio dado por
𝑡1/2 = 𝑡0 +ℎ
2= 2 +
0,5
2= 2,25
E
𝑡1 = 𝑡0 + ℎ = 2 + 0,5 = 2,5
Calculando a aproximação para 𝑛 = 1:
�̂�1/2 = 𝑦0 +ℎ𝑛2𝑓(𝑡0, 𝑦0)
�̂�1/2 = 2 +0,5
2(1 −
2
2) = 2
𝑦1 = 𝑦0 + ℎ𝑛𝑓(𝑡1/2, �̂�1/2)
𝑦1 = 2 + 0,5 (1 −2
2,25) = 2,05556
Para 𝑛 = 2, teremos
𝑡3/2 = 𝑡1,5 = 𝑡1 +ℎ
2= 2,5 +
0,5
2= 2,75
𝑡2 = 𝑡1 + ℎ = 2,5 + 0,5 = 3
�̂�2−1/2 = �̂�1,5 = �̂�3/2 = 𝑦1 +ℎ𝑛2𝑓(𝑡1, 𝑦1)
�̂�3/2 = 2,05556 +0,5
2(1 −
2,05556
2,5) = 2,10000
𝑦2 = 𝑦1 + ℎ𝑛𝑓(𝑡3/2, �̂�3/2)
𝑦2 = 2,05556 + 0,5 (1 −2,10000
2,75) = 2,17374
Exemplo 5: Vamos ver um exemplo de um problema que envolve uma ordem mais alta.
Considere:
{𝑢′′ + 𝑢 = 𝑡2
𝑢(1) = 3 𝑢′(1) = −6
Definindo
𝑦 = (𝑦1𝑦2) = (
𝑢𝑢′)
Pág
ina1
22
{𝑦′ = (
𝑢′
𝑢′′) = (
𝑦2𝑡2 − 𝑢
) = (𝑦2
𝑡2 − 𝑦1) = 𝑓(𝑡, 𝑦)
𝑦(1) = (𝑦1𝑦2) = (
3−6) = 𝑦0
Tomando ℎ = 1/4 e usando Euler:
𝑦1 = 𝑦0 + ℎ𝑓(𝑡0, 𝑦0)
como 𝑡0 = 1
𝑦1 = (3−6) +
1
4(−61 − 3
) = (3 −
6
4
−6 −1
2
) = (1,5−6,5
)
Pág
ina1
23
Métodos para Problemas de Valores de Contorno (PVC)
Um problema de valor inicial (PVI) geral seria:
{
𝑦′′ = 𝑓(𝑥, 𝑦, 𝑦′); 𝑥 > 𝑎
𝑦(𝑎) = 𝛼
𝑦′(𝑎) = 𝛽
O caracteriza esse problema como sendo PVI é que são dados os mesmos pontos para 𝑦 e 𝑦′.
Para um problema de valor de contorno (PVC) temos:
{
𝑦′′ = 𝑓(𝑥, 𝑦, 𝑦′); 𝑎 < 𝑥 < 𝑏
𝑦(𝑎) = 𝛼
𝑦(𝑏) = 𝛽
Para tratar um PVC começamos definindo uma malha de pontos, de modo que 𝑎 = 𝑥0 <
𝑥1 < 𝑥2 < ⋯ < 𝑥𝑛 = 𝑏. Definindo o intervalo entre os pontos como
ℎ =𝑏 − 𝑎
𝑛
Nosso objetivo é encontrar uma aproximação de modo que 𝑦𝑗 ≈ 𝑦(𝑥𝑗).
Uma dificuldade encontrada no PVC é que desconhecemos 𝑦′. Uma alternativa para con-
tornar isso seria a de chutar um valor para 𝑦′. Esse é o método de shooting.
Para construir aproximações para as derivadas devemos recorrer à expansão de Taylor,
que diz como devemos construir um polinômio de grau 𝑛 utilizando a informação da função num
ponto 𝑥. Se 𝑦 possui (𝑛 + 1) derivadas, teremos
𝑦(𝑥 + ℎ) = 𝑦(𝑥) + 𝑦′(𝑥)ℎ + 𝑦′′(𝜉)ℎ2
2; 𝑥 ≤ 𝜉 ≤ 𝑥 + ℎ
Tomando 𝑥 = 𝑥𝑗, a fórmula de Taylor se torna
𝑦(𝑥𝑗+1) = 𝑦(𝑥𝑗) + 𝑦′(𝑥𝑗)ℎ + 𝑦
′′(𝜉)ℎ2
2
Uma vez que desejamos a derivada:
𝑦′(𝑥𝑗) =𝑦(𝑥𝑗+1) − 𝑦(𝑥𝑗)
ℎ− 𝑦′′(𝜉)
ℎ
2
Nossa aproximação será:
𝑦′(𝑥𝑗) ≈𝑦𝑗+1 − 𝑦𝑗
ℎ
essa fórmula é chamada de diferença avançada, uma vez que temos o ponto 𝑦𝑗+1. Essa é uma
aproximação de primeira ordem. Se tomarmos o ponto anterior, teremos:
𝑦′(𝑥𝑗) ≈𝑦𝑗 − 𝑦𝑗−1
ℎ
Pág
ina1
24
essa é a fórmula da diferença atrasada, e também é de primeira ordem.
Outro modo de construir uma fórmula é tomando um ponto a mais:
𝑦(𝑥𝑗+1) = 𝑦(𝑥𝑗) + 𝑦′(𝑥𝑗)ℎ + 𝑦
′′(𝑥𝑗)ℎ2
2+ 𝑦′′′(𝑥𝑗)
ℎ3
3!+ 𝑦′′′′(𝜉+)
ℎ4
4!
ou para o ponto anterior:
𝑦(𝑥𝑗−1) = 𝑦(𝑥𝑗) − 𝑦′(𝑥𝑗)ℎ + 𝑦
′′(𝑥𝑗)ℎ2
2− 𝑦′′′(𝑥𝑗)
ℎ3
3!+ 𝑦′′′′(𝜉−)
ℎ4
4!
Subtraindo as duas equações acima:
𝑦(𝑥𝑗+1) − 𝑦(𝑥𝑗−1) = 2ℎ𝑦′(𝑥𝑗) +
2
3!ℎ3𝑦′′′(𝑥𝑗) + 𝒪(ℎ
4)
𝑦′(𝑥𝑗) =𝑦(𝑥𝑗+1) − 𝑦(𝑥𝑗−1)
2ℎ− 𝑦′′′(𝑥𝑗)
ℎ2
3!+ 𝒪(ℎ3)
ou
𝑦′(𝑥𝑗) ≈𝑦𝑗+1 − 𝑦𝑗−1
2ℎ
que é a fórmula da diferença centrada. Essa é uma aproximação de segunda ordem. Se ao invés
de subtrairmos as duas equações as somarmos, de modo a isolar 𝑦′′, obteremos:
𝑦′′(𝑥𝑗) ≈𝑦𝑗+1 − 2𝑦𝑗 + 𝑦𝑗−1
ℎ2
que é a fórmula da diferença centrada, mas para 𝑦′′.
Resumindo, temos duas fórmulas de primeira ordem e duas de segunda ordem.
Lembremos que estamos analisando um problema do tipo
{
𝑦′′ = 𝑓(𝑥, 𝑦, 𝑦′); 𝑎 < 𝑥 < 𝑏
𝑦(𝑎) = 𝛼
𝑦(𝑏) = 𝛽
Vejamos um caso linear:
𝑦′′ + 𝑝(𝑥)𝑦′ + 𝑞(𝑥)𝑦 = 𝑟(𝑥)
𝑦(𝑎) = 𝛼; 𝑦(𝑏) = 𝛽
Desejamos 𝑦0, 𝑦1, … , 𝑦𝑛 onde 𝑦𝑗 ≈ 𝑦(𝑥𝑗). Considerando as (𝑛 − 1) equações:
𝑦′′(𝑥𝑗) + 𝑝(𝑥𝑗)𝑦′(𝑥𝑗) + 𝑞(𝑥𝑗)𝑦(𝑥𝑗) = 𝑟(𝑥𝑗); 𝑗 = 1,2, … , (𝑛 − 1)
Pág
ina1
25
usando as fórmulas de aproximações:
[𝑦𝑗+1 − 2𝑦𝑗 + 𝑦𝑗−1
ℎ2] + 𝑝(𝑥𝑗) [
𝑦𝑗+1 − 𝑦𝑗−1
2ℎ] + 𝑞(𝑥𝑗)𝑦𝑗 = 𝑟(𝑥𝑗)
Multiplicando tudo por ℎ2:
[𝑦𝑗+1 − 2𝑦𝑗 + 𝑦𝑗−1] + 𝑝(𝑥𝑗)ℎ [𝑦𝑗+1 − 𝑦𝑗−1
2] + 𝑞(𝑥𝑗)ℎ
2 = 𝑟(𝑥𝑗)ℎ2
o que fornecerá:
(1 −ℎ𝑝𝑗
2)𝑦𝑗−1 − (2 − 𝑗
2𝑞𝑗)𝑦𝑗 + (1 +ℎ𝑝𝑗
2)𝑦𝑗+1 = ℎ
2𝑟𝑗; 𝑗 = 1,2,… , 𝑛 − 1
adotando
(1 −ℎ𝑝𝑗
2) = 𝑎𝑗
−(2 − 𝑗2𝑞𝑗) = 𝑏𝑗
(1 +ℎ𝑝𝑗
2) = 𝑐𝑗
escrevemos
𝑎𝑗𝑦𝑗−1 + 𝑏𝑗𝑦𝑗 + 𝑐𝑗𝑦𝑗+1 = ℎ2𝑟𝑗
No caso particular em que as condições de contorno fornecem o valor de 𝑦0 e 𝑦𝑛, obtemos um
sistema linear com (𝑛 − 1) equações e incógnitas:
𝐴𝑦 = 𝑟
A matriz dos coeficientes é tridiagonal, de modo a ser facilmente resolvida por eliminação de
Gauss. O sistema linear é dado por
(
𝑏1 𝑐1 𝑎2 𝑏2 𝑐2 ⋱ ⋱ ⋱
𝑎𝑛−2 𝑏𝑛−2 𝑐𝑛−2 𝑎𝑛−1 𝑏𝑛−1)
(
𝑦1𝑦2⋮⋮
𝑦𝑛−1)
= ℎ2
(
𝑟1𝑟2⋮⋮
𝑟𝑛−1)
−
(
𝑎1𝑦00⋮0
𝑎𝑛𝑦𝑛)
e assim obtemos o método das diferenças finitas.
Exemplo 1: Seja 𝑦′′ − 5𝑥𝑦′ + 𝑥2𝑦 = 𝑒𝑥 nos pontos 𝑦(0) = 3 e 𝑦(1) = 0. Tomemos ℎ =
1/4, de modo que 𝑥0 = 0; 𝑥1 =1
4; 𝑥2 =
1
2; 𝑥3 =
3
4 e 𝑥4 = 1. Desejamos obter o sistema linear a
ser resolvido. Comecemos reescrevendo nossa equação como
𝑦′′(𝑥𝑗) − 5𝑥𝑗𝑦′(𝑥𝑗) + 𝑥𝑗
2𝑦(𝑥𝑗) = 𝑒𝑥𝑗
Usando as aproximação
[𝑦𝑗+1 − 2𝑦𝑗 + 𝑦𝑗−1
ℎ2] − 5𝑥𝑗 [
𝑦𝑗+1 − 𝑦𝑗−1
2ℎ] + 𝑥𝑗
2𝑦(𝑥𝑗) = 𝑒𝑥𝑗
Multiplicando tudo por ℎ2:
[𝑦𝑗+1 − 2𝑦𝑗 + 𝑦𝑗−1] − 5𝑥𝑗ℎ [𝑦𝑗+1 − 𝑦𝑗−1
2] + 𝑥𝑗
2ℎ2𝑦(𝑥𝑗) = ℎ2𝑒𝑥𝑗
Pág
ina1
26
Note que temos os valores nos pontos de 𝑦0, correspondente a 𝑥0 = 0, e 𝑦4, correspondente a
𝑥4. Logo, nossas incógnitas dizem respeito a 𝑦1, 𝑦2 e 𝑦3. Como temos 3 incógnitas:
(1 +5𝑥𝑗ℎ
2)𝑦𝑗−1 − (2 − 𝑥𝑗
2ℎ2)𝑦𝑗 + (1 +5𝑥𝑗ℎ
2)𝑦𝑗+1 = ℎ
2𝑒𝑥𝑗
(1 −5𝑥𝑗ℎ
2) = 𝑎𝑗
−(2 − 𝑥𝑗2ℎ²) = 𝑏𝑗
(1 +5𝑥𝑗ℎ
2) = 𝑐𝑗
Iniciando por 𝑗 = 1 e indo até 𝑗 = 3, nosso sistema será:
(
−(2 − 𝑥1
2ℎ) (1 +5𝑥1ℎ
2)
(1 −5𝑥2ℎ
2) − (2 − 𝑥2
2ℎ2) (1 +5𝑥2ℎ
2)
(1 −5𝑥3ℎ
2) − (2 − 𝑥3
2ℎ2))
(
𝑦1𝑦2𝑦3) = ℎ2 (
𝑒𝑥1
𝑒𝑥2
𝑒𝑥3) −
(
(1 −
5𝑥1ℎ
2)𝑦0
0
(1 −5𝑥3ℎ
2)𝑦3)
Note que 𝑥𝑗 = 𝑗 ∙ ℎ.
Exemplo 2: Desejamos obter o sistema linear para resolver o seguinte PVC:
{
𝑥𝑦′′ − 2𝑦′ = 6; 0 < 𝑥 < 1
𝑦(0) = 5
𝑦′(1) = 0
adotando ℎ = 1/4.
Como vamos de 0 até 1, nossos pontos são 𝑥0 = 0, 𝑥1 =1
4, 𝑥2 =
1
2, 𝑥3 =
3
4 e 𝑥4 = 1. Note
que nesse caso temos o valor de 𝑦 apenas para o ponto 𝑥0 (o ponto 𝑥4 = 1 não é dado para 𝑦4,
pois o que o exercício forneceu foi a derivada desse ponto). Portanto, nossas incógnitas são
𝑦1, 𝑦2, 𝑦3 e 𝑦4. Nossa equação se torna:
𝑥𝑗𝑦′′(𝑥𝑗) − 2𝑦
′(𝑥𝑗) = 6
Usando as aproximações de segunda ordem:
𝑥𝑗 [𝑦𝑗+1 − 2𝑦𝑗 + 𝑦𝑗−1
ℎ2] − 2 [
𝑦𝑗+1 − 𝑦𝑗−1
2ℎ] = 6
Multiplicando tudo por ℎ2 e fazendo as distributivas:
𝑥𝑗𝑦𝑗+1 − 2𝑥𝑗𝑦𝑗 + 𝑥𝑗𝑦𝑗−1 − ℎ𝑦𝑗+1 + ℎ𝑦𝑗−1 = 6ℎ2
Agrupando termos semelhantes:
[𝑥𝑗 + ℎ]𝑦𝑗−1 − 2𝑥𝑗𝑦𝑗 + [𝑥𝑗 − ℎ]𝑦𝑗+1 = 6ℎ2
Note que 𝑥𝑗 + ℎ = 𝑥𝑗+1 e 𝑥𝑗 − ℎ = 𝑥𝑗−1. Assim, nosso sistema se torna
Pág
ina1
27
(
𝑏1 𝑐1 𝑎2 𝑏2 𝑐2 ⋱ ⋱ ⋱
𝑎𝑛−2 𝑏𝑛−2 𝑐𝑛−2 𝑎𝑛−1 𝑏𝑛−1)
(
𝑦1𝑦2⋮⋮
𝑦𝑛−1)
= ℎ2
(
𝑟1𝑟2⋮⋮
𝑟𝑛−1)
−
(
𝑎1𝑦00⋮0
𝑎𝑛𝑦𝑛)
(
−2𝑥1 𝑥0 𝑥3 − 2𝑥2 𝑥1 𝑥4 − 2𝑥3 𝑥2
…
)(
𝑦1𝑦2𝑦3𝑦4
) = (
6ℎ2
6ℎ2
6ℎ2
…
) − (
𝑥2𝑦000…
)
A última linha do sistema depende de 𝑦4 que, por sua vez, é um ponto dado pela derivada. To-
mando a diferença atrasada, teremos:
𝑦′(1) = 0 →𝑦4 − 𝑦3ℎ
= 0
𝑦4 − 𝑦3 = 0
Note que tomamos a diferença atrasada por estamos no ponto máximo (nas faz sentido usar a
diferença avançada ou a centrada pois não temos 𝑦5). Assim, os coeficientes são 1 ∙ 𝑦4 − 1 ∙ 𝑦3
e 𝑟 = 0. Logo:
(
−2𝑥1 𝑥0 𝑥3 − 2𝑥2 𝑥1 𝑥4 − 2𝑥3 𝑥2 −1 1
)(
𝑦1𝑦2𝑦3𝑦4
) = (
6ℎ2
6ℎ2
6ℎ2
0
) − (
𝑥2𝑦0000
)
O grande problema dessa solução é que a equação da última linha é de primeira ordem, en-
quanto que todas as outras linhas são de segunda ordem. Isso pode gerar um grande erro na
solução do sistema. Vejamos como aproximar a derivada de 𝑦′(1) para uma equação de se-
gunda ordem com o próximo exercício.
Exemplo 3: Aproxime 𝑓′(𝑥𝑗) em termos de 𝑓(𝑥𝑗), 𝑓(𝑥𝑗−1) e 𝑓(𝑥𝑗−2) de modo que o erro
seja 𝒪(ℎ2).
Tomemos a expansão em Taylor, de modo a escrever 𝑓(𝑥𝑗) = 𝑓, 𝑓(𝑥𝑗−1) = 𝑓− e
𝑓(𝑥𝑗−2) = 𝑓2−. Com isso
𝑓− = 𝑓 − ℎ𝑓′ +
ℎ2
2𝑓′′ + 𝒪(ℎ3)
𝑓2− = 𝑓 − 2ℎ𝑓′ +
4ℎ2
2𝑓′′ +𝒪(ℎ3)
Multiplicando 𝑓− por 4 e subtraindo as duas expansões acima, teremos:
𝑓2− − 4𝑓− = −3𝑓 + 2ℎ𝑓′ + 𝒪(ℎ3)
Isolando 𝑓′:
𝑓′ =3𝑓 − 4𝑓− + 𝑓2−
2ℎ+ 𝒪(ℎ3)
Logo:
Pág
ina1
28
𝑦′(𝑥𝑗) =3𝑦𝑗 − 4𝑦𝑗−1 + 𝑦𝑗−2
2ℎ
Exemplo 3: Aplique o resultado do exemplo 2 no exemplo 1.
Uma vez que encontramos uma fórmula para aproximação 𝑦′(𝑥𝑗) por segunda ordem, e
lembrando que 𝑦′(1) = 0 equivale ao ponto 𝑦4, teremos:
3𝑦4 − 4𝑦3 + 𝑦22ℎ
= 0
Logo, os coeficientes são 1 ∙ 𝑦2, −4 ∙ 𝑦3 e 3 ∙ 𝑦4. Nossa matriz se torna:
(
−2𝑥1 𝑥0 𝑥3 − 2𝑥2 𝑥1 𝑥4 − 2𝑥3 𝑥2 1 − 4 3
)(
𝑦1𝑦2𝑦3𝑦4
) = (
6ℎ2
6ℎ2
6ℎ2
0
) − (
𝑥2𝑦0000
)
Pág
ina1
29
Revisão Geral Para encerrar essas notas, vamos ver alguns exercícios que tratam desde o primeiro as-
sunto.
Considere o sistema linear abaixo
{𝟎. 𝟎𝟎𝟏𝒙 − 𝒚 = 𝟏 𝒙 + 𝒚 = 𝟎
Considere um sistema de ponto flutuante de 3 dígitos significativos. A) resolva o sistema linear
através do método de eliminação de Gauss sem pivoteamento. B) resolva o sistema linear
através do método de eliminação de Gauss com pivoteamento. C) compare as soluções obti-
das nos dois itens anteriores. Como verificar qual delas é a melhor?
A) Sem pivoteamento:
{0.001𝑥 − 𝑦 = 1 𝑥 + 𝑦 = 0
Escrevendo como ponto flutuante:
0.100 ∙ 10−2𝑥 − 0.100 ∙ 101𝑦 = 0.100 ∙ 101
0.100 ∙ 101𝑥 + 0.100 ∙ 101𝑦 = 0.000 ∙ 101
Fazendo 𝑓𝑙(𝑙2) → 𝑓𝑙(𝑙2) − 𝑓𝑙(103 ∙ 𝑙1)
0.100 ∙ 10−2𝑥 − 0.100 ∙ 101𝑦 = 0.100 ∙ 101
0 + 0.100 ∙ 101𝑦 = −0.100 ∙ 101
Logo
𝑦 = −0.100 ∙ 101 → 𝑦 = −1
Calculando 𝑥
0.100 ∙ 10−2𝑥 − 0.100 ∙ 101 ∙ (−1) = 0.100 ∙ 101
0.100 ∙ 10−2𝑥 = 0.100 ∙ 101 − 0.100 ∙ 10−1
0.100 ∙ 10−2𝑥 = 0
𝑥 = 0
Sem pivoteamento, a solução é dada por 𝑥 = 0 e 𝑦 = −1.
B) Fazendo com pivoteamento, devemos trocar a linha 1 com a linha 2:
{ 𝑥 + 𝑦 = 00.001𝑥 − 𝑦 = 1
0.100 ∙ 101𝑥 + 0.100 ∙ 101𝑦 = 0.000 ∙ 101
0.100 ∙ 10−2𝑥 − 0.100 ∙ 101𝑦 = 0.100 ∙ 101
Tomando 𝑓𝑙(𝑙2) → 𝑓𝑙(𝑙2) − 𝑓𝑙(10−3 ∙ 𝑙1)
0.100 ∙ 101𝑥 + 0.100 ∙ 101𝑦 = 0.000 ∙ 101
0 − 0.100 ∙ 101𝑦 = 0.100 ∙ 101
Assim, obtemos
Pág
ina1
30
𝑦 = −1
Portanto
0.100 ∙ 101𝑥 − 0.100 ∙ 101 = 0.000 ∙ 101
0.100 ∙ 101𝑥 = 0.100 ∙ 101
𝑥 = 1
Com pivoteamento, 𝑥 = 1 e 𝑦 = −1.
C) Usando os valores obtidos sem pivoteamento
{0.001(0) − (−1) = 1
0 + (−1) = −1
O que fornece um erro
‖ 1 − 1−1 − 0
‖ = ‖0−1‖∞= 1
Com pivoteamento
{0.001(1) − (−1) = 1.001 = 0.100 ∙ 101 = 1
1 + (−1) = 0
O que fornece um erro
‖ 1 − 10 − 0
‖ = ‖00‖∞= 0
Logo, a solução com pivoteamento é exata, como era de se esperar.
Sejam 𝒇:ℝ → ℝ e sua derivada definidas por
𝒇(𝒙) =𝒙𝟐 − 𝒆−𝒙/𝟐
𝒙𝟐 + 𝟏; 𝒇′(𝒙) =
𝟒𝒙 + (𝒙𝟐 + 𝟒𝒙 + 𝟏)𝒆−𝒙/𝟐
𝟐(𝒙𝟐 + 𝟏)𝟐
A) Identifique um intervalo [𝒂, 𝒃] que contenha um zero de 𝒇.
B) Encontre 𝒙 tal que |𝒇(𝒙)| < 𝟏𝟎−𝟒, usando o método de Newton.
C) Explique o comportamento do método de Newton quando 𝒙𝟎 = −𝟒.
A) O zero ocorre quando 𝑓(𝑎) ∙ 𝑓(𝑏) < 0. Tomando os pontos 𝑥 = 0 e 𝑥 = 1
𝑓(0) = −1
𝑓(1) = 0.197
Logo, esse intervalo apresenta uma raiz.
B) Iniciando nossa análise pelo ponto 𝑥0 = 1:
𝑥𝑘+1 = 𝑥𝑘 −𝑓(𝑥𝑘)
𝑓′(𝑥𝑘)
𝑥1 = 1 −0.1967
0.9549= 0.794 → |𝑓(𝑥)| = 0.03
𝑥2 = 0.794 −−0.0257
1.2052= 0.8153 → |𝑓(𝑥)| = 2.9889 ∙ 10−4
Pág
ina1
31
𝑥3 = 0.8153 −(−2.9889 ∙ 10−4)
1.1796= 0.81556 → |𝑓(𝑥)| = 7.761 ∙ 10−6
Portanto 𝑥 = 0.81556.
C) Para 𝑥0 = −4
𝑥1 = −4 −0.5062
−0.015= 29.75
Repare que a derivada deu um valor bem próximo de zero, de modo que o valor encontrado
está bem distante do procurado. Isso ocorre pelo fato de que, uma vez que a derivada é quase
zero, surge uma reta tangente bem próxima do eixo 𝑥, o que impede que encontremos a solu-
ção.
Considere o sistema linear abaixo
(𝟒 𝟔 𝟎−𝟓 𝟏 𝟗𝟒 −𝟏 𝟐
)𝒙 = (𝟖−𝟐−𝟖)
A) Justifique como utilizar com segurança o método de Jacobi para o sistema linear
acima.
B) Compute uma iteração do método, partindo de 𝒙𝟎 = (𝟏, 𝟏, 𝟏)𝑻.
C) Sabendo que a solução do sistema é (−𝟏, 𝟐,−𝟏)𝑻, compute a norma infinito do erro,
tanto no ponto inicial como no primeiro iterando. A melhora, se obtida, foi condizente com o
esperado? Justifique.
A) O método de Jacobi deve satisfazer o critério de linhas, que diz que os elementos da
diagonal principal devem ser maiores, em módulo, que a soma dos elementos fora dela. Para
que o método de Jacobi seja utilizado com segurança devemos trocar a posição das linhas. A
linha 1 tem de assumir i lugar da linha 2 e a linha 2 tem de assumir o lugar da linha 3, de modo
que essa última assume o lugar da linha 1. Assim:
(4 −1 24 6 0−5 1 9
)𝑥 = (−88−2)
Fazendo isso garantimos a convergência.
B) Aplicando o método de Jacobi
𝑥1𝑘+1 = (−8 + 1𝑥2
𝑘 − 2𝑥3𝑘)/4
𝑥2𝑘+1 = (8 − 4𝑥1
𝑘)/6
𝑥3𝑘+1 = (−2 + 5𝑥1
𝑘 − 1𝑥2𝑘)/9
Usando 𝑥0 = (1,1,1)𝑇:
𝑥11 =
(−8 + 1 ∙ 1 − 2 ∙ 1)
4= −2.25
Pág
ina1
32
𝑥21 =
8 − 4 ∙ 1
6= 0.667
𝑥31 =
−2 + 5 ∙ 1 − 1 ∙ 1
9= 0.222
C) Vamos calcular o erro. Partindo do ponto inicial dado:
||1 − (−1)||
||−1||= 2
||1 − 2||
||2||= 0.5
||1 − (−1)||
||−1||= 2
Para o ponto inicial, a norma é
||20.52||
∞
= 2
Para os pontos encontrados após a primeira iteração:
||−2.22 − (−1)||
||−1||= 1.222
||0.667 − 2||
||2||= 0.667
||0.222 − (−1)||
||1||= 1.222
Para o ponto encontrado após a primeira iteração, a norma é
||1.2220.6671.222
||
∞
= 1.222
Repare que a norma é menor que aquela obtida com os valores iniciais, isso significa que apli-
cando o método de Jacobi estamos, de fato, convergindo para a solução.
Considere o sistema não linear
{
𝒙𝟏𝟐 + 𝒙𝟐 − 𝟑𝟕 = 𝟎
𝒙𝟏 − 𝒙𝟐𝟐 − 𝟓 = 𝟎
𝒙𝟏 + 𝒙𝟐 + 𝒙𝟑 − 𝟑 = 𝟎
A) Usando o método de Newton para a resolução desse sistema, com aproximação ini-
cial 𝒙𝟎 = (𝟏,−𝟏, 𝟎)𝑻, mostre que o cálculo da aproximação 𝒙𝟏 conduz à resolução do sistema
linear
Pág
ina1
33
(𝟐 𝟏 𝟎𝟏 𝟐 𝟎𝟏 𝟏 𝟏
)(
𝒔𝟏𝒔𝟐𝒔𝟑) = (
𝟑𝟕𝟓𝟑)
B) Usando o método de eliminação de Gauss, prove que a solução do item anterior é
dada por 𝒔𝟏 = 𝟐𝟑, 𝒔𝟐 = −𝟗 e 𝒔𝟑 = −𝟏𝟏.
C) Usando o resultado do item B), ache o valor de 𝒙𝟏 para a primeira iteração do método
de Newton.
D) O método iterativo de Jacobi poderia ser apropriadamente usado para resolver o
sistema do item A)? Justifique sua resposta.
A) O método de Newton consiste em obter o sistema 𝐽(𝑥)𝑠 = −𝐹(𝑥). Vamos montar esse
sistema:
𝐹(𝑥) = (
𝑥12 + 𝑥2 − 37
𝑥1 − 𝑥22 − 5
𝑥1 + 𝑥2 + 𝑥3 − 3
)
A matriz Jacobiana é dada pelas derivadas parciais:
𝐽(𝑥) = (2𝑥1 1 01 −2𝑥2 01 1 1
)
Logo, nosso sistema a ser resolvido, nos pontos dados, é, é:
(2(1) 1 01 −2(−1) 01 1 1
)(
𝑠1𝑠2𝑠3) = −(
12 − 1 − 371 − (−1)2 − 51 − 1 − 3
)
(2 1 01 2 01 1 1
)(
𝑠1𝑠2𝑠3) = (
3753)
B) Usando eliminação de Gauss, vamos fazer
𝑙2 → 𝑙2 − 0.5𝑙1
𝑙3 → 𝑙3 − 0.5𝑙1
(2 1 00 1.5 00 0.5 1
)(
𝑠1𝑠2𝑠3) = (
37−13.5−15.5
)
Agora, tomamos 𝑙3 → 𝑙3 − (0.5/1.5)𝑙2
(2 1 00 1.5 00 0 1
)(
𝑠1𝑠2𝑠3) = (
37−13.5−11
)
Fazendo substituição reversa
𝑠3 = −11
1.5𝑠2 + 0 = −13.5
𝑠2 = −9
2𝑠1 + (−9) = 37
𝑠2 = 23
Pág
ina1
34
Logo 𝑠1 = 23, 𝑠2 = −9 e 𝑠3 = −11.
C) O valor de 𝑥1 é dado por 𝑥0 + 𝑠0. Ora, a solução do item B) corresponde ao valores de
𝑠0. Assim:
𝑥1 = 𝑥0 + 𝑠0 = (1 + 23,−1 + (−9), 0 + (−11)) = (24,−10,−11)𝑇
D) O método de Jacobi não pode ser apropriadamente utilizado, uma vez que o critério
de linhas não é satisfeito.
Resolva o sistema a seguir com decomposição LU com pivoteamento:
(𝟐 𝟑 𝟒𝟔 𝟏 𝟓𝟒 𝟐 𝟐
)𝒙 = (−𝟏𝟑−𝟏𝟎−𝟒
)
Escrevendo a matriz 𝐴, 𝑃 e 𝐿:
𝐴 = (2 3 46 1 54 2 2
) ; 𝑃 = (1 0 00 1 00 0 1
) ; 𝐿 = (1 0 00 1 00 0 1
)
Devemos inverter a segunda linha com a primeira, 𝑙1 ↔ 𝑙2
𝑃𝐴 = (6 1 52 3 44 2 2
) → 𝑃 = (0 1 01 0 00 0 1
)
Agora iniciamos as operações entre linhas, fazendo
𝑙2 = 𝑙2 −1
3𝑙1
𝑙3 = 𝑙3 −2
3𝑙1
𝑃𝐴 = (6 1 50 2.67 2.330 1.33 −1.33
) → 𝐿 = (1 0 01/3 1 02/3 0 1
)
O próximo passo é fazer
𝑙3 = 𝑙3 − 0.5𝑙2
𝑃𝐴 = (6 1 50 2.67 2.330 0 −2.5
) → 𝐿 = (1 0 01/3 1 02/3 0.5 1
)
Portanto, temos que 𝑃𝐴 = 𝑈
𝑈 = (6 1 50 2.67 2.330 0 −2.5
)
Nosso sistema 𝐴𝑥 = 𝑏 se torna
𝑃𝐴𝑥 = 𝑃𝑏
𝐿𝑈𝑥 = 𝑃𝑏
{𝐿𝑦 = 𝑃𝑏𝑈𝑥 = 𝑦
Pág
ina1
35
A matriz 𝑃𝑏 é
(0 1 01 0 00 0 1
)(−13−10−4
) = (−10−13−4
)
Assim, devemos resolver
(1 0 01/3 1 02/3 0.5 1
)(
𝑦1𝑦2𝑦3) = (
−10−13−4
)
𝑦1 = −10
1
3(−10) + 𝑦2 = −13
𝑦2 = −9.67
2
3(−10) + 0.5(−9.67) + 𝑦3 = −4
𝑦3 = 7.5
Logo
𝑦 = (−10−9.677.5
)
Por fim, resolvemos o sistema
𝑈𝑥 = 𝑦
(6 1 50 2.67 2.330 0 −2.5
)(
𝑥1𝑥2𝑥3) = (
−10−9.677.5
)
𝑥3 = −3
2.67𝑥2 + 2.33(−3) = −9.67
𝑥2 = −1.004
6𝑥1 − 1.004 + 5(−3) = −10
𝑥1 = 1
Logo
𝑥 = (1−1−3)
Considere a tabela
𝒙 𝟎. 𝟏 𝟎. 𝟑 𝟎. 𝟓 𝟎. 𝟕 𝟏. 𝟐
𝒚 − 𝟏. 𝟖𝟎 − 𝟎. 𝟕𝟎 − 𝟎. 𝟏𝟗 𝟎. 𝟏𝟒 𝟎. 𝟔𝟖
Calcule uma aproximação para 𝒇(𝟎. 𝟔) usando interpolação quadrática.
A interpolação quadrática é do tipo
𝑝(𝑥) = 𝑎𝑥2 + 𝑏𝑥 + 𝑐
Pág
ina1
36
Como estamos interessados no ponto 0.6, podemos optar pelos valores de 𝑥 mais próximo
desse ponto. Com isso, vamos trabalhar com os valores de 𝑥 = 0.3, 𝑥 = 0.5 e 𝑥 = 0.7. Vamos
criar um sistema de polinômios para cada valor de 𝑥 escolhido. Assim
𝑝(0.3) = 𝑎(0.3)2 + 𝑏(0.3) + 𝑐 = −0.70
𝑝(0.5) = 𝑎(0.5)2 + 𝑏(0.5) + 𝑐 = −0.19
𝑝(0.7) = 𝑎(0.7)2 + 𝑏(0.7) + 𝑐 = 0.14
Assim, obtemos um sistema dado por
0.09𝑎 + 0.3𝑏 + 𝑐 = −0.70
0.25𝑎 + 0.5𝑏 + 𝑐 = −0.19
0.49𝑎 + 0.7𝑏 + 𝑐 = 0.14
O próximo passo consiste em resolver esse sistema:
(0.09 0.3 10.25 0.5 10.49 0.7 1
)(𝑎𝑏𝑐) = (
−0.70−0.190.14
)
Fazendo 𝑙2 → 𝑙2 − (0.25
0.09) 𝑙1 e 𝑙3 → 𝑙3 − (
0.49
0.09) 𝑙1
(0.09 0.3 10 −0.3 −1.780 −0.93 −4.4
)(𝑎𝑏𝑐) = (
−0.701.753.95
)
Fazendo, agora, 𝑙3 → 𝑙3 − (0.93
0.3) 𝑙2
(0.09 0.3 10 −0.3 −1.780 0 1.12
)(𝑎𝑏𝑐) = (
−0.701.75−1.48
)
O que fornece
𝑐 = −1.32
−0.3𝑏 − 1.78(−1.32) = 1.72
𝑏 = 2.1
0.09𝑎 + 0.3(2.1) − 1.32 = −0.7
𝑎 = −0.1
Assim, obtemos como polinômio:
𝑝(𝑥) = −0.1𝑥2 + 2.1𝑥 − 1.32
Como buscamos 𝑥 = 0.6
𝑝(0.6) = −0.1(0.6)2 + 2.1(0.6) − 1.32 = −0.096
Deseja-se ajustar a função 𝝋(𝒙) = 𝒆𝒙𝒑(𝜶 + 𝜷𝒙), através do método de quadrados mí-
nimos, usando os seguintes dados:
𝒙 𝟏. 𝟎 𝟏. 𝟓 𝟐. 𝟎 𝟐. 𝟓 𝟑. 𝟎
𝒇(𝒙) 𝟐. 𝟖 𝟑. 𝟑 𝟑. 𝟗 𝟒. 𝟔 𝟓. 𝟒
Pág
ina1
37
Obtenha o sistema linear que deve ser resolvido para determinar os coeficientes 𝜶 e 𝜷.
Para resolver esse problema devemos, primeiro, linearizar nossa função. Assim:
ln 𝜑(𝑥) = ln(exp(𝛼 + 𝛽𝑥))
ln 𝜑(𝑥) = 𝛼 + 𝛽𝑥
𝑧 ≈ 𝑐1 + 𝑐2𝑥
onde 𝑐1 = 𝛼 e 𝑐2 = 𝛽. Uma vez que alteramos a função (mas não os pontos dados), devemos
alterar os valores de 𝑓(𝑥) para ln 𝑓(𝑥). Assim, nossos dados serão:
𝒙 𝟏. 𝟎 𝟏. 𝟓 𝟐. 𝟎 𝟐. 𝟓 𝟑. 𝟎
𝐥𝐧𝒇(𝒙) 𝟏. 𝟎𝟑 𝟏. 𝟏𝟗 𝟏. 𝟑𝟔 𝟏. 𝟓𝟑 𝟏. 𝟔𝟗
Criando a matriz Φ:
Φ =
(
1.0 1.01.0 1.51.0 2.01.0 2.51.0 3.0)
Sendo a matriz 𝑦 dada por
𝑦 =
(
1.031.191.361.531.69)
Obtemos o sistema 𝐴𝑐 = 𝑏 fazendo 𝐴 = Φ𝑇Φ e 𝑏 = Φ𝑇𝑦:
𝐴 = (1.0 1.0 1.01.0 1.5 2.0
1.0 1.0 2.5 3.0
)
(
1.0 1.01.0 1.51.0 2.01.0 2.51.0 3.0)
= (
5.0 10.010.0 22.5
)
𝑏 = (1.0 1.0 1.01.0 1.5 2.0
1.0 1.0 2.5 3.0
)
(
1.031.191.361.531.69)
= (
6.814.42
)
Portanto, o sistema a ser resolvido é
(5.0 10.010.0 22.5
) (𝑐1𝑐2) = (
6.814.42
)
Considere a função tabelada abaixo
𝒙 𝟎. 𝟎 𝟏. 𝟎 𝟑. 𝟎 𝟒. 𝟎 𝟔. 𝟎 𝟕. 𝟎
𝒇(𝒙) − 𝟎. 𝟖 − 𝟎. 𝟐 𝟎. 𝟑 𝟎. 𝟔 𝟏. 𝟐 𝟏. 𝟑
A) Estime 𝑰 = ∫ 𝒇(𝒙)𝒅𝒙𝟕
𝟎, justificando sua estratégia.
Pág
ina1
38
B) Usando interpolação quadrática, estime �̅� tal que 𝒇(�̅�) = 𝒈(�̅�), onde 𝒈(𝒙) = 𝟐𝒙𝟐 −
𝟖𝒙 − 𝟓. Justifique a escolha dos pontos de interpolação.
A) uma vez que temos um número par de pontos, teremos um número ímpar de subin-
tervalos. Assim, a melhor estimativa que podemos fazer para a integral é usando a quadratura
do trapézio:
𝑄𝑇𝑅 = ℎ [𝑓𝑥02+ 𝑓𝑥1 + 𝑓𝑥2 + 𝑓𝑥3 + 𝑓𝑥4 +
𝑓𝑥52]
Onde
ℎ =7 − 0
5= 1.4
Assim
𝑄𝑇𝑅 = 1.4[−0.4 − 0.2 + 0.3 + 0.6 + 1.2 + 0.65] = 3.01
Entretanto, note que os valores de 𝑥 não seguem o passo dado por ℎ = 1.4. Assim, podemos
tomar uma estimativa a partir de cada subintervalo (por trapézio simples), levando em conta o
passo de cada um deles. Assim:
𝑄 =ℎ
2[𝑓(𝑏) − 𝑓(𝑎)]
𝑄1 =1
2[𝑓(1) + 𝑓(0)] =
1
2[−0.2 − 0.8] = −0.5
𝑄2 =2
2[𝑓(3) + 𝑓(1)] = 1[0.3 − 0.2] = 0.1
𝑄3 =1
2[𝑓(4) + 𝑓(3)] =
1
2[0.6 + 0.3] = 0.45
𝑄4 =2
2[𝑓(6) + 𝑓(4)] = 1[1.2 + 0.6] = 1.8
𝑄5 =1
2[𝑓(7) + 𝑓(6)] =
1
2[1.3 + 1.2] = 1.25
Portanto, a integral será
𝐼 ≈∑𝑄𝑖 = 3.1
5
𝑖=1
B) Como queremos 𝑓(�̅�) = 𝑔(�̅�), buscamos o ponto onde 𝑓(�̅�) − 𝑔(�̅�) = 0. Usando os
valores dados para 𝑥, obtemos os seguintes valores para 𝑔(𝑥):
𝑔(0.0) = −5
𝑔(1.0) = −11
𝑔(3.0) = −11
𝑔(4.0) = −5
𝑔(6.0) = 19
𝑔(7.0) = 37
Pág
ina1
39
Assim
𝑥 0.0 1.0 3.0 4.0 6.0 7.0
𝑓(𝑥) − 0.8 − 0.2 0.3 0.6 1.2 1.3
𝑔(𝑥) − 𝑓(𝑥) = −4.2 − 10.8 − 11.3 − 5.6 17.8 35.7
Analisando os valores obtidos, podemos ver que o zero ocorre entre os pontos 4 e 6. Portanto,
é sensato escolher os pontos 𝑥 = 3, 𝑥 = 4 e 𝑥 = 6. Como queremos uma interpolação quadrá-
tica:
𝑝(𝑥) = 𝑎𝑥2 + 𝑏𝑥 + 𝑐
𝑝(3) = 9𝑎 + 3𝑏 + 𝑐 = 0.3
𝑝(4) = 16𝑎 + 4𝑏 + 𝑐 = 0.6
𝑝(6) = 36𝑎 + 6𝑏 + 𝑐 = 1.2
Devemos resolver esse sistema. Fazendo 𝑙2 = 𝑙2 − 𝑙1 e 𝑙3 = 𝑙3 − 𝑙1
9𝑎 + 3𝑏 + 𝑐 = 0.3
7𝑎 + 𝑏 + 0 = 0.3
27𝑎 + 3𝑏 + 0 = 0.9
Fazendo 𝑙3 − 3𝑙2
9𝑎 + 3𝑏 + 𝑐 = 0.3
7𝑎 + 𝑏 + 0 = 0.3
6𝑎 + 0 + 0 = 0
Logo 𝑎 = 0, 𝑏 = 0.3 e 𝑐 = −0.6, o que fornece:
𝑝(𝑥) = 0.3𝑥 − 0.6
Fazendo 𝑝(𝑥) − 𝑔(𝑥) = 0
0.3𝑥 − 0.6 − 2𝑥2 + 8𝑥 + 5 = 0
−2𝑥2 + 8.3𝑥 + 4.4 = 0
𝑥 =−8.3 ± √104.09
−4
𝑥 =−8.3 ± 10.2
−4
𝑥1 =−8.3 + 10.2
−4= −0.475 → fora do intervalo
𝑥2 =−8.3 − 10.2
−4= 4.625
Logo, �̅� = 4.625.
Três quantidades experimentais foram medidas e estão mostradas a seguir
𝒖 𝟐. 𝟏 𝟒. 𝟓 𝟓. 𝟑 𝟔. 𝟐 𝟗. 𝟎
𝒗 𝟑. 𝟐 𝟑. 𝟐 𝟒. 𝟔 𝟔. 𝟏 𝟐. 𝟐
Pág
ina1
40
𝒛 𝟏. 𝟏 𝟎. 𝟏 𝟏. 𝟏 𝟏𝟎. 𝟎 − 𝟏𝟑. 𝟓
Supondo que o valor de 𝐳 seja determinado por 𝐮 e por 𝐯, descubra os melhores parâmetros
𝒄𝟏 e 𝒄𝟐 tais que 𝒛 ≈ 𝒄𝟏(𝒖 − 𝟓) + 𝒄𝟐(𝒖 − 𝟓)(𝒗 − 𝟒), no sentido de quadrados mínimos. Com
os coeficientes descobertos, calcule o valor estimado para 𝒛, usando os valores tabelados de
𝒖 e 𝒗 e compute o resíduo (a soma das diferenças ao quadrado).
Nosso polinômio é do tipo 𝜙 = 𝑐1𝜙1 + 𝑐2𝜙2, onde 𝜙1 = (𝑢 − 5) e 𝜙2 = (𝑢 − 5)(𝑣 − 4).
Com isso, obtemos a matriz Φ:
Φ = (𝜙1(𝑢) 𝜙2(𝑢, 𝑣))
Φ =
(
2.1 − 5 (2.1 − 5)(3.2 − 4)
4.5 − 5 (4.5 − 5)(3.2 − 4)
5.3 − 5 (5.3 − 5)(4.6 − 4)
6.2 − 5 (6.2 − 5)(6.1 − 4)9.0 − 5 (9.0 − 5)(2.2 − 4))
=
(
−2.9 2.32−0.5 0.40 0.3 0.18 1.2 2.52
4.0 − 7.20)
Vamos calcular as matrizes 𝐴 = ΦTΦ e 𝑏 = ΦTy, onde 𝑦 = 𝑧𝑇
𝐴 = (−2.9 −0.5 0.3 1.2 4.02.32 0.40 0.18 2.52 −7.20
)
(
−2.9 2.32−0.5 0.40 0.3 0.18 1.2 2.52
4.0 − 7.20)
𝐴 = (26.19 −32.65−32.65 63.77
)
𝑏 = (−2.9 −0.5 0.3 1.2 4.02.32 0.40 0.18 2.52 −7.20
)
(
1.10.11.110.0−13.5)
𝑏 = (−44.91125.19
)
Logo, nosso sistema linear será:
𝐴𝑐 = 𝑏
(26.19 −32.65−32.65 63.77
) (c1c2) = (
−44.91125.19
)
Fazendo 𝑙2 → 𝑙2 + (32.65
26.19) 𝑙1
(26.19 −32.650 23.067
) (𝑐1𝑐2) = (
−44.9169.203
)
Portanto
𝑐2 = 3
26.19𝑐1 − 32.65(3) = −44.91
26.19𝑐1 = 53.04
𝑐1 = 2.01
Nossa solução é 𝑐1 = 2.01 e 𝑐2 = 3. Vejamos:
Pág
ina1
41
𝑧1 = 2.01(2.1 − 5) + 3(2.1 − 5)(3.2 − 4) = 1.131
𝑧2 = 2.01(4.5 − 5) + 3(4.5 − 5)(3.2 − 4) = 0.195
𝑧3 = 2.01(5.3 − 5) + 3(5.3 − 5)(4.6 − 4) = 1.143
𝑧4 = 2.01(6.2 − 5) + 3(6.2 − 5)(6.1 − 4) = 9.972
𝑧5 = 2.01(9.0 − 5) + 3(9.0 − 5)(2.2 − 4) = −13.56
Computando o resíduo:
|1.1 − 1.131|2 = 0.000961
|0.1 − 0.195|2 = 0.009025
|1.1 − 1.143|2 = 0.001849
|10.0 − 9.972|2 = 0.000784
|−13.5 + 13.56|2 = 0.0036
Ajuste os pontos da tabela à função 𝝋(𝒙) = 𝜷𝟏𝒆𝜷𝟐𝒙
𝒙 − 𝟏. 𝟎𝟎 − 𝟎. 𝟕𝟎 − 𝟎. 𝟒𝟎 − 𝟎. 𝟏𝟎 𝟎. 𝟐𝟎 𝟎. 𝟓𝟎 𝟎. 𝟖𝟎 𝟏. 𝟎𝟎
𝒚 𝟑𝟔. 𝟓𝟒 𝟏𝟕. 𝟐𝟔 𝟖. 𝟏𝟓 𝟑. 𝟖𝟓 𝟏. 𝟖𝟐 𝟎. 𝟖𝟔 𝟎. 𝟒𝟎 𝟎. 𝟐𝟒
Devemos linearizar a função. Fazemos isso tomando o logaritmo em ambos lados
ln𝜑(𝑥) = ln(𝛽1𝑒𝛽2𝑥)
ln𝜑(𝑥) = ln 𝛽1 + ln 𝑒𝛽2𝑥
ln 𝜑(𝑥) = ln𝛽1 + 𝛽2𝑥
𝑧 ≈ 𝑐1 + 𝑐2𝑥
onde 𝑐1 = ln𝛽1 e 𝑐2 = 𝛽2. Ajustando os valores para ln 𝑦:
ln 𝑦 ≈ 𝑧 3.60 2.85 2.10 1.35 0.60 − 0.15 − 0.92 − 1.43
Criando a matriz Φ
Φ =
(
1.00 − 1.001.00 − 0.701.00 − 0.401.00 − 0.101.00 0.201.00 0.501.00 0.801.00 1.00 )
A matriz 𝐴 será 𝐴 = Φ𝑇Φ e a matriz 𝑏 será Φ𝑇𝑧𝑇
𝐴 = (1.00 1.00 1.00 −1.00 −0.70 −0.40
1.00 1.00 1.00 −0.10 0.20 0.50
1.00 1.000.80 1.00
)
(
1.00 − 1.001.00 − 0.701.00 − 0.401.00 − 0.101.00 0.201.00 0.501.00 0.801.00 1.00 )
Pág
ina1
42
𝐴 = (8.00 0.300.30 3.59
)
𝑏 = (1.00 1.00 1.00 −1.00 −0.70 −0.40
1.00 1.00 1.00 −0.10 0.20 0.50
1.00 1.000.80 1.00
)
(
3.602.852.101.350.60−0.15−0.92−1.43)
𝑏 = (8.00−8.70
)
O sistema a ser resolvido é:
(8.00 0.300.30 3.59
) (𝑐1𝑐2) = (
8.00−8.70
)
Fazendo 𝑙2 → 𝑙2 − (0.30
8.00) 𝑙1
(8.00 0.300 3.58
) (𝑐1𝑐2) = (
8.00−9.00
)
Portanto 𝑐2 = −2.514 e 𝑐1 = 1.094. Uma vez que 𝑐1 = ln𝛽1
1.094 = ln𝛽1
𝑒1.094 = 𝛽1
𝑏1 = 2.9862
Assim, nossa função é dada por
𝜑(𝑥) = 2.9862𝑒−2.514𝑥
Resolva o problema a seguir adotando 𝒉 = 𝟎. 𝟐𝟓
{𝒖′′ − 𝒖 = 𝒆𝒙
𝒖(𝟎) = 𝟏𝒖′(𝟎) = 𝟎
Colocando na forma geral:
𝑢′′ = 𝑒𝑡 + 𝑢
Fazemos
𝑦 = (𝑦1𝑦2) = (
𝑢𝑢′)
𝑦′ = (𝑢′
𝑢′′) = (
𝑦2𝑒𝑡 + 𝑦1
) = 𝑓(𝑡, 𝑦)
Para 𝑡0
𝑦0 = (𝑢(0)
𝑢′(0)) = (
𝑦1(0)
𝑦2(0)) = (
10)
Aplicando Euler
𝑦𝑛 = 𝑦𝑛−1 + ℎ𝑓(𝑡𝑛−1, 𝑦𝑛−1)
Para 𝑛 = 1
Pág
ina1
43
𝑦1 = 𝑦0 + ℎ𝑓(𝑡0, 𝑦0)
𝑦1 = (10) + 0.25 (
0𝑒0 + 1
)
𝑦1 = (10) + (
00.5) = (
10.5)
Para 𝑛 = 2
𝑦2 = 𝑦1 + ℎ𝑓(𝑡1, 𝑦1)
de modo que 𝑡1 = 𝑡0 + ℎ = 0 + 0.25 = 0.25
𝑦2 = (10.5) + 0.25 (
0.5𝑒0.25 + 1
) = (1.1251.071
)
Aproxime os valores no intervalo obtido para
{
𝒚′′ = 𝟑𝒙𝒚′ − 𝒚 + 𝒙
𝒚(𝟎) = 𝟎
𝒚(𝟏) = 𝟎
adotando 𝒉 = 𝟎. 𝟐𝟓.
Uma vez que temos o valor de ℎ e dos extremos, fazemos:
ℎ =𝑏 − 𝑎
𝑛→ 𝑛 =
𝑏 − 𝑎
ℎ=1 − 0
0.25= 4
o que mostra que estaremos trabalhando com 4 subintervalos. Vamos trabalhar encima da ta-
bela mostrada a seguir. Como o tamanho do passo é 0.25, iremos analisar o problema nos pon-
tos 𝑥 = 0, 𝑥 = 0.25, 𝑥 = 0.50, 𝑥 = 0.75 e 𝑥 = 1.00. Note que no ponto 𝑦0 a função assume o
valor 0, e o mesmo para o ponto 𝑦1. Assim, devemos procurar determinar os valores nos pontos
entre os extremos do intervalo. Em outras palavras, vamos analisar os pontos 1, 2 e 3. Nossa
tabela assume, num primeiro momento, o seguinte aspecto:
Vamos escrever nossa equação na forma
𝑦′′(𝑥𝑗) − 3𝑥𝑗𝑦′(𝑥𝑗) + 𝑦(𝑥𝑗) = 𝑥𝑗
Agora usaremos as fórmulas das diferenciais finitas, usando a diferença centrada. Assim
[𝑦𝑗+1 − 2𝑦𝑗 + 𝑦𝑗−1
ℎ2] − 3𝑥𝑗 [
𝑦𝑗+1 − 𝑦𝑗−1
2ℎ] + 𝑦𝑗 = 𝑥𝑗
𝑗 𝑥𝑗 𝑦𝑗
0 0 0
1 0.25
2 0.50
3 0.75
4 1.00 0
Pág
ina1
44
multiplicando tudo por ℎ2
𝑦𝑗+1 − 2𝑦𝑗 + 𝑦𝑗−1 −3
2ℎ𝑥𝑗𝑦𝑗+1 +
3
2ℎ𝑥𝑗𝑦𝑗−1 + ℎ
2𝑦𝑗 = ℎ2𝑥𝑗
juntando os termos semelhantes
(1 −3
2ℎ𝑥𝑗) 𝑦𝑗+1 + (ℎ
2 − 2)𝑦𝑗 + (1 +3
2ℎ𝑥𝑗) 𝑦𝑗−1 = ℎ
2𝑥𝑗
usando o valor de ℎ = 0.25, obtemos a seguinte equação:
(𝟏 − 𝟎. 𝟑𝟕𝟓𝒙𝒋)𝒚𝒋+𝟏 − 𝟏. 𝟗𝟑𝟕𝟓𝒚𝒋 + (𝟏 + 𝟎. 𝟑𝟕𝟓𝒙𝒋)𝒚𝒋−𝟏 = 𝟎. 𝟎𝟔𝟐𝟓𝒙𝒋
que é a equação base para resolver esse problema. Uma vez que já temos os valores para 𝑗 = 0,
nosso primeiro ponto será 𝑗 = 1. Assim, a equação acima se torna:
(1 − 0.375 ∙ 0.25)𝑦1+1 − 1.9375𝑦1 + (1 + 0.375 ∙ 0.25)𝑦1−1 = 0.0625 ∙ 0.25
(1 − 0.375 ∙ 0.25)𝑦1+1 − 1.9375𝑦1 + (1 + 0.375 ∙ 0.25)𝑦1−1 = 0.0625 ∙ 0.25
0.90625𝑦2 − 1.9375𝑦1 + 1.09375𝑦0 = 0.015625
como 𝑦0 = 0, obtemos
0.90625𝑦2 − 1.9375𝑦1 = 0.015625
Não há mais o que fazer. Vamos para 𝑗 = 2:
(1 − 0.375 ∙ 0.50)𝑦2+1 − 1.9375𝑦2 + (1 + 0.375 ∙ 0.50)𝑦2−1 = 0.0625 ∙ 0.50
0.8125𝑦3 − 1.9375𝑦2 + 1.1875𝑦1 = 0.03125
O próximo passa é para 𝑗 = 3:
(1 − 0.375 ∙ 0.75)𝑦3+1 − 1.9375𝑦3 + (1 + 0.375 ∙ 0.75)𝑦3−1 = 0.0625 ∙ 0.75
0.71875𝑦4 − 1.9375𝑦3 + 1.28125𝑦2 = 0.046875
como 𝑦4 = 0
−1.9375𝑦3 + 1.28125𝑦2 = 0.046875
Agora temos um sistema com três equações e três incógnitas. Colocando na forma de matriz:
(−1.9375 0.90625 01.1875 −1.9375 0.81250 1.28125 −1.9375
)(
𝑦1𝑦2𝑦3) = (
0.0156250.031250.046875
)
Fazendo 𝑙2 → 𝑙2 + (1.1875
1.9375) 𝑙1
(−1.9375 0.90625 0
0 −1.3821 0.81250 1.28125 −1.9375
)(
𝑦1𝑦2𝑦3) = (
0.0156250.040830.046875
)
Fazendo 𝑙3 → 𝑙3 + (1.28125
1.3821) 𝑙2
(−1.9375 0.90625 0
0 −1.3821 0.81250 0 −1.1843
)(
𝑦1𝑦2𝑦3) = (
0.0156250.040830.08473
)
o que fornece
𝑦3 = −0.07154
𝑦2 = −0.07157
Pág
ina1
45
𝑦1 = −0.04154
Com esses resultados, completamos a tabela:
Aproxime os valores no intervalo obtido para
{
𝒚′′ + 𝟐𝒚′ + 𝒚 = 𝒙
𝒚(𝟎) = 𝟐
𝒚(𝟏) = 𝟎
adotando 𝒉 = 𝟎. 𝟐𝟓.
Os pontos analisados serão:
Nossa equação é
𝑦′′(𝑥𝑗) + 2𝑦′(𝑥𝑗) + 𝑦(𝑥𝑗) = 𝑥𝑗
Usando as aproximações centradas
[𝑦𝑗+1 − 2𝑦𝑗 + 𝑦𝑗−1
ℎ2] + 2 [
𝑦𝑗+1 − 𝑦𝑗−1
2ℎ] + 𝑦𝑗 = 𝑥𝑗
Multiplicando tudo por ℎ2
𝑦𝑗+1 − 2𝑦𝑗 + 𝑦𝑗−1 + ℎ𝑦𝑗+1 − ℎ𝑦𝑗−1 + ℎ2𝑦𝑗 = ℎ
2𝑥𝑗
Agrupando os termos semelhantes
(1 + ℎ)𝑦𝑗+1 + (ℎ2 − 2)𝑦𝑗 + (1 − ℎ)𝑦𝑗−1 = ℎ
2𝑥𝑗
usando o valor de ℎ = 0.25
𝟏. 𝟐𝟓𝒚𝒋+𝟏 − 𝟏. 𝟗𝟑𝟕𝟓𝒚𝒋 + 𝟎. 𝟕𝟓𝒚𝒋−𝟏 = 𝟎. 𝟎𝟔𝟐𝟓𝒙𝒋
que é a equação base que iremos resolver. Para 𝑗 = 1
𝑗 𝑥𝑗 𝑦𝑗
0 0 0
1 0.25 −0.04154
2 0.50 −0.07157
3 0.75 −0.07154
4 1.00 0
𝑗 𝑥𝑗 𝑦𝑗
0 0 2
1 0.25
2 0.50
3 0.75
4 1.00 0
Pág
ina1
46
1.25𝑦2 − 1.9375𝑦1 + 0.75𝑦0 = 0.0625 ∙ 0.25
1.25𝑦2 − 1.9375𝑦1 + 0.75 ∙ 2 = 0.015625
1.25𝑦2 − 1.9375𝑦1 = −1.484375
Para 𝑗 = 2
1.25𝑦3 − 1.9375𝑦2 + 0.75𝑦1 = 0.0625 ∙ 0.50
1.25𝑦3 − 1.9375𝑦2 + 0.75𝑦1 = 0.03125
Para 𝑗 = 3 (e atentando que 𝑦4 = 0)
1.25𝑦4 − 1.9375𝑦3 + 0.75𝑦2 = 0.0625 ∙ 0.75
−1.9375𝑦3 + 0.75𝑦2 = 0.046875
Montando nosso sistema
(−1.9375 1.25 00.75 −1.9375 1.250 0.75 −1.9375
)(
𝑦1𝑦2𝑦3) = (
−1.4873750.031250.046875
)
Tomando 𝑙2 → 𝑙2 + (0.75
1.9375) 𝑙1
(−1.9375 1.25 0
0 −1.4536 1.250 0.75 −1.9375
)(
𝑦1𝑦2𝑦3) = (
−1.487375−0.544510.046875
)
Fazendo 𝑙3 → 𝑙3 + (0.75
1.4536) 𝑙2
(−1.9375 1.25 0
0 −1.4536 1.250 0 −1.2925
)(
𝑦1𝑦2𝑦3) = (
−1.487375−0.54451−0.2341
)
o que fornece
𝑦3 = 0.18112
𝑦2 = 0.5303
𝑦1 = 1.1098
Logo, nossa tabela fica
𝑗 𝑥𝑗 𝑦𝑗
0 0 2
1 0.25 1.1098
2 0.50 0.5303
3 0.75 0.18112
4 1.00 0