Cálculo Numérico com Octave · 2019. 3. 1. · na 3 em que a variável ^um _ foi atribuída ao...

146
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.

Transcript of Cálculo Numérico com Octave · 2019. 3. 1. · na 3 em que a variável ^um _ foi atribuída ao...

Page 1: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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.

Page 2: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 3: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 4: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 5: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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, : ) = [ ]

Page 6: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 7: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 8: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 9: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 10: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 11: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 12: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 13: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 14: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 15: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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.

Page 16: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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.

Page 17: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 18: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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,

Page 19: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 20: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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)

Page 21: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 22: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 23: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 24: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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.

Page 25: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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.

Page 26: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 27: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 28: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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 = 𝑥𝑘 −𝑓(𝑥𝑘)

𝑓′(𝑥𝑘)

Page 29: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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.

Page 30: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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?

Page 31: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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.

Page 32: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 33: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 34: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 35: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 36: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 37: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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.

Page 38: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 39: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 40: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 41: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 42: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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.

Page 43: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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 𝐴.

Page 44: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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𝐴:

Page 45: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 46: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 47: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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.

Page 48: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 49: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

𝑃𝐴 = 𝐿𝑈

Page 50: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

)

Page 51: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 52: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 53: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 54: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 55: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 56: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 57: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 58: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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á:

Page 59: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 60: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 61: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 62: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

)

Page 63: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 64: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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, 𝑈:

Page 65: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 66: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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) = −(𝐷 + 𝑈)𝑥(𝑘) + 𝑏

Page 67: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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)

Page 68: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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.

Page 69: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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)

Page 70: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

)

Page 71: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 72: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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))||

Page 73: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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 é:

Page 74: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

Pág

ina7

4

𝐽(𝑥)𝑠 = −𝐹(𝑥)

(2𝑥1 2𝑥2𝑥2 𝑥1

) 𝑠 = −(𝑥12 + 𝑥2

2 − 2𝑥1𝑥1 − 1

)

Page 75: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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 +⋯+ 𝑎𝑛𝑥𝑛

Page 76: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 77: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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.

Page 78: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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.

Page 79: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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(𝑥) + ⋯+ 𝑦𝑛𝑙𝑛(𝑥)

Page 80: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 81: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 82: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 83: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 84: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 85: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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 𝑞:

𝑠(𝑥) = 𝑝𝑘(𝑥)

Page 86: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 87: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 88: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 89: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 90: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 91: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

= (Φ𝑐 − 𝑦)𝑇(Φ𝑐 − 𝑦)

Page 92: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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 𝑥:

Page 93: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

𝑏:

Page 94: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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, 𝑒𝑥, … , 𝑒𝑘𝑥}

Page 95: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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 𝐴 = Φ𝑇Φ:

Page 96: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 97: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 98: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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𝑒−𝑥

Page 99: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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𝑒−𝑥

Page 100: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

)

Page 101: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 102: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 103: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 104: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 105: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

𝑓(𝑏):

Page 106: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 107: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 108: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 109: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 110: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 111: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 112: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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.

Page 113: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 114: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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!!!

Page 115: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 116: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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.

Page 117: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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)

Page 118: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 119: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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.

Page 120: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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)

Page 121: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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) = (

𝑢𝑢′)

Page 122: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

)

Page 123: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 124: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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)

Page 125: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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𝑒𝑥𝑗

Page 126: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 127: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 128: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

)

Page 129: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 130: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 131: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 132: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 133: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 134: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

𝑃𝐴𝑥 = 𝑃𝑏

𝐿𝑈𝑥 = 𝑃𝑏

{𝐿𝑦 = 𝑃𝑏𝑈𝑥 = 𝑦

Page 135: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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 + 𝑏𝑥 + 𝑐

Page 136: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

𝒙 𝟏. 𝟎 𝟏. 𝟓 𝟐. 𝟎 𝟐. 𝟓 𝟑. 𝟎

𝒇(𝒙) 𝟐. 𝟖 𝟑. 𝟑 𝟑. 𝟗 𝟒. 𝟔 𝟓. 𝟒

Page 137: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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.

Page 138: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 139: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

𝒖 𝟐. 𝟏 𝟒. 𝟓 𝟓. 𝟑 𝟔. 𝟐 𝟗. 𝟎

𝒗 𝟑. 𝟐 𝟑. 𝟐 𝟒. 𝟔 𝟔. 𝟏 𝟐. 𝟐

Page 140: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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:

Page 141: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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 )

Page 142: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 143: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 144: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 145: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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

Page 146: Cálculo Numérico com Octave · 2019. 3. 1. · na 3 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 é

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