You are on page 1of 234

UNIVERSIDADE FEDERAL DE SANTA CATARINA - UFSC

CENTRO TECNOLGICO - CTC


DEPARTAMENTO DE INFORMTICA E ESTATSTICA - INE

Clculo numrico em computadores

para engenharia e computao

Computao Cientfica II:

Autor:

Prof. Srgio Peters

e-mail: sergio.peters@ufsc.br

Florianpolis, 2014.
1

1. SISTEMAS DE NUMERAO
1.1 - INTRODUO
Atualmente o sistema padronizado de representao de quantidades para o uso e a
comunicao entre as pessoas o sistema decimal. Entretanto, para facilitar a representao fsica, a
definio das operaes aritmticas e a comunicao entre as mquinas digitais, necessrio fazer
uso de outros sistemas de representao.
Como premissa bsica, conceitua-se nmero como a representao simblica de
determinada quantidade matemtica e base de um sistema de numerao a quantidade de smbolos
distintos utilizados nesta representao. Desta forma, um nmero real qualquer X na base pode ser
algebricamente representado atravs de:
X = (a1 a2 . . . ak , ak+1 ak+2 . . . a k+n)

(1)

onde a base, ai {0,1,2,....,-1}, i = 1,2,...,k+n , k o comprimento da parte inteira e n da parte


fracionria do nmero, com k,n .
Ex. 1: X=(309,57)10
Para fins de uso algbrico X pode tambm ser representado na forma fatorada equivalente:
k

X = a i
i =1

k i

+ a k + j j
j=1

(2)

Ex. 2: X=(309,57)10 = 3.102 + 0.101 + 9.100 + 5.10-1 + 7.10-2


A seguir, sero abordados alguns sistemas de numerao e as formas de representao de
nmeros de amplo uso nas mquinas digitais.
1.2 - SISTEMA DECIMAL (
= 10)
O sistema decimal de numerao, adotado pela maioria dos pases, foi desenvolvido
pelos astronmos hindus por volta do sculo V e divulgado ao mundo islmico em 825 no livro do
matemtico Alkhawarismi e definitivamente adotado no ocidente no sculo XVI. Sua aceitao como
padro deve-se a algumas de suas caractersticas tais como:
i). Utiliza dez smbolos, dgitos (digitus = dedo em latim) ou algarismos (curruptela lgica de
Alkhawarismi). Tais smbolos atualmente so representados por: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9,
conhecidos por algarismos arbicos, que so derivados da verso ainda hoje usada no
mundo muulmano:

, , , , , , , , ,
Historicamente estes nmeros tem diversas hipteses sobre sua origem::
a) Nmero de ngulos existentes no desenho de cada algarismo;
b) Nmero de traos contidos no desenho de cada algarismo;
c) Nmero de pontos de cada algarismo;
d) Nmero de dimetros e arcos de circunferncia contidos no desenho de cada algarismo;
e) Figuras desenhadas a partir dos traos de um quadrado e suas diagonais.

ii). Faz uso do zero. O zero, aceito com muita relutncia, o indicador da ausncia de certas
potncias da base na representao de um nmero na forma fatorada;
iii). Adota o princpio da posicionalidade. No sistema posicional o valor de cada smbolo relativo, isto
, depende da sua posio no nmero.

Ex. 3: Nos nmeros


a) (574)10 = 5x102 + 7x101 + 4x100
b) (348)10 = 3x102 + 4x101 + 8x100
c) (432,5)10 = 4x102 + 3x101 + 2x100 + 5x10-1
O smbolo 4 representa, respectivamente, quatro unidades, quatro dezenas e quatro
centenas.
Note que nenhum dgito interfere na posio do outro, eles so inteiramente independentes
entre si.
Utilizando-se das duas ltimas caractersticas do sistema decimal, a seguir sero
estabelecidos outros sistemas de numerao, para facilitar a comunicao homem-mquina.
1.3 - SISTEMA BINRIO (
= 2)
Fazendo uso apenas dos smbolos 0 e 1, tambm chamados de bits (abreviatura de binary
digits); do zero e da posicionalidade, gera-se um novo sistema de numerao cuja correspondncia
com o decimal ser:
Decimal
Binrio

0
0

1
1

2
10

3
11

4
100

5
101

6
110

7
111

8
1000

9
1001

10
1010

.
.

19
10011

.
.

Utilizando-se da notao fatorada, tem-se por exemplo,


Ex. 4:
3

(10011)2 = (1.24 +0.23 + 0.22 + 1.21 + 1.20)10 = (19)10


Obs.: A forma fatorada do nmero binrio (base 2) est representada na base 10.
Vantagens do Sistema Binrio em Relao ao Sistema Decimal
(i). Simplicidade de representao fsica, bastam 2 estados distintos de uma mquina digital para
representar os dgitos da base: 0 = - , off
1 = + , on
Obs.: No futuro poder se chegar a distino de bits atravs dos atomos, que a concepo do
computador quntico (quantum-bits, ou qubits).
(ii). Simplicidade na definio de operaes aritmticas fundamentais:
Ex. 5: Adio:
+ : x
(x,y) x + y definida por:
Em = 10 necessita-se de 100 combinaes dos possveis valores de x e y para se definir a
funo adio.
Em = 2 tem-se apenas 4 combinaes:
0+0=0
0+1=1
1+0=1
1 + 1 = 10
Desvantagens do Sistema Binrio
(i). Necessidade de registros longos para armazenamento de nmeros.
Ex. 6: (597)10 = (1001010101)2
Observa-se que foi necessrio um registro com capacidade de armazenamento de dez
smbolos binrios para representar a grandeza decimal (597)10 de apenas trs dgitos decimais.
1.4 - SISTEMA HEXADECIMAL (
= 16)
Smbolos representativos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F. Onde A, B, C, D, E e F
representam as quantidades decimais 10, 11, 12, 13, 14 e 15, respectivamente.
Este tambm um sistema posicional.
Ex. 7: (1A0, C)16 = 1x16 2 + Ax16 1 + 0x16 0 + Cx16 -1
= (1x16 2 + 10x16 1 + 0x16 0 + 12x16 -1 )

10

= (256 + 160 + 0 + 12/16 = 416,75)10


Vantagem do Sistema Hexadecimal
(i). Nmero reduzido de smbolos para representar grandes quantidades, por isso um sistema de
numerao interessante para visualizao e armazenamento de dados. Os registros binrios internos
de uma mquina digital so convertidos de forma direta para Hexadecimal quando so necessrias
visualizaes externas, requisitadas pelo usurio.
Ex. 8: (1101 0110)2 = (D6)16 = (214)10
oito bits
2 smbolos hexadecimais
Obs.: At a dcada de 70 as mquinas digitais se utilizavam do sistema de numerao octal, de base
4

8, para visualizar os registros binrios internos.

1.5 - CONVERSES ENTRE SISTEMAS DE NUMERAO


As converses entre bases so necessrias para que se possa melhor entender algumas das
causas dos erros existentes nas representaes digitais de quantidades, pois o homem utiliza o
sistema decimal e os computadores as convertem para bases binria, hexadecimal, ou outra.

1.5.1 - CONVERSO DE BASE PARA BASE 10


Nestes casos as converses so obtidas escrevendo o respectivo nmero na sua forma
fatorada, representada na base decimal.
(a1a2a3,a4a5) = (a1 . 2 + a2 . 1 + a3 . 0 + a4 . -1 + a5 . -2)10
Ex. 9: (101,1)2 = 1 . 22 + 0 . 21 + 1 . 20 + 1 . 2-1 = (5,5)10
(1A,B)16 = 1 . 161 + A . 160 + B . 16-1 = (16,6875)10
1.5.2 - CONVERSO DE BASE 10 PARA BASE
_
(17,5)10 = ((i),(ii))
Procedimento de converso:
i) na parte inteira do nmero: divide-se sucessivamente a parte inteira do nmero decimal
pela base , e constri-se o novo nmero escrevendo o ltimo quociente e os restos obtidos
nas divises, para separar as potncias sucessivas de componentes da parte inteira. Desta
forma agrupam-se as diferentes potncias da base .
Ex. 10: (19)10 = ( )2 19 | 2
1 9|2
1 4|2
0 2|2
0 1
(527)10 = ( )16

527 | 16
15 32 | 16
0 2

(10011)2 = 1.24 + 0.23 + 0.22 + 1.21 + 1.20

(20F)16 = 2.162 + 0.161 + F.160

ii) na parte fracionria do nmero: multiplica-se sucessivamente a parte fracionria do nmero


decimal pela base , e constri-se o nmero escrevendo os inteiros resultantes de cada
produto. A parte fracionria restante novamente multiplicada por at que o produto final
seja um inteiro ou, a quantidade limite de dgitos na representao seja atingida. Desta forma
constrem-se as fraes sucessivas de .
Ex. 11: (0,03125)10 = ( )2
0,03125
x 2
0,06250

0,06250
x2
0,12500

0,125
x 2
0,250

0,25
x2
0,50

0,5
x2
1,0

= (0,00001)2
Ex. 12: (0,1)10 = ( )2
5

0,1
x 2
0,2

0,2
x2
0,4

0,4
x 2
0,8

0,8
x2
1,6

0,6
x2
1,2

0,2
x2
0,4

0,4
x2
0,8

0,8
x2
1,6

0,6
x2
1,2

0,2
x2
0,4

...

(0,00011 0011...)2
dzima peridica
-4
Ento: (0,1)10 = (0,00011001100110011...)2 (0,0001100110011)2 2 .(1,100110011)2
(0,1)10 (0,099975585)10 dgitos desprezados (arredondamento) por limitao de
armazenamento no registro binrio (10 bits significativos)
Devemos notar neste exemplo que, na converso das bases, parte dos dgitos da
representao binria so descartados, por limitao do nmero de dgitos representveis, o que
gera um erro de arredondamento.
Exerccios:
Exerccio - Efetuar as seguintes converses de base:
a)
b)
c)
d)

(10,57)10
(10,1011)2
(513,98)10
(A,0F)16

=
=
=
=

(
(
(
(

)2
)10
)16
)10

Exerccio - Implemente o algoritmo abaixo em um compilador com processamento numrico (por


exemplo: Pascal, C, Fortran, ...).
Incio
leia n
x = 1/n
Para i = 1 at 100
x = (n + 1) x - 1
imprimir i , x
Fim para
Fim
Testar para n = 2, 3, 10 e 16 e avaliar a evoluo de x com o nmero de iteraes i. Note que se
x = 1/n x (n + 1).1/n - 1 = 1 + 1/n - 1 = 1/n = x. Logo, o valor de x no deveria se alterar com
clculos sucessivos.
1.3 - Existe uma base onde todo racional tem representao finita, de acordo com George Cantor
(1869) todo racional tem representao finita na base fatorial.
Conceitualmente, a base fatorial semelhante decimal com a diferena de
que em um nmero XF! = (an an-1 ... a1 , a-1 a-2 ... a-m) cada ai s pode assumir um valor do
intervalo 0 ai | i | e

ai i!
10 a parte inteira e
(Xi)F! = (an an-1 ... a1)F! = i = n
m

a i (i + 1)!
a parte fracionria
(X-i)F! = (0, a-1 a-2 ... a-m)F! = i =1
Lembre-se que:
(4321)F! ter como seu sucessor (10000)F!

(119)10

(120)10

Represente os nmeros na forma fatorada e converta para a base decimal:


i) (3021)F!
= 3x4! + 0x3! + 2x2! + 1x1! = (77)10
ii) (321,123)F! =
iii)
(0,02)F!
=
iv)
(0,113)F!
=
Note que nos exerccios (ii), (iii) e (iv) tem-se representaes exatas de nmeros racionais,
que na base decimal so dzimas peridicas.

1.5.3 - CONVERSES DIRETAS ENTRE BINRIO E HEXADECIMAL:


Estas converses so importantes para se entender os mecanismos de operacionalizao de
mquinas digitais que implementam as operaes aritmticas em base binria e visualizar as
representaes em base hexadecimal.
Sabemos que um dgito hexadecimal corresponde a quatro dgitos binrios, pois
161 = 24 e note que (15)10 = (F)16 = (1111)2
Ento, fazemos a converso direta associando a cada um dgito hexadecimal quatro dgitos
binrios. Para tal, agrupamos os dgitos binrios em grupos de quatro a partir da posio da vrgula,
para a direita e para a esquerda. Caso seja necessrio, completa-se o grupo de quatro bits com zeros
no significativos.
Ex. 13:

Ex. 14:

(A1,B)16 = ( )2
Como:
(A)16 = (1010)2
(1)16 = (0001)2
(B)16 = (1011)2
temos:
(A1,B)16 = (1010 0001 , 1011)2
(10001 , 01001 1001 1001 ...)2 = ( )16

Agrupando-se os dgitos em grupos de quatro e completando com zeros:


(0001 0001 , 0100 1100 1100 1100 ...)2
1
1
4
C
C
C
( 11,4CCC...)16
Ex. 15: (110001,01) = ( )16
(0011 0001 , 0100)2 = (31,4)16
3
1
4
Pois, (00110001,0100)2 =

0x27 + 0x26 + 1x25 + 1x24 + 0x23 + 0x22 + 0x21 + 1x20 + 0x2-1 + 1x2-2 + 0x2-3 + 0x2-4

(0x23 + 0x22 + 1x21 + 1x20) (24)1 + (0x23 + 0x22 + 0x21 + 1x20) (24)0 + ( 0x23 + 1x22 + 0x21 + 0x20) (24)-1

161

160

16-1

logo
3x161 + 1x16 + 4x16 = (31,4)16
Obs.: Nas converses diretas entre as bases binria e hexadecimal (ou entre as bases binria e
octal), no h perda de dgitos (arredondamento). Mas nas converses de base decimal para base
7

binria, ou para base hexadecimal, ou para base octal, podemos perder dgitos significativos. Por
exemplo:
(17,3)10 = (11,4CCC ...)16 = ( )10
= 1 . 161 + 1 . 160 + 4 . 16-1 + 12 . 16-2 + 12 . 16-3 + ...

Assim,
(17,3)10 = (11,4CCCC...)16 (11,4CC)16
(17,296875)10

(5 significativos)

Exerccios:
1.4 - Converter os nmeros para as bases na ordem indicada:
a) (10111,1101)2 = ( )16 = ( )10
b) (BD,0E)16 = ( )10 = ( )2
c) (41,1)10 = ( )2 = ( )16
Obs.: Verifique se houve perda de dgitos significativos em alguma das converses, considerando um
nmero limitado de dgitos representveis.

2. REPRESENTAO DIGITAL DE NMEROS:


2.1. - INTRODUO
De uma maneira geral, nos sistemas computacionais, um nmero X representado na
forma de notao em ponto flutuante, de maneira a racionalizar o armazenamento digital.
Se utilizassemos um armazenamento em ponto fixo (vrgula fixa) seria necessrio um
nmero de posies (dgitos) no mnimo igual a variao dos limites dos expoentes. Por exemplo,
para se obter a representao de uma calculadora cientfica comum com limites positivos entre
1,0.10-99 e 9,999999999.10+99 seria necessrio:
(i). Entre 1,0.10-99 e 1 seriam necessrias 99 posies:

1,0.10-99 = 0,000.....00001

99 dgitos aps a vrgula

(ii). Entre 1 e 9,99999999.10+99 seriam necessrias 100 posies:


9,99999999.10+99 = 9999999999000.....0000, 100 dgitos inteiros
(iii). Seria necessrio mais uma posio para o sinal (s), para as representaes de negativos,
totalizando 200 posies em cada registro:
s
100 posies para a parte inteira

99 posies para a parte fracionria

Por outro lado, em uma representao em Ponto Flutuante, esta calculadora cientfica
funciona com pouco mais de dez dgitos, incluindo posies reservadas ao expoente.
Ento, em uma representao em Ponto Flutuante, onde a vrgula flutua segundo um certo
padro, temos a seguinte representao genrica na base :
X = [ d1/ + d2/2 + d3/3 + ... + dt/t ] . exp
ou
X = (0,d1 d2 d3 ... dt) . exp
onde
di = nmeros inteiros contidos em 0 di ( - 1) (i = 1, 2, ... , t) que constituem a mantissa.
Obs.: necessrio algum tipo de normalizao para padronizao da mantissa, no caso adota-se d1
0.
exp = expoente de , assume valores limites I (Inferior) e S (Superior) onde
I exp S.
t = nmero de dgitos significativos do sistema de representao, chamado de preciso da
mquina.

Ex. 16: Representar em ponto flutuante:


a) (3,501)10 = (3/10 + 5/102 + 0/103 + 1/104) . 101 = 0,3501 x 101
b) (101,011)2 = (1x2-1 + 0x2-2 + 1x2-3 + 0x2-4 + 1x2-5 + 1x2-6) . 23 = (0,101011)2 . 23
Vamos agora exemplificar a representao digital de nmeros em computador mostrando trs
exemplos prticos:

2.2. - PADRO 16 BITS


Vamos mostrar o sistema de Representao em Ponto Flutuante em uma mquina binria (
= 2), com t = 10 dgitos na mantissa e expoentes limitados entre I = -15 e S = + 15 (1510 = 11112), de
modo que simbolicamente temos: F(, t, I, S) = F(2, 10, -15, 15)10. Esta a representao clssica
da mquina de 16 bits, que detalhada aqui por motivos histricos.
Representao esquemtica de dgitos significativos binrios, onde cada bit alocado em um
registro (clula quadrada):

s1

t dgitos significativos
sinal da mantissa

s2
sinal do expoente

expoente

Convenciona-se que:
Se s1 = 0 nmero positivo.
Se s1 = 1 nmero negativo.
s2 idem.
No registro total tem-se:

1 bit para sinal da mantissa .


10 bits para armazenar os dgitos significativos da mantissa (t=10).
1 bit para sinal do expoente.
4 bits para o mdulo do expoente

Totalizando 16 bits neste registro.


Devemos notar tambm que os dgitos significativos so armazenados no padro de
normalizao com d1 0, conforme estabelecido anteriormente.
Ex. 17: Representar + 0,101011 . 23 na mquina de 16 bits estabelecida anteriormente.
Convertendo-se o expoente: (3)10 = (0011)2, tem-se
0

Limites da Representao em ponto Flutuante


Estes limites de representao sero exemplificados atravs da mquina de 16 bits:

a). Menor positivo representvel (m.p.):


0

1
0
0
0
0
0
0
0
0
0
1
1
1
1 1
Lembre-se de que toda representao na mquina de 16 bits usa normalizao com
padro d1 0.
m.p. = +(0,1)2 . 2-15 = (2-1 . 2-15)10 = (2-16)10 = (0,0000152587)10
b) Maior positivo representvel (M.P.):
0

M.P. = +(0,1111111111)2 . 215 = (2-1 + 2-2 + 2-3 + ... + 2-10 ) . 215 = (32736)10 (1 . 215)
Obs.: Os limites de representao dos nmeros negativos so simtricos aos limites positivos
apresentados.

10

Na reta real temos a seguinte representao para F(2, 10, -15, +15):
- M.P.

- m.p.

m.p.

M.P.

regio de overflow

regio de underflow

regio de overflow

Obs.:
regio de underflow: {x | - mp < x < mp}
regio de overflow: {x | x < - MP e x > MP}
c) Representao do zero:
obtida com mantissa nula e o menor expoente representvel (I).
Ex. 18: Representar o zero em F(2,10,-15,+15).
0

expoente mnimo
Devemos lembrar que este o nico nmero escrito no normalizado, pois sua mantissa
zero.
No exemplo 20, a seguir, pode-se visualizar o que poderia acontecer se o expoente do zero
fosse diferente do limite inferior I.
Ex. 19: Simular a operao de adio: 0,000135 + 0 na mquina F(10,4,-10,+10)

a
b
1) Considerando a representao do zero com expoente nulo (b = 0,0000 . 100):
a = 0,1350 . 10-3
b = 0,0000 . 100
a = 0,000135 . 100
b = 0,0000 . 100
a + b = 0,0001 . 100 = 0,1000 . 10-3
2) Considerando a representao do zero com expoente mnimo I (b = 0,0000 . 10-10):
a = 0,1350 . 10-3
b = 0,0000 . 10-10
a = 0,1350 . 10-3
b = 0,0000 . 10-3
a + b = 0,1350 . 10-3 = a

Neste segundo caso o zero representado pela mquina digital representa corretamente o elemento
neutro da operao de adio.
11

d). Nmero mximo de elementos representveis:


Podemos notar que a distribuio de nmeros representveis em ponto flutuante discreta
(somente alguns valores so representveis), enquanto a distribuio de valores na parte Real
contnua (qualquer valor representvel).
Ex. 20: Representar os dois primeiros nmeros positivos do sistema F(2, 10, -15, +15)
1 positivo 0
10...
= (0,0000152587)10

1111

2 positivo 0 10...
= (0,0000152885)10

0 1

1111

Ex. 21: Caso uma operao aritmtica gere o nmero (0,00001527)10, como ele ser representado?
Como o valor acima no tem representao binria exata, ele ser representado pelo valor discreto
mais prximo, no caso (0,0000152587)10 que o menor positivo representvel (mp).
Pode-se notar que a distribuio de nmeros representveis de F(, t, I, S) no uniforme
em , e que para cada potncia da base existe uma quantidade fixa de nmeros representveis
dada por:
NC = ( - 1) . t - 1
Ex. 22: Em F(2, 3, -1, +2) temos as seguintes representaes possveis:
a) mantissas possveis:
0,100
0,101
0,110
0,111

b) expoentes possveis:
2-1
20
2+1
2+2

A combinao de quatro possibilidades de mantissas em cada potncia da base


(( - 1).t-1 = 4 para = 2 e t = 3 ), com as quatro possibilidades de expoentes (S - I + 1 = 4 para S =
2 e I = -1) define o nmero total de positivos representveis (NP = 16).
Desta forma o nmero total de elementos representveis em uma mquina genrica F(, t, I,
S) dado por:
NF(, t, I, S) = 2.(S - I + 1).( - 1).t-1 + 1
incluindo os positivos, negativos e o zero.
Ex. 23: Em F(2, 10, -15, +15) (mquina de 16 bits) temos:
NF = 2 . (2 - 1) . (15 - ( - 15) + 1) . 210-1
= 31745 elementos incluindo os positivos, negativos e o zero.
Ex. 24: Em F(10, 10, -99, +99) (calculadora cientfica comum) temos:
NF = 2 . (10 - 1) . (99 - (- 99) + 1) . 1010-1 + 1
= 3,582 . 1012 elementos
Esta representao da mquina padro de 16 bits evoluiu, juntamente com os computadores,
e atingiu uma forma mais otimizada de representao, incluindo a polarizao dos expoentes, mais
flexibilidade na normalizao da mantissa, dentre outras. Mais tarde surgiu o padro IEEE 754
(1985), que amplamente utilizado no armazenamento de variveis (vide seo 4.1).
12

e). Polarizao na Representao em Ponto Flutuante


Polarizao (ou Excesso) um valor acrescentado (em Excesso) a todos expoentes de um
sistema de representao em ponto flutuante com o objetivo de tornar todos os expoentes positivos e
ampliar a representao do expoente superior (S). Naturalmente todas as operaes aritmticas
devem considerar esta polarizao introduzida.
Ex. 25: Na mquina de 16 bits F(2, 10, -15, 15) podemos usar uma polarizao p = + 15.

p = +15 = + (1111)2
I + p = - (15)10 + p = - (1111)2 + p = - (1111)2 + (1111)2 = (00000)2
S + p = +(15)10 + p = + (1111)2 + p = + (1111)2 + (1111)2 = (11110)2
5 bits
Como I e S tm agora o mesmo sinal, (+), podemos usar todos os registros binrios
reservados ao expoente, inclusive a posio do sinal, para representar o expoente polarizado (sem o
sinal). Assim, os limites polarizados do expoente so:
I = (00000)2 = (0)10
S = (11110)2 = (30)10
Podemos aqui aproveitar melhor os 5 bits reservados ao expoente tomando o maior valor
possvel, adotando S = (11111)2 = (31)10.
Na forma polarizada qualquer nmero v representado nesta mquina dever seguir a forma
abaixo:

s1

t dgitos significativos da mantissa

expoente

v = (-1)s . (0, mantissa)2 . 2exp - 15


Ex. 26: Na representao
0

tem-se: s = 0 , m = 110100000 e

exp = (10010)2 = (18)10

v = (-1)0 . (0, 1101000000)2 . 218 - 15 = +(110,1)2


Outra otimizao adotada no padro IEEE 754 foi o no armazenamento do primeiro bit da mantissa,
que sempre unitrio, ou seja, usa-se a representao implcita do primeiro bit e abre-se uma
posio binria para armazenamento de um novo bit:
v = (-1)s . (1, mantissa)2 .2

exp 15

que veremos em detalhes na seo 4.1.

Exerccios:
2.1 - Na mquina F(2, 3, -3, +3) com d10 (no polarizada) calcule:
a)
b)
c)
d)

O nmero de elementos representveis;


Esquematize a representao de todos os elementos positivos na base 2;
Defina as regies de underflow e overflow;
Estime a preciso decimal equivalente;
13

e) Proponha uma transformao da mquina F apresentada em uma mquina com polarizao que
utilize os limites dos 3 bits totais reservados ao sinal.
2.2 - Na mquina F(2,3,0,7) com d10 e polarizao p = +3 calcule:
a)
b)
c)
d)

O nmero de elementos representveis;


Esquematize a representao de todos os elementos positivos na base 2;
Defina as regies de underflow e overflow;
Estime a preciso decimal equivalente;

14

2.3). Preciso versus Exatido


- PRECISO: um conceito objetivo que estabelece a quantidade de algarismos significativos que
representam um nmero. A preciso de uma mquina digital definida como o nmero de dgitos t da
mantissa na base , e a preciso decimal d equivalente pode ser definida baseada na equivalncia
entre as variaes dos dgitos menos significativos em cada base, da seguinte forma:
10 1 - d = 1 - t
log (10 1 - d) = log ( 1 - t )
1 - d = (1 - t) log
d = 1 + ( t - 1) log
Ex. 27: Calcule a preciso decimal equivalente da mquina de 16 bits F(2, 10, -15, 15)
= 2 t = 10
d = 1 + (10 - 1) log 2
d = 1 + 9. (log 2)
d = 3,71
d = 3 4 dgitos (ou seja, pode representar entre 3 e 4 dgitos)
Ex. 28: Considere uma mquina F(2, 27, -20, 20)
2-26 = 10 - d + 1 log2 -26 = log10-d +1
- d + 1 = - 26 log2 d = 1 + 26 log2 8,8
Assim, esta ltima mquina tem entre 8 e 9 dgitos significativos equivalentes. Isto no
significa que todas as fraes decimais de 8 dgitos possam ser representadas precisamente em 27
bits, visto que a representao discreta (com espaos vazios entre dois nmeros consecutivos) e
nem todas as fraes decimais tm representao binria finita. Isto significa que todos as
representaes binrias da mquina esto corretas para 8 dgitos significativos na base 10, ou seja,
apresentam decimais equivalentes com pelo menos 8 dgitos corretos.
- EXATIDO: conceito relacionado com a forma que melhor representa uma grandeza numrica, ou
seja, uma representao mais exata quando tem o menor desvio (erro) em relao ao valor exato.
Ex. 29: Representar o (3,1415926535) por:
(a) 3,14
(b) 3,151
(c) 3,1416

preciso de trs dgitos


preciso de quatro dgitos
preciso de cinco dgitos

Obs.: Note que se fossemos classificar o nmeros acima quanto a exatido teramos o seguinte:
a) mais exato que (b) (ou seja, (a) est mais prximo de do que (b));
b) menos exato que (c);
c) mais exato que (a).

15

3 REPRESENTAO NUMRICA SEGUNDO O PADRO IEEE 754 (1985)

Este padro utilizado em linguagens comerciais como o Pascal e C, e ser apresentado a


seguir na sua forma esquemtica para representao em ponto flutuante e na forma de variveis
inteiras.

4.1). VARIVEL SINGLE DO PASCAL (OU FLOAT DO C):

Padro: 4 bytes ou 32 bits (preciso de 7 a 8 dgitos significativos equivalentes).


Neste padro um nmero real v pode ser representado por:
1
s

8
e

23
f

msb

lsb msb

lsb

onde
s = 0 v positivo e s = 1 v negativo
e = expoente
f = mantissa
polarizao = (127)10 = 27 - 1 = (01111111)2
msb = bit mais significativo e lsb = bit menos significativo
Um nmero v armazenado no registro acima interpretado da seguinte forma:
Se 0 < e < 255, ento

v = (-1)s . 2(e-127) . (1,f) 2

Se e = 0 e f 0, ento

v = (-1)s . 2-126 . (0,f)2

Se e = 0 e f = 0, ento

v = (-1)s . 2-126 . (0,) = (-1)s . 0

Se e = 255,

ento

(zero)

v pertence a regio de overflow.

Obs.:
(i). A representao destes registros binrios em computadores digitais feita em grupos de bytes (8
bits) escritos de forma invertida (de traz para frente) em relao ao esquema binrio apresentado
acima. Neste exemplo tem-se quatro bytes, onde cada byte composto por dois registros
hexadecimais (8 bits).
A seguir apresenta-se um exemplo desta representao para a frao 1/10, que representada na
varivel SINGLE do Pascal gera:
x = 0.10000000149 - (representao decimal, note o erro de arredondamento)
.
(ii). Se na janela watch do Pascal, onde se pode visualizar as variveis na base hexadecimal
escrevendo 'x,m', tem-se a seguinte representao hexadecimal de uma varivel SINGLE:
x,m = CD CC CC 3D - (representao hexadecimal no computador)
Esta deve ser interpretada na forma de bytes em ordem invertida, para compor o registro
binrio correspondente. Para obter este registro procede-se da seguinte forma:
a). Invertemos os bytes (grupos de dois hexadecimais):
3D CC CC CD
b). Efetua-se a converso direta para base binria:
16

3
D
C
C
C
C
C
D
0011 1101 1100 1100 1100 1100 1100 1101
c). Distribui-se os bits no registro SINGLE:
0

0 1 1 1 1 0 1 1

1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1
(CD CC CC 3D - representao hexadecimal no computador)

d). Interpretando os 32 bits acima pode-se converter o registro para decimal, conforme segue:
s=0
e = (01111011) 2 = (123)10
f = (10011001100110011001101) 2

(0<e<255)

x = (-1)0. 2123-127. (1, 10011001100110011001101) 2.


x = 0.10000000149
(Representao do Pascal)
Os registros sublinhados representam os arredondamentos gerados na representao SINGLE de
1/10.
e). Para representar (0,10)10 na base binria no padro IEEE de 32 bits temos duas possibilidades:
e.1). Converter (0,10)10 para binrio e adequar o resultado ao padro 32 bits:
(0,10)10 = (0,000110011001100110011001100110011001100110011...)2
(0,10) = 2-4 . (1,10011001100110011001100110011001100110011...)
10

Numero positivo s=0.

(0,10)10 = (-1)0 . 2-4 . (1,10011001100110011001100 110011001100110011...)2


ARREDONDAMEMTO na mantissa f
(0,110011001100110011...)2 > (0,5)10
+1
0
-4
(0,10)10 (-1) . 2 . (1,10011001100110011001100)2
------------------------------------------------------------------------------------(0,10)10 (-1)0 . 2-4 . (1,10011001100110011001101)2
(e-127)10 = (-4) 10 => e = (123) 10 = (01111011)2
0
s

0 1 1 1 1 0 1 1
e

1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1
f

e.2). Converter (0,10)10 diretamente para o padro 32 bits, considerando 0 < e < 255:
(0,10)10 = (-1)s . 2(e-127) . (1,f) 2
(e.2.1). s = 0 => para nmeros positivos +(0,10)10
(e.2.2). Considerando que ainda temos 2 incgnitas, e e f, vamos considerar o valor Mnimo de f,
f = 0, e calcular e:
(0,10)10 = (-1)0 . 2(e-127) . (1,0) 2
No caso, determina-se um valor de e maior que o verdadeiro, no caso, e= (123,6781...) 10 e
toma-se o seu menor inteiro, e= (123)10 (DESCONSIDERAR A PARTE FRACIONARIA)
(e.2.3). Agora determinamos o valor de f com os valores de s e e obtidos acima:
17

(0,10)10 = (-1)0 . 2(123-127) . (1,f)2


(1,f)2 = (0,1) 10 / 2(123-127)
(1,f)2 = (1,6)10 => (1,f deve ser um nmero entre 1 e 2, se 'e' foi escolhido corretamente)
Convertendo (1,6)10 para binrio, temos:

(1,6) 10 = (1,10011001100110011001100 110011001100110011...)2


ARREDONDAMEMTO na mantissa f
(0,110011001100110011...)2 > (0,5)10
+1
(1,6)10 (1,10011001100110011001100)2
------------------------------------------------------(1,6)10 (1,10011001100110011001101)2
Resumindo:
s=0
e = (123) 10 = (01111011)2
(1,f)2 (1,10011001100110011001101)2
0
s

0 1 1 1 1 0 1 1
e

1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1
f

(ii). Note que a normalizao da mantissa uma otimizao decorrente da normalizao aplicada na
mquina de 16 bits. No caso de mquinas binrias o primeiro dgito significativo no nulo sempre o
bit unitrio, ento no necessrio reservar um registro para armazenar sempre o mesmo valor.
Assim, adotou-se a normalizao padro IEEE com um bit unitrio antes da vrgula, que no
armazenado na memria dos computadores. Armazena-se a partir do 2 bit significativo.
(iii). Na representao especfica dos primeiros valores positivos (e negativos) adotou-se uma
flexibilizao da normalizao, permitindo mantissas com primeiro(s) dgito(s) nulo, o que gerou uma
diminuio da regio de underflow.

Ex. 40: Limites da varivel SINGLE (ou FLOAT):

s = 0

e = 00000000
f = 00000000000000000000000
i). Representao do Zero:
0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
(00 00 00 00 - representao em hexadecimal)

zero = (-1)0 2-126. (0, )

s = 0

e = 00000000
f = 00000000000000000000001
ii). Menor positivo (mp):
0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
(01 00 00 00 - representao em hexadecimal)

mp = (-1)0 . 2 -126 . (0,00000000000000000000001)2


mp = 2-126 . 2-23 = 2-149

(menor mantissa possvel)

18

mp = 1,4012985 . 10-45

s = 0

e = (11111110) 2 = ( 254)10
f = 11111111111111111111111
iii). Maior positivo (MP):
0

1 1 1 1 1 1 1 0

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
(FF FF 7F 7F - representao em hexadecimal)

MP = (-1)0 . 2 254-127 . (1,11111111111111111111111)2


MP = 2127 . (1,99999988)
10

MP = (3,4028235 . 1038)10
4.2) Varivel DOUBLE do Pascal (ou DOUBLE do C):

Padro: 8 bytes ou 64 bits (preciso de 16 a 17 dgitos significativos equivalentes).


1
s

11
e

52
f

msb

lsb msb

lsb

onde
polarizao = (1023) 10 = 210 - 1 = (01111111111)2
Um nmero v armazenado no registro acima interpretado da seguinte forma:
Se 0 < e < 2047, ento

v = (-1)s . 2(e-1023) . (1,f)2

Se e = 0 e f 0, ento

v = (-1)s . 2-1022 . (0,f)2

Se e = 0 e f = 0, ento

v = (-1)s . 2-1022 . (0,) = (-1)s . 0

Se e = 2047

v pertence a regio de overflow.

, ento

(zero)

4.3). VARIVEL EXTENDED DO PASCAL (OU LONG DOUBLE DO C):

Padro: 10 bytes ou 80 bits (preciso de 19 a 20 dgitos significativos equivalentes).


1
s

15
e
msb

1
i
lsb

63
f
msb

lsb

onde
polarizao = (16383) 10 = 214 - 1 = (011111111111111)2
Um nmero v armazenado no registro acima interpretado da seguinte forma:
Se 0 < e < 32767,

ento

Se e = 32767 e f = 0, ento

v = (-1)s . 2(e-16383) . (i,f) 2

(onde i pode assumir 0 ou 1)


(se e = 0 i = 1)
v pertence a regio de overflow.

4.4) Varivel REAL (padro BORLAND):


19

Padro: 6 bytes ou 48 bits (preciso de 12 a 13 dgitos significativos equivalentes).


1
s

39
f

8
e

msb

lsb msb

lsb

onde
polarizao = (129) 10 = 27 + 1 = (10000001)2
Um nmero v armazenado no registro acima interpretado da seguinte forma:
Se 0 < e <= 255, ento v = (-1)s . 2(e-129) . (1,f)2
Se e = 0,
ento v = 0,
(independe de f)
Ex. 41: Simulao do algoritmo para avaliao da preciso decimal equivalente de uma varivel.
p1=1
repita
p1=p1/2
p2=1+p1
at p2=1
Devemos ressaltar que no caso da operao soma os expoentes devem estar alinhados pelo maior
expoente para que a soma possa ocorrer, independentemente da normalizao da representao em
ponto flutuante (vide cap. 3). Assim,

e = (01111111) 2 = (127) 10

f = 00000000000000000000000
i). Representao da unidade: 1 =
0

0 1 1 1 1 1 1 1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
(00 00 80 3F - representao em hexadecimal)

1 = (-1)0 . 2 (127-127) . (1,00000000000000000000000)2


1 = 20 . (1,00000000000000000000000)2
ii). Representao do menor nmero (P1) que pode ser somado a unidade (note que no momento da
soma os expoentes devem estar alinhados para que a soma possa ocorrer no processador aritmtico
e portanto o expoente de p1 deve ser o mesmo da representao da unidade):

P1 =

e = (01111111) 2 = (127)10

f = 00000000000000000000001

- expoente igual a unidade (item i)


- menor mantissa possvel

P1 = (-1)0 . 2 (127-127) . (0,00000000000000000000001)2 -

este valor de P1
conseguido aps 23
divises binrias.

Ento,
1
P1
1+P1
Logo,

= 2 0 . (1,00000000000000000000000)2
= 2 0 . (0,00000000000000000000001)2
= 2 0 . (1,00000000000000000000001)2

P1 = 20 . 2-23 = 2-23 = 1,1921.10-7


Neste caso a preciso decimal equivalente est entre 7 e 8 dgitos significativos.

20

P1 = (-1)0 . 2 (104-127) . (1,00000000000000000000000)2 -

P1 =
0

valor normalizado

e = (01101000) 2 = (104)10

f = 00000000000000000000000

0 1 1 0 1 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
(00 00 00 34 - representao em hexadecimal)

Aps a 23a diviso de P1=1 por 2, P1 representar um nmero desprezvel na soma frente a
unidade, pois 1 + P1 = 1.
Exerccios:
4.1).
a). Avalie as regies de underflow e overflow de cada uma das variveis apresentadas acima
e faa uma verificao em um compilador Pascal ou C;
b). Avalie a preciso decimal equivalente de cada varivel, atravs da frmula de
equivalncia;
4.2). Simule o algoritmo do exemplo 41, em um compilador Pascal ou C, usando as variveis
apresentadas e determine o menor valor binrio de p1 que pode ser adicionado a unidade sem perda
total de significao (com operaes aritmticas em binrio), avaliando a preciso decimal
equivalente. Acompanhe os resultados na janela 'watch' com as variveis registradas em
hexadecimal.

21

4.5). REPRESENTAO DE VARIVEIS INTEIRAS


Os formatos para representao de variveis do tipo inteiras podem seguir diversos padres:
4.5.1). Shortint: so tipos inteiros limitados aos valores - 12810 e + 12710, sua representao interna
feita em forma de byte (8 bits) com bit de sinal. Valores negativos so armazenados em forma de
complemento de dois.
Ex. 42:

+ 010
+ 12710

= 000000002 = 0016
= 011111112 = 7F16
- 12810 = 28 - 128 = 128 = 100000002 = 8016
- 510
= 28 5 = 123 = 111110112 = FC16

Obs.: Veja como feito o complemento de dois no exemplo 32.


Ex. 43: Se for efetuada a operao de adio entre + 12710 e -12710, em forma de complemento e
dois, tem-se:

+ 127

127

01111111

10000001
00000000

4.5.2). byte: so tipos inteiros sem bit de sinal (no permite armazenar negativos). Esto limitados
aos valores 0 e 255.
Ex. 44:

010
= 0000 00002 = 0016
25510 = 1111 11112 = FF16

4.5.3). Integer: so tipos inteiros limitados faixa entre - 32768 e + 32767, correspondendo ao
armazenamento como 2 bytes com bit de sinal ("negativos" so armazenados em forma de
complemento de dois).
Ex. 45:
Zero

010

Maior Positivo

= 0000 0000 0000 0000 = 000016

+3276710 = 0111 1111 1111 1111 2 = 7FFF16


-3276710 = -0111 1111 1111 11112
1000 0000 0000 00002 complemento de um de -3276710
+1
1000 0000 0000 00012 complemento de dois de -3276710
= 800116

Menor Negativo -3276810 = -1000 0000 0000 00002


0111 1111 1111 11112
+1
1000 0000 0000 00002
= 800016

complemento de um de -3276810
soma 1
complemento de dois de -3276810

Agora observe o que acontece se for executada a soma da 'unidade' com o 'maior positivo' da
varivel Integer 3276710, ou seja, estamos calculando um nmero na regio de overflow:
Unidade
Maior Positivo

110 = 0000 0000 0000 00012 = 000116


+
+3276710 = 0111 1111 1111 11112 = 7FFF16

110 +3276710 = 1000 0000 0000 00002 = 800016 Complemento de 2 (inicia com 1)
22

Precisamos obter o complemento de 2 novamente para obter o nmero 'negativo' armazenado:


0111 1111 1111 11112 complemento de 1 de 1000 0000 0000 00002
+1
soma 1
-1000 0000 0000 00002 complemento de 2 de 1000 0000 0000 00002
= -800016
= -3276810
Ento, cuidado podemos achar que 110
3276810.

+3276710 = +3276810, mas estamos armazenando -

4.5.4). Word: armazenamento de 2 bytes sem bit de sinal limitado a faixa entre 0 e 65535.
Ex. 46:

= 000016
010
6553510 = 1111 1111 1111 11112 = FFFF16
6553610 = 000016 = 010

Obs.: Note que a representao de nmeros inteiros acima do limite superior acarreta uma grande
perda de significao, cuja representao volta ao zero (vide ex. 45).
4.5.5). Longint: corresponde ao double word (4 bytes) com bit de sinal. Limita-se entre
2147483648 (-231) e +2147483647 (231 - 1). Longint equivale ao 'Int' da linguagem C/C++.

Ex. 47: 010 = 0000 0000 0000 0000 0000 0000 0000 00002 = 00 00 00 0016
+214747364710 = 0111 1111 1111 1111 1111 1111 1111 11112 = 7F FF FF FF16
-214748364710 = - 0111 1111 1111 1111 1111 1111 1111 11112
1000 0000 0000 0000 0000 0000 0000 00002
complemento de 1
+1
1000 0000 0000 0000 0000 0000 0000 0001 = 8000000116 complemento de 2
-214748364810 = -1000 0000 0000 0000 0000 0000 0000 00002
0111 1111 1111 1111 1111 1111 1111 11112
complemento de 1
+1
1000 0000 0000 0000 0000 0000 0000 00002 = 8000000016 complemento de 2
Observe novamente que se for executada a soma da 'unidade' com o 'maior positivo' da varivel
Longint 214747364710, estaremos calculando um nmero na regio de overflow da varivel
Longint:
Unidade
Maior Positivo

110
= 0000 0000 0000 0000 0000 0000 0000 00012 = 00 00 00 0116
+
+214747364710 = 0111 1111 1111 1111 1111 1111 1111 11112 = 7F FF FF FF16

110 +214747364710 = 1000 0000 0000 0000 0000 0000 0000 00002 = 80 00 00 0016
um complemento de 2 (inicia com 1)
Precisamos obter o complemento de 2 novamente para obter o nmero 'negativo' armazenado:
1000 0000 0000 0000 0000 0000 0000 00002
0111 1111 1111 1111 1111 1111 1111 11112 complemento de 1
+1
soma 1
-1000 0000 0000 0000 0000 0000 0000 00002 complemento de 2
= -80 00 00 00 00 00 0016
= -214748364810
Ento, cuidado podemos achar que 110
armazenando -214748364810.

+214748364710 = +214748364810, mas estamos

23

Obs.: Note que o armazenamento de inteiros negativos sempre feito em forma de complemento
dois. Isto uma vantagem do ponto de vista de operaes aritmticas, pois o carregamento
unidade aritmtica j est na sua forma final com expoentes iguais (alinhados) para efetuar
operaes de adio (ou subtrao). Note que isto s possvel, pois os expoentes equivalentes
notao de Tipos Inteiros so todos iguais a zero.

de
na
as
na

Por exemplo, tem-se a seguinte nomenclatura em C:


Type

Bytes

Bits

2
2
4
4
4
1
1
4
8
12

16
16
16
32
32
8
8
32
64
96

short int
unsigned short int
unsigned int
int
long int
signed char
unsigned char
float
double
long double

Range
-32,768
0
0
-2,147,483,648
-2,147,483,648
-128
0

->
->
->
->
->
->
->

+32,767
+65,535
+4,294,967,295
+2,147,483,647
+2,147,483,647
+127
+255

(16kb)
(32Kb)
( 4Gb)
( 2Gb)
( 2Gb)

4). TIPOS DE ERROS EXISTENTES EM MQUINAS DIGITAIS


muito importante conhecer as possibilidades de erros na representao numrica em
mquinas digitais e entender as suas causas para se poder estabelecer a confiabilidade de um
software.
Todo estudo apresentado neste captulo necessrio para que se possa entender as causas
de cada tipo de erro existente em mquinas digitais.
Pode-se classificar os erros nos seguintes tipos principais:
5.1) Erros Inerentes:
So aqueles existentes nos dados de entrada de um software numrico. Decorre, por
exemplo, de medies experimentais, de outras simulaes numricas, ...
5.2) Erros de truncamento:
Ocorrem quando quebramos um processo matematicamente infinito, tornando-o finito, por
incapacidade de execuo ou armazenamento.
A seguir sero apresentados exemplos de fontes de erro de truncamento:
x

Ex. 48: Veja a seguinte expanso em srie infinita para e :

ex = 1+

x x2 x3
xn
+ + + ... +
+ ...
1! 2! 3!
n!

Sabe-se que no possvel usar infinitos termos para avaliar uma funo, ento necessrio
estabelecer um limite para o nmero de parcelas utilizadas. Esta limitao nas parcelas gera um erro
de truncamento na srie, que corresponde ao somatrio dos termos abandonados.
Obs.: A representao de f(x) em srie ser mostrada de forma ilustrativa a seguir,
possvel representar, de forma exata, uma funo f(x) em um ponto qualquer x0+x a partir
de sua representao em x0, atravs de expanso em Sries de Taylor, dada genericamente por:

x
x2
x3
xn
f ( x0 + x) = f ( x0 ) + f ' ( x0 ). + f ' ' ( x0 ). + f ' ' ' ( x0 ). + ... + f ( n ) ( x0 ). + ...
1!
2!
3!
n!
Expandindo a funo, por exemplo, em torno de x0 = 0 (quando x0=0, temos o caso particular
da srie Maclaurin), tem-se:
24

f ( x ) = ex
f ( x 0 = 0) = e 0 = 1
f '( x 0 = 0) = e0 = 1
f ' '( x0 = 0) = e0 = 1
M
n
f ( x 0 = 0) = e0 = 1
Gerando ento,

f (0 + x ) = e x + 0 = 1 +

x x 2 x3
xn
+
+ + ... +
+ O ( x ( n +1) )
1! 2! 3!
n!

Se aproximamos e com 'n' termos, estamos desprezando

ex 1+

O( x ( n +1) ) =

x n +1
x n+2
+
+ ...
(n + 1)! ( n + 2)!

x x 2 x3
xn
+
+ + ... +
1! 2! 3!
n!
( n +1)

) caracteriza o Erro de Truncamento da aproximao, lembrando que x,


Assim, o termo O( x
nesse caso, representa o incremento de x entre o ponto inicial x0 e o novo ponto x0+x.
Ex. 49: Aproximaes numricas de limites de funes,
Por definio f'(x) dada por,

f ( x + h) f ( x)
h 0
h

f ' ( x) = lim

Porm, se este limite exato no puder ser obtido, pode-se promover uma aproximao
numrica deste, tomando o incremento h como finito e promovendo sucessivos refinamentos. Assim,
pode-se obter uma seqncia de aproximaes sucessivas de f'(x), com incremento cada vez menor,
mas no se pode chegar ao incremento nulo (h 0). Ento, tambm se quebra o processo
matemtico, de refinamentos sucessivos, gerando um erro de truncamento do processo, que era
matematicamente infinito, tornando-o finito.
Ex. 50: Aproximaes de derivadas
Para avaliar numericamente f '( x 0 ) a partir de trs pontos vizinhos de f(x):
f(x0 - h)
|
x0 - h

f(x0)
|
x0

f(x0 + h)
|
x0 + h

Pode-se subtrair f(x0 - h) de f(x0 + h):

h2
h3
h4
hn
iv
n
f ( x 0 + h) = f ( x 0 ) + f '( x 0 ) h + f ''( x 0 ) + f '''( x 0 ) + f ( x 0 ) +...+ f ( x 0 )
2!
3!
4!
n!
-

h2
h3
h4
hn
iv
n
f ( x 0 h) = f ( x 0 ) f '( x 0 ) h + f ''( x 0 ) f '''( x 0 ) + f ( x 0 ) ...+ f ( x 0 )
2!
3!
4!
n!
_______________________________________________________________________

h3
h4
IV
f ( x 0 + h) f ( x 0 h) = f ' ( x 0 )( 2 h) + 2. f ' ' ' ( x 0 )
+ 2. f ( x 0 )
+...
3!
4!
25

f ' (x 0 ) =

f ( x 0 + h) f ( x 0 h ) 1
h3 1 V
h5
. f ' ' ' (x0 )
. f ( x 0 ) +...
2h
h
3! h
5!

f ( x 0 + h) f ( x 0 h)
O( h 2 )
2h
2
onde o termo de segunda ordem O( h ) representa o somatrio de todos os termos decorrentes da
f ' (x 0 ) =

aproximao em srie, e definido como Erro de Truncamento da aproximao.

h2
h4
V
O( h ) = f ' ' ' ( x 0 )
+ f ( x 0 ) +...
3!
5!
2

Ento, desprezando o termo O(h2), assumindo assim um erro de truncamento de segunda


ordem, tem-se uma aproximao para f'(x0) dada por,

f ' (x0 )

f ( x 0 + h) f ( x 0 h)
2h

5.3). Erros de Arredondamento


Ocorrem quando so desprezados os ltimos dgitos que, ou no so fisicamente
significativos na representao numrica, ou esto alm da capacidade de armazenamento na
mquina digital.
5.3.1). Arredondamento manual:
Ex. 51: Representar os seguintes nmeros com quatro dgitos significativos:
69,348 = 69,35 parcela descartada maior que 5 +1 no dgito anterior.
69,34433 = 69,34 parcela descartada menor que 500 dgito anterior inalterado.
69,335 = 69,34 parcela descartada igual a 5 e dgito anterior impar
+1 no dgito anterior.
69,345 = 69,34 parcela descartada igual a 5 e dgito anterior par
dgito anterior inalterado.
No exemplo anterior o arredondamento foi feito de forma ponderada, baseado em critrios
estatsticos para descartar parte dos dgitos do nmero. Pode-se seguir o seguinte raciocnio:
Analisando estatisticamente um conjunto de nmeros que tero parcelas descartadas.
Podemos admitir que, em uma distribuio normal de erros, 50% dos valores a descartar so maiores
que 5 e que 50% so menores, ento
- Se todos os dgitos a descartar forem simplesmente cancelados, sem nenhum critrio de
compensao, o conjunto inicial de nmeros perde parte de seu significado, gerando um erro de
arredondamento global.
- Se, por outro lado, procurar-se distribuir o erro de arredondamento entre os nmeros do
conjunto escolhido, pode-se minimizar os efeitos globais dos erros de arredondamento sobre este
conjunto. Assim, promove-se uma atualizao do dgito anterior ao descartado nos 50% dos casos
cuja parcela descartada maior que 5, adicionando-se uma unidade. Nos demais casos
simplesmente descarta-se a parcela indesejada, sem nenhuma atualizao no dgito anterior. Desta
forma distribui-se, estatisticamente, a parcela perdida entre os elementos do conjunto.
No caso especfico de parcelas descartadas iguais a 5, tem-se um impasse que deve tambm
ser decidido estatisticamente. Nestes casos tambm dividem-se as possibilidades em dois grupos,
um com parcela anterior par e outro com parcela anterior impar. No primeiro grupo simplesmente
descartam-se os dgitos indesejados, sem nenhuma atualizao no dgito anterior, e segundo grupo,
com parcela anterior impar, atualiza-se este dgito adicionando-lhe uma unidade. Tambm nesta
situao procurou-se distribuir estatisticamente o erro devido as parcelas descartadas.
O arredondamento tambm pode ser feito por cancelamento puro, onde a parte indesejada
26

do nmero simplesmente cancelada, independente do seu valor, assumindo um erro de


arredondamento global para valores menores em todos os elementos de um conjunto de nmeros.

5.3.2). Arredondamento em mquinas digitais:

Neste caso o arredondamento pode ocorrer nas seguintes situaes bsicas:


(i). Armazenamento de racionais ilimitados:
Ex. 52: Representar a frao (1/3)10 em F(10,6,-99,+99) (normalizao: vrgula antes do 1 dgito).
0
(1 / 3)10 = (0, 333333
123 333....10 )10
t =6

(1/3)10 (0,333333.100)10 Representao arredondada de (1/3)10.


Ex. 53: Representar a frao decimal (1/10)10 na mquina binria F(2,10,-15,+15).

1
1
=
= (0,00011001100110011...) 2
10 10 1010 2

dzima peridica em base binria

(1 / 10)10 = (0,11001100110011
...) 2 .2 3
14243
t = 10

1

10 10

(0,1100110011)2.2-3

Obs.: Note que uma frao decimal exata (1/10 = 0,1) quando armazenada em uma mquina binria
se transforma em uma frao binria peridica, que deve ser aproximada devido limitao do
registro em ponto flutuante utilizado no armazenamento.
(ii). Armazenamento de Irracionais:
O conjunto dos nmeros irracionais compreende todas as representaes atravs de dzimas
no peridicas e infinitas.
Conjuntos:

N - Naturais
Z - Inteiros
Q - Racionais
I - Irracionais
R - Reais
C - Complexos

Obs.: Existem representaes que generalizam todos os nmeros como complexos, de modo
que um complexo com parte imaginria nula se torna um real.
27

Ex. 54: Representar em F(10,6,-99,+99),


(a). 3.141592653589...
(0,3141592653589...)10 .10+1
(0,314159)10 .10+1
(b)

2 1.414213562373...
2 (0,1414213562373...) . 10+1
10
2 (0,141421) . 10+1
10

(iii). Abrangncia limitada da notao em ponto flutuante:


Ex. 55: Efetue a soma de a = 0,0135 e b = 10,51 em F(10,4,-10,+10) e g = 0.
Representao em ponto flutuante:
a = 0,1350 . 10-1
b = 0,1051 . 102
Vamos implementar a soma, de forma simplificada, usando alinhamento pelo maior expoente
a = 0,1350 . 10-1
b = 0,1051 . 102
a = 0,000135 . 102
+
b = 0,1051 . 102
a + b = 0,1052 . 102
Ex. 56: Efetue a soma de a = (10,01)2 e b = (0,0101)2 em F(2,4,-15,+15) e g = 0.
Representao em ponto flutuante:
a = (0,1001)2 . 22
b =(0,1010) . 2-1
2

Vamos novamente implementar a soma, de forma simplificada,


a = (0,1001)2 . 22
b =(0,0001010)2 . 22
a + b = (0,1010)2 . 22
Obs.: Estes fatos ocorrem, geralmente, na soma de nmeros com potncias muito diferentes. Neste
caso o nmero de menor potncia pode perder significao, total ou parcial, frente ao nmero de
maior potncia. Ou seja, devido a faixa limitada de abrangncia dos registradores em ponto flutuante,
o nmero menor perde dgitos significativos quando comparado com o nmero maior.

(iv). Mudana de base para armazenamento e operaes aritmticas


Sabe-se que a representao de nmeros em base binria amplamente utilizada em
mquinas digitais (computadores), devido as suas vantagens no armazenamento e implementao de
operaes aritmticas.
O que ocorre na prtica que a interface entre o usurio e os computadores deve ser feita
28

em base decimal, para que a representao de grandezas fsicas seja naturalmente entendida pelos
usurios dos computadores.
Ento toda grandeza fsica expressa inicialmente em base decimal, e o seu efetivo
armazenamento nos computadores feito em base binria, por isso necessria uma converso
entre as bases decimal e binria e vice-versa.
Ex. 57: Representar (0,1)10 em F(2,10,-15,+15).

(0,1)10 = (0,00011001100110011...) 2 frao decimal exata gerou dzima peridica binria


(0,1)10 = 24.(1,100110011.0011....)2 representao exata, anterior ao arredondamento
(0,1)10 24.(1,100110011.) 2 (0,099975585)10 representao aproximada, ps arredondamento
Nesse caso, o Erro de Arredondamento pode ser calculado, pois temos o Valor Exato (VE) original e
o Valor Aproximado (VA) , ps arredondamento:
VE= (0,1)10
VA= 2

.(1,100110011.)2 = (0,099975585)10

Erro Relativo % =

VA - VE
.100 % = -0,02441%
VE

Conseqncias:
Os erros de arredondamento podem causar:
(a). Perda de significao:
Esta uma conseqncia de erros de arredondamento, que gera perda, total ou parcial, de
dgitos significativos.
Esta perda de dgitos significativos pode ocorrer nos seguintes casos:
(a1). Soma de parcelas de grandezas muito diferentes:
Vide exemplos 55 e 56 apresentados anteriormente.
(a2). Subtrao de parcelas de grandezas muito prximas:
Ex. 58: Efetuar a - b com a = 0,1351 e b = 0,1369 em F(10,4,-10,+10) e g = 0.
Efetuando a subtrao de forma simplificada tem-se:
a = 0,1351
- b = - 0,1369
a - b = - 0,0018 = - 0,1800.10-2
Note que o resultado final no sofreu arredondamentos, mas perdeu dgitos significativos,
pois as parcelas a e b tem quatro dgitos significativos e a subtrao a - b tem apenas dois dgitos
significativos.
Obs.: A expresso de Baskara, para a soluo exata da equao de segundo grau, muitas vezes,
aparece expressa de forma alternativa para minimizar perdas de significao:
Para a x2 + b x + c = 0, tem-se as seguintes razes:

x1, 2

b b2 4ac
=
2a
(Formula de Baskara)
29

x1,2 =

2c
b b 2 4ac (Frmula obtida da racionalizao do numerador da expresso
anterior)

Pode-se observar que as duas formas formas apresentadas para a soluo podem
apresentar perdas de significao, quando a parcelas b e b 4ac forem de magnitudes prximas
e estiverem sujeitas a uma operao de subtrao.
Assim, recomenda-se utilizar as expresses propostas acima, escolhendo o sinal do
2

radicando de modo que as parcelas b e b 4ac fiquem sujeitas a operao de adio nas duas
parcelas, em uma expresso obtendo x1 e em outra obtendo x2.
2

Exerccios:
5.1). Achar as duas razes de x2 + 62,10 x + 1 = 0, utilizando o operador aritmtico
F(10,4,-99,+99) e g = 0 (quatro dgitos significativos nas operaes).
a). Use a frmula de Baskara normal;
b). Use a frmula de Baskara racionalizada;
c). Avalie os erros relativos nas duas formas de avaliao das razes, sabendo que os seus
valores exatos so x1 = - 0,01610 e x2 = - 62,08.
(a3). Nas operaes de diviso:
Em geral, nas operaes de diviso entre duas parcelas quaisquer, normalmente, so
gerados resultados com um nmero de dgitos maior que o permitido na representao em ponto
flutuante.
Ex. 59: Efetuar a / b, com a = 1332 e b = 0,9876, no operador F(10, 4,-99,+99) e g = 0.
Efetuando esta operao em uma calculadora de 10 dgitos, tem-se,
a / b = 1348,72418
Porm, se esta operao est sujeita a apenas 4 dgitos significativos (F10,4,-99,+99), o
resultado ser,
a / b = 1348
Causando desta forma uma perda de dgitos significativos.
(b). Instabilidade Numrica:
A acumulao sucessiva de erros de arredondamento pode conduzir um algoritmo de
repetio a resultados absurdos, por exemplo,
A avaliao sucessiva de x = f(x) com f(x) = (N+1) x - 1 uma constante x=1/N (na
ausncia de arredondamentos)
Verifique esta afirmao, implementando o exerccio 4.2 em computador.
Existem tambm outras formas de instabilidade, como aquelas associadas ao modelo
matemtico, por exemplo,

f (x) =

27985
9 ,1 x 2

Ex. 60: Dada a funo


Avalie f(x) em x = 3 e em x = 3,00001 utilizando uma calculadora cientfica com
representao de 10 dgitos.
f(3)
= 279850
f(3.00001) = 280018,0108
30

Note que uma variao de 0,0003333% na varivel independente x gera uma variao de
0,06% no resultado final de f(x), ou seja, uma variao no resultado de cerca de 180 vezes superior.
Isto carateriza uma instabilidade intrnseca do modelo matemtico em relao aos seus dados de
entrada.
Ex. 61: Avaliar f(x) = 1 - cos(x) para x = 10-4 (radianos), na mesma calculadora cientfica (10 dgitos).
f(10-4) = 4,9 . 10-9
Se for utilizada uma forma alternativa para o modelo da funo:

1 + cos( x ) sen 2 ( x )

=
1 + cos( x ) 1 + cos( x )

g(x) = (1 - cos(x)) .
tem-se ento,
g(10-4) = 5 . 10-5

Note que devido a perda de dgitos significativos por arredondamento, duas representaes
idnticas da mesma funo geram respostas diferentes. Neste caso, tambm tem-se um exemplo de
instabilidade do modelo, porm neste exemplo especfico, se tem a possibilidade de reformular a sua
representao, gerando uma forma com menor perda de significao (g(x)).
Consideraes finais:
(i). A avaliao de erros numricos em mquinas digitais pode ser feita caso se tenha disponibilidade
de uma estimativa do valor exato para o resultado desejado.
Desta forma pode-se avaliar o Erro Numrico atravs das seguintes formas:
- Erro absoluto = | Valor obtido - Valor exato |
- Erro relativo

= Erro absoluto
Valor exato

- Erro percentual = Erro relativo . 100%


A representao dos erros numricos em forma de Erro relativo (ou percentual) mais
realstica (vide exerccio 4.3)
(ii). A estimativa de valores exatos, ou mais prximos do exato, para os resultados de algoritmos
numricos, podem ser obtidas das seguinte formas:
- Estimar o valor mais exato como sendo aquele obtido com o algoritmo numrico
operando em dupla preciso, ou seja, reavalia-se o valor obtido numericamente, mas agora
com preciso superior, na expectativa de que os resultados sejam mais exatos.
- Tentar estimar o valor mais exato atravs de simulao do algoritmo numrico em Sistemas
de Computao Algbrica (SCA). Nestes sistemas pode-se recorrer a simulaes com preciso
ilimitada e alguns casos especiais possvel se proceder a simulao exata do algoritmo.
Obs.: Existem outras alternativas, como por exemplo, proceder simulaes numricas utilizando
matemtica intervalar, de forma que se possa limitar o erro existente a um intervalo aritmtico. Outra
possibilidade o tratamento do erro como uma varivel de comportamento estatstico, deste modo
pode-se prever os limites do erro, segundo um tratamento estatstico de variveis.
Exerccios:

5.2). Implemente o algoritmo abaixo em um compilador com aritmtica numrica para P1 e P2 tipo
real (Pascal, C, Fortran, ...)
p1:= 1;
31

i:= FALSE;
j:= 1;
Repita
p1:= p1/2;
p2:= p1 + 1;
j=j+1;
SE p2 <= 1 ento
Escreva ('Para minha precisao unitria', p1, ' eh 0 ', 'em ', j, ' repeticoes');
i:= TRUE;
fim SE
At (i=TRUE);
Avalie a posio do 1 dgito significativo de P1, que indica a sua preciso relativa ao nmero 1
(unidade). Verifique que P1 vai diminuindo at que fique to pequeno que no altera mais o valor de
P2. Avalie a influncia dos erros de arredondamento no resultados.

5.3) Considerando o compilador Turbo Pascal e suas cinco variveis do tipo real:

TIPO
real
single
double
extended
comp

FAIXA
2.9e-39...1.7e38
1.5e-45..3.4e38
5.0e-324...1.7e308
3.4e-4932..1.1e4932
-9.2e18..9.2e18

DGITOS
11-12
7-8
15-16
19-20
19-20

BYTES
6
4
8
10
8

Execute o seguinte algoritmo e avalie seus resultados em um processador numrico:


Variveis reais e, f, g, h, x, y;
h:= 1/2;
x:= 2/3 - h;
y:= 3/5 - h;
e:= (x + x + x) - h;
f:= (y + y + y + y + y) - h;
g:= e/f;
Imprima ('h = ' ,h, ' ',h:5:15); {imprima em notao cientfica e tambm na notao decimal}
Imprima ('x = ' ,x, ' ',x:5:15);
Imprima ('y = ' ,y, ' ',y:5:15);
Imprima ('e = ' ,e, ' ',e:5:15);
Imprima ('f = ' ,f, ' ',f:5:15);
Imprima ('g = ' ,g, ' ',g:5:15);
Experimente trocar o tipo das variveis, no inicio do programa, execute o programa novamente e
compare os resultados, com os tipos REAL, SINGLE, DOUBLE, EXTENDED E COMP.

5.4). Dadas algumas estimativas do valor exato e de valores aproximados numericamente em um


algoritmo, avalie o erro absoluto, relativo e percentual, existente nas seguintes situaes:
a). Valor aproximado = 1102,345 e Valor exato = 1100,9.
b). Valor aproximado = 0,01245 e Valor exato = 0,0119.
c). Verifique que o erro absoluto obtido, segundo as vrias formas de avaliao, pode no refletir a
realidade.
Concluses:
O perfeito entendimento das causas dos erros numricos gerados em mquinas digitais um
fator decisivo para que o analista numrico possa fazer a escolha computacionalmente mais eficiente,
32

no momento de programar a resoluo de um modelo matemtico. Para resolver um determinado


modelo o analista numrico deve se preocupar com:

a escolha de mtodos de resoluo com menor nmero de operaes


aritmticas envolvidas;

a escolha de um algoritmo com menor nmero de recursividade;

a escolha de um compilador, para implementar o algoritmo, que represente


as variveis envolvidas com preciso suficientemente grande;
No final de todo o processo o analista numrico deve ser capaz de:
obter uma soluo de custo mnimo, ou seja, com menor demanda de memria e menor
tempo de CPU;
dimensionar o grau de confiabilidade dos resultados obtidos como soluo do modelo
matemtico.
Pois obter resultados em um programa de computador muito fcil, qualquer programa
compilado gera resultados numricos, mas da a se dizer que estes resultados so as respostas para
a soluo de um modelo matemtico, tem-se um longo caminho. necessrio que se faa um
minucioso processo de anlise numrica dos resultados obtidos, para depois atribui-los soluo de
um modelo matemtico.

33

2. SISTEMAS DE EQUAES LINEARES


2.1 - INTRODUO
Uma equao considerada linear quando as operaes envolvidas entre incgnitas
so apenas operaes lineares.
Por exemplo:
a). x + y / 4 z = 0

equao linear

b). x2 + 2y + 1 = 0

equao no linear

c). 1 / x + y + z = 0

equao no linear

Quando vrias equaes lineares so agrupadas, de modo que todas devam ser
satisfeitas simultaneamente por uma mesma soluo, tem-se um sistema de equaes lineares.
Existem aplicaes de sistemas de equaes lineares nos mais variados segmentos da
cincia e tecnologia.
Def.: Um sistema de ordem n, constitudo por n equaes lineares a n incgnitas, toda
expresso do tipo:

Ax=b

a 11
a
21
M

a n1

a 12
a 22
M
a n2

a 1n x 1
L a 2 n x 2
=
L M M

L a nn x n
L

b 1
b
2
M

b n

(1)

onde A a matriz de coeficientes, x o vetor de incgnitas e b o vetor de termos


independentes.
Exemplos de sistemas de equaes lineares:
x 1 + x 2 = 20
x1 x 2 = 4

a).

1 x

20

1
b).
. x = 4
1

Representao matricial do sistema (a).

A resoluo de sistemas de equaes lineares pode ser obtida atravs de mtodos


diretos, iterativos ou de otimizao.

2.2). Mtodos Diretos:

So mtodos que permitem obter a soluo do sistema realizando-se um nmero finito


de operaes aritmticas. Portanto, o esforo computacional necessrio para se obter uma
soluo do sistema perfeitamente previsvel. Esta soluo seria exata se no fosse a presena
de erros de arredondamento.
34

So normalmente empregados a sistemas lineares com matrizes de coeficientes densas


e de porte mdio (at 1000 equaes).
Dentre os mtodos diretos mais comuns esto:

2.2.1). Mtodo de Eliminao de Gauss:

Consiste na transformao da matriz expandida (matriz de coeficientes acrescida da


coluna de termos independentes) em matriz triangular, superior ou inferior, seguida de um
processo de substituies sucessivas para explicitar a soluo do sistema. Esta transformao
em matriz triangular (ou escalonamento) conseguida atravs da aplicao sucessiva de
operaes elementares sobre linhas (ou sobre colunas) na matriz expandida, buscando a
eliminao seletiva de elementos no nulos para torna-la uma matriz triangular. Podemos
associ-lo a um processo de pivotamento, parcial ou total, que promove uma troca seletiva de
linhas (ou colunas), visando tomar pivs (elementos da diagonais principais) com maior
mdulo possvel, e assim procurando evitar a presena de pivs nulos.
Ex. 1): Resolver o seguinte sistema de equaes lineares pelo mtodo de eliminao de Gauss
sem pivotamento adotando operaes aritmticas com 4 (quatro) dgitos significativos e
arredondamento ponderado.
0 .448 x1 + 0 .832 x 2 + 0 .193 x 3 = 1

0 .421 x1 + 0 .784 x 2 0 .207 x 3 = 0


0 .421 x + 0 .784 x + 0 .279 x = 0
1
2
3

Na forma matricial tem-se


0 .448
0 .421

0 .421

0 .832
0 .784
0 .784

0 .193 x1 1
0 .207 x 2 = 0
0 .279 x 3 0

1). Gerao da matriz expandida:


0 .448
0 .421

0 .421

0 .832
0 .784
0 .784

0 .193 M 1
0 .207 M 0
0 .279 M 0

2). Triangularizao correspondente a primeira coluna (k = 1):


k=1

0 .448
0 .421

0 .421

0 .832
0 .784
0 .784

0 .193 M 1
0 .207 M 0 L 2 L 2 0 .421 /( 0 .448 ) L1 L 2 L 2 0 .9397 .L1
0 .279 M 0 L 3 L 3 ( 0 .421 ) /( 0 .448 ) L1 L 3 L 3 + 0 .9397 L 1

35

0.832
0.193 M
1
0.448

0
0.002143 0.38837 M - 0.93973

0
1.56586 0.46037 M 0.93973

3). Triangularizao correspondente a segunda coluna (k = 2):


k=2

0.832
0.193 M
1
0.448

0
0.002143 0.38837 M - 0.93973

0
1.56586
0.46037 M 0.93973 L3 L3 (1.5659 / 0.002143) L 2 L3 L3 730.7046L 2
0.832
0.193 M
1
0.448

0
0.002143 0.38837 M - 0.93973

0
0
284.25403 M 687.63333

4). Processo de retrosubstituio sucessiva:


Aps a triangularizao analisa-se o sistema de equaes equivalente, gerado a partir
do processo de eliminao empregado:
0 .448 x1 + 0 .832 x 2 + 0 .193 x 3 = 1

0 x1 + 0 .002143 x 2 0 .38837 x 3 = 0 .93973

0 x1 +
0 x 2 + 284 .25403 . x 3 = 687.63333

Obs.: Note-se que o valor de x3 pode ser diretamente obtido a partir da equao 3, uma vez
que esta equao independe de x1 e x2. Posteriormente os valores de x2 e x1 so obtidos das
equaes 2 e 1, respectivamente.
x3 = 687.63333/284.25403

x3 = 2.41908

x2 = (0.93973 (0.38837 x3 )) / 0.002143 x2 = -0.10821


x1 = ( 1- 0.832.x2 0.193.x3 ) /(0.448)

x1 = 1.39629

Portanto, a soluo do sistema correspondente ao exemplo 1 :


S = { 1.39629, -0.10821, 2.41908}
Se os resduos ( r = | b - A x | ) de cada uma das equaes do sistema linear proposto
forem avaliados, normalmente so obtidos valores residuais no nulos das equaes,
decorrentes de erros de arredondamento.
Por exemplo,

36

r1 = | 0.448x1 + 0.832x2 + 0.193x 3 1| = 0.00000


r2 = | 0.421x1 + 0.784x2 0.207x 3 0 | = 0.00001
r3 = | - 0.421x1 + 0.784x 2 + 0.279x 3 0 | = 0.00000
Neste caso, tambm pode ser calculado o erro exato, dado por
erro = | Xexato - Xaproximado |.
A soluo exata estimada abaixo foi encontrada atravs do OCTAVE (cgs(A, b)), com 16
dgitos significativos :
Xexato1 = 1.396286256155218
Xexato2 = -0.111080218034935
Xexato3 = 2.419080303873203
Ex. 2): Resolver o seguinte sistema de equaes lineares pelo mtodo de eliminao de Gauss
com pivotamento parcial utilizando operaes aritmticas com 4 (quatro) dgitos
significativos e arredondamento ponderado.
0 .421 x1 + 0 .784 x 2 + 0 .279 x 3 = 0

0 .421 x1 + 0 .784 x 2 0 .207 x 3 = 0


0 .448 x + 0 .832 x + 0 .193 x = 1
1
2
3

Na forma matricial tem-se


0 .421
0 .421

0 .448

0 .784
0 .784
0 .832

0 .279 x1 0
0 .207 = x 2 = 0
0 .193 x 3 1

1). Gerao da matriz expandida:


0 .421
0 .421

0 .448

0 .784
0 .784
0 .832

0
0 .207 0
0 .193 1
0 .279

2). Pivotao parcial, correspondente ao primeiro piv (k=1):


(i). Busca do maior elemento em mdulo da coluna k = 1:
k=1
0 .421
0 .421

i = 3 ( 0 .448 )

0 .784
0 .784
0 .832

0
0 .207 0
0 .193 1
0 .279

(maior mdulo da coluna k=1 est na linha i = 3).

(ii). troca de linhas:


0 .421
0 .421

( 0 .448 )

0 .784
0 .784
0 .832

0 L1 L 3
0 .207 0
0 .193 1 L 3 L1
0 .279

(Troca da linha L1 com L3 e vice-versa)

37

(iii). Matriz pivotada:


( 0 .448 )
0 .421

0 .421

0 .193 M 1
0 .207 M 0
0 .279 M 0

0 .832
0 .784
0 .784

3). Processo de triangularizao, correspondente ao primeiro piv (k=1):


( 0 .448 )
0 .421

0 .421
( 0 .448 )
0

0 .193 M 1
0 .207 M 0 L 2 L 2 ( 0 .421 / 0 .448 ) L1 L 2 L 2 0 .9397 L1
0 .279 M 0 L 3 L 3 ( 0 .421 / 0 .448 ) L1 L 3 L 3 + 0 .9397 L1

0 .832
0 .784
0 .784

0 .3884 M - 0.9397
0 .4604 M 0.9397
0 .193 M

0 .832
0 .002143
1 .5659

Obs.: Note que as operaes elementares aplicadas acima eliminam os elementos abaixo da
diagonal principal na primeira coluna k=1. A operao de eliminao acontece sempre que
subtrai-se de cada linha i, a linha do piv i=k multiplicada pelo elemento a ser eliminado
divida pelo elemento piv.
4). Pivotao Parcial, correspondente ao segundo piv (k=2):
(i). Busca parcial do maior mdulo da coluna k = 2 (busca a partir da segunda linha e
da segunda coluna, pois a primeira coluna j foi anulada)
k=2
( 0 .448 )
0

( 0 .448 )
0

( 0 .448 )
0

0 .832
0 .002143
(1 .5659 )

0 .832
0 .002143
(1 .5659 )

0 .832
(1 .5659 )
0 .002143

0 .3884 M - 0.9397
0 .4604 M 0.9397
0 .193 M

(maior mdulo da coluna k=2 est na


linha i = 3).

0 .3884 M - 0.9397 L 2 L 3
0 .4604 M 0.9397 L 3 L 2
0 .193 M

0 .4604 M 0.9397
0 .3884 M - 0.9397
0 .193

(ii). Observe que o pivo antigo, a22=0,002143 era um valor pequeno e poderia
propagar erros nas prximas operaes de eliminao.

5). Processo de triangularizao, correspondente ao segundo piv (k=2):

38

( 0 .448 )
0

( 0 .448 )
0

0 .832
(1 .5659 )
0 .002143

0 .832
(1 .5659 )
0

0 .4604 M 0.9397
0 .3884 M - 0.9397 L 3 L 3 ( 0 .002143 / 1 .5659 ) L 2 L 3 0 .00136767 .L 2
0 .1930 M

0 .4604 M 0.9397
0 .3884 M - 0.9410
0 .1930 M

6). Processo de retrosubstituio sucessiva:


Primeiramente analisa-se o sistema de equaes equivalente, gerado a partir do
processo de eliminao empregado:

0 .448 x1 + 0 .832 x 2 + 0 .193 x 3 = 1

0 x1 + 1 .5659 x 2 + 0 .4604 x 3 = 0 .9397

0 x1 +
0 x 2 0 .3890 x 3 = - 0.9410

Obs.: Note-se que o valor de x3 pode ser diretamente obtido a partir da equao 3, e
posteriormente x2 e x1 a partir dos valores obtidos anteriormente.
x3 = -0.9410/ (-0.3890)

x3 = 2.41908

x2 = ( 0.9397 0.4604x3 ) / 1.5659

x2 = -0.11115

x1 = ( 1 0.832 x2 0.193 x3 ) /0.448

x1 = 1.39629

Portanto a soluo do sistema dado no exemplo 2 :


S = { 1.39629, -0.11115, 2.41908}
Os resduos ( r = | b - A x | ):

r1 = | - 0.421x1 + 0.784x 2 + 0.279x 3 0 | = 0.0002


r2 = | 0.421x1 + 0.784x2 0.207x 3 0 | = 0.0000
r3 = | 0.448x1 + 0.832x2 + 0.193x 3 1 | = 0.0001
Neste caso, tambm pode ser calculado o erro exato, dado por erro = | Xexato - Xaproximado |,
atravs da soluo exata encontrada atravs do OCTAVE (cgs(A, b)):
Xexato1 = 1.396286256155218
Xexato2 = -0.111080218034935
Xexato3 = 2.419080303873203
Obs.: Note que com o processo de pivotamento parcial:
Eliminam-se os possveis pivs nulos, caso a matriz de coeficientes seja no
singular (determinante zero);
39

Tambm consegue-se uma reduo nos efeitos de erros de arredondamento


(diminuio da perda de significao), imperceptivel para sistemas pequenos
(poucas equaes).

Alternativamente, pode-se implementar o mtodo de eliminao de Gauss usando a


pivotao total, que computacionalmente 'um pouco' mais eficiente, induzindo um menor
erro de arredondamento acumulado, de forma a se obter solues computacionalmente mais
estveis em relao s perturbaes introduzidas por erros de arredondamento. No
pivotamento total, ou completo, procura-se o elemento de maior mdulo dentre todos os
elementos disponveis na matriz de coeficientes, promovendo trocas de linhas e/ou colunas
conforme a necessidade. Para avaliar as consequncias destas trocas de linhas e colunas devese interpretar os elementos da matriz expandida em termos das equaes do sistema, assim:
Troca de linhas implica apenas em trocar a ordem na apresentao das equaes;
Troca de colunas implica na troca da ordem de apresentao das variveis
(incgnitas) do sistema.

Ex. 3): Resolver o seguinte sistema de equaes lineares, usando a pivotao total e
operaes aritmticas com 4 (quatro) dgitos significativos e arredondamento ponderado.
0 .421 x 1 + 0 .784 x 2 + 0 .279 x 3 = 0

0 .448 x 1 + 0 .832 x 2 + 0 .193 x 3 = 1


0 .421 x + 0 .784 x 0 .207 x = 0
1
2
3

Na forma matricial tem-se


0 .421
0 .448

0 .421

0 .784
0 .832
0 .784

0 .279 x1 0
0 .193 x 2 = 1
0 .207 x 3 0

1). Gerao da matriz expandida:


0 .421
0 .448

0 .421

0 .784
0 .832
0 .784

0 .279 M 0
0 .193 M 1
0 .207 M 0

2). Pivotao total, correspondente ao primeiro piv (k=1):


(i). Busca do maior mdulo dentre todos os elementos da matriz:
j= 2
0 .421
i = 2 0 .448
0 .421
1

0 .784
( 0 .832 )
0 .784
2

0 .279 M 0
0 .193 M 1
0 .207 M 0

(o elemento de maior mdulo est na coluna j = 2


e na linha i = 2).

3
40

Obs.: Observa-se que foi acoplada uma linha adicional na matriz de coeficientes para o
armazenamento da ordem de apresentao das variveis envolvidas. Ento, inicialmente temse a ordem natural das variveis x1, x2 e x3, cujos coeficientes multiplicadores so,
respectivamente, os elementos da primeira, segunda e terceira colunas.

(ii). Efetua-se a troca de linhas e colunas:


0 .421 0 .784
0 .448 0 .832

0 .421 0 .784
1

C1

C2

C2

C1

0 .279 M 0 L 1 L 2
0 .193 M 1 L 2 L 1 (Troca da linha L1 com a linha L2 e vice-versa, e
troca dos elementos da coluna 1 com os elementos
0 .207 M 0

da coluna 2 e vice-versa).

(iii). Matriz pivotada:


( 0 .832 )
0 .784

0 .784
2

0 .193 M 1
0 .279 M 0
0 .207 M 0
3

0 .448
0 .421
0 .421
1

Obs.: Note no processo de pivotamento total, a ordem de apresentao das variveis xi


envolvidas podem ser alteradas.
3). Processo de triangularizao, correspondente ao primeiro piv (k=1):
( 0 .832 )
0 .784

0 .784
2
( 0 .832 )
0

0
2

0 .448
0 .421
0 .421
1

0 .193 M 1
0 .279 M 0 L 2 L 2 ( 0 .784 / 0 .832 ) L 1 L 2 L 2 0 .9423 L1
0 .207 M 0 L 3 L 3 ( 0 .784 / 0.832) L 1 L 3 L 3 0 .9423 L1
3

0 .448
0 .8432
0 .0012
1

0 .097 M - 0.9423
0 .3839 M - 0.9423
3
0 .193

4). Pivotao total, correspondente ao segundo piv (k=2):


(i). Busca do maior mdulo dentre os elementos da matriz, a partir da segunda linha e
segunda coluna.

41

j= 2
0.832
i = 2 0
0
2

0.448
( 0.8432 )
0.0012

0.193 M
1

0.0971 M - 0.9423
0.3889 M - 0.9423

(Elemento de maior mdulo localizado na coluna


j=2 e linha i=2).

(ii). No h troca de linhas e colunas, a matriz j est naturalmente pivotada:


5). Processo de triangularizao, correspondente ao segundo piv (k=2):
0 .832
0

0 .448
( 0 .8432 )
0 .0012

0 .0971 M - 0.9423
0 .3889 M - 0.9423 L 3 L 3 ( 0 .0012 / 0 .8432 ) L 2 L 3 L 3 0 .001423 L 2
0 .193

0 .832
0

( 0 .8432 )

0 .448
0

0 .0971 M - 0.9423
0 .3890 M - 0.9410
3
0 .193

6). Retrosubstituio:
0 .832
0

0
2

0 .448
( 0 .8432 )
0
1

0 .0971 M - 0.9423
0 .3890 M - 0.9410
3
0 .193

Retornando a forma matricial (note a nova ordem das variveis):


0 .832 x 2 + 0.448 x1 + 0.193 x 3 = 1

0 x 2 0 .8432 x1 + 0 .0971 x 3 = 0 .9423


0 x + 0 x 0 .3890 x = - 0.9410
1
3
2

x3 = -0.9410/ -0.3890

x3 = 2.419

x1 = ( -0.9423 0.0971x3 ) / -0.8432

x1 = 1.396

x2 = ( 1 0.448 x1 0.193 x3 ) /0.832

x2 = - 0.1106

S = {1.396,-0.1106, 2.419}
Os resduos ( r = | b - A x | ) so:

r1 = | - 0.421x1 + 0.784x 2 + 0.279x 3 0 | = 0.0005


r2 = | 0.448x1 + 0.832x2 + 0.193x 3 1 | = 0.0003
r3 = | 0.421x1 + 0.784x2 0.207x 3 0 | = 0.0003
42

E o erro exato obtido foi:


Erro1= | 1.396 - 1.396 |
= 0.0000
Erro2= | -0.1111 - (-0.1106) | = 0.0005
Erro3= | 2.419 - 2.419 |
= 0.0000

Consideraes:
- Observando os resduos encontrados nos exemplos acima, nota-se que o resduo nem
sempre um bom elemento para certificarmos a exatido da soluo, pois embora
encontremos resduos menores no mtodo sem o uso do pivotamento, comparativamente aos
mtodos que se utilizaram de pivotamento parcial e total, a soluo do sistema normalmente
mais exata nos mtodos com pivotao. Pode-se observar que em sistemas de mdio porte os
mtodos com pivotao total fornecem solues mais exatas.
- Pode-se observar que nas operaes elementares sobre linhas aplicadas no mtodo de
Gauss, aparece uma operao de diviso pelo piv. Sabe-se que na maioria das operaes de
diviso so gerados erros de arredondamentos (vide captulo de erros numricos), ento ao
longo do processo de eliminaes sucessivas, estes erros de arredondamento vo se
acumulando, pois os resultados obtidos em um estgio do processo de eliminao sero
usadas no estgio seguinte.
Para minimizar este efeito cumulativo dos erros de arredondamento, pode-se modificar
as operaes elementares do processo de escalonamento da seguinte forma:
Substitui-se a linha corrente pelo produto entre a prpria linha e o elemento piv
subtrado do produto entre a linha do piv e o elemento a ser eliminado.

Por exemplo:
Se a linha L3 sofre a seguinte operao de eliminao do elemento a31 com o piv da
primeira linha a11:
L3 L3 -

a 31
L
a 11 1

Sabendo-se que o objetivo desta operao anular o elemento a31, pode-se modificar
esta operao, desde que se mantenha o resultado nulo na primeira coluna. Assim, se
L3 -

a 31
L = 0
a 11 1

(para a primeira coluna k = 1)

Ento, pode-se multiplicar a equao acima pelo elemento piv a11, resultando numa
forma alternativa, que mantm o resultado nulo para primeira coluna da matriz.
a 11 L 3 - a 31 L 1 = 0

Assim, com esta forma alternativa de aplicar as operaes de eliminao tem-se um


menor acmulo de erros de arredondamento, pois no haver divises ao longo do processo
de eliminao. Ser necessria apenas uma diviso em cada equao no momento de
43

determinar as variveis xi.


Este procedimento alternativo pode gerar erros por perda de significao quando temse pivs de grande magnitude, ou quando o nmero de equaes elevado, pois nestes casos
o acmulo de operaes de multiplicao em cada linha do sistema, especialmente nas ltimas
linhas, pode conduzir a coeficientes muito grandes, podendo gerar valores que no possam ser
representados (valores podem cair na regio de overflow).
Exerccios:
1). Monte um algoritmo para resolver um sistema de equaes lineares pelo mtodo de Gauss
utilizando:
Pivotao Parcial;
Pivotao Total.
2). Como voc avaliaria o determinante da matriz de coeficientes utilizando o processo de
eliminao adotado pelo mtodo de Gauss?

2.2.2). Mtodo de Gauss-Jordan:

Consiste na transformao da matriz expandida em matriz diagonal (normalizada com


coeficientes unitrios), que equivalente a matriz identidade. Esta transformao obtida
atravs da aplicao sucessiva de operaes elementares sobre linhas (ou sobre colunas),
buscando a eliminao seletiva dos elementos no nulos externos a diagonal principal.
Tambm pode-se associar este mtodo a um processo de pivotamento, parcial ou total.

Ex. 3): Resolver o seguinte sistema de equaes lineares usando o mtodo de Gauss-Jordan
com pivotamento parcial:
3x 1 + 1.5x 2 + 4.75x 3 = 8

4 x 1 + 2 x 2 + 3x 3 = 7
2 x + 5x + 3x = 12
2
3
1

adota-se tambm, operaes aritmticas com 4 (quatro) dgitos significativos e


arredondamento ponderado.
Na forma matricial tem-se
3 1.5 4.75 x 1


3 x 2 =
4 2
2 5
3 x 3

7
12

1). Gerao da matriz expandida:


3 1.5 4.75 M 8

3 M 7
4 2
2 5
3 M -12

44

2). Pivotao parcial, correspondente ao primeiro piv (k = 1):


(i). Busca do maior mdulo da coluna k = 1
k=1
3 1.5 4.75 M 8

i = 2 ( 4 ) 2
3 M 7
2
5
3 M - 12

(o elemento de maior mdulo est na linha i = 2).

(ii). troca de linhas:


3 1.5 4.75 M 8 L 1 L 2

3 M 7 L 2 L1
( 4 ) 2
2
5
3 M - 12

(Troca da linha L1 com a linha L2 e vice-versa)

(iii). Matriz pivotada:


( 4 ) 2
3 M 7

3 1.5 4.75 M 8
2
5
3 M - 12

Obs.: Note que at aqui tem-se um processo idntico a eliminao de Gauss.


3). Processo de normalizao do primeiro piv (k=1):
( 4 ) 2

3 1.5
2
5

3
2

0.5
1.5
5

7 L1 L1 / 4

4.75 M 8
3 M - 12
3

0.75 M 1.75

4.75 M 8
3 M - 12

4). Processo de diagonalizao, correspondente ao primeiro piv (k = 1):


1

3
2

1.5

0
0

0.5 0.75 M 1.75

0
2.5 M 2.75
4
1.5 M - 15.5

0.5
5

0.75 M 1.75

4 .75 M 8 L 2 L 2 3 L 1
3 M - 12 L 3 L 3 2 L 1

5). Pivotao Parcial, correspondente ao segundo piv (k=2):


(i). Busca parcial do maior mdulo da coluna k = 2 (busca a partir da segunda linha e
segunda coluna, pois a primeira coluna j foi anulada)
45

k=2
1

0
0

0.5
0
(4)

0.75 M 1.75

2.5 M 2.75
1.5 M - 15.5

L2 L3
L3 L2

(elemento de maior mdulo da coluna k=2 est


na linha i = 3).

(ii). troca de linhas:


1

0
0

0.5
(4)
0

0.75 M 1.75

1.5 M - 15.5
2.5 M 2.75

(Troca da linha L2 com a linha L3 e vice-versa)

6). Processo de normalizao do segundo piv (k=2):


1

0
0

0.5 0.75 M 1.75

4
1.5 M - 15.5 L 2 L 2 / 4
0
2.5 M 2.75

0
0

0.5
1
0

1.75

0.375 M - 3.875
2.5 M 2.75
0.75 M

7). Processo de diagonalizao, correspondente ao segundo piv (k = 2):


1

0
0

0.5

0
0

1
0

1
0

1.75 L 1 L1 0.5 L 2

0.375 M - 3.875
2.5 M 2.75 L 3 L 3 0 L 2
0.75 M

0.5625 M 3.6875

0.375 M - 3.875
2.5 M 2.75

9). Processo de normalizao do terceiro piv (k = 3):


1

0
0

0
0

1
0

1
0

0.5625 M 3.6875

0.375 M - 3.875
2.5 M 2.75 L 3 L 3 / 2.5
0.5625 M 3.688

0.375 M - 3.875
1
M 1.1

10). Processo de diagonalizao, correspondente ao terceiro piv (k = 3):

46

0
0

0 0.5625 M 3.688 L1 L1 0.5625L 3

1 0.375 M - 3.875 L 2 L 2 0.375L 3


0
1
M 1.1

0
0

0
1
0

0 M 3.069

0 M - 4.288
1 M 1.1

Analisando o sistema de equaes equivalente, gerado a partir do processo de


eliminaes sucessivas, tem-se o seguinte sistema:
x 1 + 0 x 2 + 0 x 3 = 3.069

0 x 1 + x 2 + 0 x 3 = 4.288
0 x + 0 x + x = 1.1
2
3
1

Obs.: Note que cada equao representa explicitamente uma incgnita, ou seja, o vetor b de
termos independentes modificado guarda a prpria soluo do sistema. Assim,
x1 = 3.069
x2 = - 4.288
x1 = 1.100
A soluo obtida
S = {3.069,- 4.288,1.100}
Exerccios:
3). Elabore um algoritmo para resolver um sistema de equaes lineares pelo mtodo de
Gauss-Jordan utilizando pivotao parcial;

2.2.3 - Mtodo da Inverso de Matrizes:

Seja o sistema dado pela eq. (1), A.x = b,


onde A a matriz de coeficientes, x o vetor de incgnitas e b o vetor de termos
independentes.
Multiplicando a equao (1) pela matriz inversa A-1 de A, obtida a partir de um
mtodo qualquer, tem-se,
A-1.(A.x) = A-1.(b)
Utilizando a associatividade do produto matricial resulta:
(A-1.A).x = A-1.b
I.x = A-1.b
47

x = A-1.b
Portanto, pode-se obter o vetor de incgnitas x multiplicando a matriz inversa A-1 pelo
vetor b.
Trata-se de um mtodo eficiente quando dispomos da inversa da matriz A, caso
contrrio temos o custo adicional da determinao da inversa.

Ex. 4): Resolva o sistema de equaes lineares indicado abaixo usando o mtodo de inverso
de matrizes. Utilize o processo de pivotamento parcial para evitar pivs nulos.
3x 1 + 1.5x 2 + 4.75x 3 = 8

4 x 1 + 2 x 2 + 3x 3 = 7
2 x + 5x + 3x = 12
2
3
1

Adota-se tambm operaes aritmticas com 4 (quatro) dgitos significativos e


arredondamento ponderado.
Na forma matricial tem-se
3 1.5 4.75 x 1


3 x 2 =
4 2
2 5
3 x 3

7
12

1). Gerao da matriz inversa de A.


Adota-se um mtodo prtico clssico para se obter a matriz inversa:
(i). Primeiramente gera-se a matriz aumentada [ A | I ], composta pela matriz A e pela matriz
identidade I da mesma ordem de A:
3 1.5 4.75 M 1

3 M 0
4 2
2 5
3 M 0

0
1

0
1
0

(ii). Atravs de operaes elementares sobre linhas (ou sobre colunas) transforma-se a matriz
A na matriz identidade I, e consequentemente a matriz identidade inicial transforma-se na
inversa A-1. Trata-se de um procedimento anlogo ao utilizado no mtodo de Gauss-Jordan.
Este procedimento tambm pode ser associado a um processo de pivotao parcial,
para evitar pivs nulos e diminuir a perda de significao.
Seguem-se os passos para obteno de A-1:
a). Pivotao parcial, correspondente ao primeiro piv (k=1):
(i). Busca do maior mdulo da coluna k = 1
k=1
3 1.5 4.75 M 1
i = 2 ( 4 ) 2
3 M 0
2
5
3 M 0

0
1
0

0
1

(Elemento de maior mdulo da coluna


k=1 est na segunda linha)
48

(ii). troca de linhas:


3 1.5 4.75 M 1

3 M 0
( 4 ) 2
2
5
3 M 0

0
1
0

0 L1 L 2

0 L 2 L1
1

(Troca da linha L1 com a linha L2 e


vice-versa)

(iii). Matriz pivotada:


4 2
3 M 0

3 1.5 4.75 M 1
2 5
3 M 0

1
0
0

0
1

b). Processo de normalizao do primeiro piv (k=1):


4 2
3 M 0

3 1.5 4.75 M 1
2 5
3 M 0

3
2

0.25 0

0
0
0
1

1
0

0.5 0.75 M 0
1.5
5

4.75 M 1
3

M 0

0 L1 L 1 / 4

0
1

c). Processo de diagonalizao, correspondente ao primeiro piv (k = 1):


1

3
2

0.5

0.75 M 0

1.5

4.75 M 1

0
0

0.25 0

0
0 L 2 L 2 3 L1
0
1 L 3 L 3 2 L1

M 0

0.75 0
0.5 1

0.5 0.75 M 0
0

2.5 M 1

1.5 M 0

0.25

Obs.: Note que existe uma completa analogia com o mtodo de eliminao de Gauss-Jordan.
d). Pivotao parcial, correspondente ao segundo piv (k=2):
(i). Busca parcial do maior mdulo da coluna k = 2 (busca a partir da segunda linha,
pois a primeira linha j foi utilizada no processo de eliminao).
k=2
1

0
0

0.5

0.75 M 0

2.5 M 1

(4 )

1.5 M 0

0.75 0 L 2 L 3
0.5 1 L 3 L 2
0.25

(o elemento de maior mdulo da coluna


k = 2 est na terceira linha).

(ii). troca de linhas:


49

0
0

0.5

0.75 M 0

(4)

1.5 M 0

2.5 M 1

0.5 1
0.75 0
0.25

(Troca da linha L2 com a linha L3 e vice-versa)

Obs.: Note que a pivotao parcial eliminou um piv nulo (processo possvel em caso de
matrizes no singulares).
e). Processo de normalizao do segundo piv (k=2):
1
0

0 .5

0 .75 M 0

0 .25

4
0

1.5 M 0
2 .5 M 1

0 .5
0 .75

0
0

0.5

0.75 M 0

0.375 M 0

0.125 0.25
0.75
0

2.5

0
1 L 2 L 2 / 4
0

0.25

M 1

f). Processo de diagonalizao, correspondente ao segundo piv (k = 2):


1 0.5 0.75 M 0

0 1 0.375 M 0
0 0
2.5 M 1

0 L1 L1 0.5L 2

0.125 0.25
0.75
0 L 3 L 3 0 L 2

0
0

- 0.125

0.125
0.25
0.75
0

0.5625 M 0

0.375 M 0

2.5

0.25

0.3125

M 1

g). Processo de normalizao do terceiro piv (k = 3):


1
0

0 .5625 M 0

0.3125

1
0

0 .375 M 0
2 .5 M 1

0 .125
0 .75

0
0

0.5625 M 0

0.375 M 0

M 0.4

- 0.125
0 .25
0 L 3 L 3 / 2 .5

- 0.125

0.125
0.25
0.3
0
0.3125

h). Processo de diagonalizao, correspondente ao terceiro piv (k = 3):


1

0
0

0.5625 M 0

0.375 M 0

M 0.4

- 0.125 L 1 L 1 0.5625L 3

0.125
0.25 L 2 L 2 0.375L 3
0.3
0
0.3125

50

0
0

0 M - 0.225

0 M 0.15

1 M

Ento,

0.4

- 0.125

0.0125
0.25
0.3
0
0.4812

- 0.225
A = 0.15
0.4
-1

- 0.125

0.0125
0.25
0.3
0
0.4812

Para obter o vetor soluo x efetua-se o produto entre A-1 e b:


- 0.225
x = A . b = 0.15
0.4
-1

- 0.125 8

0.0125
0.25 . 7 =
0.3
0 12
0.4812

3.069

4 .288
1100

Ento, a soluo do sistema a seguinte:


x1 = 3.069
x2 = - 4.288
x3 = 1.100
S = {3.069,-4.288,1.100}
Exerccios:
4). Resolva o seguinte sistema de equaes lineares pelos mtodos de:
Gauss com pivotamento total;
Gauss-Jordan com pivotamento total;
Inverso de matriz com pivotamento parcial;
3x 1 + 1.5x 2 + 4.75x 3 = 8

4 ,01x 1 + x 2 + 3x 3 = 7
x + 0,5x - 0,05x = 1
2
3
1

5). Monte um algoritmo para determinar a matriz inversa de A, recorrendo ao pivotamento


parcial (sugesto: use o algoritmo de Gauss-Jordan).

Alm dos mtodos de eliminao tradicionais, como Gauss, Gauss-Jordan e inverso, tem-se
as suas variaes classificadas como mtodos de decomposio LU, conforme o
procedimento que segue.

2.2.4 - Mtodo de decomposio LU (Crout)

Nesta famlia de mtodos diretos para a soluo de um sistema linear faz-se uso do
fato de que, sob certas condies, uma matriz quadrada pode ser decomposta no produto de
duas matrizes triangulares. Uma destas variaes do procedimento geral de eliminao
conhecida como mtodo de Crout (ou Cholesky para o caso particular de matrizes simtricas
51

positivas definidas).
A matriz A pode ser decomposta no produto A=LU, onde L uma matriz triangular
inferior e U uma matriz triangular superior , quando a matriz for no singular (Det (A) 0).
Alm disso, se atribuirmos valores fixos aos elementos da diagonal, seja de L (lii = 1 no
Mtodo de Doolitle) ou em U (uii = 1 no Mtodo de Crout), esta decomposio ser nica.
Para a soluo de A . x = b, pode-se decompor A segundo o Mtodo de Crout,
conforme segue:
l 11
l
21
L=

l
n1

0
l 22
l n2

0
0

l nn

1 u 12
0 1
U=

0 0

u 1n
u2n

tal que A = L.U. Ento, o sistema torna-se L.U.x = b.


Fazendo U.x = c, resolve-se primeiro L.c = b e depois U.x = c.
Para um sistema 3x3 podemos escrever:

a11 a12
a
21 a22
a31 a32

a13 l11 0
a23 = l21 l22
a33 l31 l32

0 1 u12
0 0 1
l33 0 0

u13
u 23
1

A multiplicao de matrizes L.U pode ser usada para definir os


valores de l ij , uij e ci em termos de a ij e b i :

1 u12
0 1

0 0

l11
l
21
l31

0
l 22
l 32

0
0
l 33

u13
u 23
1

l11 .u12 + 0.1 + 0.0


l11 .u13 + 0.u 23 + 0.1
l11 .1 + 0.0 + 0.0
l .1 + l .0 + 0.0 l .u + l .1 + 0.0 l .u + l .u + 0.1
22
21 12
22
21 13
22 23
21

l 31 .1 + l 32 .0 + l 33 .0 l 31 .u12 + l 32 .1 + l 33 .0 l 31 .u13 + l 32 .u 23 + l 33 .1

Como o produto L.U gera a matriz A original, temos o seguinte


sistema de equaes lineares:
52

l11 .u12 + 0.1 + 0.0 = a12


l11 .1 + 0.0 + 0.0 = a11

l 21 .1 + l 22 .0 + 0.0 = a 21 l 21 .u12 + l 22 .1 + 0.0 = a 22


l .1 + l .0 + l .0 = a
l 31 .u12 + l32 .1 + l33 .0 = a 32
32
33
31
31

l11 .u13 + 0.u 23 + 0.1 = a13


l 21 .u13 + l 22 .u 23 + 0.1 = a 23
l31 .u13 + l32 .u 23 + l33 .1 = a 33

Cuja soluo pode ser obtida de forma direta tratando pivs


sequencialmente:
Para a primeira coluna k=1:
l11 .1 + 0.0 + 0.0 = a11

l11 = a11

l 21 .1 + l 22 .0 + 0.0 = a 21

l 21 = a 21

=>

l 31 .1 + l 32 .0 + l33 .0 = a31

l 31 = a31

Para a primeira linha k=1:


l11 .u12 + 0.1 + 0.0 = a12
l11 .u13 + 0.u 23 + 0.1 = a13

=>

u12 = a12 / l11


u13 = a13 / l11

Para a segunda coluna k=2:


l 21 .u12 + l 22 .1 + 0.0 = a 22
l 31 .u12 + l 32 .1 + l 33 .0 = a 32

l 22 = a 22 l 21 .u12
l 32 = a 32 l 31 .u12

=>

Para a segunda linha k=2:


l21.u13 + l22 .u23 + 0.1 = a23

=>

u 23 = (a 23 l 21 .u13 ) / l 22

Para a terceira coluna k=3:


l31.u13 + l32 .u23 + l33.1 = a33

=>

l33 = (a33 (l31.u13 + l32 .u 23 ))

Resumindo:
l11 = a 11
l 21 = a 21

u12 = a12 / l11

l 31 = a 31

u13 = a 13 / l11

( c 1 = b 1 / l 11 )

l 22 = a 22 l 21u12
53

l 32 = a 32 l 31u 12

u 23 = ( a 23 l 21 u 13 ) / l 22

l 33 = a 33 l 31u13 l 32 u 23

( c2

= ( b 2 l 21 c 1 ) / l 22 )

( c 3 = ( b 3 l 31 c 1 l 32 c 2 ) / l 33 )

Note que o "clculo de c, do sistema L.c = b pode ser feito da mesma


forma que o clculo de u".
A sequncia de operaes sempre :
1). Calcular a primeira coluna de L, calcular a primeira linha de U e
c1;
2). Calcular a segunda coluna de L, calcular a segunda linha de U e c2;
e assim sucessivamente.
Os valores de x so obtidos por substituio sucessiva a partir de
c (U.x = c)
x 3 = c3
x 2 = c 2 u 23 x 3
x 1 = c 1 u 13 x 3 u 12 x 2

Note que, o vetor c tambm pode ser obtido do sistema parcial


L.c = b por substituies sucessivas.
Sugere-se usar o processo "tipo escada" para armazenar L e U na
mesma rea de memria A, o que torna o processo mais eficiente,
a 11

a 21
a 31

a 12
a 22
a 32

a 13 M b 1 l 11

a 23 M b 2 = l 21
a 33 M b 3 l 31

u 13 M c 1

u 23 M c 2
l 33 M c 3

u 12
l 22
l 32

De uma forma geral, para sistemas de ordem n:


- Operaes com o primeiro piv:
Para k = 1
l i1 = a i1
i = 1,2,3,...,n
j = 2,3,..., n+1 (incluindo c)
u1 j = a 1 j / l11
Para k = 2,3,...,n
k 1

l ik = a ik l ir u rk

k (i = k,k+1,...,n)

r =1

54

u kj =

k 1

1
a kj l kr u rj

l kk
r =1

(j = k+1,..., n+1 (incluindo c)

Ou somente a decomposio LU da matriz A de coeficientes:


- Operaes com o primeiro piv:
Para k = 1
l i1 = a i1

i = 1,2,3,...,n
j = 2,3,...,n

u1 j = a 1 j / l11

Para k = 2,3,...,n-1
k 1

l ik = a ik l ir u rk

(i = k,k+1,...,n)

r =1

u kj =

k 1

1
a kj l kr u rj

l kk
r =1

(j = k+1,...,n)

Para k = n
k 1

l ik = a ik l ir u rk

(i = k=n)

r =1

Ex. 5): Resolver o sistema abaixo pelo Mtodo de Crout, sem estratgia de pivotamento,
usando 4 dgitos significativos e arredondamento ponderado.

0.448x1 + 0.832 x 2 + 0.193x3 = 1

0.421x1 + 0.784 x 2 0.207 x 3 = 0


0.421x + 0.784 x + 0.279x = 0
1
2
3

Armazenam-se os valores de b i em a i 4 e c i em u i 4 e a matriz decomposta L e U na


prpria rea de memria de A.
a 11 a 12

a 21 a 22
a 31 a 32

a 13 M a14

a 23 M a 24
a 33 M a 34

aps a decomposio LU

l11

l 21
l 31

u12
l 22
l 32

u13 M u14

u 22 M u 24
l 33 M u 34

1). Gerao da matriz expandida:


0 .448
0 .421

0 .421

0 .832
0 .784
0 .784

0 .193 M 1
0 .207 M 0
0 .279 M 0

2). Decomposio LU (Mtodo de Crout), correspondente ao processo com o primeiro piv


(k = 1):
Adota-se aqui a seguinte legenda:
55

- Representao em Negrito: para valores da matriz decomposta L e U.


- Representao normal: para valores da matriz expandida original A | b.
(i). Definio da primeira coluna k = 1 da matriz L - li1:(i=1,2,3).
0 .448
0 .421

0 .421
C1

C1

0.832
0.784
0.784

0.193 M 1
- 0.207 M 0
0.279 M 0

(ii). Como no existe pivotamento, o piv j est determinado:


(0.448)
0.421

0.421

0 .832
0 .784
0 .784

0 .193 M 1
0 .207 M 0
0 .279 M 0

(iii). Definio da primeira linha k = 1 da matriz U - u1j: (j=2,3,4)


(0.448)
0.421

- 0.421

1.857
0 .784
0 .784

0.4308 M 2.232 L1
0 .207 M 0
0 .279 M 0

L1 / l11

5). Decomposio LU, correspondente ao processo com o segundo piv (k = 2):


(i). Definio da coluna k = 2 da matriz L - li2: (i = 2,3)
0.448
0.421

- 0.421

1.857
0 .784
0 .784

0.4308 M 2.232
0 .207 M 0
0 .279 M 0

C2

C 2 l i1 u 12
0.448
0.421

- 0.421

1.857
0.0022
1.566

0.4308 M 2.232
0 .207 M 0
0 .279 M 0

(ii). Sem pivotamento.


(iii). Definio da linha k = 2 da matriz U - u2j: (j = 3,4)
0.448
0.421

- 0.421

1.857
(0.0022)
1.566

0.4308 M 2.232
0 .207 M 0 L 2 ( L 2 l 21 u 1 j ) / l 22
0 .279 M 0

56

0.448
0.421

- 0.421

0.4308 M 2.232
176.5 M 427.1
0 .279 M 0

1.857
(0.0022)
1.566

6). Decomposio LU, correspondente ao processo com o terceiro piv (k = 3):


(i). Definio da coluna k = 3 da matriz L - li3: (i = 3)
0.448
0.421

- 0.421

0.4308 M 2.232
176.5 M 427.1
0 .279 M 0

1.857
0.0022
1.566

C3

C 3 l 31 u 31 l 32 u 23

0.448
0.421

- 0.421

0.4308 M 2.232
176.5 M 427.1
276.9 M 0

1.857
0.0022
1.566

(ii) No h pivotamento.
(iii). Definio da linha k = 3 da matriz U - u3j: (j = 4)
0.448
0.421

- 0.421

0.448
0.421

- 0.421

0.4308 M 2.232
- 176.5 M - 427.1
(276.9) M 0 L 3 ( L 3 l 31 u 14 l 32 u 24 ) / l 33

1.857
0.0022
1.566

0.4308 M 2.232
- 176.5 M - 427.1
276.9 M 2.419

1.857
0.0022
1.566

Logo,
0.448
L = 0.421
- 0.421

0
0.0022
1.566

0
276.9
0

1 1.857
U = 0
1
0
0

0.4308
- 176.5

0.c 2 +
0.c 3 = 1
0,448.c 1 +

L.c=b => 0,421.c 1 + 0,0022.c 2 + 0.c 3 = 0


0.421.c + 1,566.c + 276,9.c = 0
1
2
3

Aplicando a substituio sucessiva, a frente:


c1 = 1/0,448
c2 = (0-(0,421.c1 )/0,0022
c3 = ( 0 - (-0,421.c1+1,566.c2 )/276,9

c1 = 2,232
c2 = - 427,1
c3 = 2,419
57

7). Processo de retrosubstituio sucessiva:


Deve-se observar que o vetor de termos independentes bi pode ser transformado
no vetor ci do sistema L.c = b, simultaneamente ao processo de decomposio, pois o
vetor ci calculado para mesma forma que o vetor u3j para j = 4.
Ento, extraindo da decomposio LU a matriz triangular superior U, com diagonal
principal unitria (estabelecido por Crout), pode-se recuperar o sistema de equaes
equivalente U x = c, gerado a partir do processo de decomposio LU empregado, da seguinte
forma:
1x1 + 1 .857 x 2 + 0 .4308 x 3 = 2 .232

0 x1 + 1x 2 176 .5 x 3 = 427 .1
0 x + 0 x + 1x = 2 .419
2
3
1

Agora s aplicar o processo de retrosubstituio sucessiva:


x3 = 2,419
x2 = ( -427,1 + 176,5.x3 )
x1 = ( 2,232-(1,857.x2 - 0,4308.x3 ))

x3 = 2,419
(-427,1+427,0)
x2 = -0,1000
(2,232+0,1857-1,042) x1 = 1,376

A soluo obtida
S = { 1.376, -0.1000, 2.419}
Os resduos ( r = | b - A x | ) de cada uma das equaes do sistema linear proposto so
os seguintes:

r1 = | 0.448x1 + 0.832x 2 + 0.193x3 1 | = 0.0001


r2 = | 0.421x1 + 0.784x 2 0.207 x3 0 | = 0.0002
r3 = | - 0.421x1 + 0.784x 2 + 0.279x3 0 | = 0.0172
Neste caso, tambm pode ser calculado o erro exato, dado por
erro = | Xexato - Xaproximado |. A soluo exata foi encontrada atravs do OCTAVE, e foi obtida
com 16 dgitos significativos. Vamos avaliar o erro utilizando tambm a preciso de 4 dgitos
significativos, que foi utilizada at aqui em todas as operaes. Ento:
Xexato1 = 1.396286256155218
Xexato2 = -0.111080218034935
Xexato3 = 2.419080303873203
Ex. 6): Resolver o sistema anterior pelo Mtodo de Crout, com pivotamento parcial (
imprescindvel incluir o(s) vetor(es) 'b' do sistema na troca de linhas da pivotao),
usando 4 dgitos significativos e arredondamento ponderado.

0.448x1 + 0.832 x 2 + 0.193x3 = 1

0.421x1 + 0.784 x 2 0.207 x 3 = 0


0.421x + 0.784 x + 0.279x = 0
1
2
3

58

1). Gerao da matriz expandida:


0 .448
0 .421

0 .421

0 .832
0 .784
0 .784

0 .193 M 1
0 .207 M 0
0 .279 M 0

2). Decomposio LU (Mtodo de Crout), correspondente ao processo com o primeiro piv


(k = 1):
(i). Definio da primeira coluna k = 1 da matriz L - li1:(i=1,2,3).
0 .448
0 .421

0 .421
C1

C1

0.832
0.784
0.784

0.193 M 1
- 0.207 M 0
0.279 M 0

(ii). Pivotao parcial, correspondente ao primeiro piv (k=1):


OBSERVE que a pivotao parcial deve ocorrer depois do clculo dos valores de
lik na coluna k e antes do clculo dos valores ukj da linha k, para que os elementos lii da
diagonal principal calculados sejam no nulos e tenham os maiores valores possveis.
A matriz lik j se encontra pivotada (vide Ex. 1):
(0.448)
0.421

0.421

0 .832
0 .784
0 .784

0 .193 M 1
0 .207 M 0
0 .279 M 0

(iii). Definio da primeira linha k = 1 da matriz U - u1j: (j=2,3,4)


(0.448)
0.421

- 0.421

1.857
0 .784
0 .784

0.4308 M 2.232 L1
0 .207 M 0
0 .279 M 0

L1 / l11

5). Decomposio LU, correspondente ao processo com o segundo piv (k = 2):


(i). Definio da coluna k = 2 da matriz L - li2: (i = 2,3)
0.448
0.421

- 0.421

1.857
0 .784
0 .784

0.4308 M 2.232
0 .207 M 0
0 .279 M 0

C2

C 2 l i1 u 12
59

0.448
0.421

- 0.421

1.857
0.0022
1.566

0.4308 M 2.232
0 .207 M 0
0 . 279 M 0

(ii). Pivotao Parcial, correspondente ao segundo piv (k=2):


(ii)-a). Busca parcial do maior mdulo da coluna k = 2 (busca a partir da segunda
linha):
0.448
0.421

- 0.421

1.857
0.0022
(1.566)

0.4308 M 2.232
0 .207 M 0
0 .279 M 0

(ii)-b) troca de linhas.


0.448
- 0.421

0.421

1.857
(1.566)
0.0022

0.4308 M 2.232
0 .279 M 0 L 2 L 3
0 . 207 M 0 L 3 L 2

(iii). Definio da linha k = 2 da matriz U - u2j: (j = 3,4)


0.448
0.421

0.421
0.448
0.421

0.421

1.857
(1.566)
0.0022
1.857
(1.566)
0.0022

0.4308 M 2.232
0 .279 M 0 L 2 ( L 2 l 21 u 1 j ) / l 22
0 .207 M 0
0.4308 M 2.232
0.2940 M 0.6001
0 .207 M 0

6). Decomposio LU, correspondente ao processo com o terceiro piv (k = 3):


(i). Definio da coluna k = 3 da matriz L - li3: (i = 3)
0.448
0.421

0.421

1.857
1.566
0.0022

0.4308 M 2.232
0.2940 M 0.6001
0 .207 M 0
C3

C 3 l 31 u 13 l 32 u 23
0.448
0.421

0.421

1.857
1.566
0.0022

0.4308 M 2.232
0.2940 M 0.6001
0.3890 M 0

(ii) No h pivotamento, pois a ltima linha.


60

(iii). Definio da linha k = 3 da matriz U - u3j: (j = 4)


0.448
0.421

0.421
0.448
0.421

0.421

1.857
1.566
0.0022
1.857
1.566
0.0022

M 2.232
0.2938 M 0.6001
( 0.3890) M 0 L 3 ( L 3 l 31 u 14 l 32 u 24 ) / l 33
0.4308

0.4308 M 2.232
0.2940 M 0.6001
0.3890 M 2.419

7). Processo de retrosubstituio sucessiva:


1x1 + 1 .857 x 2 + 0 .4308 x 3 = 2 .232

0 x1 + 1x 2 + 0 .2940 x 3 = 0 .6001
0 x + 0 x +
1x 3 = 2 .419
2
1

Agora s aplicar o processo de retrosubstituio sucessiva:


x3 = 2.419
x2 = ( 0.6001 - 0.2940 x3 )
x1 = ( 2.232 - 1.857 x2 - 0.4308 x3 )

x3 = 2.419
(0.6001-0.7112)
x2 = - 0.1111
(2.232+0.2063-1.042) x1 = 1.396

A soluo arredondada obtida :


S = { 1.396, -0.1111, 2.419}
Os resduos ( r = | b - A x | ) de cada uma das equaes do sistema linear proposto so
os seguintes:

r1 = | 0.448x1 + 0.832x 2 + 0.193x3 1 | = 0.0002


r2 = | 0.421x1 + 0.784x 2 0.207 x3 0 | = 0.0001
r3 = | - 0.421x1 + 0.784x 2 + 0.279x3 0 | = 0.0001

Clculo do erro: erro = | Xexato - Xaproximado |.


Neste caso, tambm pode ser calculado o erro exato, dado por erro = | Xexato - Xaproximado |,
atravs da soluo exata encontrada atravs do OCTAVE (cgs(A, b)):
Xexato1 = 1.396286256155218
Xexato2 = -0.111080218034935
Xexato3 = 2.419080303873203
Ex. 7): Resolver os 3 sistemas abaixo de n=4 equaes pelo Mtodo de Crout, com
pivotamento parcial ( imprescindvel incluir o(s) vetor(es) 'b' do sistema na troca de
linhas da pivotao):

61

x1 + 2.x2 + 3.x3 + 4.x4 = 1


x + 2. x 3. x 4. x = 0
1
2
3
4

x1 + 0.x2 + 2.x3 + 3.x4 = 1


x1 4.x2 x3 + x4
=2

x1 + 2.x2 + 3.x3 + 4.x4 = 1


x + 2. x 3. x 4. x = 0
1
2
3
4

x1 + 0.x2 + 2.x3 + 3.x4 = 1


x1 4.x2 x3 + x4
= 2

x1 + 2.x2 + 3.x3 + 4.x4 = 1


x + 2. x 3. x 4. x = 0
1
2
3
4

x1 + 0.x2 + 2.x3 + 3.x4 = 1


x1 4.x2 x3 + x4
=2

Gerao da matriz concatenada A (nica) com os 3 vetores b1, b2, b3 de termos independentes:

1
1

: b1 , b2 , b3
2
4 : 1 1 1
2 3 4 : 0 0 0
0 2 3 : 1 1 1

4 1 1 : 2 2 2
A
3

1). k = 1:
(i). Definio da primeira coluna k = 1 da matriz L - li1:(i=1,2,3,4), que igual a matriz A:

1 2 3 4 : 1 1 1
1 2 3 4 : 0 0 0


1 0 2 3 : 1 1 1


1 4 1 1 : 2 2 2
(ii). Pivotao parcial, correspondente ao primeiro piv (k=1):

OBSERVE que a pivotao parcial deve ocorrer depois do clculo dos valores de
lik na coluna k e antes do clculo dos valores ukj da linha k, para que os elementos lii da
diagonal principal calculados sejam no nulos e tenham os maiores valores possveis.
Nesse caso, a matriz lik j se encontra pivotada (vide Ex. 1):

(1) 2 3 4 : 1 1 1
1 2 3 4 : 0 0 0


1 0 2 3 : 1 1 1


1 4 1 1 : 2 2 2
(iii). Definio da primeira linha k = 1 da matriz U - u1j: (j=2,3,4) , que igual a matriz A
dividida pelo piv l11=1:

(1) 2 3 4 : 1 1 1
1 2 3 4 : 0 0 0


1 0 2 3 : 1 1 1


1 4 1 1 : 2 2 2
2). k = 2:
(i). Definio da segunda coluna k = 2 da matriz L - li1:(i=2,3,4) , que igual a matriz A
62

menos o somatrio dos produtos cruzados da sua linha e coluna, respectivamente.


2
3 4 : 1 1 1
1
1
0 = 2 (1* 2)
0 3 4 : 0 0 0

1 2
2 3 : 1 1 1
2 = 0 (1* 2)


1 ( 6 ) 1 1 : 2 2 2 6 = 4 (1* 2)
(ii). Pivotao parcial, correspondente ao segundo piv (k=2):
OBSERVE que a pivotao parcial deve ocorrer depois do clculo dos valores de
lik na coluna k e antes do clculo dos valores ukj da linha k, para que os elementos lii da
diagonal principal j calculados sejam no nulos e tenham os maiores valores
possveis.
Nesse caso, a linha 4 trocada com a linha 2:
2
1
1 ( 6 )

1 2

0
1

:
:

2 3 :

3 4 :
3
1

4
1

1 1 1
2 2 2

1 1 1

0 0 0

(iii). Definio da segunda linha k = 2 da matriz U - u1j: (j=3,4) , que igual a matriz A
menos o somatrio dos produtos cruzados da sua linha e coluna, respectivamente, e dividido
pelo pelo piv l22=-6.
2
3
4 :
1
1 ( 6 ) 0.67 0.5 :

1 2
2
3 :

0
3 4 :
1

1 1 1
2 2 2
0.67 = [1 (1* 3)] /(6) 0.5 = [1 (1* 4)] /(6)

e
1 1 1

0 0 0

3). k = 3:
(i). Definio da terceira coluna k = 3 da matriz L - li1:(i=3,4).
2
3
4 : 1 1 1
1
1 ( 6 ) 0.67 0.5 : 2 2 2


1 2 3.67 3 : 1 1 1
3.67 = 2 (1* 3 + 2 * 0.67)


0
6 4 : 0 0 0 6 = 3 (1 * 3 + 0 * 0.67)
1
(ii). Pivotao parcial, correspondente ao terceiro piv (k=3):
OBSERVE que a pivotao parcial deve ocorrer depois do clculo dos valores de
lik na coluna k e antes do clculo dos valores ukj da linha k, para que os elementos lii da
diagonal principal j calculados sejam no nulos e tenham os maiores valores
possveis.
Nesse caso, a linha 4 trocada com a linha 3:
63

2
3
4 : 1 1 1
1
1 ( 6 ) 0.67 0.5 : 2 2 2


1
0 ( 6 ) 4 : 0 0 0


1 2 3.67 3 : 1 1 1
(iii). Definio da terceira linha k = 3 da matriz U - u1j: (j=4)
2
3
4 :
1
1 ( 6 ) 0.67 0.5 :

1
0 ( 6 ) 1.33 :

1 2 3.67 3 :

1 1 1
2 2 2

0 0 0
1.33 = [4 (1 * 4 + 0 * 0.5)] /(6)

1 1 1

4). k = 4:
(i). Definio da quarta coluna k = 4 da matriz L - li1:(i=4).
2
3
4 : 1 1 1
1
1 ( 6 ) 0.67 0.5 : 2 2 2


1
0 ( 6 ) 1.33 : 0 0 0


1 2 3.67 1.11 : 1 1 1 1.11 = 3 (1 * 4 + 2 * 0.5 + 3.67 *1.33)
Resolvendo o primeiro sistema L.C=b1

0
0
0 c1 1
1

1 ( 6) 0
0 c2 2

x
=
1
0 ( 6) 0 c3 0


1 2 3.67 1.11 c4 1
Resolvendo U.x=c1
4 x1 1
1 2 3

0 1 0.67 0.5 x 0.167

x 2 =

0 0 1 1.33 x3 0.167

1 x4 1.55
0 0 0
Resolvendo o segundo sistema L.C=b2
0
0
0 c1 1
1

1 ( 6) 0
0 c2 2

x
=
1
0 ( 6) 0 c3 0


1 2 3.67 1.11 c4 1

c1 1

2 = 0.167
c3 0.167

c4 1.55
x1 0.15
x

2 = 0.325
x3 1.9

x4 1.55

c1 1

2 = 0.5
c3 0.167

c4 0.35

Resolvendo U.x=c2
64

1
0

x1 0.55
x

2 = 0.525
x3 0.3

x4 0.35

2 3
4 x1 1

1 0.67 0.5 2 0.5


x
=
0 1 1.33 x3 0.167

0 0
1 x4 0.35

Resolvendo o terceiro sistema L.C=b3


0
0
0 c1 1
1

1 ( 6) 0
0 c2 2

x
=
1
0 ( 6) 0 c3 0


1 2 3.67 1.11 c4 1

c1 1

2 = 0.5
c3 0.167

c4 1.45

Resolvendo U.x=c3
4 x1 1
1 2 3

0 1 0.67 0.5 x 0.5

x 2 =

0 0 1 1.33 x3 0.167

1 x4 1.45
0 0 0

x1 0.85
x

2 = 0.175
x3 2.1

x4 1.45

Consideraes:
(i). O nmero de operaes aritmticas envolvidas em cada um dos mtodos de eliminao
(sem pivotamento) apresentados da seguinte ordem:

Gauss

Nmero de Operaes:
(sem pivotamento)
O ( 2 n3 / 3 )

Gauss-Jordan

O ( n3 )

Inverso

O ( n3 )

Crout

O ( 2 n3 / 3 )

Mtodos:

Note que o mtodo de inverso de matrizes computacionalmente o menos eficiente,


pois envolve o maior nmero de operaes aritmticas, enquanto os mtodos de Gauss e
Crout so os que envolvem menor esforo computacional.
Entretanto, quando temos vrios sistemas para resolver com a mesma matriz de
coeficientes A e com diferentes vetores de termos independentes b (em A x = bk), pode-se
obter a matriz decomposta L.U dos coeficientes uma nica vez e efetuar as substituies
sucessivas L.ck = bk e U.xk = ck, tantas vez quantas forem necessrias para se obter as
respectivas solues ck e xk, correspondentes a cada bk.
Nestes casos, tem-se apenas um custo da ordem de O(n2) operaes, referente as as
substituies sucessivas, para se obter a soluo xk.
(ii). O nmero total de operaes aritmticas utilizado no mtodo de decomposio LU de
Crout (4n3+15n2-13n)/6 , que praticamente igual ao do Mtodo de Gauss que realiza
(4n3+9n2-7n)/6 . Veja a tabela comparativa entre as operaes realizadas pelos dois mtodos:
65

Operao
Adico +Subtrao
Multiplicao
Diviso

Total

Mtodo de Crout
(2n +9n2-11n)/6
(2n3+3n2-5n)/6
(n2+n)/2
(4n3+15n2-13n)/6
3

Mtodo de Gauss
(2n +3n2-5n)/6
(2n3+3n2-5n)/6
(n2+n)/2
(4n3+9n2-7n)/6
3

Outro importante aspecto a ser considerado que a acumulao de erros de


arredondamento no mtodo de Crout menor que no de Gauss, isto se deve a menor
propagao dos erros gerados nas divises sucessivas, apesar de ter o memso nmero de
divises.
(iii). No caso particular de sistemas com matrizes simtricas (U = LT) e positivas definidas
pode-se obter uma simplificao no mtodo de decomposio para obter as matrizes L e U,
chamado de Mtodo de Cholesky (O(n3/6) operaes). Neste caso a matriz U pode ser obtida
diretamente pela transposta de L (A = L Lt), segundo as seguintes equaes:
- Operaes com o primeiro piv: k = 1

l 11 = a 11
l i1 = a i1 / l 11

(i = 2,3,...,n)

- Operaes com piv genrico: k = 2,3,...,n-1.


l kk

k 1

= a kk l 2kr
r =1

l ik =

1/ 2

k 1

1
a ik l ir l kr
l kk

r =1

i = k+1,...,n

- Operaes com o ltimo piv: k = n


e

n 1

l nn = a nn l 2nr
r =1

1/ 2

O mtodo de Cholesky tambm utilizado para fazer um teste rpido se uma dada
matriz simtrica positiva definida ou no. Caso a decomposio seja possvel (radicando
positivo) ento a matriz simtrica positiva definida.

Exerccios:
6). Resolva o seguinte sistema de equaes lineares pelo mtodo de Cholesky:

66

4 x1
x2 +
x3 = 0

x 1 + 4.25x 2 + 2.75x 3 = 1
x + 2.75x + 3.5x = 1
2
3
1
7). Para resolver um sistema de equaes lineares ordem 10 ( 10 equaes por 10 icgnitas)
um computador (Pentium 133), utilizando o mtodo de Eliminao de Gauss s/ pivotamento,
levou 0.11 segundos para encontrar a soluo. Estime o tempo que este mesmo computador
levaria para resolver um sistema de ordem 100, utilizando o mesmo mtodo.

2.2.5 - Mtodos especficos para matrizes de coeficientes do tipo banda:


Dado o seguinte sistema de equaes:

r1
t
2
0

M
M

0
0

d1

r2

d2

t3
M

r3
M

d3
M

L
M

L
M

M
0

M
M
M
L L t n1

rn1

L L

tn

0 x1 b1
0 x2 b2
0 x3 b3


M M = M
M M M


d n 1 xn1 bn1
rn xn bn

(3)

Nota-se que a estrutura da matriz de coeficientes do tipo Matriz Banda Tridiagonal,


onde existem apenas trs diagonais no totalmente nulas, uma diagonal principal ri e duas
diagonais paralelas ti e di, os demais coeficientes so todos nulos.
Este sistema de equaes pode ser resolvido por um mtodo direto, como Gauss por
exemplo, o qual promove as devidas eliminaes tornando a matriz de coeficientes uma
matriz do tipo triangular superior. Neste procedimento, o mtodo de Gauss opera as devidas
eliminaes inclusive nas posies dos elementos nulos, que no necessitam ser manipulados.
No caso de matrizes de grande porte teramos um custo excessivo com operaes
desnecessrias.
Ento, para sistemas com matrizes de coeficientes do tipo banda possvel adaptar os
mtodos diretos tradicionais, de modo que os valores nulos no sejam manipulados
desnecessariamente.
Assim, pode-se implementar um mtodo de eliminao otimizado envolvendo apenas
os elementos no nulos, conforme a sequncia a seguir, baseada no mtodo de Gauss:

r1

t 2
M

M
M

M
0

d1
r2

0
d2

0
0

L
L

L 0
L 0

M
M

t i 1
M

ri 1 d i 1 M
ti
ri d i

M
M

M
0

M
L

M
L

L
0

L M
t n rn

t2

L2 L2 r L1
1
M

b i 1
bi

M
b n
b1
b2

67

r1

0
M

M
M

M
0

onde

onde

d1

r2*

d2

M
M

t i 1

ri 1

L
d i 1

M
M

M
M

ti
M

ri
L

b1

L 0 b *2
L M
M

M M b i 1
d i M bi

L M
M
t n rn b n
L

t2
t2
d 1 e b *2 = b 2 b 1
r1
r1
Generalizando para uma linha i qualquer, tem-se:
r2* = r2

r1

0
M

M
M

M
0

d1
r2*

0
d2

0
0

L
L

L
L

0
0

M
M

0
M

*
i 1

r
ti

d i 1
ri

M
di

M
M

M
0

M
L

M
L

L
0

L M
t n rn

r1

0
M

M
M

M
0

d1

*
2

d2

*
i 1

d i 1

*
i

di

M
0

M
L

M
L

L
0

L M
0 rn*

ri* = ri

b1

b *2
M

b *i 1
t
b i L i L i *i L i 1

ri 1
M
b n
b1

b *2
M

b *i 1
b *i

M
b n

(4)

ti *
ti *
*
d
b
=
b

b
e
i

1
i
i
ri*1 i 1
ri*1

Assim, chega-se a um algoritmo simples para efetuar a triangularizao da matriz de


coeficientes:
Genericamente, para i = 2,3,...,n tem-se

ti *
d
ri*1 i 1
t
b*i = b i *i b*i 1
ri 1
ri* = ri

com r1* = r1

e b1* = b1 .
68

Como a soluo de (3) a mesma de (4), ento por retrosubstituio sucessiva obtemse:

x n = b*n / rn*
Para i = n-1,n-2,...,2,1 tem-se

x i = ( b *i d i x i+1 ) / ri*
Assim, a soluo do sistema de equaes obtida com o mnimo de operaes
possveis, manipulando apenas os elementos no nulos.
Nestes casos o pivotamento de linhas ou colunas no deve ser aplicado, pois isto
alteraria a estrutura em forma de banda da matriz.
Ex. 8): Resolva o seguinte sistema de equaes de forma otimizada:
0
1 1 0
1 1 1 0

0 1 1 1

0 0 1 1
0 0
0 1

0
1

0 M 2

1 M 1
2 M 2
0 M
0 M

Soluo:
(i). Triangularizao baseada no piv k = 1:

0
1 1 0
1 1 1 0

0 1 1 1

0 0 1 1
0 0
0 1

2 M

0
1 1 0
0 2 1 0

0 1 1 1

0 0 1 1
0 0
0 1

0
1

0 M 2

1 M 1
2 M 2

0 M
0 M
0 M
1 M

0
1
1 L 2 L 2 L1

1
2

1
2

0 M
0 M

(ii). Triangularizao baseada no piv k = 2:


0
1 1 0
0 2 1 0

0 1 1 1

0 0 1 1
0 0
0 1

0 M
0 M
0 M
1 M
2 M

0
1

1
2 L3 L3 L2
2

1
2
69

0
0
1 1
0 2
1
0

0 0 0.5 1

1
1
0 0
0 0
0
1

0
1

0 M 15
.

1 M 1
2 M 2
0 M
0 M

(iii). Triangularizao baseada no piv k = 3:

0
0
1 1
0 2
1
0

0 0 0.5 1

1
1
0 0
0 0
0
1

0 M 0
0 M 1

.
0 M 15
( 1)

1 M 1 L 4 L 4
L
( 0.5) 3
2 M 2

0
0
1 1
0 2
1
0

0 0 0.5 1

0
1
0 0
0 0
0
1

0
1

0 M 15
.

1 M 4
2 M 2
0 M
0 M

(iv). Triangularizao baseada no piv k = 4:

0
0
1 1
0 2
1
0

0 0 0.5 1

0
1
0 0
0 0
0
1

0 M 0
0 M 1

0 M 15
.

1 M 4
( 1)
L
2 M 2 L 5 L 5
( 1) 4

0
0
1 1
0 2
1
0

0 0 0.5 1

0
1
0 0
0 0
0
0

0
1

0 M 15
.

1 M 4
1 M 2
0 M
0 M

(v). Retrosubstituio:
1 . x5 = 2
1 . x 4 + 1 . x 5 = 4
0.5 . x 3 + 1 . x 4 = 15
.
2 . x2 - 1 . x3 = 1
1 . x1 - 1 . x 2 = 0

x5 = 2
x4 = 6
x3 = 9
x2 = 5
x1 = 5
70

Soluo = {5,5,9,6,2}
Consideraes finais:
(i). Em sistemas de equaes lineares que relacionam variveis com grandezas de magnitudes
diferentes, como por ex.: metros e milmetros, podem existir coeficientes tambm com
magnitudes bastante diferentes. Nestes casos recomenda-se normalizar os coeficientes das
equaes do sistema, dividindo cada equao pelo coeficiente de maior mdulo. Este
procedimento reduz os erros por perda de significao;
(ii). A avaliao do determinante da matriz de coeficientes uma questo estrategicamente
importante para que se possa classificar as possibilidades de solues do sistema de equaes
lineares. Se o clculo do determinante for efetuado via a sua definio clssica, dada pela
"Soma do termo principal, dada pelo produto da diagonal principal da matriz, com os
produtos dos elementos do termo principal permutando-se os seus segundos ndices", tem-se
um nmero de operaes aritmticas envolvidas muito elevado.
Por isso, adota-se uma forma de clculo alternativa, baseada nas operaes elementares
utilizadas nos mtodos de resoluo do sistema de equaes lineares.
Por exemplo, no mtodo de Gauss aplica-se um conjunto de operaes elementares
para triangularizar a matriz expandida, mas nenhuma destas operaes aplicadas altera a
magnitude do determinante, podem alterar apenas o sinal do determinante quando acontecem
as trocas de linhas ou colunas.
Ento, aps o procedimento de eliminaes sucessivas gera-se a matriz
triangularizada, cujo determinante pode ser obtido pelo simples produto dos elementos da
diagonal principal.
Uma desvantagem deste clculo do determinante sobre a matriz triangular processada,
atravs das operaes elementares, o fato de que esta forma final sofreu o acumulo de erros
de arredondamentos sucessivos. Ento, esta forma de clculo do determinante no exata, e
pode gerar inconsistncias. Por exemplo, em matrizes singulares possvel avaliar um
determinante residual diferente de zero decorrente de erros de arredondamento acumulados,
gerando uma soluo inconsistente para o sistema original.
(iii). As solues dos sistemas de equaes lineares podem ser classificadas segundo trs
casos distintos:
(a). Sistema Determinado: quando o sistema de equaes tem soluo nica, nestes
casos a matriz de coeficientes no singular e o determinante no nulo. Ocorrem quando
todas as equaes do sistemas so linearmente independentes (LI), nenhuma combinao
linear de outras.
(b). Sistema Indeterminado: quando o sistema de equaes tem infinitas solues,
neste caso a matriz de coeficientes singular, ou seja, o seu determinante nulo. Ocorrem
quando se tem um sistema de equaes lineares, cujos coeficientes possuem alguma relao
de dependncia, por exemplo, uma equao gerada a partir da combinao linear de outras.
Pode-se concluir que a(s) equao(es) gerada(s) a partir da combinao linear de outras
existentes, no acrescenta(m) informaes novas ao conjunto de equaes do sistema. Desta
forma, o sistema se comporta como se tivesse menos equaes que incgnitas, deixando
alguma(s) incgnita(s) livre(s) de equaes prprias que restrinjam o seu(s) valor(es). No
Mtodo de eliminao de Gauss com pivotamento total, pode-se constatar este fato
observando que no final do processo de eliminao, uma, ou mais, linhas inteiras da matriz
expandida se anulam e seu termo independente tambm se anula.
71

(b). Sistema Impossvel: quando o sistema de equaes no tem soluo alguma,


neste caso a matriz de coeficientes tambm singular, e seu determinante nulo. Ocorrem
quando alguma equao do sistema impossvel de ser satisfeita. Por exemplo, se alguma
equao do sistema gerada a partir da combinao linear de apenas um dos membros de
duas outras equaes, gerando uma equao inconsistente. No Mtodo de Gauss com
pivotamento total, pode-se constatar este fato observando que no final do processo de
eliminao, uma, ou mais, linhas da matriz de coeficientes se anulam, mas o termo
independente no se anula. Na prtica, significa ter uma equao com todos os coeficientes
nulos e que deve satisfazer a um termo independente no nulo, o que impossvel de ser
satisfeito.
Exerccios:
7). Classifique as possveis solues dos seguintes sistemas de equaes lineares, atravs do
mtodo de Gauss com pivotamento total:
3x 1 + 1.5x 2 + 4.75x 3 = 8
a). 4 x 1 + 2 x 2 + 3x 3 = 7
2 x + 5x + 3x = 12
2
3
1
x 1 + 0.5x 2 1.75x 3 = 1

b). 3x 1 + 1.5x 2 + 4.75 x 3 = 8


4 x + 2 x + 3x = 7
2
3
1
x 1 + 0.5x 2 1.75x 3 = 0
c). 3x 1 + 1.5x 2 + 4.75x 3 = 8
4 x + 2 x + 3x = 7
2
3
1

2.3 - Sistemas Lineares Mal Condicionados:


Considere o seguinte sistema linear:

x1 + 3x 2 = 4
a).
x1 + 3.00001x 2 = 4.00001
cuja soluo exata S = {1,1}
Toma-se agora um sistema de equaes derivado do sistema (a), e que sofreu uma
pequena perturbao em dois de seus coeficiente, impondo-se uma variao ao coeficiente a22,
de 3.00001 para 2.99999 e em b2, de 4.00001 para 4.00002, conforme segue:

x1 + 3x2 = 4
b).
x1 + 2.99999 x2 = 4.00002
cuja soluo exata S = {10,-2}
Note que uma pequena variao em dois coeficientes, da ordem de 0.025% acarreta
72

uma variao enorme de 900% na soluo do sistema. Classificam-se estes sistemas altamente
sensveis a variaes nos seus coeficientes como sistemas mal condicionados.
Imagine agora que esta pequena variao devida a uma perturbao decorrente de
erros de arredondamento, que esto presentes em todo mtodo direto, na manipulao dos
coeficientes das equaes. Ento, nestes casos pode-se obter solues irreais, decorrentes de
pequenas alteraes nos coeficientes.
Por isso, necessrio tomar cuidados especiais na resoluo destes sistemas mal
condicionados, devido a grande sensibilidade da soluo em relao aos seus coeficientes,
deve-se ento conhecer uma maneira de identificar o sistema de equaes mal condicionado,
de preferncia antes de resolver o sistema. Para isto pode-se recorrer a alguns critrios:
a). Se o determinante da matriz A for considerado relativamente pequeno, ou melhor, se o
determinante normalizado de A ( ||det(A)|| ) for muito pequeno:

||det( A )|| =

|det( A )|
n

i =1

i =

a
i =1

<< 1 , onde

2
ij

i {1,2,...,n}

Ento, se || det(A) || << 1 o sistema considerado mal condicionado.


Na prtica pode-se adotar um limite, onde || det(A) || < 0,1
condicionamento do sistema A x = b.

representa mal

b). Ou se o nmero de condicionamento, Cond(A), for considerado muito grande, ou seja:


Cond (A) = || A || . || A-1 || >> 1
Ento, se Cond (A) >> 1 o sistema considerado mal condicionado.
Tambm para efeitos prticos, pode-se estabelecer que se Cond(A) > 10, ento, o
sistema A x = b mal condicionado.
A norma de A (||A||) estabelecida definida da seguinte forma:

=
Max
a ij

1 i n
j= 1
que corresponde a maior soma dos mdulos dos elementos de uma linha da matriz A.
A

Ex. 9: Avaliar o condicionamento do sistema


x1 + 3x 2 = 4

x1 + 3.00001x 2 = 4.00001
a). Verificar se ||det(A)|| <<1
det(A) = 0,00001

1 = 12 + 3 2 = 10

2 = 12 + (3,00001) 2 10
73

0.00001
=10-6
10 10
||det(A)|| = 106 << 1 => mal condicionado
(por conveno, usaremos <0,1 como mal condicionado)
||det( A )|| =

b). ou Verificar se Cond (A) >> 1

|| A ||= 1 + 3,00001 = 4,0001 4


|| A 1 ||= 300.001 + 300.000 = 600.001

300001 300000
onde A 1 =

100000 100000

Cond (A) = 4,00001 x 600.001 2,4 . 106


Cond (A) 2,4 . 106 >> 1 => confirma o mal condicionamento.
(por conveno, usaremos >10 como mal condicionado)
Exerccios:
8). Avalie o condicionamento do sistema abaixo pelos dois critrios estabelecidos:
x 1 + 0.5x 2 0 ,05x 3 = 1

3x 1 + 1.5x 2 + 4.75x 3 = 8
4 ,01x + 2 x + 3x = 7
1
2
3

Consideraes:
(i). Neste caso interessante usar um mtodo de soluo que no altere a forma original das
equaes, como o caso dos mtodos iterativos (vide captulo ). Porm, os mtodos
iterativos nem sempre convergem, como visto;
(ii). No caso da necessidade de aplicao de mtodos diretos, deveramos adotar
procedimentos com menor nmero de operaes aritmticas possvel, e consequentemente
arredondamentos menores. Neste caso sugere-se a aplicao de mtodos diretos de
decomposio LU, que apesar de terem um nmero total de operaes da mesma ordem que o
mtodo de Gauss (O(n3/3) - para o mtodo de Crout), mas acumulam menos erros de
arredondamento, devido a menor influncia das operaes de diviso.
(iii). O processo de pivotamento indispensvel sempre que surgem zeros nas posies dos
pivs durante a aplicao das operaes elementares, no caso de matrizes de coeficientes no
singulares (det(A) 0). No entanto, nos casos especficos de sistemas mal condicionados, o
processo de pivotao considerado imprescndivel e a pivotao normalmente insuficiente
para estabilizar os efeitos dos arredondamentos, nestas situaes recomenda-se o uso da
pivotao total, ou completa, que torna a soluo do sistema menos sensvel aos efeitos dos
erros de arredondamento.
(iv). Uma forma de minimizar os erros de arredondamento, principalmente em sistemas mal
condicionados, utilizar a preciso dupla na implementao dos clculos envolvidos na
resoluo do sistema. interessante resolver o sistema de equaes usando preciso simples e
preciso dupla, para depois fazer uma comparao e verificar se os erros decorrentes de
74

arredondamentos sucessivos significativo ou no, dependendo da tolerncia requerida.


(v). Em sistemas de equaes mal condicionados tem-se uma caracterstica peculiar na
avaliao dos resduos das equaes, onde se pode notar que nem sempre a soluo mais
exata gera os menores resduos.
Vamos analisar a seguinte situao prtica:
Suponha que temos duas solues aproximadas S1 e S2 para o sistema apresentado
anteriormente,
x 1 + 3x 2 = 4

x 1 + 3.00001x 2 = 4.00001
onde S1 = {4,0} e S2 = {1.5,1}.
Calculando os resduos das equaes do sistema para cada soluo proposta tem-se:

r1 = 4 ( x 1 + 3x 2 )
R = {r1,r2}
r2 = 4.00001 ( x1 + 3.00001x 2 )
Para S1 R1 = {0,0.00001} e
para S2 R2 = {0.5,0.5}
Aparentemente, pela avaliao dos resduos das equaes, a soluo mais exata S1,
pois gera menores resduos, porm, sabendo que a soluo exata S = {1,1}, conclui-se que a
soluo S2 est mais prxima da soluo exata do que S1.
Ento, conclui-se que a avaliao dos resduos das equaes de um sistema no pode
ser usada como critrio para anlise da proximidade de uma soluo em relao ao seu valor
exato (no pode ser usado como critrio de convergncia).
(vii). Sabe-se que todos os mtodos diretos, de eliminao e de decomposio, geram
solues com erros de arredondamento, ento, quando so avaliados os resduos das equaes
a partir das solues obtidas, geram-se valores no nulos decorrentes do acmulo de
arredondamentos ao longo das operaes.
Uma forma alternativa para minimizao dos efeitos dos arredondamentos sucessivos,
o chamado processo de refinamentos sucessivos, em que cada soluo obtida sofre uma
correo E na direo da soluo exata.
Suponhamos que se queira refinar a soluo S1 obtida para o sistema Ax = b. Ento,
vamos impor uma correo E sobre S1, e supor que esta correo seja suficiente para conduzir
a soluo exata s:
S = S1 + E E = S - S1
Multiplicando a matriz A na equao acima temos,
A E = A (S - S1)
A E = A S - A S1
Como S a soluo exata do sistema A x = b, ento A S = b e logo,
A E = b - A S1
75

Sabe-se que b - A S1 corresponde ao resduo das equaes do sistema em relao a


soluo proposta S1, tem-se que
r = b - A S1
AE=r
Ento, resolvendo o sistema A E = r , obtm-se o valor da correo E, que s no a
correo exata para a soluo, porque os erros de arredondamento ainda esto presentes.
Ento, na verdade, se obtm uma soluo nova (S2) para A x = b, que deve ser mais exata que
S1, conforme segue:
S2 = S1 + E
Caso a soluo S2 ainda esta esteja significativamente afetada por erros de
arredondamento, pode-se aplicar novamente o mesmo procedimento de correo, at que a
soluo obtida se torne suficientemente prxima da soluo exata, para ser adotada como
soluo do sistema.
(viii). Uma limitao deste processo de refinamentos sucessivos, alm do alto custo, o fato
dele se utilizar do mesmo procedimento de resoluo que gerou os arredondamentos iniciais,
ento, estes arredondamentos vo continuar tambm presentes ao longo do processo de
refinamento.

76

2.4 - Soluo de Sistemas Lineares por Mtodos Iterativos


2.4.1- Introduo
Quando o sistema de equaes lineares A x = b possuir algumas caractersticas
especiais, tais como:
a). Ordem n elevada (n o nmero de equaes);
b). A matriz dos coeficientes possuir grande quantidade de elementos nulos (matriz esparsa);
c). Os coeficientes puderem ser gerados atravs de alguma lei de formao;
em geral, ser mais eficiente resolv-lo atravs de um mtodo iterativo, desde que a
convergncia seja possvel.
Obs.: Note que se um algoritmo de um mtodo direto, como o do Mtodo de Gauss, for
aplicado ao um sistema com matriz de coeficientes esparsa, muitas operaes aritmticas
desnecessrias sero empregadas, por exemplo na manipulao de zeros com outros zeros.
A soluo iterativa de A x = b consiste em se tomar uma soluo inicial xo para a

soluo = [1,2,...,n]T procurada e construir uma sequncia S = {x k } k = 0 de solues


aproximadas tal que
lim x k = , se esta sequncia for convergente.
k

A questo fundamental como gerar esta sequncia convergente.


Em A x = b, tomando a matriz A e particionando-a na forma cannica,
A = B + C, com B no singular, resulta que:
(B + C) x = b

Bx=b-Cx

x = B-1 b - B-1 C x

(1)

Ento, aplicando a soluo inicial xo na eq. (1), resulta


x1 = B-1 b - B-1 C xo
reaplicando x1 em (1), obtm-se x2 e assim sucessivamente, resultando numa
sequncia
S = {x k } k = 0 , onde

xk+1 = B-1 b - B-1 C xk

(2)

Se a sequencia (2) for convergente, ento existe


lim x k +1 = lim x k
k

(3)

Aplicando o limite a ambos os termos da eq. (2), tem-se


lim x k +1 = B 1 b B 1 C lim x k
k

(4)
77

Aplicando a eq. (3) na eq. (4), tem-se


lim x k +1 = B 1 b B 1 C lim x k +1
k

(1 + B 1 C ) lim x k +1 = B 1 b
k

(5)

Multiplicando a eq. (5) a esquerda pela matriz B, tem-se


( B + C) lim x k +1 = b

(6)

Mas A = B + C, ento
A lim x k +1 = b
k

Logo,
lim x k +1 =
k

O problema agora que para se gerar a sequncia (2) necessita-se da matriz inversa B1
e portanto esta inversa, por questo de eficincia, tem que ser obtida facilmente. A seguir
sero abordadas duas maneiras, no exclusivas, de se particionar a matriz A de modo que a
matriz B seja trivialmente invertida.

2.4.2. Mtodo iterativo de Jacobi


No sistema A x = b tomando a matriz A e particionando-a na forma
A = D + L + U,
onde
D = Diagonal principal de A;
L = Matriz triangular inferior estrita obtida dos elementos infradiagonais de A;
U = Matriz triangular superior estrita obtida dos elementos supradiagonais de A.
Ento, considerando na forma cannica que B = D C = L + U
e aplicando-as na eq. (2) vem:

x k +1 = D 1 b D 1 ( L + U) x k

(7)

onde os elementos de D-1 so trivialmente obtidos tomando-se os recprocos dos elementos


diagonais de A. Expressando a eq. (7) na forma desenvolvida resulta
n

x ik +1 = ( b i a ij x kj ) / a ii

i = 1,2,...,n

(8)

j= 1
j i

Logo, para se resolver A x = b por Jacobi, toma-se uma soluo inicial


x = [ x 1o , x o2 ,..., x on ] T, isola-se a i-sima incgnita xi na i-sima equao e aplica-se (2) para
se tentar obter a sequncia convergente.
o

78

Ex. 9): Resolver o seguinte sistema pelo mtodo de Jacobi.


3x1 x 2 x 3 = 1

x1 + 3x 2 + x 3 = 5
2x 2x + 4x = 4
2
3
1
Montando as equaes evolutivas para as variveis do sistema tem-se:

x1k+1 = (1 + x 2k + x 3k ) / 3
k+1
k
k
x 2 = (5 x1 x 3 ) / 3
k+1
k
k
x 3 = (4 2x1 + 2x 2 ) / 4
Valor inicial: ( x10 , x 02 , x 03 ) = (0,0,0)
k
0
1
2
3
4
5
6

x1k

x 2k

x 3k

0
0,333
1,222
1,296
0,901
0,868
1,044

0
1.667
1,222
0,704
0,901
1,132
1.044

0
1
1,667
1
0,704
1
1,132

Pode-se notar que a sequncia evolutiva obtida para as variveis x ik est convergindo
para a soluo S, que no caso dada por S = {1,1,1}.
Neste ponto necessrio estabelecer um critrio de parada que determine o quo
prxima da soluo exata est a sequncia convergente x ik , dentre os critrios mais comuns
esto:
(i). Max { xik +1 xik }
i = 1,2,3,...,n
Corresponde mxima diferena absoluta entre valores novos e antigos de todas as
variveis.
xik +1 xik

k +1
xi

(ii). Max

i = 1,2,3,...,n

Corresponde mxima diferena relativa entre valores novos e antigos de todas as


variveis.
(iii). Max { Rik +1 }

i = 1,2,3,...,n
n

Corresponde ao maior resduo dentre todas as equaes, onde R ik +1 = b i a ij x kj +1


j=1

No caso do exemplo 7 anterior, aplicando-se o critrio (i), tem-se:

79

k
0
1
2
3
4
5
6

x1k

x 2k

x 3k

| x 1k +1 x 1k |

| x 2k +1 x 2k |

| x 3k +1 x 3k |

0
0,333
1,222
1,296
0,901
0,868
1,044

0
1.667
1,222
0,704
0,901
1,132
1.044

0
1
1,667
1
0,704
1
1,132

0,333
0,889
0,074
0,395
0,033
0,176

1,667
0,555
0,518
0,197
0,197
0,088

1
0,667
0,667
0,296
0,296
0,132

Portanto, neste exemplo, o critrio alcanado Max | x ik +1 x ik | 0,176 .


Obs.: Note que, neste exemplo, o processo iterativo do tipo oscilatrio, onde as variveis
aumentam e diminuem alternativamente. Este efeito prejudica a convergncia, tornando o
processo lento.

2.4.3 - Mtodo Iterativo de Gauss Seidel


Em A x = b com a partio de A na forma A = D + L + U como no Jacobi, porm
tomando B = D + L para a cannica, tem-se de (2) que:

x k +1 = ( D + L) 1 b [( D + L) 1 U]x k

(9)

Multiplicando a eq. (9) pela matriz (D+L), tem-se

( D + L) x k +1 = b Ux k
Dx k +1 = b Lx k +1 Ux k
x k +1 = D 1 ( b Lx k +1 Ux k )

(10)

que expressa na forma desenvolvida, torna-se


i 1

x k +1 = ( b i a ij x kj +1
j= 1
j<i

j = i +1
j>i

ij

x kj ) / a ii

i = 1,2,...,n

(11)

cuja operacionalizao semelhante do mtodo de Jacobi, exceto que em (11) utiliza-se


sempre o ltimo valor obtido e em (8) utiliza-se o ltimo vetor obtido.
Ex. 10): Resolver o seguinte sistema pelo mtodo de Gauss-Seidel:
3x1 x 2 x 3 = 1

x1 + 3x 2 + x 3 = 5
2x 2x + 4x = 4
2
3
1
Montando as equaes evolutivas para as variveis do sistema temos:
80

x1k +1 = (1 + x 2k + x 3k ) / 3
k +1
k +1
k
x 2 = (5 x1 x 3 ) / 3
k +1
k +1
k+1
x 3 = (4 2x1 + 2x 2 ) / 4
Note que as equaes evolutivas se utilizam dos valores disponveis mais atualizados.
Valor inicial: ( x10 , x 02 , x 03 ) = (0,0,0)
K
x1k
x 2k
x 3k
0
0
0
0
1
0,333
1,555
1.611
2
1.388
0.666
0.638
3
0.768
1.197
1.214
4
1.137
0.882
0.872
5
0.918
1.069
1.075
6
1.048
0.958
0.955

| x 1k +1 x 1k |

| x 2k +1 x 2k |

| x 3k +1 x 3k |

0.333
1.055
0.620
0.368
0.218
0.129

1.555
0.888
0.531
0.314
0.186
0.110

1.611
0.972
0.575
0.341
0.202
0.120

Aplicando o critrio (i), tem-se: Max | x ik +1 x ik | 0,129 .


Obs.: Note que, no mesmo exemplo, o processo iterativo correspondente a aplicao do
Mtodo de Gauss-Seidel tambm um processo oscilatrio, porm neste caso tem-se um
processo de convergncia um pouco mais rpido, por que no mtodo de Gauss-Seidel so
tomados os valores disponveis mais atualizados.

2.4.4 - Convergncia dos Mtodos Iterativos


Nos tpicos anteriores foram desenvolvidas duas formas (expresses (8) e (11)) de se

{ }

construir uma seqncia S = x k

k =0

de possveis aproximaes para a soluo de Ax = b.

Aqui, ser abordada a questo de quando esta seqncia ser convergente. Para tanto,
necessita-se de mais dois conceitos.
n

Definio 1: No sistema Ax = b, sejam Si = | aij |, i = 1,..., n . Da, diz-se que ele diagonal
j =1
ji

dominante se ocorrer:
1o ) | a ii | S i , i = 1,..., n e
2o ) | a ii | > S i , para pelo menos uma linha i de A.
Teorema (Convergncia) - Critrio de Scarborough:
Se o sistema A x = b for diagonal dominante, ou diagonal estritamente dominante,
ento tanto a seqncia construda pelo mtodo de Jacobi, quanto a de Gauss-Seidel
convergem para a soluo.
Vide exemplos 7 e 8.
Com relao convergncia dos mtodos iterativos, algumas caractersticas
importantes devem ser salientadas, dentre as quais destacam-se:
81

{ }

1o) A convergncia de S = x k

k =0

no depende do valor inicial x0. Portanto, a escolha do x0

adequado afeta apenas na quantidade de iteraes a serem efetuadas. Verificar isto, a ttulo de
x x =1
exemplo, em 1 2
com vrios x0 diferentes;
x1 + 2. x2 = 5
2o) O teorema da convergncia contm uma condio suficiente, porm no necessria.
Portanto, se for verdadeiro, a seqncia S convergir e se no for verdadeiro nada pode-se
x + 2. x 2 = 3
afirmar. Verificar que em 1
Gauss-Seidel fornece a seqncia convergente,
x

3
.
x
=

2
2
1
mesmo no satisfazendo o teorema;
3o) Um sistema que no seja diagonal dominante pode, em alguns casos ser transformado,
atravs de troca de linhas e/ou colunas (pivotamento parcial e total), para satisfazer esta
condio;
4o) Existem sistemas, muitos at triviais, que no so solveis por estes mtodos iterativos, a
x x =0
menos que x0 = ( prpria soluo). Testar isto em 1 2
;
x
+
x
=
3
1 2
5o) A validade da condio suficiente de convergncia do teorema citado estende-se tambm
aos sistemas lineares que so diagonal dominante sobre as colunas da matriz de coeficientes.
2. x + 3. x 2 = 5
diagonal 'estritamente' dominante sobre as colunas e portanto
Verificar que 1
x1 + 5. x 2 = 4
tem convergncia assegurada (diagonais maiores que os vizinhos de coluna, em todas as
colunas).
6o) O teorema da convergncia enunciado anteriormente no o nico.Verificar na literatura
outros critrios de convergncia.

2.4.5 - Aplicao de coeficientes de Relaxao


Caso o sistema de equaes lineares no satisfaa os critrios de convergncia, ou no
tenha uma diagonal principal fortemente dominante ( considerada uma digonal fortemente
dominate quando a maioria das linhas tem diagonal principal maior ou igual ao dobro da
soma de seus coeficientes vizinhos em mdulo), o processo iterativo poder oscilar ou at
mesmo divergir. Nestes casos recomendado tentar desacelerar o processo de atualizao
iterativa usando fatores de sub-relaxao em cada equao.
Por exemplo, para obter o valor mais atualizado de uma varivel xik+1 qualquer, temse

xik+1 = xik + xik+1


onde x ik o valor antigo, x ik+1 o valor da atualizao imposta ao valor antigo x ik para
atingir o valor novo xik+1 .
Caso se queira aplicar um fator de desacelerao, ou amortecimento na atualizao do
82

valor novo, impe-se um fator de subrelaxao , com 0 < 1 , da seguinte forma,

xik +1 = xik + xik +1


Alternativamente, pode-se substituir o valor da atualizao total xik+1 = xik+1 xik na
equao anterior, o que gera a seguinte forma,

xik +1 = xik + ( x ik +1 xik )


xik +1 = (1 ) x ik + xik +1
Por exemplo, a aplicao de subrelaxao para o mtodo de Gauss-Seidel gera a seguinte
equao geral,
i 1

x ik +1 = (1 ) x ik + ( b i a ij x kj +1
j= 1
j<i

j = i +1
j>i

ij

x kj ) / a ii

i = 1,2,...,n

(11)

Ex. 11): Resolver o seguinte sistema pelo mtodo de Gauss-Seidel adotando uma
subrelaxao = 0.5 (lembrando que no exemplo 8 este mesmo sistema foi resolvido e sofreu
oscilaes).
3x1 x 2 x 3 = 1

x1 + 3x 2 + x 3 = 5
2x 2x + 4x = 4
2
3
1
Montando as equaes evolutivas para as variveis do sistema temos:

x1k +1 = (1 ) x1k + (1 + x 2k + x 3k ) / 3
k +1
k +1
k
k
x 2 = (1 ) x 2 + (5 x1 x 3 ) / 3
k +1
k
k+1
k +1
x 3 = (1 ) x 3 + (4 2x1 + 2x 2 ) / 4
Note que as equaes evolutivas se utilizam dos valores disponveis mais atualizados.
Valor inicial: ( x10 , x 02 , x 03 ) = (0,0,0) e = 0.5
K
0
1
2
3
4
5
6

x1k

x 2k

x 3k

| x 1k +1 x 1k |

| x 2k +1 x 2k |

| x 3k +1 x 3k |

0
0.166
0.494
0.748
0.896
0.966
0.993

0
0.805
1.043
1.069
1.041
1.014
1.000

0
0.659
0.967
1.063
1.067
1.046
1.024

0.166
0.327
0.254
0.147
0.069
0.026

0.805
0.238
0.025
0.027
0.026
0.014

0.659
0.307
0.096
0.004
0.021
0.021

Aplicando o critrio (i), tem-se: Max | x ik +1 x ik | 0,026 .


Obs.: Note que o processo iterativo com o fator de subrelaxao mais estvel, gerando um
83

processo de convergncia monotnico (com erro sempre decrescente), e consequentemente


tem-se um processo iterativo mais rpido. Note que com as mesmas 6 iteraes do mtodo de
Gauss-Seidel atinge-se um erro mximo de 0,026 com sub-relaxao contra um erro de 0,129
sem sub-relaxao.
Consideraes:
(i). Se o sistema satisfizer os critrios de convergncia, no haver necessidade de aplicao
de fatores de sub ou sobre-relaxao, pois nestes casos o processo iterativo j convergente.
(ii). A utilizao de fatores de sub-relaxao ( 0 < < 1 ) no garante a convergncia do
processo, mas pode agilizar esta convergncia (vide exemplo 9) em processos iterativos
oscilatrios com as iteraes.
(iii). Caso os sistema no tenha convergncia garantida ou no tenha diagonal fortemente
dominante recomendado testar o efeito de fatores de sub-relaxao ou de fatores de sobrerelaxao.
(iv). Em algumas destas situaes prticas possvel at acelerar o processo iterativo com o
uso de fatores de sobre-relaxao, com 1 < 2 , caso a convergncia esteja muito lenta. Este
mtodo de Gauss-Seidel modificado conhecido na literatura pertinente como SOR
("Sucessive Over Relaxation").
(v). A escolha adequada do fator ( 0 < < 2 ) pode conduzir o processo iterativo a uma
performance tima, com o menor nmero possvel de iteraes, mas s peossivel descobri-lo
fazendo testes sucessivos.

84

Captulo 3 - Soluo de Equaes a uma Varivel


3.0 - Preliminares
Nos modelos matemticos de problemas de vrias reas (engenharia, economia, etc.)
ocorre a necessidade de se resolver uma equao f(x) = 0.
Definio 1: Raiz de f(x) = 0 todo C (Complexos), tal que f() = 0. Ou seja, um valor
qualquer raiz de f(x) = 0, ou zero da funo f(x) se zerar a funo f(x).
Exemplos:
i) x3 - 2x2 + 2x = 0 1 = 0; 2 = 1 + i ; 3 = 1 - i
ii) e 3x - 2 = 0 3x3 ln e = ln 2 x3 = ln32 =
iii) sen (x) = 1 k = 2k + /2, com k
iv) 4.cos(x) = ex = ?
v) e2x = - 3
3

3 ln 2
3

Note-se que nem sempre possvel explicitar a varivel da equao, ou seja, nem
sempre se consegue isolar a varivel em um dos membros da equao para se obter uma raiz
.
Pelas equaes do exemplo anterior, conclui-se que:
1) Uma equao f(x)=0 pode:
no ter soluo;
ter uma nica soluo;
ter uma quantidade finita de solues;
ter uma quantidade infinita de solues;
2) A soluo de f(x) = 0 pode ser muito difcil, ou at impossvel, de ser obtida pela tcnica
de isolamento da varivel;
3) Resolver equaes exige conhecimento de outras metodologias, alm da forma de
isolamento da varivel. Aqui, usaremos a metodologia iterativa (proposta por Newton no
sculo XVII) para a soluo das equaes.
Definio 2: Um mtodo iterativo obedece sempre duas etapas na sua execuo:
1). Isolamento da soluo desejada (aproximao inicial da soluo);
2). Refinamento da soluo isolada at a preciso requerida.

3.1 - Isolamento de Solues de f(x) = 0


Para equaes f(x) = 0 esta etapa a mais difcil por ser a mais subjetiva . Ela pode ser
efetivada atravs de:
1). Conhecimento terico sobre o problema modelado que gerou a equao.
2). Fazer esboo grfico de y = f(x).

85

Limita-se (s) raz(es) reais ()


pois a abcissa definida em .

3) Utilizar propriedades algbricas da funo geradora y = f(x). Dentre estas propriedades


destacam-se:
Propriedade 1 (Teorema de Bolzano): Em f(x) = 0, se y=f(x) for contnua em [a,b] e
f(a) * f(b) < 0 [a,b] / f() = 0.
4) Agrupar as funes geradoras, y = f(x), em classes com caractersticas especiais.
Exemplo:
As funes geradoras do tipo pn(x) = a1xn + a2xn-1 + ... + an-1, com i , so denominadas
polinmios de grau n e as equaes polinomiais, pn (x) = 0, possuem vrias propriedades que
facilitam o isolamento das solues.
Propriedade 2: Toda equao polinomial de grau n possui n razes reais ou complexas,
distintas ou repetidas.
Propriedade 3: Para equaes polinomiais de coeficientes reais tem-se que, se o complexo
a + bi for raiz, seu conjugado a - bi tambm raiz.
3.2 - Refinamento da soluo isolada
Aps isolada a raiz de f(x) = 0 ela ser refinada atravs de tcnicas especficas. Estas
tcnicas podem ser agrupadas em trs grandes famlias de mtodos:
1) Mtodos de quebras: Obter [a,b] / [a,b] e particion-lo em subintervalos [ai,bi]
contendo e, tais que, ilim
|ai - bi| = 0.

Estes mtodos tm convergncia garantida mas normalmente so lentos.
2) Mtodos de linearizao: Obtm-se uma aproximao inicial x0 (valor estimado) para o
e posteriormente constri-se uma seqncia iterativa { xi } i= 0 / lim xi = .
i

Para definir a seqncia iterativa, lineariza-se a equao no linear f(x) = 0, gerando uma
equao linear recursiva xi+1 = F(xi).
Estes mtodos no tm convergncia garantida, mas, dependendo da forma recursiva
86

estabelecida F(x), tm convergncia rpida.


3) Mtodos hbridos: consistem na mescla das duas metodologias, tentando associar as suas
vantagens: convergncia garantida e alta velocidade de convergncia.
3.2.1 - Mtodos de Quebra
3.2.1.1 - Mtodo da Bisseo (ou Bipartio)
Em f(x) = 0 se f(x) for contnua em [a,b] e ocorrer f(a) * f(b) < 0, ento uma raiz
[a,b] pode ser obtida como segue:
a + b
i) obter x1 =
2
1
ii) se f(x ) = 0 x1 =
seno devemos verificar em qual subintervalo de [a,b] est:
se f(a) . f(x1 ) < 0 [a, x1 ] e b x1

1
1
1
se f(x ) . f(b) < 0 [x , b] e a x
Redefinindo o novo intervalo [a, b] retorna - se ao passo (i)

No exemplo ilustrado abaixo [a,x1] b = x1, ou seja, o valor de b redefinido, para que
fique contido em um intervalo menor. Assim, repete-se o processo iterativo sucessivamente,
avaliando xk, com k = 2, 3, 4, ..., at que | a - b | < .

Neste ponto podemos levantar uma questo fundamental: ser que klim
xk = ?

|b a |
, onde a e b so os valores
2k
limites do intervalo inicial e k indica o nvel iterativo, ou seja, nmero de biparties.
Note-se que o comprimento de cada novo subintervalo

|b a |
=0
k
2
k

Como: lim

lim xk =
k

Ento, teoricamente, a raiz ser atingida quando o nmero k de biparties tende ao infinito.
87

Exemplo:
x
1o ) Obtenha um raiz de e sen(x) = 1, situada em [0,1], por bisseo com 4 parties.
6
4
2
0
-2
-4
-6
-8
-10

-1

Temos que f(x) = e sen(x) - 1 uma funo contnua em toda reta Real e verifica-se
que f(0) = -1 e f(1) = 1,287, como f(0) * f(1) < 0, [0,1], que pode ser comprovado pelo
grfico acima. Ento partimos para o processo de refinamento. Como:

K
0
1
2
3
4

a
0
0,5
0,5
0,5
0,5625

XM

0,5
0,75
0,625
0,5625
0,594

b
1
1
0,75
0,625
0,625

f(a)
-1
-0,21
-0,21
-0,21
-0,064

f(XM)
-0,21
0,443
0,093
-0,064
0,014

f(b)
1,287
1,287
0,443
0,093
0,093

Logo a raiz 0,594 com Erro=|a - b| = 0,062


Consideraes:
i) Quando truncar o processo de biparties para assegurar uma preciso estabelecida?
1o) Podemos predefinir a quantidade de parties atravs de:
O comprimento de cada subintervalo dado por:
| b a |

ln
|b a |
|b a |

k=
(1)

2k
2k
ln 2

Ento, aps a k-sima bipartio o comprimento do subintervalo dever ser da ordem da


preciso estabelecida .
Exemplo: Para x 5. e x = 0 obtenha o nmero de parties necessrias para aproximar
[1,2] com preciso = 10-10.

1
ln -10
10
= 33,2 k = 34
Aplicando (1) k =
ln 2
2o) Ou podemos repetir as biparties at que um critrio de parada seja satisfeito.
a) f (x MK ) <

88

Observao: Note que apesar de xk ainda estar longe da raiz , o critrio de parada
estabelecido | f(xk) | < pode j ter sido satisfeito. Portanto, um critrio que deve ser
estabelecido, mas no serve como deciso final, necessrio associar uma outra condio de
parada, como a do item b).
b) | b - a | <
c) | xk - xk-1| <
x k x k 1
d)
<
xk
x k x k 1
e) f ( x ) +
<
xk
k

|xk - xk-1| pequeno mas |f(xk)| ainda grande


Valor relativo do critrio de parada mais realstico,
principalmente quando xk muito pequeno ou muito grande
recomendvel usar um critrio combinado, que considere
mais de um efeito.

3.2.1.2 - Mtodo da Falsa Posio (ou das Cordas, ou Regula Falsi)

Mesmo intuitivamente, percebe-se que o mtodo da bisseo lento, pois reduz o


intervalo de busca da raiz em apenas 50 % a cada bipartio.
Como particionar o intervalo [a , b] de forma a obter uma convergncia mais rpida?

O mtodo da falsa posio consiste nas seguintes etapas:


i) Toma-se [a , b] com [a , b];
89

ii) Obtm-se os pontos (a, f(a)) e (b,f(b));


iii) Define-se a reta r(x) que passa por estes pontos:
f ( b) f ( a )
r ( x) = f ( a ) +
( x a)
ba
iv) O valor de xk obtido para r(xk) = 0 (interseo de r(x) com o eixo das abcissas)
f (a ).(b a ) a. f (b) b. f (a )
=
f (b) f (a )
f (b) f (a )
v) Pela propriedade 1 decide-se onde ficou a raiz , se em [a , xk], ou se em [xk , b].
vi) Redefine-se o intervalo e retorna-se ao item (ii) at se atingir a preciso desejada.
r(xk) = 0 xK = a

Consideraes:
Os mtodos de quebra podem apresentar, em algumas equaes, a seguinte situao:

Note-se que uma das extremidades pode ficar fixa, sem atualizao iterativa, atrasando o
processo de convergncia. Assim, muito importante alterar o critrio de parada, o
critrio de clculo do erro, que no pode ser mais baseado na diferena entre 'a' e 'b', |b-a|<, e
deve ser baseado no valor do zero x ou da f(x), | xk - xk-1| < ou f ( x k ) < .
Podemos ainda corrigir a convergncia unilateral, adotando-se o mtodo de Pgaso, o mtodo
da falsa posio modificado ou os mtodos de linearizao, que veremos a seguir.

3.2.2 - Mtodos de Linearizao:


Nestes mtodos busca-se linearizar a equao f(x) = 0 escolhendo apenas uma das
incgnitas x como varivel e todas a outras incgnitas so tratadas como se fossem
conhecidas, inicialmente assumindo valores estimados x*. Assim,
f(x) = 0 x = F(x*) ou xk = F(xk-1)
Exemplo: Resolver x. ln x 3,2 = 0

[ 2,3]

90

3
2
1
0
-1
-2
-3
-4

0.5

1.5

2.5

3.5

i) x . ln x * 3,2 = 0
3,2
x=
ln x*
Adotando xo = 3

k
0
1
2
3
...
53

x*
3,000
2,913
2,993
2,919
...
2,954

x=3,2/ln(x*)
2,913
2,993
2,919
...
...
2,954

A raiz obtida 2,954 com Erro=|xk - xk-1| < 10-3


ii)
x * ln x 3,2 = 0
3,2
ln x = *
x
3, 2

x = ex

x*

0
1
2
3
...
...

3
2,906
3,008
2,897
...

3, 2
*
x

x=e
2,906
3,008
2,897
3,17
...

Est divergindo.
Consideraes:
1. Este processo iterativo altamente sensvel escolha da forma iterativa x = F(x*), podendo
gerar seqncias iterativas convergentes, seqncias oscilatrias ou seqncias divergentes.
Em alguns casos podemos atenuar as oscilaes usando fatores de amortecimento (subrelaxao) no processo de atualizao da varivel xk (vide captulo 4).
91

2. Para se obter um resultado coerente e com exatido, necessrio que a cada iterao a resposta se
aproxime mais e mais da soluo real, ou seja, que o mtodo convirja para o valor real da
raiz. No caso do mtodo da bisseo, ns no precisamos nos preocupar com a convergncia, pois
nesse mtodo ela est sempre garantida, j que isolamos a raiz dentro de um dado intervalo e
nunca deixamos esse intervalo inicial. J no mtodo da iterao linear, a convergncia no
garantida a priori. A cada iterao podemos nos aproximar ou nos afastar da soluo real. Portanto,
antes de resolver um problema atravs desse mtodo recomendvel verificar se haver ou no a
convergncia. O seguinte Teorema coloca condies suficientes, porm no necessrias para
que o mtodo de iterao linear seja convergente.

Teorema:
Seja uma funo f(x) contnua em um intervalo [a,b] e uma raiz de f(x) contida em [a,b]. Seja F(x)
uma funo de iterao obtida a partir de f(x).
Se:
i). F(x) e F(x) forem contnuas em [a,b];
ii). |F(x)| < 1 (para todo) x [a,b];
iii). x* [a,b].
k
Ento: lim x =
k

Nesse caso, a sequncia xk converge para a raiz de f(x)=0.


3.2.3.1) Mtodo de Newton (Raphson)
Seja f(x) uma funo contnua no intervalo [a,b] e seja um zero contido neste
intervalo, com derivadas f(x) e f(x) contnuas, tambm em [a,b], mas com f(x) 0.
Podemos encontrar uma aproximao xk para a raiz de f(x)=0 no intervalo [a,b], utilizando
a sua expanso em srie de Taylor em torno de um valor inicial x * ou xk 1 estimado.
Qualquer funo f(x) pode ser representada, de forma exata, por srie de Taylor e a
equao f(x)=0 pode ser representada como segue, fazendo x = x * + x :
x1
x 2
f ( x) = f ( x* + x) = f ( x* ) + f ( x* ).
+ f ( x* ).
+ ...
1!244444
2! 44
1444444
4
3
funo original, com f ( x ) representado em srie de Taylor

f ( x) = 0
1
424
3
eq. original

x1
x 2
f ( x* ) + f ( x* ).
+ f ( x * ).
+ ... = 0
! 244442!4443
144444414
eq. original com f ( x ) representado em srie de Taylor com infinitas parcelas

Para resolvermos a equao representada em srie de Taylor, teramos que resolver


uma equao polinomial em x com grau infinito, o que seria impossvel.
Ento Newton assumiu que uma regio prxima da raiz os valores de x so
suficientemente pequenos para que se possa representar a funo f(x) apenas pelos seus dois
primeiros termos da srie de Taylor, truncando os demais termos considerados de ordem
inferior.
Assim,

f ( x* + x) f ( x* ) + f ( x* ).x = 0
Observa-se acima que a equao no linear f(x) = 0 foi substituda por uma equao
linearizada aproximada, onde a nica varivel x est presente em x = x - x*. Todas as
incgnitas nos demais termos so assumidas como conhecidas, ou seja, inicialmente so
valores estimados e so atualizados por um processo iterativo.
92

Ento, resolvemos

f ( x* ) + f ( x* ).x = 0
x =

f ( x* )
x = x* + x
*

f (x )

x = x*

f ( x* )
f ( x* )

Aproximao de Newton para a raiz de f(x)=0,


que ser atingida quando x tende a zero.

Note que o valor x da frmula de Newton uma aproximao para a raiz de f(x)=0, e
no o seu valor exato, porque houve um erro de truncamento da srie de Taylor representativa
de f(x), da ordem de O(x 2 ) , dado por
O (x 2 ) = f ' ' ( x * ).

x 2
x 3
+ f ' ' ' ( x * ).
+ ... .
2!
3!

Para melhorar a aproximao x da raiz de f(x) = 0, podemos adot-la como um novo


valor estimado x* para uma segunda avaliao, ou seja, uma segunda iterao, e assim por
diante:
f (xk )
x k +1 = x k
f (x k )
x 2
x 3
de modo que o erro de truncamento O (x 2 ) = f ' ' ( x * ).
+ f ' ' ' ( x * ).
+ ... vai sendo
2!
3!
reduzido a cada iterao.

Caractersticas:
Intuitivamente nota-se que o mtodo de Newton tem convergncia rpida. Pode-se provar
que a convergncia deste mtodo quadrtica, isto , o erro da prxima iterao (k+1)
aproximadamente o quadrado do erro da prxima iterao k.
Newton pode no convergir:
i) se x0 inadequado (onde a reta tangente, representativa de f(x) em x0, no corta o eixo x
nas proximidades de x0);

No exemplo acima, a reta tangente corta adequadamente o eixo x.


ii) se pegar um ponto crtico (onde a derivada vale zero);
iii) se ocorrer um looping .
93

Solues para estes problemas:


i) escolher x0 o mais prximo possvel de ;
ii) para se evitar a diviso por zero e loopings pode-se utilizar um variante do mtodo de
Newton:
x

k +1

f (xk )
=x
f (x k )
k

fixando o denominador em f (x0):


x k +1 = x k

f (x k )
f ( x 0 )

Newton modificado

Pode ser muito difcil, ou at impossvel, para o usurio obter a derivada explcita de f(x).
Como, ento, refinar a raiz pelo mtodo de Newton sem explicitar a f(x)?
Por definio, temos que:
f ( x + h) f ( x)
f ( x) = lim
h 0
h
se h for pequeno
f ( x + h) f ( x )
f ( x)
h
Podemos adotar, do lado direito da expresso de f'(x*), x = x* , x + h = x * + h e
h = x x * = x * , ou seja, x * tambm um valor estimado inicialmente:
f ( x * + x * ) f ( x * )
*
onde x pode ser inicialmente estimado e depois
f ( x * )
*
x
recalculado a cada iterao, conforme a formula normal de Newton-Raphson:

x =

f ( x* )
x = x * + x
*

f (x )
, onde x novo valor da raiz aproximada de f(x)=0.

Alternativamente, pode-se adotar f (x*) baseado em dois pontos anteriores x k 1 e x k para


depois substituir-se na expresso do mtodo de Newton:
f (xk )
f ( xk ) f ( xk 1 )
k +1
k
f ' ( x*) =

x =x
f (x k )
xk xk 1
f ( xk )
xk +1 = xk
f ( xk ) f ( xk 1 )
xk xk 1
( x x k 1 ). f ( x k )
MTODO DA SECANTE
x k +1 = x k k
f ( x k ) f ( x k 1 )
x . f ( xk ) xk . f ( xk 1 )
xk +1 = k 1
f ( xk ) f ( xk 1 )
Exemplo: Resolver com Newton-Raphson x. ln x 3,2 = 0

[ 2,3]

94

3
2
1
0
-1
-2
-3
-4

0.5

1.5

2.5

3.5

f ( x* ) = x. ln x 3,2
f ' ( x* ) = ln x + 1
f ( x* )
x = x * + x
f ( x * )
Adotando xo = 3 como valor inicial
x =

x*
3
2.9543
2.9542

k
0
1
2

f ( x* ) = x*. ln x* 3,2

f ' ( x* ) = ln x* + 1

x = x * + x

Erro =| x |

0.09584
3.4935e-004
4.7594e-009

2.0986
2.0833

2.9543
2.9542

0.04567
1.6769e-004

A raiz obtida 2,9542 com Erro=|xk - xk-1| < 10-3, em apenas 2 clculos (iteraes).
O que ocorre se a raiz de f(x) = 0 tiver multiplicidade maior que um?
Tendo uma raiz para f(x) = 0 Podemos reescrever f(x) da seguinte forma:
f(x) = (x - ).g(x),
onde g(x) o quociente da diviso de f(x) por (x - ) , que contm todas as outras razes de
f(x), exceto . Derivando esta expresso para f(x) tem-se:
f ( x) = ( x ). g ( x) + g ( x).1
Se anular tambm a funo quociente g(x) g(x) = 0 ( raiz de g(x)), ento, f(x)
f() = 0. Pois f()= ( - ). g(x) + g(x) f() = 0.
0
0
Logo, com razes repetidas a frmula do Mtodo de Newton apresenta f(x) 0 e f'(x) 0
tambm.
f ( xk ) 0
xk +1 = xk
f ( xk ) 0
O que torna a convergncia lenta.
Exemplo: Obtenha por Newton uma raiz de: e x x 1 = 0 com x 0 = 1.
f(x) = ex -x - 1
f(x) = ex - 1
Aplicando a frmula do mtodo de Newton vem:
x0 = 1
x1 = 0,58198
x2 = 0,31906
.
.

95

x4 = 0,08635
.
.
.

O processo se tornou muito lento,


perdeu a convergncia quadrtica.

x7 = 0,01107
x8 = 0,005545
.
.
.

x11 = 6,9 x 10-4


.
.
.

x13 = 1,7416 x 10-4


x14 = 8,8041 x 10-5 --> 0
Soluo dada a este problema:
Dado f(x) = 0, pode-se tomar uma funo g(x) modificada a partir de f(x):
f (x )
g (x ) =
f (x )
Agora, aplica-se funo modificada g(x) pois toda raiz que anula f(x) tambm anula g(x)
f ( xk )
g ( xk )
f ( xk )
xk +1 = xk
= xk
2
[ f ( xk )] f ( xk ). f ( xk )
g ( xk )
[ f ( xk )]2

xk 1 = xk

f ( xk ). f (xk )
[ f ( xk )]2 f ( xk ). f ( xk )

Convergir mais rpido em


casos de razes mltiplas.

Ou aplicamos a Regra de L'Hospital: Sejam f e g funes derivveis num intervalo aberto I,


exceto possivelmente, em um ponto a I. Suponhamos que g' (x)0 para todo xa em I.
(i) Se lim f(x) = lim g(x) = 0, ento
x) a

x) a

f ( x)
f ' ( x)
= lim
=L
lim
x a g ( x )
x a g ' ( x )

Logo,
f ( x)
f ' ( x)
= lim
= L , para o caso de f ( x ) 0 e f ' ( x ) 0 , resultando
lim
xa f ' ( x)

x a f ' ' ( x)
f ( xk )
f ' ( xk )
xk 1 = xk
xk 1 = xk
f ' ( xk )
f ' ' ( xk )
Exemplo: Reaplicando o Mtodo de Newton, modificado pela Regra de L'Hospital, para obter
uma raiz de: e x x 1 = 0 com x 0 = 1.
f '(x) = ex - 1
f ''(x) = ex
Aplicando a frmula do mtodo de Newton vem:
x0 = 1
x1= 0.367879
96

x2= 0.0600801
x3= 1.7692e-003
x4= 1.5641e-006 --> 0

--> O processo recuperou a rpida convergncia quadrtica.

Newton pode ser utilizado para se elaborar rotinas de funes pr-definidas para as
mquinas digitais.
Exemplo: Elabore uma rotina para obter o recproco ( 1 c ) de c - {0}
Deseja-se um x tal que x = 1 c 1 x = c que pode ser escrita conforme a equao:
1
1
f ( x ) = c . Aplicando Newton com f (x) = 2 .
x
x
1
c
(1 c. xk ) 2
xk
. xk
x k 1 = x k
= xk +
1
xk
2
xk
xk +1 = (2 c. xk ). xk
Ser que esta expresso acima sempre converge?
Grfico da funo geradora:

Devemos estimar o valor inicial xk o mais prximo de 1 c , mas para garantimos a


convergncia, o valor inicial xk deve ser menor que 1/c. Por exemplo, se c = 0,... x 10E 1 c
-E
= O (10 ). Por exemplo, para obter o recproco de C no Octave:

function x=reciproco(C)
%1/C=x=>? ; f(x)=C-1/x; f'(x)=-1/(x*x)
%x=xi-f(xi)/df(xi) ; x=x-(C-1/x)/(1/(x*x)) ; x=x*(2-x*C);
if(C>1) x=0+eps;
else x=1+eps;
end
cont=0;erro=1;
97

while(erro>1.e-16 && cont<100)


cont++;
xi=x;
x=x*(2-x*C);
erro=abs(x-xi);
end
end
Exemplos:
1) Obtenha o recproco de c = 425,32 e c = 0,42532 x 103 sem utilizar a operao de diviso.
Resposta: tomando x0 = 0.001 (10-3) x6 = 0,00235117.
2) Crie uma rotina para obter

c , c .
+

Soluo: Deseja-se x tal que x = c x2 - c = 0


Aplicar Newton: f(x) = x2 - c
f `(x) = 2x

f ( xk )

xk +1 = xk + x = xk +
f ' ( xk )

( xk2 c)
xk +1 = xk
( xk + c ).0,5 -> Sempre converge para todo x0 > 0.
xk
2.xk
Como estimar um x0 adequado?
Hero sugere que:

x0 = (1,68

1,29
).10 p .316
, q
0,84 + M
Mantissa

Para c = 0,d1 ... dt * 10

2p+q

, com q = 0 ou q =1 de modo que p seja inteiro.

Por exemplo, para obter a raiz quadrda de C no Octave:


function x=sqrt2(C)
%sqrt(C)=x=>? ; f(x)=x^2-C; f'(x)=2*x
%x=xi-f(xi)/df(xi); x=x-(x^2-C)/(2*x); x=0.5*(x*x+C)/x;
if(C>1) x=1+eps;
else x=0+eps;
end
cont=0;erro=1;
while(erro>1.e-16 && cont<100)
cont++;
xi=x;
x=0.5*(x*x+C)/x;
erro=abs(x-xi);
end
end

98

3) Obtenha 685,72 c = 0,68752 . 103


Soluo com valor incia de Hero:
M = 0,68572
1,29

x0 = (1,68
) . 101 . 3,161
p = 1
0
,
84
+
0
,
68572
q = 1

x0 = 26,370122
Aplicando Newton x3 = 26,186255
Exerccios:
1) Elabore uma rotina para efetuar a diviso sem utilizar a operao de diviso.
2) Crie uma rotina para obter 1 , sem o uso da diviso e da radiciao.
c
3
n
3) Crie rotinas para obter: c e c .

3.2.4 - Mtodos Hbridos para f(x) = 0


Poli-algoritmos
Existe atualmente uma forte tendncia na literatura a se mesclar os mtodos das duas
famlias anteriores para se criar mtodos abrangentes e que minimizem as desvantagens dos
submtodos envolvidos.
Exemplo: Obtenha a raiz prxima de zero de e x + x 2 = 0 com = 105
Soluo:
1o ) Bisseo com [0;1] XM1=0,5
.
Lento
.
No obtm todos os
.
Necessita de [a,b]
XM17 = 0,44286
2o ) Falsa Posio com [0;1] XF1 =
XF2 =
.
.
.

XF7 = 0,44285
3o ) Newton com X0 = 0
X1 = 0,5
.
.
.

X3 = 0,44285
4o ) Secante com X0 = 0
X1 = 1
X2 = 0,3788
.
.
.

X5 = 0,44286

Lento (um pouco menos)


No obtm todos os
Necessita de [a,b]

Necessita de f ` (x)
Pode no convergir
Pode convergir para um j obtido

Lento (comparando-se com Newton)


Necessita de duas estimativas iniciais
Menos abrangente
Nem sempre converge.

99

3.2.4.a) Poli-Algoritmo Newton & Bisseo


Dado f(x) = 0 este poli-algoritmo permite obter todos os que esto em [a,b],
seguindo-se os seguintes passos:
i) Toma-se o universo [a,b] e subdivide-o em k (livre) subintervalos de comprimento
(b a ) ;
h=
k
ii) Rastrear cada subintervalo [xi ; xi+1] onde xi+1 = xi + h e x0 = a para verificar onde existe
f(xi) * f(xi+1) < 0;
iii) Refinar [xi ; xi+1] por bisseo e Newton associados.
Observao: Note-se que ainda o mtodo de Newton pode convergir para um j obtido. Para
evitar esta possibilidade devemos retirar, algebricamente, as razes j determinadas atravs do
seguinte procedimento:
Dados f(x) e 1 tal que f(1) = 0. Ento, f(x) = (x - ).g(x), com o quociente da diviso
entre f(x) e (x - ) no nulo (g(x) 0). Toda raiz j de g(x) ser tambm raiz de f(x). Este
processo de diviso gera uma funo g(x) com uma raiz a menos que f(x). Este processo
usualmente denominado de deflao, na resoluo de equaes polinomiais.
Reescrevendo a expresso anterior para g(x), tem-se:
f ( x)
g ( x) =
x 1
Agora, aplica-se Newton em g(x) = 0
g( x k )
x k +1 = x k
g ( x k )
f (x k )
(x k 1 ) 2
x k +1 = x k
.
( x k 1 ) f ( x k )( x k 1 ) f ( x k )
f (x k )
x k +1 = x k
f ( x k ) [ f ( x k ) / ( x k 1 )]
Com este procedimento, evita-se o risco de Newton convergir novamente para 1.
Para retirar j razes:
f (x k )
x k +1 = x k
j
f ( x k ) [ f ( x k ) / ( x k i )]
i =1

3.2.4.b) Poli-Algoritmo Dekker-Brent


Criado na dcada de 70, faz combinaes judiciosas entre bisseo, falsa posio e
secante.

2.3 - Soluo de Equaes por Classes


Soluo de Equaes Polinomiais
a) Preliminares
Devido importncia histrica e a freqncia com que aparecem nos modelos
matemticos, vamos aqui abordar a soluo das equaes polinomiais.
100

Uma equao polinomial toda equao do tipo pn(x) = 0, onde


pn(x) = a1xn + a2xn-1 + ... + anx1 + an+1, com ai e a1 0 polinmio de grau n.
Como resolver pn(x) = 0?
n = 1 a1x + a2 = 0 = -a2/a1
n = 2 a1x + a2x + a3 = 0 =
2

a 2 a 22 - 4a 1a 3
2a 1

Resolvido pelos:
Babilnios em 1800a.C. (algebricamente)
Gregos
Hindus no sculo I d.C. (Bscara)
n = 3 a1x3 + a2x2 + a3x + a4 = 0 fazendo x = y - a2/ 3a1 teremos:
y3 + py + q = 0
=3

2 +

p3

27 +

q2

3
4 +

p3

27 +

q2
4

n = 4 a1x4 + a2x3 + a3x2 + a4x + a5 = 0


Cardano divulgou um mtodo de Ferrari de reduo de qualquer equao de grau n = 4 para n
= 3.
n = 5 a1x5 + a2x4 + a3x3 + a4x2 + a5x + a6 = 0
Em 1824 Abel provou que impossvel obter soluo para n 5 por radiciao.
b) Avaliao do valor de pn(x)
Precisamos avaliar o valor numrico de pn(x), bem como p'n(x), em x=u (valor inicial
x*), para podermos aplicar o mtodo de Newton-Raphson s equaes polinomiais pn(x)=0.
Se expressarmos pn(x) na forma padro
pn(x) = a1xn + a2xn-1 + ... + an+1
n
adies

pn(u) necessita de
2 n 1 multiplicaes
Porm expressando pn(x) na forma de Horner teremos:
pn(x) = ((((a1x + a2)x + a3)x + a4)x + ... + an)x + an+1
Desta forma,
n adies e
pn(u) necessita de
n multiplicaes
Rotina Horner
Leia N, u
Para i = 1 at n+1 faa
101

leia a[i]
fim para
Para k = 1 at n faa
p = p*u + a[k+1]
fim para
Fim
Se usarmos a Diviso de Polinmios - Diviso Sinttica - o clculo de pn(u) tambm necessita
n adies e
de
n multiplicaes
Veja que

pn(x) (x - u) pn(x) = (x-u).pn-1(x) + Resto

(1)

onde o quociente da diviso, pn-1(x) = b1xn-1 + b2xn-2 + ... + bn, pode ser obtido atravs da
igualdade da expresso a seguir, termo a termo:
pn(x) = (x-u).pn-1(x) + R1

onde R1 o Resto e foi definido com bn+1, por conveno.

(a1.xn + a2.xn-1 + ... + an.x1 + an+1)=(x-u).(b1.xn-1 + b2.xn-2 + b3.xn-2 + ... + bn)+ bn+1
(a1.xn + a2.xn-1 + ... + an.x1 + an+1)=((b1).xn +(b2 - u.b1).xn-1+(b3 - u.b2).xn-2 + ... + (bn+1-u.bn)
a1 = b1

b1 = a1

a2 = b2 - u.b1

b2 = a2 + u.b1

a3 = b3 - u.b2

b3 = a3 + u.b2

an = bn - u.bn-1

bn = an + u.bn-1

an+1 =bn+1 - u.bn

bn+1 =an+1 + u.bn=R1

Observe que o resto R1, definido como bn+1, segue a mesma lei de formao de bn, e por isso
convencionou-se definir R1=bn+1.
Este mtodo de diviso sinttica de polinmios conhecido por Mtodo de Briot-Ruffini.
Propriedade 4:
O valor numrico de pn(x) em x = u o resto R1 da primeira diviso de pn(x) (x-u).
n adies e
Lembre que neste caso, pn(x) necessita tambm de
n multiplicaes
Pois pn(x=u) = (u-u).pn-1(x) + R1 = R1 pn(x=u) = R1
102

Propriedade 5:
O valor numrico de p'n(x) em x = u o resto R2 da segunda diviso de pn(x) por (x-u).
Pois efetuando uma segunda diviso sinttica pn-1(x) (x-u) temos que :
pn-1(x) = (x - u).pn-2(x) + R2
Substituindo pn-1(x) em pn(x) = (x-u).pn-1(x) + R1
pn(x) = (x - u).[(x - u).pn-2(x) + R2] + R1
pn(x) = (x - u)2 . pn-2(x) + (x - u).R2 + R1
Derivando pn(x) para obter .p'n(x), temos:
p'n(x) = (x - u)2. p'n-2(x) + 2.(x - u).pn-2(x) +1.R2 + 0
p'n(x=u) = (u - u)2. p'n-2(u) + 2.(u - u).pn-2(u) +1.R2 + 0 e
p'n(x=u) = R2
Propriedade 6:
p (k)
n (u) = k!R k +1 , onde Rk+1 = resto da (k+1)-sima diviso sucessiva de pn(x) (x-u).
(Importante para tratamento de razes mltiplas, onde p'(x) tende a zero junto com p(x))
Exemplo: Obtenha p'(2), p''(2), p'''(2) e p''''(2) em p(x)=2x4+3x-2
(verificao com: p'(x)=8x3+3; p''(x)=24x2; p'''(x)=48x; p''''(x)=48).
Soluo: em u = 2
b1 = 2
b2 = 0 + 2 * 2 = 4
b3 = 0 + 4 * 2 = 8
b4 = 3 + 8 * 2 = 19
b5 = R1 = -2 + 19 * 2 = 36 => p(2) = 36
c1 = 2
c2 = 4 + 2 * 2 = 8
c3 = 8 + 2 * 8 = 24
c4 = R2 = 19 + 24 * 2 = 67 => p(2) = 1! . R2 = 1*67
d1 = 2
d2 = 8 + 2 * 2 = 12
d3 = R3= 24 + 2 * 12 = 48 => p''(2) = 2! * R3 = 2.1 * 48 = 96
e1 = 2
e2 = R4 = 12 + 2 * 2 = 16 => p'''(2) = 3! * R4 = 3.2.1 * 16 = 96
f1 = R5 = 2

=> p''''(2) = 4! * R5 = 4.3.2.1 * 2 = 48

Exerccio: Crie uma rotina que calcule a derivada qualquer de um polinmio


Teorema 1: (Teorema Fundamental da lgebra)
Toda polinomial pn(x) = 0 tem raiz.
Propriedade 7:
103

Se raiz de pn(x) = 0 ento, pn(x) divisvel por (x - ).


Propriedade 8:
Uma raiz de pn(x) = 0 possui multiplicidade M se e somente se p (i) ( ) = 0 ,
n
(M )
i = 0, 1, ..., M-1 e p ( ) 0 .
n
Alternativamente, podemos verificar o nmero M de vezes que pn(x) divisvel por
(x-).
Corolrio 1:
Uma polinomial pn(x) = 0 possui 'n' razes, reais ou complexas, distintas ou repetidas.
Exemplo: Determine a multiplicidade M da raiz = 2 de x4 - 5x3 + 6x2 + 4x - 8 = 0.
Soluo:
p(x) = x4 - 5x3 + 6x2 + 4x - 8
p(x) = 4x3 - 15x2 + 12x + 4
p(x) = 12x2 - 30x + 12
p(x) = 24x - 30 = 18

p(2) = 0
p(2) = 0
p(2) = 0
p(2) 0 M = 3 = 2 repetida 3 vezes

Exerccio: Crie uma rotina para testar a multiplicidade de uma raiz de uma polinomial
pn(x) = 0.
d) Localizao de razes de pn(x) = 0
Em a1xn + a2xn-1 + ... + an-1 = 0, seja M = mx{|a2|, |a3|, ..., |an+1|}. Ento
M
raiz | |< 1 +
a1
Propriedade 9:

Exemplo: Localize as razes de 3x6 + 4x3 - 2x2 - 6 = 0


Soluo:
Aplicando a propriedade 9 temos que:
6
M = 6 | | < 1 + | | < 3 (-3,3) se
|3|

Propriedade 10:
Seja u = a + bi tal que p(u) 0 e R = n *

p n (u)
existe pelo menos uma raiz no
p'n (u)

crculo de centro u = (a,b) e raio R.


Exemplo: Para p4(x)=x4 - 2x3 + 6x2 - 8x + 8 com u = 2+0.i.
Soluo:
n=4
pn(2) = 16
pn(2) = 24

104

16
= 2,666... pelo menos uma raiz no circulo de raio R=2,666 e centro C=(2;0),
24
no grfico com abscissa x Real e ordenada y Imaginria:

R= 4 *

R=2,666
1

C=(2;0)
-1

-2

-3
-1

Podemos verificar que todas as razes deste polinmio so 1 i e 2i, portanto dentro do
circulo vermelho do grfico acima.
O polinmio p4(x) no tem zeros reais, conforme grfico abaixo.

40

30

20

10

-2

-1.5

-1

-0.5

0.5

1.5

2.5

e) Natureza das razes


Propriedade 11:
As razes complexas de equaes polinomiais de "coeficientes reais" sempre ocorrem
aos pares conjugados, isto , se = a + bi for raiz, = a - bi tambm raiz.
Exemplo: x2 - x + 2 = 0
Soluo:

105

1 1 8
1 7
=
Por Bscara temos que:
2
2
7
1 = 0,5 + 4 i e 2 = 0,5 7 4 i

Conseqncia:
Toda pn(x) = 0 de "coeficientes reais" com 'n' mpar possui ao menos uma raiz real.
Propriedade 12:
Em pn(x) = 0 se n for par e a1*an+1 < 0 existe ao menos duas razes reais, uma
positiva e outra negativa.
Exemplo: x12 - 5x2 + 3x - 2 = 0 possui ao menos duas razes reais.
Propriedade 13
Em pn(x) = 0, se existe k = 2, 3, ..., n tal que a 2k a k+1 * a k-1 e a n+1 0 existem
razes complexas.
Propriedade 14: Regra dos sinais de Descartes
Origem: Wikipdia, http://pt.wikipedia.org/wiki/Regra_dos_sinais_de_Descartes

A regra dos sinais de Descartes, primeiramente descrita por Ren Descartes no seu trabalho La
gomtrie, um teorema que determina o nmero de razes positivas e negativas de um polinmio.
Segundo a regra, se os termos de um polinmio com coeficientes reais no nulos Pn(x) so colocados em
ordem decrescente de grau, ento o nmero de razes positivas do polinmio igual ao nmero de
permutaes de sinal de Pn(x), ou menor por uma diferena par. O nmero de razes negativas do
polinmio igual ao nmero de permutaes de sinal de Pn(-x), ou menor por uma diferena par. Ou seja,
o nmero de permutaes igual ao nmero de razes positivas e negativas acrescido do nmero de
razes imaginrias (que sempre acontecem ao pares em polinmio de coeficientes reais).

Exemplo

Possui uma mudana de sinal entre o segundo e o terceiro termos. Portanto possui apenas uma raz
positiva.
Para contar o nmero de razes negativa, fazemos a substituio

Este polinmio tem duas permutaes de sinal, logo o polinmio original possui 2 ou 0 razes negativas.
Para confirmar o resultado, observe a fatorao do polinmio:

Ento as razes so -1 (aparece 2 vezes) e 1 (aparece 1 vez).

106

f) Determinao (refinamento) de razes


1o) Tomando pn(x) = a1xn + ... + an+1 e um x0 e aplicando o mtodo de Newton para
p (x )
R
refinar vem: x = 'n k = 1 x k +1 = x k + x (tambm chamado de Mtodo de
p n (x k )
R2
Birge-Vieta).
onde
R1 = resto de pn(x) (x - xk) = p n (x k )
R2 = resto de pn-1(x) (x - xk) = p'n (x k )
sendo pn-1(x) = polinmio quociente da primeira diviso.
Exemplo: Aproxime com 3 iteraes uma 1 raiz de p3(x)=2x3 - x - 2 = 0 por Newton a partir
de x0=1.
Soluo: p3(x)=2.x3+0.x2 -1.x - 2.x0 = 0
a1 = +2
a2 = 0
a3 = -1
a4 = - 2
Aplicando a diviso sinttica de Briot-Rufini:
1a iterao: a partir de x0=1.
b1 = 2
b2 = 0 + 2 . 1 = 2
b3 = -1 + 2 . 1 = 1
b4 = p(1)= R1 = - 2 + 1 . 1 = -1= R1
c1 = b1 = 2
c2 = b2 + x0.c1 = 2 + 2 . 1 = 4
c3 = p(1) = R2 = b3 + x0.c2 = 1 + 1 . 4 = 5 = R2
R
x1 = x0 - 1 = 1 - ( 15 ) = 1,2
R2
2a iterao: a partir de x1 = 1,2
b1 = 2
b2 = 0 + 1,2 . 2 = 2,4
b3 = -1 + 1,2 . 2,4 = 1,88
b4 = R1 = 0,256= R1
c1 = 2
c2 = 2,4 + 1,2 . 2 = 4,8
c3 = R2 = 1,88 + 1,2 . 4,8 = 7,64 = R2
x2 = 1,2 - (

0,256
7 ,64

) = 1,166

3a iterao: a partir de x2 = 1,166


b1 = 2
b2 = 0 + 2 . 1,166 = 2,332
b3 = -1 + 2,332 . 1,166 = 1,719
b4 = R1 = - 2 + 1,719 . 1,166 = 0,004= R1
c1 = b1 = 2
107

c2 = 2,332 + 1,166 . 2 = 4,664


c3 = R2 = b3 + x0.c2 = 1,719 + 1,166 . 4,664 = 7,1572 = R2
x3 = 1,166 - (

0,004
7 ,157

) = 1,165 1 com Erro=|p(x3=1,165)|<0,001.

Observao:
Para determinar a 2 e 3 razes e se evitar de obter a mesma 1 raiz 1 novamente,
pode-se efetuar reduo de grau (deflaes), isto :
- Tomar pn(x) (x - 1) obtendo pn-1(x), nesse caso com Resto R1 quase nulo (nas
divises exatas, R1=0);
- Testar a multiplicidade M de 1, verificando se p'n(1)=0, p''n(1)=0, ... pMn(1)0,
ou reaplicar diretamente o mtodo de no polinmio deflacionado.
Algoritmo de Newton-Raphson para determinao de razes com multiplicidade M:
Exemplo de multiplicidade:
Determine as 3 razes de P(x)=x3-3.x2.+3.x-1=(x-1)3=0. Verifique que 1=1 tem
multiplicidade M=3:
Pela diviso sinttica de Briot-Ruffini:
1a. Diviso

2a. Diviso

3a. Diviso

4a. Diviso

1
1

-3
1
-2
1
-1
1
0

3
-2
1
-1
0

-1
1
0

=> R1

=> R2

=> R3

=> R4 (no possivel dividir)

ou usando as divises tradicionais:


1x3-3x2+3x-1
R1=0

x-1
2

1x -2x+1
R2=0

x-1
x-1
R3=0

x-1
1
R4=1

x-1
0

Pela Propriedade 6: " p (k)


n (u) = k!R k +1 , onde Rk+1 = resto da (k+1)-sima diviso.
P (1) = 0! * R1 = 1*0 = 0
P'(1) = 1! * R2 = 1*0 = 0
P''(1) = 2! * R3 = 2*0 = 0
P'''(1) = 3! * R4 = 6*1 = 6 => Pela propriedade 8, a Multiplicidade de 1=1 M=3.
A essncia do Mtodo de Newton, para razes no repetidas, prev que x =

p n (x k )
R
= 1
'
p n (x k )
R2
108

mas observe que no caso de aproximaes de razes xk mltiplas, R1 e R2 tendem a zero


juntos, podem gerar uma indeterminao 0/0, reduzindo a taxa de convergncia (perde-se a
taxa de convergencia quadrtica) e assim precisaremos aplicar a regra de L'Hospital:

x =

p n (x k )
0!.R1
=
para M = 1
'
p n (x k )
1!.R2

x =

p 'n (x k )
1!.R2
=
para M = 2
''
p n (x k )
2!.R3

x =

p 'n' (x k )
2!.R3
=
para M = 3
'''
p n (x k )
3!.R4

.
.
x =

-1
pM
( M 1)!.RM
( M 1)!.RM
1 R
n (x k )
=
=
= . M para M genrico
M
p n (x k )
M !.RM +1
M .( M 1)!.RM +1
M RM +1

Temos uma dificuldade adicional na determinao de razes mltiplas, que o fato de no


conhecermos as razes xk previamente, mas possivel verificar que no processo iterativo de
convergncia, os valores sucessivos de xk vo se aproximando de cada raiz de modo
gradativo, "lento no caso de razes mltiplas", onde perde-se a convergncia quadrtica
quando R2 tende a zero gradativamente no denominador de x. Normalmente no atingimos
um valor com erro razovel, com R1/R2.
Para acelerar a convergncia, necessrio definir um valor limite mnimo de R2, R3,...,RM, no
caso de razes de multiplicidade M, ou seja, definir quais valores de R2, R3,...,RM, so
pequenos suficientes para ser considerados nulos (ou quase nulos), por exemplo, se |R2|,
|R3|,..., |RM| so menores ou iguais a 0,1 (precisa ser melhor verificado) podemos dizer que a
Multiplicidade da raiz xk em avaliao M, para o processo iterativo. Assim, para uma raiz xk
de multiplicidade M genrica:
x =

-1
pM
( M 1)!.RM
( M 1)!.RM
1 R
n (x k )
=
=
= . M
M
p n (x k )
M !.RM +1
M .( M 1)!.RM +1
M RM +1

Um algoritmo possvel para o mtodo de Newton-Raphson, generalizado para razes xk de


multiplicidade M pode ser o seguinte:
function p = FNRPolM(xa,n,ai,tol)
## Metodo Newton-Raphson para polinomios: encontrando uma das n raizes de Pn(x)=0,
% com multiplicidade M
% xa - Valor inicial de cada raiz
% n - Grau do polinomio Pn(x)
% ai - Coeficientes do polinomio na entrada Pn(x)
% tol - Valor limite do erro mximo - tolerncia no erro da cada raiz
erro=1.;iter=0;
while(iter<20 & erro>tol)
a=ai;
iter=iter+1
naux=n;
k=1; %contador de multiplicidade M
109

M=1; %Multiplicidade inicial de xa


while(k<=M+1)
b(1)=a(1);
for i=2:(naux+1)
b(i)=a(i)+xa*b(i-1);
endfor
r1(k)=b(naux+1);
%Teste de multiplicidade M
if abs(r1(k))<0.10 (este valor deve trocado por um valor relativo ao valor da raiz)
M=k;
endif
naux=naux-1;
a=b;
k=k+1;
endwhile
r1(n+1)=b(1); %Ultimo resto, se todas as 'n' divises ocorrerem
%
Dx=-r1(M)/(M*r1(M+1));% M=1 => f/f' = 0!.r(1)/1.0!.r(2)
% M=2 => f'/f'' = 1!.r(2)/2.1!.r(3)
% M=3 => f''/f''' = 2!.r(3)/3.2!.r(4) => r(M)/(M.r(M+1))
xn=xa+Dx
erro=abs(Dx)
xa=xn;
endwhile
p=xn; %valor final da raiz com multiplicidade M
endfunction

Exemplo de refinamento de razes:


p4(x)=x4 - 11,101x3 + 11,1111x2 - 1,0111x + 0,001 tem as razes:
1 = 0,001;
2 = 0,1;
3 = 1 e
4 = 10.
Aqui poder ocorrer o erro da instabilidade numrica, se no aplicarmos o refinamento das
razes encontradas no processo de reduo de grau.
Considere encontrada a raiz 4 = 10,000005. Deflacionando teremos:
p4(x) (x - 4 ) p3(x) = x3 - 1,0099x2 + 0,101144x + 0,3405 que no possui razes
prximas de 1 = 0,001, pois p3(0,001) = 0,3406.
A soluo para este problema seria um refinamento dos resultados parciais, a partir da
segunda raiz, ou seja, reaplicar o mtodo de Newton-Raphson ao polinmio original de grau
n, p4(x)=0, usando as razes parciais obtidas nos polinmios deflacionados como valor inicial
de 'zero' do polinmio original de grau n, p4(x)=0.
Exemplo: P4(x)= x4+3x3+x2+3x-1=0 (roots([1, 3, 1, 3, -1]) no octave)
Raizes:
-3.03235 + 0.00000i
-0.12493 + 1.07377i
-0.12493 - 1.07377i
110

0.28220 + 0.00000i
2o ) Mtodo de Mller
Trata-se de uma extenso do Mtodo da Secante, e que busca minimizar alguns
problemas presentes nos mtodos de Newton, Secante, Falsa-posio, tais como:
- Convergncia lenta quando a funo e sua derivada so prximos de zero;
- No encontram razes complexas a menos que seja dado um valor inicial complexo.
Em geral, os mtodos citados so pobres para encontrar razes complexas em
polinmios, pois mesmo em se tratando de polinmios com coeficientes reais, ele
normalmente tem razes complexas.
Para melhor entender o mtodo de Mller vamos analisar a figura 1 abaixo, para a
resoluo da equao,
f(x) = 0

(1)

Figura 1 - Comparativo entre Mtodo da Secante e Mller.


No mtodo da Secante avalia-se o zero da funo linear que passa por dois pontos da
curva de f(x)=0. J no mtodo de Mller avalia-se o zero da funo quadrtica que passa por
trs pontos da curva de f(x)=0 a ser resolvida.
Supomos que trs aproximaes iniciais xi--2, xi-1 e xi so dadas para a soluo de
f(x)=0. A aproximao seguinte xi+1 obtida do zero do polinmio quadrtico P(x) que passa
pelas trs aproximaes iniciais de f(x).
P(x) = a (x- xi) 2 + b(x - xi) + c

(2)

Portanto,
P ( x i 2 ) = a ( x i 2 x i ) 2 + b( x i 2 x i ) + c = f ( x i 2 )

2
P( x i 1 ) = a ( x i 1 x i ) + b( x i 1 x i ) + c = f ( x i 1 )

2
P ( x i ) = a ( x i x i ) + b( x i x i ) + c = f ( x i )

(3)

Das eqs. (3) obtemos os coeficientes a, b e c e encontramos a aproximao seguinte


111

xi+1 resolvendo P(xi+1) = 0 (usando a frmula de Bskara).

2c
xi +1 = xi ( xi xi 1 )

2
b b 4ac

(4)

onde
a = q f(xi)-q (1+q) f(xi-1) + q2 f(xi-2)
b = (2q+1) f(xi) - (1+q)2 f(xi-1) + q2 f(xi-2)
c = (1+q) f(xi)
x xi 1
q= i
xi 1 xi 2
A frmula escolhida para a eq.(4) produz menos erros de arredondamento que a forma
tradicional. Note que na eq. (4) temos duas possibilidades para obter xi+1, dependendo do sinal
escolhido no radicando.
No mtodo de Mller o sinal do radicando escolhido de modo que o valor absoluto
do denominador, ou mdulo para nmeros complexos, seja o maior possvel. Esta escolha,
que gera um denominador maior em magnitude, evita possibilidades de denominador nulo, e
gera um valor de xi+1 mais prximo de xi, dando mais estabilidade ao mtodo numrico.
Assim escolhemos a seguinte expresso para atualizar xi+1

x i +1

2c
= x i ( x i x i 1 )
Max b b 2 4ac

(5)

No caso onde as parcelas do denominador forem nmeros reais, a expresso para


calcular xi+1 pode ser dada pela eq. (6).

2c
x i+1 = x i ( x i x i1 )
(6)

2
b sign( b ) b 4ac
Ento aplica-se iterativamente a frmula dada na eq. (5) at que uma condio de
parada seja satisfeita.
Note que, se o radicando gerar nmeros complexos, podemos ento obter razes
complexas de f(x)=0. Alm disso, este mtodo no est limitado somente a equaes com
coeficientes reais, pode-se encontrar inclusive razes complexas de equaes transcendentais.
Tambm podemos ter equaes com coeficientes complexos e que podem gerar razes
complexas no conjugadas.
Exerccios:
1). Determine um zero do polinmio Pn(x) = 16x4-40x3+5x2+20x+6, partindo das seguintes
condies iniciais:
i). x0 = 0.5, x1 = 1.0 e x2 = 1.5
ii). x0 = 0.5, x1 = -0.5 e x2 = 0.0
2). Compare a eficincia do mtodo de Mller frente ao Mtodo da Secante, partindo de uma
mesma condio inicial x0, para equaes a sua escolha.
Sugesto para valores iniciais:
Secante: x0 e x1 = 1,10 x0
112

Mller: x0, x1 = 1,05 x0 e x2 = 1,10 x0

113

Captulo 4. Resoluo de Sistemas de Equaes no Lineares


4.0 - Fundamentos

No captulo 2 abordamos a soluo de f(x) = 0 (uma equao com uma


varivel). Porm na modelagem matemtica dos fenmenos fsicos, via de regra,
esto envolvidas mais de uma varivel e mais de uma conseqncia (sistema de
equaes).
Exemplo: Sistemas de equaes lineares:

a11 x1 + ... + a1n x n = b1

M
M
M
a x + ... + a x = b
nn n
n
n1 n

Ax = B

Definio 1- Um sistema de n equaes no lineares com n incgnitas toda


expresso do tipo:
f 1 ( x1 , x 2 , x3 ,..., x n ) = 0
f ( x , x , x ,..., x ) = 0
2 1 2 3
n

M
f n ( x1 , x 2 , x3 ,..., x n ) = 0

F(X ) = 0

onde

f1
x1
f
x
2
2

e X =
F=
...
...


xn
fn
Exemplo:
a)
x1 + 2 x23 = 3
2
3x1 + x22 = 7

f 1 ( x1 , x2 ) = x1 + 2 x23 3
F=

2
2
f 2 ( x1 , x2 ) = 3x1 + x2 7

x1
e X =
x2

b)
3x1 cos( x1 x 3 ) = 0,5
3
x1 x1 x 2 x 3 = 5
x1x2
ln( x12 + x 2 x 3 ) = 0
e
Definio 2 - Soluo de F(X) = 0 todo vetor (=matriz coluna ou linha)
= [1, 2, ..., n] tal que F() = 0.
Exemplo:
114

x1 x2 = 1
2
2
x1 + x2 4 x1 + 2 x2 = 4

= [0,604068; 1,655442]

Note-se a dificuldade de se isolar j a partir do n = 2 (o menor possvel).


4.1 - Mtodo de Newton para F(X) = 0

A soluo de um sistema no-linear consiste em determinar pontos no


subespao do problema que solucione o conjunto de equaes. Os pontos de
soluo esto na interseco das curvas que representam as equaes. O processo
de soluo a ser visto uma generalizao do Mtodo de Newton-Raphson para
sistemas de equaes no-lineares. Na soluo de sistemas lineares viu-se que
tem-se apenas trs tipos de soluo: soluo nica, infinitas solues e no existe
soluo. No caso de sistemas no lineares o leque de respostas maior, no qual
pode-se ter de zero a infinitas solues.
Para exemplificar, seja o sistema de equaes no lineares composto de
duas equaes:

x1 + 2 x 2 3 = 0
2
2
3x1 + x 2 7 = 0

3
x2
2.5

1.5

0.5

0
-3

x1
-2

-1

Como pode ser observado na figura, tem-se dois pontos de interseco.


T
Estes dois pontos pertencentes ao subespao 2 , x = [1,461538 0,769230] e
x = [ 1 2] , e ambos so solues do mesmo sistema.
T

Seja o sistema de equaes no-lineares:


f1 ( x1 , x 2 ,......., x n ) = 0
f ( x , x ,......., x ) = 0
2 1 2
n

M
f n ( x1 , x 2 ,......., x n ) = 0

115

O vetor de incgnitas [x1


(sublinhada), x = [x1
x

(0)

= x1

(0)

x2

(0)

x2

L xn

xn ]

pode ser representado de forma vetorial

x n ] , o vetor de valores iniciais das incgnitas por


T

x2

(0) T

e o vetor incremento de cada incgnita, diferena entre

x e x , dado por x (i 0 ) = [x1


( 0)

x 2

T
L x n ] .

Analogamente ao mtodo de Newton-Raphson, utiliza-se da expanso em Srie de


Taylor vetorial da funes f i ( x1 , x 2 ,......., x n ) i em torno do ponto inicial
x

(0)

= x1

(0)

x2

(0)

L xn

].

(0) T

onde:
f 1 ( x )
f ( x )
f ( x )
.( x1 x10\ ) + 1
.( x 2 x 20\ ) + .... + 1
.( x n x n0 \ ) + .. = 0
x1
x 2
x n
(0)

f 1 ( x1 , x 2 ,......., x n ) = f 1 ( x ) +
(0)

(0)

(0)

f ( x )
f ( x )
f ( x )
f 2 ( x1 , x 2 ,......., x n ) = f 2 ( x ) + 2
.( x1 x10\ ) + 2
.( x 2 x 20 \ ) + .... + 2
.( x n x n0\ ) + .. = 0
x1
x 2
x n
(0)

( 0)

(0)

(0)

f ( x )
f ( x )
f ( x )
f n ( x1 , x 2 ,......., x n ) = f n ( x ) + n
.( x1 x10\ ) + n
.( x 2 x 20\ ) + .... + n
.( x n x n0 \ ) + .. = 0
x1
x 2
x n
(0)

( 0)

(0)

(0)

Fazendo xi = xi xi0\ , desprezando os termos de ordem superior e isolando dos


termos x i :
( 0)
( 0)
f 1 ( x ( 0) )
f 1 ( x )
f 1 ( x )
(0 )
.x1 +
.x 2 + .... +
.x n = f 1 ( x )

x 2
x n
x1
(0 )
( 0)
f ( x ( 0) )
f ( x )
f ( x )
(0 )
2
.x1 + 2
.x 2 + .... + 2
.x n = f 2 ( x )
x 2
x n
x1
M

( 0)
(0 )
f ( x ( 0) )
f ( x )
f ( x )
( 0)
n
.x1 + n
.x 2 + .... + n
.x n = f n ( x )
x1
x 2
x n

f 1 ( x ( 0) )

x1
f ( x ( 0) )
2
x1

f ( x ( 0) )
n
x1

(0)
(0)
f 1 ( x (0) )
f 1 ( x )
f 1 ( x ) x1
....

x 2
x n

(0)

(0 )
(0 )

f 2 ( x )
f n ( x ) x 2
f 2 ( x )
....

.
=

x 2
x n

(0)
(0)
M

f n ( x )
f n ( x )

....

(0)
f n ( x )
x 2
x n x n

onde

116

f 1 ( x ( 0 ) )

x1
f 2 ( x ( 0) )
(0)
J ( x ) = x
1

(0)
f n ( x )
x
1

chamada
(0)

= x1

(0)

x2

f1 ( x )
x 2
(0)
f 2 ( x )
x 2
M
(0)
f n ( x )
x 2
(0)

de

(0)

(0)
f 1 ( x )

x n
(0)
f 2 ( x )
L

x n
O
M

(0)
f n ( x )
L
x n

matriz

L xn

Jacobiana,

].

calculada

no

ponto

inicial

(0) T

Resolvendo o sistema linearizado acima, determinamos os valores de uma


aproximao para cada x i e consequentemente os novos valores das incgnitas
xi = xi0 \ + xi ,
x

(0)

= x1

(0)

x2

que
(0)

repetida para x

(0)

foram

L xn

calculados

baseados

nos

] , ou seja uma iterao baseada em x

(0) T

valores
( 0)

iniciais

, que precisa ser

= x (atualizao dos valores iniciais).

Observe que em cada iterao do Mtodo de Newton para sistemas de equaes


no lineares, resolve-se um sistema de equaes lineares.

e x1 + x 2 = 1
+ 1
por Newton com X 0 = com 3 iteraes.
Exemplo 1: Resolver 2
2
x1 + x 2 = 4
1
Soluo:

f1 ( x1 , x2 ) = e x1 + x2 1
Temos F ( X ) =
f 2 ( x1 , x2 ) = x12 + x22 4
f 1 ( x ( 0) ) f 1 ( x ( 0) )

x1
x 2
(0)
J (x ) =
f 2 ( x ( 0 ) ) f 2 ( x ( 0) )

x 2
x1
x10 + 1
e x1 1
0
para
X
X
=
=
J (X ) =
0 =

2x
2x
x 2 1
1
2
Aplicando o sistema de equaes linearizado para duas equaes temos:
f 1 ( x ( 0) )

x1
f ( x ( 0) )
2
x1

(0)
f 1 ( x (0) )
f 1 ( x ) x1

x 2

.
=
( 0)

f 2 ( x )

f 2 ( x ( 0) )
x 2
x 2

1a iterao:
117

e1

x = 0,0758
x = 1,0758
e 2
1 x1
=
1
1
*

- 2 x2
-2
x2 = 0,9242
x 2 = 1,9242

Erro total = xi=0,9999


2a iterao:
x 12 = 1,0095
x1 = 0,06629
2,933 1
x1
0,0080
2
2,152 - 3,848 * x = - 0,8600 x = 0,1864
x 2 = 1,7378

2
Erro total = xi= 0,2527
3a iterao:
x13 = 1,0042
3
x 2 = 1,7297
Erro total = xi= 0,013474

x 1 = 1
Soluo Exata
x 2 = 1 e
Exemplo 2: Resolver o sistema de equaes no-lineares utilizando o Mtodo de
(0)
T
Newton para um vetor inicial x = [0,5 0,5 0,5] .
x1 + x 22 + x 32 1 = 0
2

2 x1 + x 22 4 x 3 = 0
2

3 x1 4 x 2 + x 32 = 0
2

O processo iterativo, em notao vetorial, dado por:


J (x

(k )

)x

(k )

= F (x

(k )

A matriz Jacobiana J ( x
2 x1( k )

(k )
J ( x ) = 4 x1( k )
6 x1( k )

Para x

J (x

( 0)

(0)

2 x 2( k )
2 x 2( k )
4

(k )

) dada por:

2 x 3( k )

4
2 x 3( k )

= [0,5 0,5 0,5] , tem-se:


T

1
1 1

) = 2 1 4
3 4 1
118

Para x

(0)

= [0,5 0,5 0,5] , F ( x


T

( 0)

) calculado por:

0,5 2 + 0,5 2 + 0,5 2 1 = 0,25


2 0,5 2 + 0,5 2 4 0,5 = 1,25
3 0,5 2 4 0,5 + 0,5 2 = 1,00

F (x

(0)

) = [ 0,25 1,25 1,00]T

Tem-se o sistema linear:

1 x1 ( 0) 0,25
1 1
2 1 4 x ( 0) = 1,25

( 0)

3 4 1 x 3 1,00
Resultando em x ( o ) = [0,375 0 0,125 ]T . Os novos valores do vetor x so dados
por:

(1)

=x

( 0)

+ x

(0)

0,5 0,375 0,875


= 0,5 + 0 = 0,5
0,5 0,125 0,375

Para x (1) = [0,875 0,5 0,375 ]T , tem-se:

0,7500
1,7500 1,0000

J ( x ) = 3,5000 1,0000 4,0000


5,2500 4,0000 0,7500
(1)

Para x (1) = [0,875 0,5 0,375 ]T , F ( x ) calculado por:


(1)

0,875 2 + 0,5 2 + 0,375 2 1 = 0,1563


2 0,875 2 + 0,5 2 4 0,375 = 0,2813
3 0,875 2 4 0,5 + 0,375 2 = 0,4375
F (x

(1)

) = [0,1563

0, 2813

0,4375 ]T

Tem-se o sistema linear:

0,7500 x1 (1) 0,1563


1,7500 1,0000
3,5000 1,0000 4,0000 x (1) = 0,2813

5,2500 4,0000 0,7500 x 3 (1) 0,4375

119

Resultando em x (1) = [ 0,00852


so dados por:

( 2)

=x

(1)

+ x

(1)

J (x

T
0,0051] . Os novos valores do vetor x

0,875 0,00852 0,7898


= 0,5 + 0,0034 = 0,4966
0,375 0,0051 0,3699

Para x ( 2 ) = [0,7898

( 2)

0,0034

0, 4966

T
0,3699 ] , tem-se:

1,5796 0,9932 0,7399


) = 3,1593 0,9932 4,000
4,7389 4,0000 0,7399

Para x ( 2 ) = [0,7898

0, 4966

T
0,3699 ] , F ( x

( 2)

) calculado por:

0,7898 2 + 0,4966 2 + 0,3699 2 1 = 0,0073


2 0,7898 2 + 0,4966 2 4 3699 = 0,0145
3 0,7898 2 4 0,4966 + 0,3699 2 = 0,0218
F (x

(2)

) = [ 0,0073

0,0145

0,0218 ] T

Tem-se o sistema linear:


( 2)
1,5796 0,9932 0,7399 x1 0,0073
3,1593 0,9932 4,000 x ( 2) = 0,0145

4,7389 4,0000 0,7399 x3 ( 2) 0,0218

Resultando em x
dados por:

( 3)

=x

( 2)

+ x

( 2)

( 2)

= [ 0,0046 0,0000 0,0000] . Os novos valores do vetor x so


T

0,7898 0,0046 0,7852


= 0,4966 + 0,0000 = 0,4966
0,3659 0,0000 0,3699

Seguindo o mesmo procedimento, chega-se a:

( 4)

0,7852
= 0,4966
0,3699

O processo convergiu para Erro mximo = Max| x | < 5. 10 4 em quatro iteraes.


120

4.2. Consideraes:
Alm da necessidade do X0, o maior problema do Newton em F(X) = 0 a
necessidade de se calcular as n2 derivadas parciais para uso na Jacobiana J(X), que
so n2 funes.
A alternativa mais simples para se contornar o problema consiste em se
f i
simular as n2 derivadas parciais
atravs do prprio computador, via
x j
aproximaes numricas das derivadas:
Por definio sabemos que:
f ( x + h) f ( x)
f ( x) = lim
h
h 0

f ( x)

f ( x + h ) f ( x)
h

Por extenso:
f i ( x1 , x2 ,..., x j + h,..., xn ) f i ( x1 , x 2 ,..., xn )
f i
( x1 ,..., xn ) = lim
x j
h
h0
Utilizando um valor inicial pequeno para h, temos:
f i ( x1 , x2 ,..., x j + h,..., xn ) f i ( x1 , x2 ,..., xn )
f i

x j
h
f 1 ( x1 + h,...) f 1 ( x1 ,..., x n )

f 2 ( x1 + h,...) f 2 ( x1 ,..., x n )

J (X ) =

f ( x + h,...) f ( x ,..., x )
n
1
n
n 1
h

f 1 ( x1 , x 2 + h,...) f 1 ( x1 ,..., x n )
h
....

....

f 1 ( x1 , x 2 ,..., x n + h) f 1 ( x1 ,..., x n )
h
f 2 (..., x n + h) f 2
h

f n (..., x n + h) f n
h

Custo Computacional = 2.n2 clculos das funes originais, mas sem necessidade
de se deduzir cada derivada parcial. necessrio estabelecer um h inicial que pode
ser atualizado por xi para cada varivel i.

x1 x 2 = 1
Exemplo 3: Resolva o sistema no linear
pelo mtodo de Newton,
x2
x1 e = 0
utilizando uma aproximao numrica para a matriz Jacobiana, com
1
X 0 = , h = 0,1 (incremento inicial) e erro < = 10-5
1
x10 1
f 1 ( x1 , x 2 ) = x1 x 2 1
0
Soluo:
e
X
=
0 =
x2
f
(
x
,
x
)
=
x

e
x 2 1
2 1 2
1
121

1a iterao:
a11 a12 x1
0

a a * x = 1,718

21 22 2
Achando a11, a12, a21, a22 numericamente:
f1 f1 ( x10 + h, x20 ) f1 ( x10 , x20 ) (1,1*1 1) (1,0 *1 1)
a11 =

=
=1
x1
h
0,1

a12 =

f1 f1 ( x10 , x20 + h) f1 ( x10 , x20 ) (1*1,1 1) (1*1,0 1)

=1
x2
h
0,1

a21 =

f 2 f 2 ( x10 + h, x20 ) f 2 ( x10 , x20 ) (1,1 e1 ) (1,0 e1 )

=
=1
x1
h
0,1

f 2 f 2 ( x10 , x20 + h) f 2 ( x10 , x20 ) (1 e1,1 ) (1 e1,0 )


a22 =

=
= 2,859
x2
h
0,1
Assim teremos:
x11 = 1,445
1 x1
x1 = +0,445
1
0

1 - 2,859 * x = 1,718 x = 0,445 1


x2 = 0,555

2
2 iterao:
x11 1,445
x1 + 0,445
0
h
=
e
X = 1 =
x = 0,445

0
,
555
x

2
0,555
1

0,151 x1 0,198
x1 = 0,348
*
=

- 1,931 x 2 0,287
x 2 = 0,0316

x12 = 1,793
2
x 2 = 0,587

Repetimos este processo iterativo at que na sexta iterao teremos:


6
x1 = 1,76322 1

6
x 2 = 0,56714 2

122

Captulo 5 - Teoria de Aproximaes


Aproximao Polinomial por Interpolao Geral, Spline e Bezier
5.0). Fundamentos:
Sabe-se que a anlise numrica trata do uso de modelos no aritmticos atravs de
quantidades aritmticas.
Nos prximos captulos trataremos de um dos problemas centrais da Anlise Numrica,
que o da aproximao de uma funo y = f(x) atravs de outra z = g(x).
Por que aproximar y = f(x)?
Dois so os motivos bsicos para a abordagem deste problema:
o
1 ). A y = f(x) pode estar apresentada apenas na forma discreta, isto , uma tabela do tipo que
ocorre em experimentos e observaes de maneira geral.
x0
y0

xi
yi = f(xi)

x1
y1

...
...

xn
yn

Ex.: Relao entre idade e produo mdia mensal de uma mquina (torno, rob,...).
x (meses)
y (103 peas/ms)

1
30

2
33

3
29

4
27

5
19

2o). A y = f(x) possui expresso conhecida, porm ineficiente ou impossvel de ser utilizada.
Ex.:
(i). Construo de funes pr-definidas em bibliotecas de programas:
- ex, sen(x), ...
(ii). Computao Grfica:
- traar o grfico de y = e
(iii). Sistemas dedicados:

ln( x )

[ (

- obter valores de y = sen ln

ar coth( x)

)]

Neste exemplo, o tempo de CPU necessrio para o clculo da expresso acima muito
grande. Computacionalmente mais interessante utilizar uma aproximao para se obter a
resposta da expresso acima.
(iv). Manipulao Algbrica de modelos matemticos:
- obter

e x dx
2

Quem pode ser a aproximadora z = g(x)?


Em princpio a g(x) deve ser facilmente utilizvel. Ela pode ser encontrada nas
seguintes famlias:
n

1 ). Polinomiais: g( x) = a i x i = Pn( x)
o

i =0

Vantagens:
- S envolvem operaes elementares;
- Facilmente derivveis, integrveis, etc,...
- Formam um anel, ou seja, todas as transformaes algbricas aplicadas resultam em
123

um outro polinmio.
Pn( x)
Qm( x)
Permite a representao de curvas do tipo

2o). Racionais: g( x) =

3o). Trigonomtricas: g( x) = a i sen(ix)


i =1

5.1). Aproximao Polinomial pela Tcnica da Interpolao:


Em virtude de suas caractersticas (simplicidade, continuidade, diferenciabilidade,
etc,...) as funes polinomiais so as mais utilizadas como aproximadoras. Contudo, tais
vantagens bivias dos polinmios teriam pouca valia se no existisse prova terica de que os
mesmos podem realmente aproximar funes.
Para tal prova terica, vamos citar o teorema de WEIRSTRAUSS:
Seja y = f(x) contnua em [a,b], ento > 0 sempre existe Pn(x) com n() tal que
|f(x) - Pn(x)| < , x [a,b].
Para aproximar uma funo y = f(x) contnua em [a,b] pode-se proceder como segue:
1o). Tome n+1 pontos (xi, yi = f(xi)), com i = 0,1,2,...,n, desta funo com xi [a,b]:
xi
yi = f(xi)

x0
y0

x1
y1

...
...

xn
yn

com x0 = a e xn = b
2o). Tome um polinmio de grau n,
n

Pn( x) = a i x i = a 0 + a 1 x + a 2 x 2 +L+a n x n com coeficientes ai (i = 0,1,2,...,n).


i=0

Tal que o polinmio Pn(x) passe por todos os pontos (xi, yi = f(xi)), ou seja,
i = 0,1,2,...,n
Pn ( x i ) = y i
124

Da,
Pn( x 0 ) = a 0 + a 1 x 0 + a 2 x 20 +L+ a n x 0n = y 0

2
n
Pn( x 1 ) = a 0 + a 1 x 1 + a 2 x 1 +L+ a n x 1 = y 1

Pn( x ) = a + a x + a x 2 +L+ a x n = y
n
0
1 n
2 n
n n
n

Que gera um sistema de equaes lineares com n+1 incgnitas ai e n+1 equaes:
1

1
M

x0
x1
M

xn

x 02 L x 0n a 0 y 0

x12 L x1n a1 y1
=
M L M M M

x n2 L x nn a n y n

(*)

cuja soluo fornece os coeficientes ai do polinmio que passa por todos os pontos (xi, yi =
f(xi)). Este polinmio denominado de INTERPOLADOR da funo y = f(x).
Note-se que os elementos uij da matriz dos coeficientes do sistema (*) U.a = y, tm lei
de formao dada por:
u ij = x ij1
Ex: Aproxime por interpolao y = ln(x), x [2 ; 2,15] dividindo este intervalo em
n=3 (trs) partes iguais e estime ln(2.14). h = (b a ) / n = (2,15 2,00) / 3 = 0,05
Tabela gerada:

Soluo:
n+1 = 4

i
x
y = ln(x)

n=3

0
2,00
0,693

1
2,05
0,718

2
2,10
0,742

3
2,15
0,765

P3 ( x) = a 0 + a 1 x + a 2 x 2 + a 3 x 3

Aplicando o sistema (*) temos,


4
1 2
1 2,05 ( 2,05) 2

1 2,10 ( 2,10) 2

2
1 2,15 ( 2,15)

a 0
( 2,05) a 1
=
( 2,10) 3 a 2

( 2,15) 3 a 3
8

0,693
0,718

0,742

0,765

Resolvendo o sistema acima por um mtodo direto, temos:


a0 = -1,1234
a1 = 1,3048
a2 = -0,1975
a3 = -0,0004112

P3 ( x) = 11234
,
+ 1,3048x 0,1975x 2 0,0004112x 3 ln( x)
P3 (2 ,14) = 0,76048 ln( 2 ,14)

avaliao por Horner ou diviso sinttica.


125

Valor Exato: ln(2,14) = 0,760805


Algoritmo Interpolador Polinomial (resolvendo um sistema de eqs. Lineares):
%Interpolao polinomial para grau n >= 2
a = 1;
b = 2;
n = 11;
h = (b-a)/n;
x = a : h : b;
y = log(x);
tsis = n+1;
for i = 1 : tsis
A(i,1) = 1;
for j = 2 : tsis
A(i,j) = A(i,j-1)*x(i);
endfor
A(i, tsis+1) = y(i);
endfor
A
C = fgauss(tsis,A) % coeficientes do polinomio interpolador
np = 100;
hp = (b-a)/np;
xp = a:hp:b;
yep = log(xp);
for i = 1 : np+1
yip(i) = resto(n, xp(i), C);
endfor
plot(x,y,"x;f(x) = ln(x);",xp,yep,"r;F(x)exata;", xp,yip,"b;Pn(x) interpolador;")
function y = resto(n, xp, C) %Calcula o valor numrico do Polinomio em um ponto xp
b(n+1) = C(n+1);
for i = n: -1 : 1
b(i) = C(i) + xp*b(i+1);
endfor
y = b(1);
end%function

Fazendo uma anlise minuciosa da tcnica de aproximao por interpolao polinomial,


pelo menos trs questes fundamentais devem ser consideradas:
1a). Ser que o sistema (*) U.a = y sempre tem soluo? Caso sempre exista soluo,
esta ser nica?
2a). Ser possvel melhorar a eficincia computacional (menor tempo de resposta e
demanda de memria) para a obteno do Pn(x) via (*)?
3a). Qual o erro associado ao se tomar Pn(x) como aproximador de f(x), x [a,b]
com x xi?
5.1.a). Unicidade do Interpolador:
Vamos mostrar que existe um nico interpolador de grau n para toda a tabela:
xi
yi = f(xi)

x0
y0

x1
y1

...
...

xn
yn

Considere que existe um polinmio interpolador Pn(x) de grau n


n

Pn( x) = a i x i = a 0 + a 1 x + a 2 x 2 +L+a n x n com n+1 coeficientes ai (i = 0,1,2,...,n) gerados a


i=0

126

partir da soluo do sistema de equaes lineares abaixo, com n+1 incgnitas ai e n+1
equaes:
1

1
M

x0
x1
M

xn

x 02 L x 0n a 0 y 0

x12 L x1n a1 y1
=
M L M M M

x n2 L x nn a n y n

(*)

Sabendo que o Determinante da matriz X (Matriz de Vandermonde) acima dado por


1 x0 x02 L x0n

1 x1 x12 L x1n

Det ( X ) = Det
= (x i - x j )
M M
M L M i =0, n

j =0 ;n
1 x n xn2 L xnn i j
Det ( X ) = (x n - x n -1 ).(x n - x n - 2 ).....(x n - x 0 ).(x n -1 - x n - 2 ).(x n -1 - x n -3 ).....(x n -1 - x 0 )......
....(x 2 - x 1 ).(x 2 - x 0 ).(x 1 - x 0 ).
Percebe-se que o Determinante de X no nulo, sempre que os pontos xi forem diferentes
entre si, ou seja, (x i - x j ) ser sempre diferente de zero para pontos xi no repetidos e desta
forma a soluo do sistema (*) ter soluo nica.
Assim, o polinmio gerado ser nico para valores de xi no repetidos, independentemente do
mtodo utilizado para a sua determinao.
5.1.b). Determinao eficiente do interpolador
Como consequncia da unicidade do interpolador, pode-se tentar determin-lo sem a
gerao de sistemas lineares.
Para a funo tabelada abaixo:
xi
x0
x1
...
xn
yi = f(xi)
y0
y1
...
yn
prope-se as seguintes alternativas:
1a). Reescrever o interpolador polinomial Pn(x) via polinmios de Lagrange:
Neste caso o interpolador Pn(x) de grau n expresso na forma de Lagrange
(combinao linear de polinmios de Lagrange):
n

i=0

j= 0
j i

Pn( x) = y i

(x x )
(x x )
j

127

Pn( x) = y 0

( x x 1 )( x x 2 ) ... ( x x n )
+
( x 0 x 1 )( x 0 x 2 ) ... ( x 0 x n )

+ y1

( x x 0 )( x x 2 ) ... ( x x n )
+
( x 1 x 0 )( x 1 x 2 ) ... ( x 1 x n )

+ L
+ yn

( x x 0 )( x x 1 ) ... ( x x n 1 )
+
( x n x 0 )( x n x 1 ) ... ( x n x n 1 )

Pn( x 0 ) = y 0
Pn( x ) = y

1
1
Note que,
, portanto Pn(x) passa sobre todos os pontos tabelados.
M

Pn( x n ) = y n

Assim, como o interpolador Pn(x) de grau n passa sobre todos os n+1 pontos, ele ser o
mesmo que o obtido anteriormente, e sem a necessidade de se resolver o sistema (*) U a = y.
Esta uma consequncia da unicidade do interpolador polinomial.
Ex.: Determine o interpolador de Lagrange da funo:
x
0
y = f(x)
2
Estime f(2)e f(5).

1
4

Soluo:
Temos n + 1 = 4 pontos

3
0

4
1

n=3

P3 ( x) = y 0

( x x 1 )( x x 2 )( x x 3 )
+
( x 0 x 1 )( x 0 x 2 )( x 0 x 3 )

+ y1

( x x 0 )( x x 2 )( x x 3 )
+
( x 1 x 0 )( x 1 x 2 )( x 1 x 3 )

+ y2

( x x 0 )( x x 1 )( x x 3 )
+
( x 2 x 0 )( x 2 x 1 )( x 2 x 3 )

+ y3

( x x 0 )( x x 1 )( x x 2 )
( x 3 x 0 )( x 3 x 1 )( x 3 x 2 )

( x 1)( x 3)( x 4)
( x 0)( x 3)( x 4)
+4
+
( 0 1)( 0 3)( 0 4)
(1 0)(1 3)(1 4)
( x 0)( x 1)( x 3)
( x 0)( x 1)( x 3)
+0
+1
( 3 0)( 3 1)( 3 4)
( 4 0)( 4 1)( 4 3)
f(2) P3(2) = 2,167
f(5) P3(5) = 8,667
P3 ( x) = 2

Algoritmo do interpolador de Lagrange:


%Interpolao polinomial de Lagrange
128

a = 1;
b = 2;
n = 7; %7 determinado atraves do erro exato
h = (b-a)/n;
x = a : h : b;
y = log(x);
np = 100; %N. de pontos para plotar os resultados
hp = (b-a)/np;
xp = a:hp:b;
yep = log(xp);
for i = 1 : np+1
yip(i) = lagrange(xp(i), n, x, y);
endfor
plot(x,y,"x;f(x) = ln(x);",xp,yep,"r;F(x)exata;", xp,yip,"b;Pn(x) interpolador;")

function f = lagrange(xp, n, x, y)
f = 0;
for i=1:n+1
prod = 1;
for j=1:n+1
if (j != i) prod=prod*(xp-x(j))/(x(i)-x(j));endif
endfor
f=f+ y(i)*prod;
endfor
endfunction
2a). Interpolador de Gregory-Newton com diferenas:
Definio 1: Para a funo tabelada
i
0
1
xi
x0
x1
yi = f(xi)
y0
y1

...
...
...

n
xn
yn

defini-se Diferena Dividida (yi), no sentido ascendente, por:

1 yi =

yi +1 yi
xi +1 xi

2 y i = ( y i ) =

y i +1 y i
x i +2 x i

k 1 yi +1 k 1 yi
yi =
xi +k xi
k

diferena de primeira ordem.

diferena de segunda ordem.

diferena de k-sima ordem.

Ex.: Determine todas as diferenas divididas da funo


i
x
y = f(x)

0
1
2

1
3
0

2
4
1

3
7
3
129

aplicando a definio 1.
I

xi

yi

1 yi

2 yi

3 yi

0
1

1
3

2
0

-1
1

2/3
-1/12

-1/8
-

2
3

4
7

1
3

2/3
-

Definio 2: Para a funo tabelada


x0
x1
xi
yi = f(xi)
y0
y1

...
...

[(-1/12) - (2/3)]
1
=
(7 - 1)
8

xn
yn

o polinmio de grau n expresso na forma de Gregory-Newton pode ser definido como segue:
n
k 1

Pn( x) = y0 + k y0 ( x x j )
k =1
j =0

Pn( x) = y 0 + y 0 ( x x 0 ) + 2 y 0 ( x x 0 )( x x1 )+...+ n y 0 ( x x 0 )...( x x n1 )


Analisando os pontos tabelados temos que:
Pn( x0 ) = y0

Pn( x1 ) = y0 + ( y1 y0 ) ( x1 x0 ) = y1

( x1 x0 )

Pn( x2 ) = y2

Pn( xn ) = yn

(demais termos se anulam, pois (x - x1 ) = 0, para x = x1 )

Logo, Pn(x) o nico interpolador de grau n que passa sobre todos os pontos tabelados.
Ex.: Determine o interpolador para
x
1
3
4
y = f(x) 2
0
1

7
3

Estime f(5) e f(7,5).


Soluo:
Temos n+1 = 4 n = 3

P3 ( x) = y 0 + y 0 ( x x 0 ) + 2 y 0 ( x x 0 )( x x1 ) + 3 y 0 ( x x 0 )( x x1 )( x x 2 )
Usando as diferenas divididas obtidas no exemplo anterior, temos:
130

P3 ( x) = 2 + ( 1)( x 1) + ( 2 / 3)( x 1)( x 3) + ( 1 / 8)( x 1)( x 3)( x 4)

f(5) P3(5) = 2,233


f(7,5) P3(7,5) = 2,203
Obs.: O armazenamento das diferenas divididas pode ser feito na forma de um vetor, haja
vista que apenas as diferenas no ponto i = 0 so utilizadas na forma final, portanto no se
deve utilizar uma matriz para este fim.
Algoritmo de Gregory-Newton:
%Interpolao polinomial de Gregory Newton
a = 1;
b = 2;
n = 7; %7 determinado atraves do erro exato
h = (b-a)/n;
x = a : h : b;
y = log(x);
tsis = n+1;
%diferencas divididas
k = 1; %diferenas de 1 ordem
for i = 1:n
difdiv(i,1)= (y(i+1)-y(i))/(x(i+1)-x(i));
end
for k = 2:n %diferenas de k ordem
for i = 1:tsis-k
difdiv(i,k) = (difdiv(i+1,k-1) - difdiv(i,k-1))/(x(i+k)-x(i));
end
end
%difdiv
np = 100;
hp = (b-a)/np;
xp = a:hp:b;
yep = log(xp);
for i = 1 : np+1
yip(i) = gregnew(xp(i), n, x, y, difdiv);
end
plot(x,y,"x;f(x) = ln(x);",xp,yep,"r;F(x)exata;", xp,yip,"b;Pn(x) interpolador;")

function f = gregnew(xp, n, x, y, difdiv)


f = y(1);
for k=1:n
prod = 1;
for j = 1:k
prod = prod* (xp-x(j));
end
f = f + difdiv(1, k)*prod;
end
end

Consideraes:
(i). As estimativas das diferenas divididas tambm podem ser efetuadas no sentido
descendente:

131

k y i =

k 1 y i k 1 y i 1
x i x ik

conferir

permitindo a utilizao do interpolador de Gregory-Newton na seguinte forma alternativa:


n
i

Pn( x) = y 0 + i y 0 ( x x j ) atualizar
i =1
j= 0

(ii). Devido s caractersticas das expresses algbricas, Gregory-Newton mais eficiente


quando temos que efetuar muitas estimativas em uma mesma tabela, pois o clculo das
diferenas divididas pode ser avaliado previamente e reutilizado quantas vezes forem
necessrias. J o mtodo de Lagrange mais eficiente quando temos que efetuar estimativas
em vrias tabelas com os mesmos valores da varivel independente.

(iii). No mtodo de Gregory-Newton possvel acrescentar um ponto qualquer (mesmo que a


sequncia de pontos fique desordenada) no final de uma tabela existente e avaliar o novo
interpolador correspondente atravs de mais uma parcela de diferenas divididas. Por
exemplo, se for necessrio acrescentar o ponto (9;5) a tabela do exemplo anterior procede-se
da seguinte forma:
i
0
1
2
3
4

xi
1
3
4
7
9

yi
2
0
1
3
5

-1
1
2/3
1
-

2
2/3
-1/12
1/15
-

3
-1/8
1/40
-

4
3/160
-

E assim, acrescenta-se apenas o termo 4 y 0 ( x x 0 )( x x1 )( x x 2 )( x x 3 ) ao interpolador


existente:

P3 ( x) = 2 + ( 1)( x 1) + (2 / 3)( x 1)( x 3) + ( 1 / 8)( x 1)( x 3)( x 4) +


+ (3 / 160)(x 1)(x 3)(x 4)(x 7)
(iv). No mtodo de Lagrange tambm possvel acrescentar um ponto qualquer a uma tabela
existente, mas necessrio utilizar o mtodo de Neville que se utiliza de relaes de
recorrncia para avaliar o novo interpolador;
(v). Para tabelas (xi,yi) (i = 0,1,2,...,n) com xi+1 > xi e espaamentos iguais (xi+1 - xi = h), os
clculos das diferenas divididas k y i podem ser simplificados. Para tanto, definem-se as
chamadas diferenas finitas k y i , no caso ascendentes, por:
y i = y i +1 y i

diferena de primeira ordem.

k y i = k 1 y i +1 k 1 y i

diferena de k-sima ordem.

cuja relao com as diferenas divididas a seguinte:


132

k y i =

k y i
hk k!

gerando a seguinte frmula simplificada:

i y 0 i
Pn( x) = y 0 + k ( x x j )
i =1 h k ! j = 0

(vi). Nas estimativas de valores na tabela (xi,yi) (i=0,1,2,...,n) quando se quer avaliar f() com:
( x 0 , x n ) tem-se uma interpolao
( x 0 , x n ) tem-se uma extrapolao
caso se queira obter o valor de correspondente ao valor da funo tabelada
f ( ) =

=?

procede-se uma interpolao inversa.


Ex.: Determinar quando (t = ?) o consumo atingir o limite de 15 KW na tabela abaixo:
t(ano)
Consumo(KW)

85
5

89
5,7

93
6,2

95
6,7

96
7

...

?
15

Se xi yi distinto s inverter a funo.


(vii). O processo de interpolao polinomial tambm pode ser estendido a funes com vrias
variveis independentes, como veremos mais adiante.
5.1.c). Avaliao do erro na interpolao polinomial
Quando se aproxima uma funo y = f(x) por um interpolador polinomial Pn(x) com x
[x0,xn], comete-se erros de truncamento dado por:

E( x) = f ( x) Pn( x) , x [ x 0 , x n ] e x x i .

133

A delimitao do erro de truncamento E ( x ) , para qualquer x [ x 0 , x n ] , indicar o grau de


confiana dos resultados fornecidos por Pn( x) f ( x) .
Teorema:
Se Pn(x) o interpolador de
x
y = f(x)

x0
y0

x1
y1

...
...

xn
yn

com f(x) continuamente diferencivel em [x0,xn], ento x [ x 0 , x n ] , [x0 , x n ] /


n

E( x) = f ( x) Pn( x) =

f n +1 ( ) ( x x i )
i=0

( n + 1)!

Note-se que a operacionalizao do teorema acima muito difcil pois:


(i). Pode ser muito dificil obter f n+1 () (derivada n+1-sima de f(x));
(ii). impossvel saber quem exatamente o valor de ;
(iii). Para cada valor x a ser estimado tem-se que reavaliar o E ( x ) .
Tal teorema tem grande valia terica, uma vez que:
Corolrio 1 - "Sob as hipteses do teorema anterior, se M = max f n +1 ( x) ento
x [ x 0 , x n ]

E(x)

M
( x xi ) ".
( n + 1)! i = 0

Trata-se da majorante do erro, que o limite superior do mesmo.


Ex.: Delimite o erro de truncamento cometido ao se aproximar f(x) = ln(x) por um
interpolador polinomial em x = 0,65, considerando x [0,4;0,7] e com n=3 subdivises.
Soluo:
Para n = 3 , ento
h=(0,7-0,4)/3=0,1
i

0
1
xi
0,4
0,5
yi= f(xi) -0,916290732 -0,693147181

2
0,6
-0,510825624

3
0,7
-0,356674944

Aplicando o corolrio 1 vem:

f ( x) = ln( x) f (x) = 1 / x f (x) = - 1/ x 2

f (x) = 2 / x 3 f iv ( x) = - 6 / x 4
134

Como f iv (x) uma funo decrescente em [0,4;0,7], o valor de M obtido em x = 0,4


M = max f iv ( x) = f iv (0,4) = 234 ,375
x [ 0.4 ; 0.8 ]

Ento,
E (0,65)

234,375
(3 + 1)!

E (0,65) =

(0,65 x ) =
i

i =0

234,375
(0,65 x0 )(0,65 x1 )(0,65 x2 )(0,65 x3 )
(3 + 1)!

234,375
(0,65 0,4)(0,65 0,5)(0,65 0,6)(0,65 0,7) = 9,15 . 104
(3 + 1)!

Comparando com o valor exato de ln(x) tem-se:


f(x=0,65)=ln(0,65) = -0.430782916
P3(x=0,65)
= -0.431019619 por Lagrange.
Erro exato E ( x) = f ( x) Pn( x) 2,36703.10-4.
Portanto, o erro exato 2,36703.10-4 menor que o erro de truncamento mximo
E (0,65) 9,15 .104 .

Corolrio 2 - "Se na tabela ocorrer xi+1 > xi (pontos ordenados) e xi+1 - xi = h (igualmente
M h n+1
espaados i), ento E ( x )
com M = max f n +1 ( x) ".
x [ x 0 , x n ]
( n + 1)
Ex.: Obtenha o erro de truncamento mximo cometido ao se aproximar f(x) = ex com
x [2; 2,4] via Pn(x) com os xi ordenados e igualmente espaados em n=4 intervalos. Avalie
o erro exato em x=2,33.
Soluo:
n=4

h=

2,4 2
= 0,1
4

Temos f(x) = ex f'(x) = ex

f''(x) = ex ... f(v)(x) = ex

M = max f ( v ) ( x ) = f ( v ) (2,4) = e2,4


x [ 2 ; 2 , 4 ]

Ento, E ( x )

e 2 , 4 ( 0,1) 5
5

= 0,000022

Verificao:
P4(2,33) = 10,2779587404
e2,33
= 10,2779411764
Erro(real) = |10,2779587404 - 10,2779411764| = 0,000017564 < 0,000022
Ex.: Delimitar o erro mximo cometido ao se aproximar y = ln(x), x [2;2.15], atravs do
interpolador P3(x), dividindo o intervalo [2;2.15] em 3 partes iguais.
135

Soluo:
h=

n=3

2,15 2
= 0,05
3

Temos f(x) = ln(x) f'(x) = x-1 f''(x) = -1.x-2 ... f(4)(x) = 3! x-4 (f(n+1)(x) = n! x)

(n+1)

M = max f
x[ 2 ; 2 ,15 ]

Ento, E ( x )

( 4)

( x) = 3! 2-4 = 0,375

0,375.(0,05) 4
= 5,859.10-7
4

Ex.: Delimitar o erro mximo cometido ao se aproximar y = ln(x), x [1,2], atravs do


interpolador P20(x), dividindo [1,2] em 20 partes iguais.
Soluo:

h=

n = 20

2 1
= 0,05
20

Temos f(x) = ln(x) f'(x) = x-1 f''(x) = -1.x-2 ... f(21)(x) = 20! x-21
M = max f ( 21) ( x) = 20! (1)-21 = 20!
x [1, 2 ]

20! (0,05) 21
= 5,5 . 10-11
21
Ex.: Calcular o grau 'n' mnimo do interpolador polinomial Pn(x) necessrio para que o Erro
mximo entre f(x) e o interpolador Pn(x) seja menor que 1.10-6, ao se aproximar f(x)=ln(x)
atravs de Pn(x), em x[1;2], dividindo o intervalo [1,2] em n partes iguais.

Ento, E ( x )

Soluo:
Nesse caso, pode-se estabelecer valores de 'n' (INTEIROS) para calcular o valor do Erro
mximo de truncamento, facilitando a obteno das derivadas f(n+1)(x), pois os 'n' so nmeros
inteiros:
1a. tentativa: n=3
n=3

h=

2 1
= 0,333333333...
3

Temos f(x) = ln(x) f'(x) = x-1 f''(x) = -1.x-2 ... f(4)(x) = 3! x-4 (f(n+1)(x) = n! x(n+1)
)
M = max f ( 4 ) ( x) = 3! 1-4 = 6
x[1, 2 ]

6.(0,33333333) 4
Ento, E ( x)
= 1,8519.10-2 precisamos aumentar o 'n', vamos tentar n=6
4
2a. tentativa: n=6
2 1
n=6 h=
= 0,16666666 ...
6
136

Temos f(x) = ln(x) f'(x) = x-1 f''(x) = -1.x-2 ... f(7)(x) = 6! x-7 (f(n+1)(x) = n! x)

(n+1)

M = max f

(7)

x[1, 2 ]

( x) = 6! 1-7 = 720

Ento, E ( x )

720.(0,1666667) 7
7

3a. tentativa: n=8


n=8

h=

= 3,6743.10-4 precisamos aumentar o 'n', vamos tentar n=8

2 1
= 0,125
8

Temos f(x) = ln(x) f'(x) = x-1 f''(x) = -1.x-2 ... f(9)(x) = 8! x-9 (f(n+1)(x) = n! x)

(n+1)

M = max f ( 9) ( x) = 8! 1-9 = 40320


x[1, 2 ]

40320.(0,125) 9
= 3,3379.10-5 precisamos aumentar o 'n', vamos tentar n=10
9
6a. tentativa: n=10
2 1
n = 10 h =
= 0,1
10

Ento, E ( x)

Temos f(x) = ln(x) f'(x) = x-1 f''(x) = -1.x-2 ... f(11)(x) = 10! x-11 (f(n+1)(x) = n! x(n+1)
)
M = max f
x[1, 2 ]

(11)

( x) = 10! 1-11 = 3.628.800

3628800.(0,1)11
Ento, E ( x )
11

7a. tentativa: n=11


n = 11

h=

= 3,2989.10-6 precisamos aumentar o 'n', vamos tentar n=11

2 1
= 0,09090909 ...
11

Temos f(x) = ln(x) f'(x) = x-1 f''(x) = -1.x-2 ... f(12)(x) = 11! x-12 (f(n+1)(x) = n! x(n+1)
)
M = max f (12 ) ( x) = 11! 1-12 = 29.916.800
x[1, 2 ]

29916800.(0,0909090909)12
Ento, E ( x )
= 1,0599.10-6 que da ordem de 1.10-6.
12
Logo, usaremos grau n=11 para calcular o polinmio interpolador Pn(x) representativo de
f(x)=ln(x) em x[1;2] com erro mximo de truncamento pode ser da ordem de 1.10-6, mas os
erros exatos devem ficar abaixo de 1.10-6.
137

Sobre Ordem de grandeza de um nmero em Ponto Flutuante, temos que considerar se o


nmero multiplicador
ador x da potncia de 10n est entre 100 e 101/2 ou entre 101/2 e 101, ou seja,
se est entre 1 e 3,1622..., ou entre 3,1622... e 10. Se o multiplicador x est abaixo de 3.1622
o nmero de ordem 10n e se estiver acima, ter ordem 10n+1.
http://www.matematicamuitofacil.com/notacaocientifica.html
atematicamuitofacil.com/notacaocientifica.html
Exerccios:
Repita o exemplo anterior para f(x) = x3+2; f(x) = sen(x); f(x) = x.ln(x) ; f(x) = 1/(1+x)
com x [1,2] e calcule o n mnimo necessrio para que o Erro Mximo em cada funo seja
menor que 1.10-6.

5.3 - Aproximao por Interpolao SLINE


Splines so rguas flexveis, de madeira ou plstico, que podem ser curvadas de forma
a passar por um dado conjunto de pontos (xi,fi) chamados ns. Foram muito utilizadas em
desenhos de engenharia, nos tempos
tempos em que no se tinha recursos grficos disponveis para
computadores. Apesar de ser usada desde o sculo passado, s no fim da dcada de 60 foi
desenvolvida a formulao matemtica deste problema. Tal formalizao possibilitou o
desenvolvimento de vrios sistemas computadorizados que utilizam aproximaes grficas de
funes como CAD/CAM e TURBO GRAFIX.

Figura: Spline Fsica e pesos (ducks) que so fixados nas reas de interesse causando a
deformao da estrutura de madeira ou plstico resultando assim na curva.
Uma das maiores dificuldades encontradas ao se trabalhar com a interpolao
polinomial convencional (Lagrange, Gregory-Newton,
Gregory Newton, etc.) ocorre quando se toma um
polinmio interpolante de grau pequeno, cometendo-se
cometendo se elevados erros de truncamento,
enquanto que tomando-se
se polinmio interpolador de grau elevado, os grficos tendem a ser
altamente sinuosos (vide figura abaixo). Em certas aplicaes em que a funo interpolante
precisa ser diferenciada, importante obter uma aproximao to suave quanto possvel. Uma
Um
possibilidade atravs de splines cbicos, que permite interpolar com muita suavidade, como
no desenho abaixo:
138

Ex.: Desenho com splines cbicas.


Uma tcnica de aproximao possvel consiste em se dividir o intervalo de interesse
em vrios subintervalos e interpolar separadamente, da forma mais suave possvel, em cada
subintervalo com polinmios de grau pequeno.
Definio 1: Interpolao Spline uma tcnica de aproximao que consiste em se
dividir [a,b] de interesse e interpolar separadamente em cada intervalo com as funes mais
suaves possveis.
Definio 2: Sejam a = x0 < x1 <... < xm = b, com m subdivises do intervalo [a,b].
Uma funo spline de grau k com ns nos pontos (xi ,yi) com (i = 0,m) uma funo pk(x)
com as seguintes propriedades:
a) em cada subintervalo [xi,xi+1] (i=0,m-1), pk(x) um polinmio de grau k.
b) pk(x) contnuo em [a,b] e tem derivada contnua em [a,b] at ordem k.
A spline interpolante a funo pk(x) tal que pk(xi)=f(xi)=yi (i=0,m).

p1

pm-1
pi

po
y1

xo=a

x1

x2

...

xi

xi+1 ... xm-1 xm=b

5.3.1 - Spline Linear


A funo interpolante spline linear de f(x) nos ns x0, x1, ..., xm pode ser escrita, em
cada um dos m subintervalos [xi, xi+1] com (i=0,m-1), segundo o interpolador de Lagrange
139

local, como

s1i ( x) = f ( x i )

( x x i +1 )
(x x i )
+ f ( x i +1 )
,
( x i x i +1 )
( x i +1 x i )

x [ x i , x i +1 ]

Exemplo. Achar a spline linear em


i
x
y

0
1
1

1
2
2

2
5
3

3
7
2,5

Calculando s1i, temos:


( x x1 )
(x x0 )
( x 2)
( x 1)
s10 ( x) = f ( x 0 )
+ f ( x1 )
=1
+2
= x + 2 + 2 x 2 = x, x [1,2]
( x 0 x1 )
( x1 x 0 )
(1 2)
(2 1)
( x 5)
( x 2) 1
+3
= ( x + 4),
(2 5)
(5 2) 3
( x 7)
( x 5) 1
s12 ( x) = 3
+ 2,5
= ( x + 17),
(5 7)
(7 5) 4

s11 ( x) = 2

x [2,5]
x [5,7]

Para obter f(3) utiliza-se a spline vlida no intervalo x [2,5] , portanto calcula-se
s12(3) = 1/3(3+4) = 7/3.
Por convenincia terica e prtica, e por questes de otimizao, so utilizados
interpoladores polinomiais cbicos spi(x), com grau igual a 3 (trs) fixo (Splines cbicas).
Esta tcnica, e suas variantes, constituem um dos fundamentos da computao grfica
(CAD,...).
5.3.2 - Aproximao por Splines cbicas
Para aproximar y = f(x) , x [a,b] por splines cbicas procede-se da seguinte maneira:
1o). Dividir [a,b] em m subintervalos [xi,xi+1], tal que xi+1 > xi e xi+1 - xi = hi;
2o). Obter um polinmio spi(x), de grau 3, para cada um dos m subintervalos [xi,xi+1],
spi ( x) = a i ( x xi ) 3 + bi ( x xi ) 2 + ci ( x xi ) + d i

i = 0,1,2,...m-1

(1)

satisfazendo as seguintes condies:


2a). spi(xi) = yi , para todo i = 0,1,2,...,m-1 e spm-1(xm) = ym (spi(xi) passa sobre (xi,yi))
2b). sp i 1 ( x i ) = sp i ( x i ) = y i para todo i = 1,2,...,m-1 Condio de Continuidade
Note que cada polinmio spi(x), relativo ao intervalo [xi,xi+1], deve passar pelos seus
dois pontos extremos (xi,yi) e (xi+1,yi+1).

140

2c). sp i1 ( x i ) = sp i ( x i )

para todo i = 1,2,...,m-1 Condio de Suavidade

Ou seja, em cada ponto xi, a INCLINAO dos dois polinmios que nele incidem
devem ser iguais.
2d). sp
i 1 ( x i ) = sp
i (x i )

para todo i = 1,2,...,m-1 Velocidade de encurvamento

Em cada ponto, a velocidade de encurvamento (CURVATURA) dos dois polinmios


que nele incidem devem ser iguais.
Obs.: Num spline mecnico estas propriedades correspondem a:
- o spline deve passar atravs dos ns.
- o spline no quebra ou no forma ngulos agudos.
- a teoria das barras flexveis diz que, entre os ns, o spline cbico se aproxima a um
polinmio cbico.
- o spline assume a forma que minimiza a energia potencial.
3o). Para estimar f(u) com u [a;b]:
- localizar o intervalo em que u est Se u [xi,xi+1] ento
- f(u) spi(u)

Tomando spi(x) para cada subintervalo [xi, xi+1] com i = 0,1,2,...,m-1, atravs da
eq.(1), e aplicando as condies estabelecidas nos itens 2a, 2b, 2c e 2d resulta que:
Aplicando a condio 2a) e 2b) na eq. (1) tem-se:
(i).

sp i ( x i ) = d i = y i

(2)

sp i ( x i +1 ) = a i h 3i + b i h 2i + c i h i + d i = y i +1

(3)

Avaliando a primeira e segunda derivadas de spi(x), tem-se:

sp i ( x) = 3a i ( x x i ) 2 + 2b i ( x x i ) + c i

(4)
141

sp
i ( x ) = 6a i ( x x i ) + 2 b i

(5)

Na eq. (5) considera-se que:


e
S i = sp
i (xi )
S i +1 = sp i +1 ( x i +1 ) = sp i ( x i +1 )
Aplicando a condio 2d) tem-se:
(ii).

bi = Si / 2
sp
i (x i ) = 2b i = Si

(6)

sp
i ( x i +1 ) = 6a i h i + 2 b i = S i +1

(7)

Substituindo a eq. (6) na eq. (7) tem-se


(S i +1 S i )
ai =
6h i

(8)

Substituindo as eqs. (8), (6) e (2) em (3) tem-se que


y i +1 =

(S i +1 S i ) h i3 S i h i2
+
+ c i h i + y i ento
6h i
2

y i +1 y i Si +1 h i + 2Si h i

hi
6
Agrupando tem-se:
ci =

a i
b
i

c i
d i

(9)

= (S i +1 S i ) / 6h i
= Si / 2

(10)

= ( y i +1 y i ) / h i (S i +1 h i + 2S i h i ) / 6
= yi

Assim, tem-se os coeficientes das splines cbicas em funo dos valores de Si e Si+1.
Para obter estes valores, utiliza-se a condio 2c, sp i ( x i ) = sp i1 ( x i )
sp i ( x i ) = c i e

sp i1 ( x i ) = 3a i1 h i21 + 2b i1 h i1 + c i 1

c i = 3a i1 h 2i1 + 2b i1 h i1 + c i1

(11)

Substituindo as expresses da eq. (10) na eq. (11), tem-se


h i 1S i 1 + ( 2 h i 1 + 2 h i )S i + h i S i +1 = 6[( y i +1 y i ) / h i ( y i y i 1 ) / h i 1 ]

(12)

para i = 1,2,3,...,m-1 (m-1 equaes)


De forma explcita tem-se:
142

h1
h0 2( h0 + h1 )

h1
2( h1 + h2 ) h2

hm 2 2(hm 2 + hm1 ) hm1

S 0

S1 y 2 y 1 y 1 y 0

h1
h0

S 2 y 3 y 2 y 2 y 1

h2
h1

M
= 6

y m y m 1 y m 1 y m 2

S m1 h m1
h m 2

S m

Como tem-se m+1 pontos com m+1 incgnitas Si, e da eq.(12) tem-se apenas m-1
equaes (i=1,2,3,...,m-1), ento este um sistema linear com m-1 equaes a m+1
incgnitas. Para que se tenha soluo nica necessrio impor mais duas condies especiais,
de preferncia, nos pontos extremos de [a,b] envolvendo S0 e Sm. Dependendo de tais
condies pode-se ter vrios tipos de Splines:
1) Supor que as splines cbicas se aproximam de forma linear nos extremos, em x0=a e xm=b,
isto , S0 = Sm = 0 spline natural

2( h0 + h1 )

h1

h1

2( h1 + h2 )

h2

hm2 2(hm2 + hm1 )

S1 y 2 y 1 y 1 y 0


h1
h0

S2 y 3 y 2 y 2 y 1


h2
h1

M

.

y y
y m 1 y m 2
m 1
m

S m 1 h m1
h m 2

2) Supor que as splines aproximam-se de forma quadrtica nos extremos, isto , S0 = S1 e


Sm=Sm-1.

143

(3h0 + 2h1 )

h1

h1

2( h1 + h2 )

h2

hm2 (2hm 2 + 3hm1 )

S1 y 2 y 1 y 1 y 0


h1
h0

S2 y 3 y 2 y 2 y 1

h2
h1

M
6
.

M

.

y y
y m 1 y m 2
m 1

S m 1 h m1
h m 2

3) Assumir um valor para os extremos S0 = u e Sm = v.

2( h0 + h1 )

h1

h1

2( h1 + h2 )

h2

hm2 2(hm2 + hm1 )

S1

S2

S m 1

y y1 y1 y 0

h0u + 2

h1
h0

y 3 y 2 y 2 y1

h2
h1

h v + y m y m1 y m1 y m 2
m1

h m1
h m2
Se for assumido um valor para os extremos a partir da extrapolao linear dos valores internos
tem-se duas equaes adicionais para S0 e para Sm.

S1 S0 S2 S1
=
h0
h1

S m S m1 S m1 S m 2
=
h m1
h m 2

Que geram equaes adicionais que podem ser adicionadas ao sistema dado pela eq. (12),

( h 0 + h 1 )S1 h 0S 2
(h
+ h m1 )S m1 h m1S m2
e S m = m 2
h1
h m 2
Note-se que o sistema linear resultante (com qualquer das condies apresentadas)
um sistema tridiagonal, que aps resolvido fornece S1, S2, S3,...,Sm-1, juntamente com a
respectiva condio de extremos S0 e Sm. Substituindo os valores de Si nas eqs. (10) fornecem
os coeficientes ai, bi, ci, di das splines cbicas de f(x) em [a,b].
S0 =

144

Exemplo1. Aproximar a funo tabelada abaixo por splines cbicas, em [0,4] com h = 1, e
estime f(2,5).
X
Y

0
-3

1
-2

2
5

3
24

4
61

Soluo:
Ento hi = 1 e m = 4 intervalos.
a). Com Splines de extremos naturais (forma linear nos extremos):
2( h 0 + h 1 )

h1
0

h1
2( h 1 + h 2 )
h2

0
h2
2( h 2 + h 3 )

S 1
[( y 2 y 1 ) / h 1 ( y 1 y 0 ) / h 0

S 2 = 6 [( y 3 y 2 ) / h 2 ( y 2 y 1 ) / h 1
S 3
[( y 4 y 3 ) / h 3 ( y 3 y 2 ) / h 2

Calculando os valores, obtm-se o sistema


4 1 0 S1
36



1 4 1 S 2 = 72 Sendo a soluo S= {S1, S2,S3} = { 6,42857; 10,2857; 24,4285}
0 1 4 S 3
108
com S0 = S4 = 0.
Assim, para i = 0:
a 0 = (S 1 S 0 ) / 6h 0 = 1,0714
b = S / 2 = 0
0
0

c 0 = ( y 1 y 0 ) / h 0 (S1 + 2S 0 ) / 6h 0 = 0,0714
d 0 = y 0 = 3

sp 0 ( x) = 1,0714( x 0) + 0 0,0714( x 0) 3 para x[0,1]


3

As demais splines so as seguintes:


sp 1 ( x) = 0( x 1) + 0( x 1) 2 0, ( x 0) 2 para x[1,2]
3

sp 2 ( x) = 2,3571( x 2) + 5,1428( x 2) 2 11,5( x 2) + 5 para x[2,3]


3

sp 3 ( x) = 0( x 1) + 0( x 1) 2 0, ( x 0) 2 para x[3,4]
3

Uma aproximao de f(2,5) pode ser obtida de sp2 (2,5) = 12,33037.


b). Com Splines de extremos quadrticos:
(3h 0 + 2 h 1 )

h1
0

h1
2( h 1 + h 2 )
h2

0
h2
(2 h 2 + 3h 3 )

S 1
[( y 2 y 1 ) / h 1 ( y 1 y 0 ) / h 0

S 2 = 6 [( y 3 y 2 ) / h 2 ( y 2 y 1 ) / h 1
S 3
[( y 4 y 3 ) / h 3 ( y 3 y 2 ) / h 2

Calculando os valores, obtm-se o sistema


145

5 1 0

1 4 1
0 1 5

S 1
36


S 2 = 72 Sendo a soluo S = {S1, S2,S3} = { 24,8; 12; 19,2}
S 3
108
com S0 = S1 = 24,8 e com Sm = Sm-1 = 19,2. Assim,

sp 0 ( x) = 2,4( x 0) 1,4( x 0) 3 para x[0,1]


3

sp 1 ( x) = 0( x 1) + 0( x 1) 2 0, ( x 0) 2 para x[1,2]
3

sp 2 ( x) = 1,2( x 2) + 6( x 2) 2 + 11,8( x 2) + 5 para x[2,3]


3

sp 3 ( x) = 0( x 1) + 0( x 1) 2 0, ( x 0) 2 para x[3,4]
3

Aproximao de f(2,5) pode ser obtida por sp2 (2,5) = 12,55.


Para efeito de comparao tem-se que f(x) tabelada corresponde a f(x) = x3-3, e cujo valor
exato de f(2,5) = 12,625. Portanto com spline de extremos quadrticos tem-se um resultado
mais realstico.

Algoritmo Splines cbicas:


% Represente a funao sen(x) com x entre - , de forma continua e suave
% Neste caso usaremos a interpolao por splines cbicas, que representam relaes entre
% variveis, que NO so funoes.
a=-pi %valor inicial do intervalo
b=+pi %valor final do intervalo
m=16 %numero de subdivises do intervalo [a ; b] para m+1 pontos
tx=a:(b-a)/m:b; %variavel auxiliar
x=tx
y=f1(tx) % valores exatos da funo f2 = sen(tx) para os m+1 pontos tabelados
for i=1:m
h(i)=x(i+1)-x(i);
end
h
%teremos 'm' splines cbicas, uma para cada intervalo, formando um sistema tridiagonal de 'm-1' equacoes para
S (derivadas de segunda ordem)
t(2)=0; r(2)=3*h(1)+2*h(2); d(2)=h(2);
b(2)=6*((y(3)-y(2))/h(2)-(y(2)-y(1))/h(1)); %para S1
for i=3:m-1
t(i)=h(i-1); r(i)=2*(h(i-1)+h(i)); d(i)=h(i); b(i)=6*((y(i+1)-y(i))/h(i)-(y(i)-y(i-1))/h(i-1)); %para Si
endfor
t(m)=h(m-1); r(m)=(2*h(m-1)+3*h(m)); d(m)=0; b(m)=6*((y(m+1)-y(m))/h(m)-(y(m)-y(m-1))/h(m-1)); %para Sm
t
r
d
b
for i=3:m
aux=t(i)/r(i-1);t(i)=0;
r(i)=r(i)-aux*d(i-1);
b(i)=b(i)-aux*b(i-1);
end
S(m)=b(m)/r(m);
for i=m-1:-1:2
S(i)=(b(i)-d(i)*S(i+1))/r(i);
end
% Splines quadrticas NAS PONTAS da figura S1=S2 e Sm+1=Sm
% Calcula-se cada conjunto de coeficientes a, b, c, d dos polinimois de 3o. grau
S(1)=S(2); S(m+1)=S(m);
S
for i=1:m
a(i)=(S(i+1)-S(i))/(6*h(i));
b(i)= S(i)/2;
c(i)=(y(i+1)-y(i))/h(i)-(S(i+1)+2*S(i))*h(i)/6;

146

d(i)= y(i);
end
np=4; %4 sub-divises para cada sub-intervalo entre xi e xi+1
xpp=[];ypp=[];
for i=1:m
xp=x(i):(x(i+1)-x(i))/np:x(i+1);
for k=1:np+1
yp(k)=a(i)*(xp(k)-x(i))*(xp(k)-x(i))*(xp(k)-x(i))+b(i)*(xp(k)-x(i))*(xp(k)-x(i))+c(i)*(xp(k)-x(i))+d(i);
end
xpp=[xpp xp];ypp=[ypp yp];
end
xpp
ypp
plot(x,y,'*',xpp,ypp,'k')
function f=f1(x)
f=sin(x);
endfunction

Exemplo: funo sen(x).

Algoritmo para tratamento do Fenmeno de Runge


Em matemtica, em particular no campo especfico da anlise numrica, o fenmeno de Runge um
problema de oscilao nas bordas de um intervalo, que ocorre quando se usa interpolao polinomial com
polinmios de ordem elevada. Foi descoberto por Carl Runge quando investigava erros na interpolao
polinomial para aproximar certas funes, como f(x)=1/(25*x2+1):

147

A curva vermelha a Funo EXATA de Runge. A curva azul uma interpolao polinomial de 5 ordem (usando seis pontos
de interpolao igualmente espaados). A curva verde uma interpolao polinomial de 9 ordem (usando dez pontos de
interpolao igualmente espaados). A oscilao pode ser minimizada usando-se os ns de Chebyshev em vez de ns
eqidistantes para ancorar o polinmio interpolador. Neste caso, o erro mximo diminui quando a ordem do polinmio aumenta.

% Neste exemplo usaremos a interpolao:


%1.Polinomial com m pontos equidistantes;
%2. Polinomial com mk pontos definidos pelas razes do polinomio de grau mk=nk+1 de Chebyshev;
%3. por splines cubicas, que representam relaoes entre variaveis.
clear
a=-1
1 %valor inicial do intervalo (NO PODE GERAR DERIVADA NULA)
b=+1 %valor final do intervalo
n=8 %numero de subdivicoes do intervalo [a ; b] para m+1 pontos
m=n+1;

%1.Polinomial com pontos equidistantes;


x=a:((b-a)/n):b %variavel auxiliar
y=1./(1.+25.*x.*x) % valores exatos da funo f(x) para os m+1 pontos tabelados
tabelad
% Clculo por interpolao polinomial
for i=1:m
a1(i,1)=1;
for j=2:m
a1(i,j)=a1(i,j-1)*x(i);
endfor
a1(i,m+1)=y(i);
endfor
a1
coef=fgauss(m,a1)
np=20*n % numero de subdivicoes para serem plotados
xp= a:((b-a)/np):b;
a)/np):b; % (np+1) pontos x a serem plotados
for i=1:np+1
yp(i)=Pn(n,coef,xp(i)); % (np+1) pontos y a serem plotados
ye(i)=1/(1+25*xp(i)*xp(i));
endfor

%2. Polinomial com m pontos definidos pelas razes do polinomio de grau m=n+1 de Chebyshev;
nk=16;mk=nk+1; % 17 ns de Chebychev, polinomio de grau nk=16
for i=1:mk
tk(i)=cos((2*i-1)*pi/(2*mk));
1)*pi/(2*mk));
yaux(i)=1/(1+25*tk(i)*tk(i));
endfor
yk=1./(1.+25.*tk.*tk) % valores exatos da funo f(t) para m ponto
% Clculo por interpolao polinomial
for i=1:mk
a1(i,1)=1;
for j=2:mk
a1(i,j)=a1(i,j-1)*tk(i);

148

endfor
a1(i,mk+1)=yk(i);
endfor
a1
coef=fgauss(mk,a1)
for i=1:np+1
ypk(i)=Pn(nk,coef,xp(i)); % (np+1) pontos y a serem plotados
endfor

%3. Clculo por n Splines


for i=1:n
h(i)=x(i+1)-x(i);
end
h
%teremos 'n' splines cubicas, uma para cada intervalo, formando um sistema tridiagonal de 'm-1' equacoes para
S (derivadas de segunda ordem)
t(2)=0;
r(2)=3*h(1)+2*h(2); d(2)=h(2);b(2)=6*((y(3)-y(2))/h(2)-(y(2)-y(1))/h(1)); %para S1
for i=3:n-1
t(i)=h(i-1);r(i)=2*(h(i-1)+h(i)); d(i)=h(i);b(i)=6*((y(i+1)-y(i))/h(i)-(y(i)-y(i-1))/h(i-1)); %para Si
endfor
t(n)=h(n-1); r(n)=(2*h(n-1)+3*h(n));d(n)=0; b(n)=6*((y(n+1)-y(n))/h(n)-(y(n)-y(n-1))/h(n-1)); %para Sm
t
r
d
b
for i=3:n
aux=t(i)/r(i-1);t(i)=0;
r(i)=r(i)-aux*d(i-1);
b(i)=b(i)-aux*b(i-1);
end
S(n)=b(n)/r(n);
for i=n-1:-1:2
S(i)=(b(i)-d(i)*S(i+1))/r(i);
end
% Splines quadraticas S1=S2 e Sm+1=Sm
% Calcula-se cada conjunto de coeficientes a, b, c, d dos polinimois de 3o. grau
S(1)=S(2); S(n+1)=S(n);
S
for i=1:n
a(i)=(S(i+1)-S(i))/(6*h(i));
b(i)= S(i)/2;
c(i)=(y(i+1)-y(i))/h(i)-(S(i+1)+2*S(i))*h(i)/6;;
d(i)= y(i);
end
np=4; %4 sub-divises internas em cada sub-intervalo entre xi e xi+1
xpp=[];ypp=[];
for i=1:n
xs=x(i):(x(i+1)-x(i))/np:x(i+1);
for k=1:np+1
ys(k)=a(i)*(xs(k)-x(i))*(xs(k)-x(i))*(xs(k)-x(i))+b(i)*(xs(k)-x(i))*(xs(k)-x(i))+c(i)*(xs(k)-x(i))+d(i);
end
xpp=[xpp xs];ypp=[ypp ys];
end
xpp;
ypp;
plot(x,y,'*',xp,yp,"r;interpolao
equidistante;",tk,yaux,'x',xp,ypk,"k;interpolacao
com
m=16
'nos'
de
Chebyshev;",xpp,ypp,"g;Splines Cubicas;",xp,ye,"b;Funcao exata f(x)=1/(1+25*x^2);")
%plot(x,y,'*',tk,yaux,'x',xp,ypk,"k;interpolao nos de Chebyshev;",xpp,ypp,"g;Splines Cubicas;",xp,ye,"b;Funcao
exata f(x)=1/(1+25*x^2);")

149

150

Mas as Splines so essencialmente funes polinomiais, aplicadas em cada subsub


intervalo, logo tem-se
se instabilidades numricas em regies onde a curva fica muito
vertical, ou seja, onde a derivada tende ao infinito, como na curva circular abaixo:

Nestes casos, as curvas propostas por Pierre Bezier so adequadas, por que
separam uma funo y=f(x) ou mesmo uma relao no funcional, em outras duas,
de modo parametrizado,, x=x(t) e y=y(t), onde t um parmetro independente. Desta
forma, x=x(t) e y=y(t), sempre sero funes bem comportadas, sem derivadas
tendendo ao infinito.
Interpolaes por Curvas de Bezier:
Este assunto a base matemtica de sistemas de computao grfica, como o corel
draw. Foi desenvolvido pelo engenheiro Pierre Bezier (funcionrio da Renault) na
dcada de 1960 (sistema Unisurf) para simulao de layout de automveis.
Questo preliminar:: Como seguir um caminho, no funcional (com mais de um valor
de y para cada x), do tipo esboado?

151

Somente usando o conceito de parametrizao da curva (=caminho), via:


a). tomar (n+1) pontos amostrais pi=(xi,yi), i=0,...,n, definidos na base de dados da
curva (do caminho):
xi

x0

x1

...

xn-11

xn

yi

y0

y1

...

yn-11

yn

b). adotar uma nova varivel independente t[0;1],


t [0;1], varivel de controle, e dividir o
intervalo [0;1] em n partes iguais de comprimento h=(1-0)/n
h=(1 0)/n e gerar ti, com t0=0 e
ti+1=ti+h para i=0,... n-1.
ti

t0

t1

...

tn-1

tn

pi

p0

p1

...

pn-11

pn

Separando cada ponto pi=(xi,yi), i=0,...,n, em seus componentes xi e yi como funes


de ti:
ti

t0

t1

...

tn-1

tn

xi

x0

x1

...

xn-11

xn

ti

t0

t1

...

tn-1

tn

yi

y0

y1

...

yn-11

yn

c). aproximar as duas tabelas, que agora so funes, e gerar os pontos novos do
caminho usando estes dois aproximadores (interpoladores, por exemplo).
Aproximao unidimensional de Bezier:
c1). tomar (n+1) pontos referenciais do desenho desejado => pi=(xi,yi), i=0,...,n e
express-los
los na forma parametrizada => pi=(xi(t),yi(t)), com t[0;1];
[0;1];
Por exemplo para n=3 (n+1=4 pontos).

c2). subdividir os (n+1) pontos referenciais e subconjuntos com (k+1) pontos,


2<=k<n (se necessrio, nos casos de termos mais que 4 pontos);
c3). Para cada subconjunto de (k+1) pontos pi, i=0,...,k obter o seu polinmio
aproximador de Bernstein
de grau k:

152

. 1

Onde

. .

!. !

Forma matricial de
=

. 1

. .

. 1

. .

1
1
.
.
.

"
!
!
!
!

Exemplos:
= 1. 1

k=2 => Bezier quadrtica.


#

=>

+2. 1

+1. 1

# #

.
.

1.
3.
3.
1.

1
1
1
1

=>

&
&
&
&

.
.
#
.
&
.

.
.
#
.
&
.

+
+
#+

&

dx=

dy=

= 1. 1
+3. 1

, cx=3.(
&

&

&

= 1. 1
+3. 1

, cy=3.(

&

&

& #

=) .

&

&

& #

=) .

&

+ 3. 1

&

.
.

+ 3. 1

&

++ .

.
.

& &

&

+, .

&

- )-cx, ax=( & - )(cx+bx)

+ 1. 1

+* .

- ), by=3.(

+ 1. 1

+* .

- ), bx=3.(

Essa ltima forma de se expresser um polinmio


implementao em computador.
A plotagem de uma polinomial
propriedades.

= 1. 1 # . .
+ 2. 1 # .
+ 1. 1 # # .

k=3 Bezier cbica


&

= 1. 1 # . .
+ 2. 1 # .
+ 1. 1 # # .

++ .

& &

&

+, .

&

- )-cy, ay=( & - )(cy+by)

a mais adequada para

, com t[0;1], gera uma curva com as seguintes


153

P1: -

0 =
0 =

/ e -

1
1

incia em p0 e termina em pk.

P2: A reta definida por {p0,p1} a reta tangente a


{pk-1, pk} tangente a
em pk.

em p0, e a reta definida por

P3: A curva gerada pela


{
}, t[0;1],
[0;1], est contida sempre no
,
menor polgono convexo que contm os k+1 pontos de referncia da mesma.
Exemplos:

Algoritmo:
%Curvas de Bezier
clear
n=4 %pontos
%y=[0 0 4 4];x=[0 4 4 0]; %parabola horizontal
%y=[0 9 9 0];x=[4 4 0 0]; %parabola vertical
%y=[3 6 0 -3];x=[0
3];x=[0 5 6 1]; %parabola inclinada
%y=[3 1 5 -3];x=[0
3];x=[0 2 2 3]; %parabola distorcida
%y=[0 4 4 0];x=[0 5 0 5]; %cuspide
y=[0 -100 -100 0];
x=[0 1 -1 0]; %Gota
x(n+1)=x(1);y(n+1)=y(1);
n=1000
h=1/n %Espaamento do parametro t
t=0
cx=3*(x(2)-x(1));bx=3*(x(3)
x(1));bx=3*(x(3)-x(2))-cx;ax=(x(4)-x(1))-(cx+bx);
cy=3*(y(2)-y(1));by=3*(y(3)
y(1));by=3*(y(3)-y(2))-cy;ay=(y(4)-y(1))-(cy+by);
xmax=0;ymax=0;
for i=1:n+1
xx(i)=x(1)+t*(cx+t*(bx+t*ax));
yy(i)=y(1)+t*(cy+t*(by+t*ay));
t=t+h;
154

endfor
plot(x,y,'g',x,y,'x',xx,yy,'r')

Exemplo de uma gota:

Exemplo de um perfil:
Exemplo no Corel Draw (ferramenta Forma (F10), Converter em curvas (crtl Q)):

https://www.youtube.com/watch?v=qCk0C1QO4HY
155

Captulo 6 - Aproximaes por Sries e por Funes Racionais:


6.2 - Aproximao de y=f(x) por sries:
Aqui ser abordada aproximao de y = f(x), x[a,b] com expresso conhecida, atravs
de outra funo z = g(x). Este um problema central da elaborao de bibliotecas de funes
pr-definidas para os sistemas dedicados.
Para fins de padronizao e facilidade de avaliao da qualidade de g(x) vamos
normalizar o intervalo [a; b] fazendo-o operar no intervalo [-1;+1].
Isto sempre possvel atravs de transformaes lineares:
Para y = f(x), x[a,b]:

ba
b+a
t+
ento,
2
2
Se t = -1 x = a
Se t = +1 x = b

Fazemos x =

b + a
ba
f (x) = f
t+

2
2
Aps determinar a aproximadora f(x(t)), toda em funo de t, voltamos a expressar a
forma original da funo de x, substituindo t por t(x):

t=

b+a
2x

ba ba

Uma transformao generalizada de [a,b] [c,d] efetuada por:

x=

ba
ad bc
t+
dc
dc

Outra questo fundamental a ser considerada a definio do que uma aproximadora


de qualidade:
i). g(x) deve ter erro de truncamento E(x ) = f (x ) g( x ) mnimo, x[a,b];
Se E(x) fosse zero, g(x) seria a prpria funo f(x), o que no interessante na prtica,
pois o que se quer substituir f(x) por uma funo mais simples.
ii). O tempo de resposta nas chamadas de z = g(x) deve ser mnimo;
iii). A demanda de memria para armazenar a funo g(x) deve ser mnimo.
6.2.1 - Aproximao polinomial de y = f(x) usando sries:
A aproximao polinomial de y = f(x) com x[a,b] pode ser obtido atravs de:
1). Interpolao Polinomial:
Consiste em dividir o intervalo [a; b] em n partes iguais e obter o interpolador
polinomial f(x) Pn(x) (resolvendo um sistema, ou por Lagrange, ou Gregory-Newton, por
156

h n +1 M
.
n+1
Infelizmente o tempo de resposta e a demanda de memria requerida so grandes,
pois para se ter um erro de truncamento pequeno necessrio usar um grau n elevado em
polinmios.
Esta tcnica apesar de tentadoramente simples no satisfaz aos quesitos ii) e iii) de
boa aproximao, a no ser em intervalos curtos para aplicaes especficas.

exemplo), com erro de truncamento da ordem de E ( x) <

2). Aproximao por sries de Taylor:


Para y = f(x), continuamente diferencivel dentro de [a; b], segundo o teorema de
Taylor f(x) pode ser escrita exatamente, a partir de qualquer ponto (x>), como:
f ()( x ) f ()( x ) 2
f n ()( x ) n
f ( x) = f () +
+
+ L +
+ L
1!
2!
n!
onde [ a ; b ] .
Pelo teorema do resto da srie de Taylor:

f ()( x )
f n ()( x ) n f n +1 ()( x ) n +1
f ( x) = f () +
+ L +
+
1!
n ! 3 144
(4
n2
+ 144
)! 4
14444444
4244444444
3
Pn ( x )

f(x) = Pn(x) + Rn(x)


truncamento da srie).

ou

[; x]

Rn ( x )

f(x) Pn(x)

(Aproximao Polinomial, assumindo

f ( 0) x f ( 0) x 2
f n ( 0) x n
Obs.: Se = 0 f ( x) = f ( 0) +
+
+ L +
+ Rn(x)
1!
2!
n!
tem-se a srie de Maclaurin.

Exemplos: Expandir em srie de Taylor/Maclaurin as funes (a partir de x=0):


x2 x3
xn
(i). e = 1 + x +
+
+ L +
+ L
2 ! 3!
n!
x

(ii). cos( x ) = 1

x2 x4 x6
(-1) n x 2n
+

+ L +
+ L
2 ! 4 ! 6!
(2n)!

(iii). ln(1 + x) = 0 + 1.x

(iv). ln( 1 + x ) =
x

(v).

e y = x
2

x 2 x3 x 4
(-1) n +1 x n
+ +L+
+L
2
3
4
n

x
x2 x3
(-1) n+1 x n

+
+ L +
+ L
2.1 2.2 2.3
2n!

x3
x5
x7
(-1) n x 2n+1
+

+ L +
+ L
1! 3 2 ! 5 3! 7
n!(2n + 1)
157

Uma das grandes dificuldades existentes na aproximao de funes a determinao


do valor de [; x] que gere o resto Rn(x) correto. Por isso, avalia-se a majorante do resto
Rn(x), dada por Emax, estimando um limite mximo para o erro de truncamento:
Emax =

( x ) n +1 M
(n + 1)!

onde M = max f n +1 ( x)
x [ , x ]

Exemplos:
a). Delimitar o erro mximo cometido ao se aproximar f ( x ) = e x , x [-1;+1] por Maclaurin
com n = 5.
Soluo:
f 6 ( ) x 6
Pelo resto R 5 ( x) =
6!
Tomando M = max f 6 ( x)
x [ 1; +1]

R 5 ( x)

M = max e x = e +1 ento
x [ 1; +1]

M x6
e 1 16
R 5 ( x)
R5 ( x ) 0,003775
6!
6!

b). Determine o grau n para no se obter erro superior a = 10-8 ao se aproximar f(x) = ex,
x [-1;+1] por Taylor/Maclaurin.
Soluo:
M x n +1
R n ( x)
( n + 1)!

com M = max e x = e +1

e +1 1n +1
R n ( x)
10 8
( n + 1)!

x [ 1; +1]

( n + 1)! 2 ,7 .10 8

Para n 11 Rn ( x ) 0,567.10 8
Teorema: ''Se a srie de Taylor de y=f(x) for convergente com lim termon = 0 e alternada nos
n

sinais, ento, o resto Rn(x) aproximadamente o valor mximo do primeiro termo


abandonado''.

Ex.:
Determine o grau n para aproximar f(x) = ln(1+x), x [0;+1] por Maclaurin com = 10-5.
Pela srie de Maclaurin:

158

ln(1 + x) = x

x2 x3 x4
(-1)n +1 x n (-1)n + 2 x n +1
+ +L+
+
2
3
4
n
n2
+4
13
14
Rn ( x )

Pelo teorema anterior, do primeiro termo abandonado':


Rn( x)

(-1) n+2 x n+1


10 5 este 1 termo abandonado (sinais alternados) mximo, em x =
n +1

1.
(+1) n +1
10 5
n +1

n 100000

Note que nesta srie a convergncia muito lenta, pois no tem fatorial no
denominador, e isto implica em grande nmero de termos na srie.
Pelo teorema do resto da srie de Taylor, temos o erro de truncamento exato:
f n +1 ( )( x ) n +1
[; x]
( n + 1)!
com
( x ) n +1 M
Emax =
(n + 1)!
ou pelo seu valor mximo,
teremos
Rn ( x) =

onde

M = max f n +1 ( x)
x [ , x ]

, para =0,

f ( x ) = ln(1 + x ) , f ' ( x ) = 1 /(1 + x ) , f ' ' ( x ) = ( 1).(1 + x ) 2 , f ' ' ' ( x ) = ( + 1).1.2.(1 + x ) 3 ,
f ( 4 ) ( x ) = ( 1).1.2.3.(1 + x ) 4 ,..., f ( n ) ( x ) = ( 1) ( n +1) .1.2.3....( n 1).(1 + x ) n ,
f ( n +1) ( x ) = ( 1) ( n ) .1.2.3....( n ).(1 + x ) ( n +1) = ( 1) ( n ) .n!.(1 + x ) ( n +1)

M = max (1)( n ) .n!.(1 + x) ( n +1)

M mximo em x=0 => M = n!


( x 0) M
(1 0) n +1 n!
1
este erro mximo, em x = 1, e Emax =
Emax =
=
( n + 1)!
( n + 1).n!
n + 1 (mesmo
-5
resultado anterior, n100000, para que Erro(x)10 ).
x[ 0 ,1]

n +1

Considerao:
Deve-se notar (ver avaliao a seguir) que a aproximao por Taylor/Maclaurin no
distribui uniformemente os erros, o que exige grande nmero de termos na srie para
minimizar os erros mximos (localizados nos extremos). Assim, o tempo de resposta pode
ficar muito alto, mesmo com custo de armazenamento zero.
Por exemplo:
Erro( x) = e x P4 ( x)

(P4(x) obtido por Maclaurin: e x = 1 + x +

x
Erro(x)

-0,5
0,00024

-1,0
0,0071

0
0

0,5
0,00028

x 2 x3 x 4
+ +
)
2! 3! 4!

1,0
0,0099

159

Observe que os erros so crescentes a partir do ponto = 0 de expanso da srie e ento


no so uniformente distribudos no intervalo de trabalho.
6.2.b - Aproximao por Polinmios de Chebyschev
Definio: Um polinmio de Chebyschev de grau n toda expresso do tipo
Tn ( x ) = cos( n arcos(x))

Se arcos(x ) =
Tn ( x) = cos( n)

cos() = x ento
em x [-1;+1]

Assim,
T0 ( x ) = cos( 0) = 1
T1 ( x ) = cos() = x
T2 ( x ) = cos( 2 ) = 2cos 2 ( ) - 1 = 2x 2 1
T3 ( x ) = cos( 3) = 4x 3 - 3x
T4 ( x ) = cos( 4) = 8x 4 8 x 2 + 1
T5 ( x ) = cos( 5) = 16x 5 - 20x 3 + 5x

T6 ( x) = cos(6 ) = 32x 6 - 48x 4 + 18x 2 - 1


T7 ( x) = cos(7 ) = 64x 7 - 112x 5 + 56x 3 - 7x
T8 ( x) = cos(8 ) = 128x 8 - 256x 6 + 160x 4 - 32x 2 + 1
T9 ( x) = cos(9 ) = 256x 9 - 576x 7 + 432x 5 - 120x 3 + 9x
Tn +1 ( x ) = 2. x.Tn ( x ) Tn 1 ( x )

160

Figura 1 Polinmios de Chebyschev de grau n=0, 1, 2, 3, 4 e 5.


Potncias de x em funo dos polinmios de Chebyshev:
x 0 = T0
x 1 = T1
x 2 = ( T2 + T0 ) 2
x 3 = ( T3 + 3T1 ) 4
x 4 = ( T4 + 4 T2 + 3T0 ) 8

x 5 = (T5 + 5T3 + 10T1 ) 16


x 6 = (T6 + 6T4 + 15T2 + 10T0 ) 32
x 7 = (T7 + 7T5 + 21T3 + 35T1 ) 64
x 8 = (T8 + 8T6 + 28T4 + 56T2 + 35T0 ) 128
x 9 = (T9 + 9T7 + 36T5 + 84T3 + 126T1 ) 256
Os polinmios de Chebyschev possuem as seguintes propriedades:

Prop1: Tn(x) um polinmio de grau n e s existe um nico Tn(x) para cada n. O coeficiente
de xn em Tn(x) 2n-1.
Prop2: Tn (x) 1, x [-1;+1]
ento

max Tn ( x ) = 1 e todas as suas razes (ns) so

x [ 1; +1]

2k 1
; k = 1,2,...,n.
simples e obtidas via k = cos
2n
Normalizando os polinmios de Chebyshev de forma que o coeficiente de maior
grau seja igual 1, obtm-se
se os polinmios de Chebyshev mnicos:
161

~
Prop3: (Mimimax) ''Seja Tn ( x) = Tn ( x) / 2n 1 = 21 n.Tn ( x) , o monmio (polinmio cujo
1
~
coeficiente de maior grau unitrio) de Chebyschev de grau n. Ento, max Tn ( x) = n 1
x[ 1; +1]
2
e
~
~
~
~
~
max Tn ( x ) P n ( x ) , monmio Pn ( x ) . A igualdade s ocorre caso Pn ( x ) = Tn ( x ) ''.
x[ 1; +1]

Utilizando estas propriedades, vamos descrever a seguinte tcnica de aproximao


polinomial:
1). Obter um aproximador Pn(x) (por sries de Taylor/Maclaurin) para y = f(x) com erro ET1
desejado (n obtido pelo erro de truncamento0:
f ( x) = a0 x 0 + a1 x1 + a2 x 2 + L + a n x n + E T1

(1)

2). Substituir na eq. (1), todas as potncias xi pelas respectivas expresses em Ti e agrupa-los:
f ( x ) = a0 .T0 + a1.T1 + a2 . (T2 + T0 ) 2 + a 3 .(T3 + 3T1 )4/ + a 4 . (T4 + 4T2 + 3T0 ) 8 + ... + E T1
f (T ) = b0 + b1T1 + b2 T2 + L + b n Tn + E T1

onde o ltimo termo b n Tn <

(2)

b n .1
2 n1

3). Truncar a expresso (2) a partir de b k +1 Tk +1 com k<n (escolhido cuidadosamente) e


agrupar as novas parcelas do erro de truncamento em E T2
f (T ) = b0 + b1T1 + b2 T2 + L + b k Tk + E T2 + E T1

(3)

4). Substituir em (3) cada Ti pela sua respectiva expresso em xi, agrup-los gerando novos
coeficientes ci:
f ( x ) = c 0 + c 1 x + L + c k x k + E T2 + E T1

Ento,
f ( x ) Pk ( x )
termos).

f(x) aproximado por Pk(x), com k < n (aproximao com menos

Ex.: Aproximar f(x) = ex em x [1;+1] por Chebyschev de grau k = 3 partindo da expanso


em srie de Maclaurin de grau n = 4.
Soluo:
1). Aproximao de f(x) por Maclaurin (=0) com grau n = 4:
x 2 x 3 x 4 max | f 4 +1 ( x) | ( x 0) 4 +1
ex = 1 + x +
+ +
+
2! 3! 4!
( 4 + 1)!
e x 1 + x + 0,5 x 2 + 0,16667 x 3 + 0,041667 x 4 + E T1
162

com E T1 = e 5! = 0,0226523 (Pelo teorema do resto)


2). Substituio pelos polinmios de Chebyschev:

T +T
T + 3T1
T + 4T2 + 3T0
e x T0 + T1 + 0,5 2 0 + 0,16667 3
+ 0,041667 4
+ ET1
8
2
4

e x 1,265625.T0 + 1,125000.T1 + 0,270833.T2 + 0,0416667.T3 + 0,00520833.T4 + E T1


Sabendo que o valor mximo de qualquer polinmio de Chebyschev a unidade, podese verificar que o termo 0,00520833.T4 adicionado ao erro de truncamento existente ET1 no
altera a ordem da preciso desta aproximao. Assim,

ET 0,00520833.T4 + E T1 0,00520833 + 0,0226523 0,0278607


Ento, mesmo desprezando o termo de 4a ordem (k = 4) da srie expandida por
polinmios de Chebyschev, verifica-se que o erro de truncamento total ET da mesma ordem
de ET1.
3). Truncando a srie em k = 4:
e x 1,265625.T0 + 1,125000.T1 + 0,270833.T2 + 0,0416667.T3 + E T
4). Substituindo os polinmios de Chebyschev Ti:
e x 1,265625 . x 0 + 1,125000 .x1 + 0,270833 .( 2 x 2 1) + 0,0416667 .( 4 x 3 3 x ) + E T
e x 0,994792 + x1 + 0,541666 . x 2 + 0,166667 .x 3 + E T

p3 ( x) 0,994792 + x1 + 0,541666.x 2 + 0,166667.x 3 - Aproximador de Chebyschev.


Avaliao de erros:

Erro( x) = e P4 ( x)
x

x
Erro(x)

x 2 x3 x 4
(P4(x) obtido por Maclaurin: e = 1 + x +
+ +
)
2! 3! 4!

-1,0
0,0071

-0,5
0,00024

Erro( x) = e x p3 ( x)

0
0

0,5
0,00028

- p 3 ( x ) obtido

1,0
0,0099
por

Chebyschev:

0,994792 + x1 + 0,541666 .x 2 + 0,166667 .x 3

x
E(x)

-1
0,0019

-0,5
0,0028

0
0,0052

0,5
0,0023

1,0
0,0151

Note que os erros esto uniformemente distribudos e todos se mantm abaixo do erro
de truncamento total previsto inicialmente, ET = 0,0278607.
163

Ex: Aproxime por sries de MacLaurin e Chebyschev a funo f(x)=sin(x), em x [ 1;+1] de


modo que o erro mximo seja da ordem de 10-6.
1
3
5
7
9
x 2 i 1
x
x
x
x
x
i +1
f ( x ) = sen ( x ) =
+
+
+
....
+
(

1
)

( 2i 1)!

1!
i =1

3!

i=2

5!
i =3

7!

9!

i=4

i =5

Erro mximo para sries com termos de sinais alternados (i=1 termo abandonado). Se
truncamos a partir do i=5, 5. termo, que de grau =9, e mantemos at o 4 termo, i=4, de
grau (2*4-1)=7.
ErroMaxMac= (1) i +1

x 2i 1
= 10 6
( 2i 1)!

p/ i=5 (em x=1)

Rn( x) =

Ou pelo resto da srie geral de Maclaurin,


prximo termo geral no nulo, depois do grau n=7:
R7 ( x ) =

7+2

( 1) i +1

x 2 i 1
x9
=
= 2,755.10 6
( 2i 1)! 9!

f n+ 2 ( )( x ) n+ 2
( n + 2)!

, tomando o mximo do

( )( x ) 7 + 2
cos( )( x 0) 9
cos(0)(1 0) 9
f 9 ( )( x ) 9
Max
= Max
=
= 2.7557.10-6
(7 + 2)!
(9)!
(9)!
(9)!

Ento,
fMac ( x ) x

x3 x5 x7
+

3! 5! 7!

Observe que o erro de truncamento mximo da srie de grau 'n' pode ser obtido pelo mximo
Rn( x) =

f n+ 2 ( )( x ) n+ 2
( n + 2)!

do prximo termo geral no nulo da srie de Maclaurin, dado por


, ou no
caso, de sries com termos de sinais alternados (termo nulo no tem sinal), pelo mximo do

prximo termo abandonado, neste caso,

x n+2
(n + 2)! .

Substituindo xi pelos polinmios de Chebyschev em Ti, temos:


(T3 + 3T1 ) 4 (T5 + 5T3 + 10T1 ) 16 (T7 + 7T5 + 21T3 + 35T1 ) 64
+

3!
5!
7!
8111
601
23
1
fMac ( x )
.T1 .T3 +
.T5 .T7
9216
15360
46080
322560

fMac ( x ) T1

1
.T7 < 3,100.10-6
6
Podemos truncar o termo 322560
, que da mesma ordem de 2,755.10 ,
mas esses erros somados podem ultrapassar, na prtica, o limite da ordem de 10 6 , pois na
estimativa de erros mximos temos ET = 3,100.10-6 + 2,755.106 = 5,855.106
Logo,
8111
601
23
fCheb ( x )
.T1 .T3 +
.T5
9216
15360
46080
Substituindo Ti pelos polinmios de Chebyschev em xi, temos:
164

fCheb ( x )

8111 1 601
23
.x .(4x 3 - 3x) +
.(16x 5 - 20x 3 + 5x)
9216
15360
46080

fCheb ( x )

46079 1 959 3
23
.x .x +
.x 5
46080
5760
2880

Se quisermos manter o erro mximo na mesma ordem de Maclaurin (O(10-6)), precisamos


partir da srie de Maclaurin de grau maior, n=9, e depois reduzir para grau n=7. Neste caso
no termos o efeito telescpico de reduo de grau, mas teremos uma distribuio dos erros
ao longo do intervalo.
Avaliados pelo algoritmo:
clc
clear
%f(x)=sen(x);

com x entre [a=-1;b=+1]

N=7
a = -1
b = +1
h = (b - a)/N; % passo
t = a:h:b;
y = sin(t);
%met1 det pelo sistema, pol na base canonica
for i= 1:N+1
A(i,1) = 1;
for j=2:N+1
A(i,j) = A(i,j-1)*t(i);
end %for
A(i, N+2) = y(i);
end %for
neq = N + 1; % numero de equacoes
c = fgauss(neq, A);
'coeficientes de Pn(x):'
[c]
%plot func original
np = N*20;
hp = (b - a)/np;
tp = a:hp:b;
yp = sin(tp);
%plot pol da base canonica
ti = tp;
yi = resto(N, c, ti);
erroInter = abs(yp .- yi);
erroInterMax = max(erroInter)

165

%Serie de Maclaurin
'coeficientes da serie de MacLaurim:'
temp=[1 0 -1/factorial(3) 0 1/factorial(5) 0 -1/factorial(7)]
tM = tp;
for j=1:np+1
yM(j) = 0;
for i=N:-2:1
yM(j) += temp(i)*(tM(j))^i;
end %for
end %for
erroMac = abs(yp .- yM);
erroMacMax = max(erroMac)
#series de Chebyschev
'coeficientes da serie de Chebyschev:'
temp=[46079./46080 0 -959./5760. 0 +23./2880.]
tC = tM;
yC=(23.*tC.^5)./2880.-(959.*tC.^3)./5760.+(46079.*tC)./46080;
erroCheb = abs(yp .- yC);
erroChebMax = max(erroCheb)
plot(tp, erroInter, "k;erro(x)=|f(x) - Pn(x)|;", tM, erroMac, "m;erro(x)=|f(x) - Mac(x)|;", tC,
erroCheb, "g;erro(x)=|f(x) - Cheb(x)|;" );
%plot(t, y, '*',tp, yp, "b;f(x)=sen(x);", ti, yi,"k;Pn(x)basecanonica;",
% tM, yM, "m;sen(x) Maclaurin;", tC, yC, "g;sen(x)Cheb;");
grid();
Resultados:
N= 7
a = -1
b= 1
coeficientes de Pn(x)= [1.1102e-016 1.0000e+000 1.1475e-015 -1.6667e-001 -2.8499e-015
8.3311e-003 1.7717e-015 -1.9374e-004]
erroInterMax = 6.9981e-008
coeficientes da serie de MacLaurim=[1.00000
0.00000 -0.00020]
erroMacMax = 2.7308e-006

0.00000 -0.16667

0.00000

0.00833

Com N=5:
coeficientes da serie de Chebyschev=[0.99998 0.00000 -0.16649 0.00000 0.00799]
erroChebMax = 4.2449e-006 (ERRO EXATO), mas ultrapassou o limite da ordem 10-6.
Observe que o erro mximo estimado era ET = 3,100.10-6 + 2,755.106 = 5,855.106

166

Ex.: Aproximar f(x) = ln(x+1) em x [0;+1] por Chebyschev com erro mximo = 1,5.10-6.
Soluo:
1). Tomando a srie de Maclaurin de ln(x+1) tem-se:
x2 x3 x4
ln( x + 1) = x
+

+ ...
2
3
4
Verifica-se que a srie acima convergente e alternada, e assim pode-se tomar o erro de
truncamento como o primeiro termo abandonado na srie:
E T1

x n+1
= (-1)
1,510
. 6
n +1
n

Avaliando o n para que o erro mximo de truncamento no ultrapasse o valor de


estabelecido, tem-se:

n 666666
Como a srie de convergncia lenta necessrio um alto valor de n para satisfazer a
preciso requerida, o que computacionalmente invivel.
2). Reavaliando a aproximao de ln(x+1) por polinmios de Chebyschev, chega-se a
seguinte aproximao:

ln( x + 1) = 0,99990164 x 0,49787544 x 2 + L 0,01833851x 6


167

Ou seja, houve uma grande economia de memria de tempo de processamento com a


aproximao por polinmios de Chebyschev. S fica em aberto a questo de como obter um
aproximador de Chebyschev a partir de uma aproximao de Maclaurin de grau n = 666666.
Isto ser apresentado mais adiante.
Consideraes:
(i). Chebyschev distribui uniformemente os erros em [-1;+1], reduz o grau n da aproximao
em relao a Maclaurin em pelo menos 1 (um) grau, isto , k < n, grau de Chebyschev
sempre menor que o grau de Maclaurin. O k << n quanto mais lenta for a srie (efeito
telescpico)(vide exemplo ln(x+1) acima).
(ii). A operacionalizao do aproximador de Chebyschev demanda um trabalho de
manipulao algbrica muito elevado se o n for grande (vide exemplo ln(x+1)). Existem
frmulas de se obter diretamente os coeficientes bi do 3 passo para obteno do
aproximador de Chebyschev, conforme segue:

f ( x) = b i Ti onde
i=0

+1

1
f ( x)
=
b
dx
0

1 1 x 2

+1
2 f ( x) Ti ( x)

b i = 1 x 2 dx
1

O problema que estas integrandas no tm primitivas conhecidas, e devem ser


aproximadas por mtodos numricos (vide captulo Integraes Numricas).
Ex.: Aproxime f(x)=ln(x) em x[1;2] com erro mximo na ordem de 10-3.
clc
clear all
close all
format short
%transformao de x para te[-1;+1]
%f(x)=ln(x) x E [1;2]
Np = 3
%Erro mximo O(10^-3)
a = 1;
b = 2;
h = (b - a)/Np; # passo
x = a:h:b;
y = log(x);
#met1 det pelo sistema, pol na base canonica
Neq = Np + 1; # numero de equacoes
for i= 1:Neq
A(i,1) = 1;
for j=2:Neq
A(i,j) = A(i,j-1)*x(i);
end #for
A(i, Neq+1) = y(i);
end #for
cp = fgauss(Neq, A)
#plot func original
np = Np*20;
hp = (b - a)/np;
168

xp = a:hp:b;
ye = log(xp);
#plot pol da base canonica
Nx = length(xp);%Nx=np+1;
for k=1:Nx
yp(k) = fresto(Np, cp, xp(k));
end #for
erroInter = abs(yp .- ye);
erroInterMax = max(erroInter)
#Serie de Maclaurin
%x(t)=0.5*(b-a)*t+0.5*(b+a);
%f(x(t))=ln(0.5*t+1.5) com te[-1;+1]
Nm=4
%Erro mximo O(10^-3)
for k=1:Nx
%
tM(k)=(2*xp(k)-(b+a))/(b-a);%plota sobre os mesmos pontos xp(k)
%
yM(k) = 0;
for i=Nm:-1:1
cM(i+1)=(-1)^(i+1)*((b-a)/(b+a))^i/(i);
%
yM(k) += cM(i+1)*(tM(k)^i);
end #for
cM(1)=log(0.5*(b+a));
%
yM(k)+=cM(1);
end #for
cM
for k=1:Nx
tM(k)=(2*xp(k)-(b+a))/(b-a);%plota sobre os mesmos pontos xp(k)
yM(k) = fresto(Nm, cM, tM(k));
end #for
erroMac = abs(yM .- ye);
erroMacMax = max(erroMac)
%Sries de Chebyschev
%ErroMacMax = 0.00124111056523424
%0.40546510810816438*x^0+
0.33333333333333331*x^1
0.05555555555555555
*x^2+
0.01234567901234568*x^3
0.00308641975308642*x^4
%0.40546510810816438*T0+
0.33333333333333331*(T1)
0.05555555555555555 *(T2+T0)/2 + 0.01234567901234568*(T3+3*T1)/4 0.00308641975308642*(T4+4*T2+3*T0)/8
%0.376529922922979*T0+0.342592592592593*T10.0293209876543210*T2+0.00308641975308642*T3-0.000385802469135802*T4
%erroTn<=0.0003858T4,
que

menor
que
erroMacMax
=
0.00124111056523424, entao despreza-se
Nc=3
%0.376529922922979*T0+0.342592592592593*T10.0293209876543210*T2+0.00308641975308642*T3
%0.405850910577300 + 0.333333333333334 x - 0.058641975308642 x^2 +
0.0123456790123457 x^3
cC=[0.405850910577300
+0.333333333333334
-0.058641975308642
+0.0123456790123457]
%for k=1:Nx
%
tC(k)=(2*xp(k)-(b+a))/(b-a);%plota sobre os mesmos pontos xp(k)
%
yC(k) = 0;
169

%
for i=Nc:-1:1
%
yC(k) += cC(i+1)*(tC(k)^i);
%
end #for
%
yC(k)+=cC(1);
%end #for
for k=1:Nx
tC(k)=(2*xp(k)-(b+a))/(b-a);%plota sobre os mesmos pontos xp(k)
yC(k) = fresto(Nc, cC, tC(k));
end #for
erroCheb = abs(yC .- ye);
erroChebMax = max(erroCheb)
%plot(xp,erroInter,"k;erro(x)=|f(x)Pn(x)|;",xp,erroMac,"m;erro(x)=|f(x)Mac(x)|;",xp,erroCheb,"g;erro(x)=|f(x)-Cheb(x)|;");
plot(x,
y,
'*',xp,
ye,
"b;f(x)=ln(x);",
xp,
yp,"k;Pn(x)
basecanonica;", xp, yM, "m;ln(x) Maclaurin;", xp, yC, "g;ln(x)
Chebyschev;");
grid();
-------------------------------------------------------------------Np = 3
cp = -1.487442610353929
2.098039064806764 -0.717320824230757
0.106724369777922
erroInterMax = 8.34309834847877e-004
Nm = 4
cM = 0.40546510810816438
0.33333333333333331
-0.05555555555555555
0.01234567901234568
erroMacMax = 0.00114412045384343
Nc =
cC =

3
0.4058509105773000
0.3333333333333340
0.0123456790123457
erroChebMax = 0.00152992292297832

-0.00308641975308642

-0.0586419753086420

170

171

I.V.3 - Aproximao Racional de y = f(x):


Apesar de todas as vantagens da aproximao polinomial (Chebychev principalmente)
de y = f(x) com expresso conhecida, tambm existem desvantagens que so inerentes aos
prprios polinmios:
1) Polinmios oscilam com pontos de ancoragem com certos desvios (tipo dados
experimentais);
2) No aproximam eficientemente funes assintticas;
Ex.: f ( x) =

1
( x + 1)
2

Def 1 - Uma funo racional de grau total M toda expresso do tipo


a 0 + a1x + L + a n x n
R M ( x) =
, onde M = n + m.
b 0 + b1x + L + b m x m
Ex.: f ( x ) =

1
x

R 1 ( x) =

p o ( x)
q 1 ( x)

I.V.4 - Aproximao Racional de Pad:

a 0 + a1x + L + a n x n
R nm ( x) =
= R M ( x) , onde M = n + m
b 0 + b1 x + L + b m x m
Esta tcnica consiste em se aproximar y = f(x) conhecida, x [-1;+1] atravs de uma
funo racional

R nm ( x) =

a 0 + a1x + L + a n x n
f ( x)
1 + b1 x + L + b m x m
(com b0=1 para obtermos uma nica soluo)
172

De modo que cada derivada de f(x) deve ser equivalente a derivada da aproximadora
racional Rnm(x):
f (0) = Rnm (0)

( 0)
f (0) = Rnm

(0)
f (0) = Rnm

M
f M (0) = Rnm
( 0)

(*)

uma extenso da srie de Maclaurin para funes racionais.


Para tanto, procede-se como segue:
1). Obter uma aproximadora de Maclaurin de grau total M=n+m:
fM ( x) c0 + c1 x + c2 x 2 + L + c M x M + E T
com ET estabelecido previamente.
2). Tomar

p n ( x) = a 0 + a 1 x + L + a n x n e
q m ( x) = 1 + b 1 x + L + b m x m

com

os coeficientes ai e bj a ser

determinados:
e fM ( x ) R nm ( x )

a0 + a1 x + L + a n x n
(b0=1)
1 + b1 x + L + b m x m
(1 + b1 x + b2 x 2 + L + b m x m ).(c0 + c1 x + c2 x 2 + L + c M x M ) = a0 + a1 x + L + a n x n

c0 + c1 x + c2 x 2 + L + c M x M =

(**)

3). Aplicar as condies (**) e isolar os coeficientes ai, de i=0 at i=n, em funo dos valores
de bj e ck , para termos de graus i=0 at n
(1 + b1 x + b2 x 2 + L + b m x m ).(c0 + c1 x + c2 x 2 + L + c M x M ) = a0 + a1 x + L + a n x n
a 0 = c0
a = b c + c
1 0
1
1
a2 = b2 c0 + b1c1 + c2

a3 = b3c0 + b2 c1 + b1c2 + c3

a4 = b4 c0 + b3c1 + b2 c2 + b1c3 + c4
a5 = b5 c0 + b4 c1 + b3c2 + b2 c3 + b1c4 + c5

a = b c + b c
n n m
m 1 n m +1 + L + c n
n

(**)

(***)

Depois isolam-se os coeficientes bj, com variando j=1 at j=m, em funo dos valores de ck,
e fazendo todos os termos de graus n+1 at n+m iguais a zero, gerando sistema (****),
173

cn m+1 cn m + 2 L cn b m
c n +1
c

n m+ 2 cn m +3 L cn +1 b m-1 = - c n + 2

M
M
M

c M
c M-m cM m+1 L cM 1 b1

(****)

que um sistema linear mxm, cuja soluo fornece os bj, com j=1 at j=m, que substitdos em
(***) fornece os ai.
Obs.: Dependendo de n e m pode ocorrer que em (***) ou (****) apaream ai e bj com i<0 ou
j<0. Nestes casos, fazer sempre ai = 0 e bj = 0.
Ex1.: Obtenha a aproximao racional R32(x) para f(x) = arctg(x), x [-1;+1] e avalie o erro
exato no final.
Soluo:
Temos n = 3 ; m =2 e M = 5 com f(x) = arctg(x) , tomando a srie de Maclaurin

f1 ( x)= x

x 3 x5 x 7
x 2n -1
+ + L + (-1)n +1
3
5 14
7 4442444
2n4
-1
3

n = 1,2,..., N.

ET

Veja que o erro de truncamento mximo dado por ET =

x7
7

, pois uma srie


x[ 1; +1]

alternada nos sinais, o que resulta em ET=1/7=0,14286..., que precisa ser avaliado de forma
exata.

1
1
f ( x) = arctg ( x) f1 ( x) = 0 + x + 0 x 2 x 3 + 0 x 4 + x 5
3
5

c0 = 0
c1 = 1

c 3 = 1 / 3
c4 = 0

c2 = 0

c5 = 1 / 5

E queremos

p 3 ( x ) = a 0 + a 1 x + a 2 x 2 + a 3 x 3 , para n = 3, m = 2 e M=5
q 2 ( x) = 1 + b 1 x + b 2 x 2

c0 + c1 x + c2 x 2 + c3 x 3 + c 4 x 4 + c5 x 5 =

a0 + a1 x + a 2 x 2 + a 3 x 3
1 + b1 x + b 2 x 2

(b0=1)

(c0 + c1 x + c2 x 2 + c 3 x 3 + c 4 x 4 + c 5 x 5 )(1 + b1 x + b 2 x 2 ) = (a0 + a1 x + a 2 x 2 + a 3 x 3 )

(c0 + c1 x + c2 x 2 + c 3 x 3 + c 4 x 4 + c 5 x 5 )(1) +
(c0 + c1 x + c2 x 2 + c 3 x 3 + c 4 x 4 + c 5 x 5 )(b1 x) +
(c0 + c1 x + c2 x 2 + c 3 x 3 + c 4 x 4 + c 5 x 5 )(b 2 x 2 ) = (a0 + a1 x + a 2 x 2 + a 3 x 3 )
174

(c0 + c1 x + c2 x 2 + c 3 x 3 + c 4 x 4 + c 5 x 5 ) +
(c0b1 x + c1b1 xx + c2b1 xx 2 + c 3b1 xx3 + c 4b1 xx 4 + c 5b1 xx 5 ) +
(c0 b 2 x 2 + c1b 2 x 2 x + c2 b 2 x 2 x 2 + c 3 b 2 x 2 x 3 + c 4 b 2 x 2 x 4 + c 5 b 2 x 2 x 5 ) = (a0 + a1 x + a 2 x 2 + a 3 x 3 )
Agrupando termos:
(c0 ) +

(c0 ) x 0 +

(c0b1 x + c1 x) +

(c0b1 + c1 ) x1 +

(c0 b 2 x 2 + c1b1 xx + c2 x 2 ) +

(c0 b 2 + c1b1 + c2 ) x 2 +

(c2 b1 xx 2 + c 3 x 3 + c1b 2 x 2 x +) +

(c2b1 + c1b 2 + c 3 ) x 3 +

(c2 b 2 x 2 x 2 + c 3b1 xx 3 + c 4 x 4 ) +

(c2 b 2 + c 3b1 + c 4 ) x 4 +

(c3 b 2 x 2 x 3 + c 4b1 xx 4 + c 5 x 5 ) +

(c3 b 2 + c 4b1 + c 5 ) x 5 +

(c 4 b 2 x 2 x 4 + c 5b1 xx 5 ) +

(c 4 b 2 + c 5b1 ) x 6 +

(c 5 b 2 x 2 x 5 ) = (a0 + a1 x + a 2 x 2 + a 3 x 3 )

(c 5 b 2 ) x 7 = (a0 + a1 x + a 2 x 2 + a 3 x 3 )

(c0 ) x 0 +

(c2 b 2 + c3b1 + c 4 ) x 4 +

(c0b1 + c1 ) x +
1

(c3 b 2 + c 4 b1 + c 5 ) x 5 +

(c0 b 2 + c1b1 + c2 ) x +
2

(c2b1 + c1b 2 + c 3 ) x = (a0 + a1 x + a 2 x + a 3 x )


3

(c 4 b 2 + c 5b1 ) x 6 +
(c 5 b 2 )x 7 = 0 x 4 + 0 x 5 + 0 x 6 + 0 x 7

a0 = c0
a1 = c0b1 + c1
a 2 = c0 b 2 + c1b1 + c2
a 3 = c2b1 + c1b 2 + c 3
c2 b 2 + c3b1 = -c4

c3b 2 + c 4b1 = -c5


e despreza termos de ordem superior :
(c 4 b 2 + c5b1 ) x 6 + (c5 b 2 )x 7 = 0 x 6 + 0 x 7
Ou resolvendo diretamente (****), obtm-se bj:
c 2
c
3

c3 b 2
c
= - 4

c 4 b1
c 5

0 1 / 3 b 2
0
=-

1 / 3

0 b1

1/5

b 1 = 0

b2 = 3 / 5

E depois aplicando bj em (***), obtm-se ai:

175

a 0 = c0
a = b c + c
1 1 0 1

a 2 = b2 c0 + b1c1 + c2
a3 = b3 c0 + b2 c1 + b1c2 + c3

2
para m = 2 b3 = 0 , pois q 2 ( x ) = 1 + b 1 x + b 2 x

a 0 = 0
a = (0). 0 + 1 = 1
1

a 2 = (3/5). 0 + 0. 1 + 0 = 0
a3 = 0.0 + (3/5). 1 + 0. 0 - 1/3 = 4/15
Da,

f ( x) = arctg ( x) R32 ( x) =

0 + 1.x + 0.x 2 + 4 / 15 .x 3 15 x + 4 x 3
=
1 + 0. x + 3 / 5. x 2
15 + 9 x 2

Algoritmo:
%Comparativo entre interpolao polinomial e series de taylor
%1-Interpolao polinomial para grau n >= 2
a = -1;
b = 1;
n = 5;
h = (b-a)/n;
x = a : h : b;
y = atan(x);
tsis = n+1;
for i = 1 : tsis
A(i,1) = 1;
for j = 2 : tsis
A(i,j) = A(i,j-1)*x(i);
endfor
A(i, tsis+1) = y(i);
endfor
A
C = fgauss(tsis,A) % coeficientes do polinomio interpolador
%2-aproximao por serie de maclaurin
%f1(x) = 0 + x + 0*x^2/2 - x^3/3 + 0*x^4/4! + x^5/5 ErroTruncamento1 = 1/7
%4-aproximao racional de pad
%f1(x) = 0 + x + 0*x^2/2 - x^3/3 + 0*x^4/4! + x^5/5 ErroTruncamento1 = (na real ... visto
no grafico)
%R32 = (a0 + a1x + a2x^2 + a3x^3)/(1 + b1x + b2*x^2)
npade = 3;
mpade = 2;
M = npade + mpade;
176

%determinar coeficientes C
%C COMEA DO 1
c = [0 1 0 -1/3 0 1/5]
%calcular os Bs
A=[
[c(3) c(4) -c(5)]; %o c(0) foi trocado por c(1) e etc pq o octave comea do 1
[c(4) c(5) -c(6)];
];

b = fgauss(mpade, A); %B comea de 1, igual a formula do pade


b
aux=b(1);
b(1)=b(2);
b(2)=aux;
b(3) = 0;
%calcular os As
a(1) = c(1); %o a(0) foi trocado por a(1) e etc =D
a(2) = b(1)*c(1) + c(2);
a(3) = b(2)*c(1) + b(1)*c(2) + c(3);
a(4) = b(3)*c(1) + b(2)*c(2) + b(1)*c(3) + c(4);
b
a
%R32 = (a0 + a1x + a2x^2 + a3x^3)/(1 + b1x + b2*x^2)

np = 20*n;
ap = -1;
bp = 1;
hp = (bp-ap)/np;
xp = ap:hp:bp;
yep = atan(xp);
for i = 1 : np+1
yip(i) = resto(n, C, xp(i));
endfor
yst = 0 .+ xp .+ 0 .*xp.^2 ./2 .- xp .^3 ./3 .+ 0 .*xp .^4 ./24 .+ xp .^5 ./120;
ypade=(a(0+1) + a(1+1) .*xp + a(2+1) .*xp.^2 + a(3+1) .*xp.^3) ./(1 + b(1) .*xp + b(2)
.*xp.^2);
x=[x 1.2];y=[y 1.2];
xp
Et=abs(yep-yst)
Ep=abs(yep-ypade)
%plot(x,y,'.',xp,yep,"r;f(x) = arctg(x);", xp,yip,"b;Pn(x) interpolador n=5;", xp, yst, "g; Srie
Maclaurim n=5;", xp, ypade, "c; Racional Pade R32;")
plot(xp,Et,"r;Erro=|arctg(x)-f1(x)|, f1(x)=Srie Maclaurim n=5;", xp, Ep, "m; Erro=|arctg(x)R32(x)|, R32(x)= Racional Pade;")
grid
177

Avaliao de erro exato:

Et ( x) = arctg( x) f1 ( x) (f1(x) obtido por Maclaurin com n=5)


Ep( x) = arctg( x) R32 ( x) (R32(x) obtido por Pad n=3 e m=2)
x
Et(x)
Ep(x)

-1
0,1104
0.006268

-0,5
0.00505
0.0001205

0
0
0,0

0,5
0.00505
0.0001205

1,0
0.1104
0.0062685

Note que os erros no esto uniformemente distribudos, mantendo as caractersticas da


srie de Maclaurin que gerou a aproximao de Pad. A aproximao racional de Pad no
178

distribui o erro, mas o reduz muito em relao srie geradora.


Com a aproximao de Maclaurin com n=5 termos, temos um erro de truncamento mximo
estimado de ETmax =1/7=0,14286, que avaliado de forma exata chega a 0,1104, conforme
tabela e grfico acima, enquanto o erro mximo exato obtido com a aproximao de Pad R32
no mximo 0,0062685.
Por Maclaurin, seriam necessrios 165 termos na srie para se atingir um erro de truncamento
da ordem de 0,006, enquanto na aproximao de Pad foi usado apenas M=5 no total.
Exemplo: f(x)=exp(x) com n=5 termos na srie de Maclaurin, Chebyshev n=4 e Pad R32.

Obtidos com o seguinte algoritmo:


clear
%Comparativo entre aproximaes polinomial, sries de taylor, Chebyschev e Pad
%1-Interpolao polinomial para grau n >= 2
a = -1;
b = +1;
n = 5; %ETmax = M.h^(n+1)/(n+1)=exp(1)*(2/n)^(n+1)/(n+1) => ETmax=0.0018557 para
n=5
h = (b-a)/n;
x = a : h : b;
y = exp(x);
tsis = n+1;
for i = 1 : tsis
A(i,1) = 1;
for j = 2 : tsis
A(i,j) = A(i,j-1)*x(i);
endfor
A(i, tsis+1) = y(i);
endfor
A
179

C = fgauss(tsis,A) % coeficientes do polinomio interpolador


%2-aproximao por serie de maclaurin
%ETmax
=
M.(x-0)^(n+1)/(n+1)!
=>
ETmax=exp(1)*(1-0)^(n+1)/factorial(n+1)
ETmax=0.0037754 para n=5
%f1(x) = 1 + x + x^2/2! + x^3/3! + x^4/4! + x^5/5!
%3-aproximao por serie com polinomios de Chebyschev
%f1(x) = 1 + x + x^2/2! + x^3/3! + x^4/4! + x^5/5!
%f1(t) = t0 + t1 + 1/2!*(t2+t0)/2 + 1/3! * (t3 + 3t1)/4 + 1/4! * (t4 +4t2 +3t0)/8 + 1/5! * (t5 +
5t3 +10t1)/16
%f1(t) = (81*t0)/64+(217*t1)/192+(13*t2)/48+(17*t3)/384+t4/192+t5/1920
%f2(t) = (81*t0)/64+(217*t1)/192+(13 t2)/48+(17 t3)/384+t4/192
%f2(x) = (81)/64+(217x)/192+(13*(2x^2-1))/48+(17*(4x^3 - 3x))/384+(8x^4 -8x^2 +1)/192
%f2(x) = 1+(383 x)/384+x^2/2+(17 x^3)/96+x^4/24
%ET(x) ~=0.0037754 para n=5

%4-aproximao racional de pad


%f1(x) = 1 + x + x^2/2! + x^3/3! + x^4/4! + x^5/5! ErroTruncamento1 = 3.7*10-3 (na real
1.6*10-3 visto no grafico)
%R32 = (a0 + a1x + a2x^2 + a3x^3)/(1 + b1x + b2*x^2)
%ET(x) ~=0.0037754 para n=5
npade = 3;
mpade = 2;
M = npade + mpade;
%determinar coeficientes C
%C COMEA DO 1
c = [1 1 1/2 1/6 1/24 1/120]
%calcular os Bs
A=[
[c(3) c(4) -c(5)]; %o c(0) foi trocado por c(1) e etc pq o octave comea do 1
[c(4) c(5) -c(6)];
];
b= fgauss(mpade, A); %b comea em 1 mesmo, igual a formula do pade, pois bo=1 sempre.
aux=b(1);
b(1)=b(2);
b(2)=aux;
b(3) = 0; %para m=2
%calcular os As
a(1) = c(1); %o a(0) foi trocado por a(1) e etc =D
a(2) = b(1)*c(1) + c(2);
a(3) = b(2)*c(1) + b(1)*c(2) + c(3);
a(4) = b(3)*c(1) + b(2)*c(2) + b(1)*c(3) + c(4);
a
180

b
%R32 = (a0 + a1x + a2x^2 + a3x^3)/(1 + b1x + b2*x^2)
np = 1*n;
ap = -1;
bp = 1;
hp = (bp-ap)/np;
xp = ap:hp:bp;
yep = exp(xp);
for i = 1 : np+1
yip(i) = resto(n, C, xp(i));
endfor
yst = 1 .+ xp .+ xp.^2 ./ factorial(2) .+ xp.^3 ./ factorial(3) .+ xp.^4 ./ factorial(4) .+ xp.^5 ./
factorial(5)
ysc = 1 .+(383 .*xp)./384 +xp.^2 ./2 .+(17 .*xp.^3)./96 .+xp.^4 ./24;
ypade = (a(0+1) + a(1+1) .*xp + a(2+1) .*xp.^2 + a(3+1) .*xp.^3) ./(1 + b(1) .*xp + b(2)
.*xp.^2)
Et=abs(yep-yst)
Ec=abs(yep-ysc)
Ep=abs(yep-ypade)
x=[x 1.5]; y=[y 1.5]; %redimensionando os limites do grafico
plot(x,y,".",xp,yep,"r;F(x)=exp(x);", xp,yip,"b;Pn(x) interpolador n=5;", xp, yst, "k;Serie
Maclaurin n=5;", xp, ysc, "g; Serie Chebyschev n=4;", xp, ypade, "m; Pade R32;")

f1(x) = 1 + x + x^2/2! + x^3/3! + x^4/4! + x^5/5! -> Maclaurin com n=5.


f2(x) = 1+(383 x)/384+x^2/2+(17 x^3)/96+x^4/24 -> Chebyschev com n=4
f3(x) = (1 +0.6x+0.15x2+0.16666667x3)/(1-0.4x+0.05x2) -> Pad R32(x)
Avaliao de erro exato:

Et ( x) = arctg( x) f1 ( x) (f1(x) obtido por Maclaurin com n=5)


Ec( x) = arctg( x) f 2 ( x)

(f2(x) obtido por Chebyschev com n=4)

Ep( x) = arctg( x) R32 ( x) (R32(x) obtido por Pad n=3 e m=2)


x
Et(x)
Ec(x)
Ep(x)

-1

-0.6

-0,2

0.2

0,6

1,0

1.2128.10-3

5.9636.10-5

8.6411.10-8

9.1494.10-8

7.0800.10-5

1.6152.10-3

6.9194.10-4

9.9136.10-5

4.4008.10-4

4.4026.10-4

3.1300.10-5

2.1360.10-3

-5

-5

-5

-5

-5

3.3311.10-5

6.3349.10

4.0049.10

7.5450.10

1.0510.10

1.0831.10

181

Para um exemplo com p 4 ( x) = a0 + a1 x + a 2 x 2 + a 3 x 3 + a 4 x 4 , para n = 4, m = 3 e M=7


q3 ( x ) = 1 + b1 x + b2 x 2 + b3 x 3

a0 + a1 x + a2 x 2 + a 3 x 3 + a 4 x 4
c0 + c1 x + c2 x + c3 x + c 4 x + c5 x + c 6 x + c7 x =
1 + b1 x + b2 x 2 + b3 x 3
2

(c0 + c1 x + c2 x 2 + c 3 x 3 + c 4 x 4 + c 5 x 5 + c 6 x 6 + c 7 x 7 )(1 + b1 x + b2 x 2 + b3 x 3 ) = a0 + a1 x + a 2 x 2 + a 3 x 3 + a 4 x 4

(c0 + c1 x + c2 x 2 + c 3 x 3 + c 4 x 4 + c5 x 5 + c 6 x 6 + c 7 x 7 )(1) +
(c0 + c1 x + c2 x 2 + c 3 x 3 + c 4 x 4 + c5 x 5 + c 6 x 6 + c 7 x 7 )(b1 x) +
(c0 + c1 x + c2 x 2 + c 3 x 3 + c 4 x 4 + c5 x 5 + c 6 x 6 + c 7 x 7 )(b2 x 2 ) +
(c0 + c1 x + c2 x 2 + c 3 x 3 + c 4 x 4 + c5 x 5 + c 6 x 6 + c 7 x 7 )(b3 x 3 ) = a0 + a1 x + a2 x 2 + a 3 x 3 + a 4 x 4
(c0 + c1 x + c2 x 2 + c 3 x 3 + c 4 x 4 + c 5 x 5 + c 6 x 6 + c 7 x 7 ) +
(c0b1 x + c1b1 xx + c2 b1 xx 2 + c 3b1 xx 3 + c 4b1 xx 4 + c 5b1 xx 5 + c 6 b1 xx 6 + c 7 b1 xx 7 ) +
(c0b2 x 2 + c1b2 x 2 x + c2 b2 x 2 x 2 + c 3b2 x 2 x 3 + c 4b2 x 2 x 4 + c 5b2 x 2 x 5 + c 6 b2 x 2 x 6 + c 7 b2 x 2 x 7 ) +
(c0b3 x 3 + c1b3 x 3 x + c2 b3 x 3 x 2 + c 3b3 x 3 x 3 + c 4 b3 x 3 x 4 + c 5b3 x 3 x 5 + c 6b3 x 3 x 6 + c 7 b3 x 3 x 7 ) =
= a0 + a1 x + a2 x 2 + a 3 x 3 + a 4 x 4

182

(c0 ) +
(c1 + c0b1 ) x +
(c2 + c1b1 + c0b2 ) x 2 +
(c3 + c2b1 + c1b2 + c0b3 ) x 3 +
(c 4 + c 3b1 + c2b2 + c1b3 ) x 4 +
(c5 + c 4b1 + c 3b2 + c2b3 ) x 5 +
(c6 + c 5b1 + c 4b2 + c 3b3 ) x 6 +
(c7 + c 6b1 + c 5b2 + c 4b3 ) x 7 +
(c 7 b1 + c 6b2 + c 5b3 ) x 8 +
(c 7 b2 + c 6b3 ) x 9 +
(c 7 b3 ) x10 = a0 + a1 x + a2 x 2 + a 3 x 3 + a 4 x 4 + 0x 5 + 0x 6 + 0x 7 + 0x 8 + 0x 9 + 0x10
Resultado em:
(c0 ) = a0

(c1 + c0b1 ) = a1
(c2 + c1b1 + c0b2 ) = a2
(c3 + c2b1 + c1b2 + c0b3 ) = a 3
(c 4 + c 3b1 + c2b2 + c1b3 ) = a 4
(c5 + c 4b1 + c3b2 + c2 b3 ) = 0
(c6 + c 5b1 + c 4 b2 + c3b3 ) = 0
(c7 + c 6 b1 + c 5b2 + c 4 b3 ) = 0
(c 7 b1 + c 6b2 + c 5b3 ) x 8 despreza se
(c 7 b2 + c 6b3 ) x 9 despreza se
(c 7 b3 ) x10 despreza se

Exerccios:
Obtenha as seguintes aproximaes de Pad:
(i). R54(x) para f(x) = arctg(x).
(ii). R33(x) para f(x) = x ln(1+x)
(iii). R32(x) para f(x) = e-x
Consideraes:
1). No se tem uma forma prvia de se determinar os valores ideais de n e m para Rnm(x).
Trata-se de um processo de tentativa e erro, os autores do mtodo sugerem que se tome n =
m ou n = m +1 ou n = m-1.
Ex.: Para f(x) = ex tem-se que:
183

12 + 6x + x 2
e R 22 ( x) =
12 6x + x 2
x

e x R 40 ( x) = 1 + x +
e x R 04 ( x ) =

x2 x3 x4
+
+
2
6 24
1
2

x
x3 x4
1 x +

+
2
6 24

Emax = 0,0039961

Emax = 0,0099485
Emax = 0,051615

Dentre as trs aproximaes apresentadas, a forma R22 a que apresenta menor erro de
truncamento.
2). Para se obter uma aproximadora racional com distribuio uniforme de erros necessrio
compensar os erros na srie geradora. Desta forma se for utilizada previamente a srie
aproximadora por polinmios de Chebyschev no passo (1), se obtm uma distribuio de
erros uniforme na aproximao racional.
3). Pelos exemplos anteriores, nota-se que Pad no distribuiu uniformemente os erros em
[-1;+1], que um defeito previsvel, pois a distribuio de erros uma extenso de
Chebyschev. Para sanar este problema, mescla-se Pad com Chebyschev. Desta forma
utilizada primeiramente a srie aproximadora por polinmios de Chebyschev, distribuindo os
erros e reduzindo o grau total se for o caso, para depois se obter a aproximadora racional de
Pad sobre a srie de Chebyschev em funo de x.
Assim, Obtm-se inicialmente o polinmio aproximador de Chebyshev de grau M (menor que
o M usado na srie de Mclaurin) para representar f(x) em termos de Ti(x), analogamento
srie de Maclaurin :
M

f ( x) t ( x) = ck Tk ( x) = c0 + c1T1 + c2 T2 + L + c M TM
k =0

E aproximamos o polinmio aproximador de Chebyshev por uma forma Racional:


M

b T ( x ) r ( x) =
k =0

a 0 + a1T1 + L + a n Tn
1 + b1T1 L + b m Tm , com n+m=M (b =1).
0

Fazendo
f ( x ) t ( x) r ( x ) t ( x ) r ( x ) = 0

a0 + a1T1 + L + a nTn
=0
1 + b1T1 L + b m Tm
(c0 + c1T1 + c2 T2 + L + c M TM )(. 1 + b1T1 L + b m Tm ) (a0 + a1T1 + L + a nTn ) = 0
1 + b1T1 L + b m Tm
Assim,
(c0 + c1T1 + c2T2 + L + c M TM )(. 1 + b1T1 L + b m Tm ) (a0 + a1T1 + L + a nTn ) = 0
c0 + c1T1 + c2 T2 + L + c M TM

184

(c0 + c1T1 + c2 T2 + L + c M TM ).1 +


(c0 + c1T1 + c2 T2 + L + c M TM ).b1T1 +
M

(c0 + c1T1 + c2 T2 + L + c M TM ).bm Tm = (a0 + a1T1 + L + a nTn )


(c0 + c1T1 + c2 T2 + L + c M TM ) +
(c0 .b1T1 + c1.b1T1T1 + c2 .b1T1T2 + L + c M .b1T1TM ) +

(c0 .bm Tm + c1.bm TmT1 + c2 .bm Tm T2 + L + c M .bm Tm TM ) = (a0 + a1T1 + L + a nTn )

Os produtos entre Ti e Tj podem ser simplificados considerando que Ti ( x) = cos(i ) :


1
1
Ti ( x).Tj ( x) = cos(i ). cos( j ) = (cos(i + j ) + cos(i j ) ) = (Ti + j ( x) + T|i- j| ( x) )
2
2
(c0 .T0 + c1T1 + c2 T2 + L + c M TM ) +

(c0 .b1T1 + c1 .b1.(T2 + T0 ) / 2 + c2 .b1 (T3 + T1 )/2 + L + c M .b1 (TM+1 + TM-1 )) +

(c0 .bm Tm + c1.bm (Tm+1 + Tm1 ) / 2 + c2 .bm (Tm+ 2 + Tm-2 )/2 + L + c M .bm (TM + m + TM-m ) / 2) = (a0 .T0 + a1T1 + L + a nT

Agrupando termos:

(c0 + c1.b1 / 2 + ...


).T0 +
(c1 + c0 .b1 + c2 .b1 / 2 + ...).T1 +
(c2 + c1.b1 / 2 + ...
).T2 +
M

(c M + c0 .bm + ...

(....

).TM +

+ c M .bm / 2).TM + m = (a0 .T0 + a1T1 + L + a n Tn )

Exemplo: Aproximar f(x)=exp(x) por


1. Srie de Maclaurin de f(x)=exp(x)
Com ETmax = M.(x-0)^(n+1)/(n+1)! => ETmax=exp(1)*(1-0)^(n+1)/factorial(n+1)
ETmax=0.0037754 para n=5
%f1(x) = 1 + x + x^2/2! + x^3/3! + x^4/4! + x^5/5!
2. Srie com polinomios de Chebyschev de f(x)=exp(x)
%f1(x) = 1 + x + x^2/2! + x^3/3! + x^4/4! + x^5/5!
%f1(T) = t0 + t1 + 1/2!*(t2+t0)/2 + 1/3! * (t3 + 3t1)/4 + 1/4! * (t4 +4t2 +3t0)/8 + 1/5! * (t5 +
5t3 +10t1)/16
%f1(T) = (81*t0)/64+(217*t1)/192+(13*t2)/48+(17*t3)/384+t4/192+t5/1920
Com n=4, mantemos a mesma ordemd e grandeza do erro: 0.0037754+1/1920=0.0042962
%f2(T) = (81*T0)/64+(217*T1)/192+(13 T2)/48+(17 T3)/384+T4/192
3. A partir do polinmio de Chebyshev acima, com M=4, aproxime uma forma Racional,
R22(x):
185

f ( x) f 2 ( x) = ck Tk ( x) = c0 + c1T1 + c2 T2 + L + c M TM
k =0

onde c0=81/64, c1=217/192, c2=13/48, c3=17/384 e c4=1/192.


Podemos aproximar o polinmio de Chebyshev acima por uma forma Racional R22(x), n=2 e
m=2:
a +a T +a T
R22 ( x) = 0 1 1 2 2
1 + b1T1 + b 2 T2 , com n+m=M (b =1).
0

Igualando

f ( x) f 2 ( x) = c0 + c1T1 + c2 T2 + c 3T3 + c 4 T4
a + a T + a 2T2
f ( x) R22 ( x) = 0 1 1
1 + b1T1 + b 2 T2

Aproximando Chebyschev por Pad:

f 2 ( x) R22 ( x) = 0 c0 + c1T1 + c2 T2 + c 3T3 + c 4 T4

a0 + a1T1 + a 2T2
=0
1 + b1T1 + b 2 T2

Multiplicando ambos lados por ( 1 + b1T1 + b 2 T2 ):

(c0 + c1T1 + c2 T2 + c 3T3 + c 4 T4 )(. 1 + b1T1 + b 2 T2 ) (a0 + a1T1 + a 2T2 ) = 0


(1 + b1T1 + b 2 T2 )
(c0 + c1T1 + c2T2 + c3T3 + c 4 T4 )(. 1 + b1T1 + b 2 T2 ) (a0 + a1T1 + a 2T2 ) = 0
(c0 + c1T1 + c2 T2 + c 3T3 + c 4 T4 )(. 1) +
(c0 + c1T1 + c2 T2 + c 3T3 + c 4 T4 )(. b1T1 ) +
(c0 + c1T1 + c2 T2 + c 3T3 + c 4 T4 )(. b 2 T2 ) = (a0 + a1T1 + a 2T2 )
(c0 + c1T1 + c2 T2 + c 3T3 + c 4 T4 )(. 1) +
(c0 + c1T1 + c2 T2 + c 3T3 + c 4 T4 )(. b1T1 ) +
(c0 + c1T1 + c2 T2 + c 3T3 + c 4 T4 )(. b 2 T2 ) = (a0 + a1T1 + a 2T2 )

(c0 + c1T1 + c2 T2 + c 3T3 + c 4 T4 ) +


(c0 .b1T1 + c1.b1T1T1 + c2 .b1T1T2 + c 3 .b1T1T3 + c 4 .b1T1T4 ) +
(c0 .b 2 T2 + c1.b 2 T2T1 + c2 .b 2 T2 T2 + c 3 .b 2 T2 T3 + c 4 .b 2 T2 T4 ) = (a0 + a1T1 + a 2T2 )
Os produtos entre Ti e Tj podem ser simplificados considerando que Ti ( x) = cos(i ) :
1
1
Ti ( x).Tj ( x) = cos(i ). cos( j ) = (cos(i + j ) + cos(i j ) ) = (Ti + j ( x) + T|i- j| ( x) )
2
2
(c0 .T0 + c1T1 + c2 T2 + c 3T3 + c 4 T4 ) +

(c0 .b1T1 + c1.b1 (T2 + T0 ) / 2 + c2 .b1 (T3 + T1 )/2 + c 3 .b1 (T4 + T2 )/2 + c 4 .b1 (T5 + T3 ) / 2) +
(c0 .b 2 T2 + c1 .b 2 (T3 + T1 ) / 2 + c2 .b 2 (T4 + T0 )/2 + c 3 .b 2 (T5 + T1 )/2 + c 4 .b 2 (T6 + T2 ) / 2) = (a0 .T0 + a1T1 + a 2T2 )
186

(c0 + c1 .b1 / 2 + c2 .b 2 /2).T0 +


(c1 + c0 .b1 + c 2 .b1 /2 + c1 .b 2 / 2 + c 3 .b 2 /2).T1 +
(c2 + c0 .b 2 + c1 .b1 / 2 + c3 .b1 /2 + c 4 .b 2 / 2).T2 +
(c 3 + c2 .b1 /2 + c 4 .b1 / 2 + c1 .b 2 / 2).T3 +
(c 4 + c 3 .b1 /2 + c2 .b 2 /2 ).T4 +
(c 4 .b1 / 2 + c 3 .b 2 )/2).T5 +
(c 4 .b 2 / 2).T6 = (a 0 .T0 + a1T1 + a 2T2 )
Igualando termos de mesma ordem:

(c0 + c1 .b1 / 2 + c2 .b 2 /2).T0 = (a 0 .T0 )

(c1 + c0 .b1 + c 2 .b1 /2 + c1 .b 2 / 2 + c 3 .b 2 /2 ).T1 = (a1T1 )


(c + c .b + c .b / 2 + c .b /2 + c .b / 2 ).T = (a T )
3 1
4
2
2
2 2
2 0 2 1 1
(c 3 + c2 .b1 /2 + c 4 .b1 / 2 + c1 .b 2 / 2 ).T3 = 0

(c 4 + c 3 .b1 /2 + c 2 .b 2 /2 ).T4 = 0
(c 4 .b1 / 2 + c 3 .b 2 )/2).T5 = 0 desprezar

(c 4 .b 2 / 2).T6 = 0

desprezar

(c2 /2 + c 4 / 2).b1 + c1 .b 2 / 2 = c 3

c 3 .b1 /2 + c2 .b 2 /2 = c 4
a0 . = (c0 + c1 .b1 / 2 + c 2 .b 2 /2 )

a1 = (c1 + c0 .b1 + c 2 .b1 /2 + c1 .b 2 / 2 + c 3 .b 2 /2 )


a = (c + c .b + c .b / 2 + c .b /2 + c .b / 2 )
2
0
2
1 1
3 1
4
2
2
Resolvendos os sistema acima via algortimo abaixo, temos:

----------------------------------------------------------------------------------------------------------------%Comparativo entre aproximaes polinomial, sries de taylor, Chebyschev, Pad e PadChebyschev


%1-Interpolao polinomial para grau n >= 2
a = -1;
b = +1;
n = 5; %ETmax = M.h^(n+1)/(n+1)=exp(1)*(2/n)^(n+1)/(n+1) => ETmax=0.0018557 para
n=5
h = (b-a)/n;
x = a : h : b;
y = exp(x);
tsis = n+1;
for i = 1 : tsis
A(i,1) = 1;
for j = 2 : tsis
A(i,j) = A(i,j-1)*x(i);
endfor
A(i, tsis+1) = y(i);
endfor
A
C = fgauss(tsis,A) % coeficientes do polinomio interpolador
187

%2-aproximao por serie de maclaurin


%ETmax
=
M.(x-0)^(n+1)/(n+1)!
=>
ETmax=exp(1)*(1-0)^(n+1)/factorial(n+1)
ETmax=0.0037754 para n=5
%f1(x) = 1 + x + x^2/2! + x^3/3! + x^4/4! + x^5/5!
%3-aproximao por serie com polinomios de Chebyschev
%f1(x) = 1 + x + x^2/2! + x^3/3! + x^4/4! + x^5/5!
%f1(t) = t0 + t1 + 1/2!*(t2+t0)/2 + 1/3! * (t3 + 3t1)/4 + 1/4! * (t4 +4t2 +3t0)/8 + 1/5! * (t5 +
5t3 +10t1)/16
%f1(t) = (81*t0)/64+(217*t1)/192+(13*t2)/48+(17*t3)/384+t4/192+t5/1920
%f2(t) = (81*t0)/64+(217*t1)/192+(13 t2)/48+(17 t3)/384+t4/192
%f2(x) = (81)/64+(217x)/192+(13*(2x^2-1))/48+(17*(4x^3 - 3x))/384+(8x^4 -8x^2 +1)/192
%f2(x) = 1+(383 x)/384+x^2/2+(17 x^3)/96+x^4/24
%ET(x) ~=0.0037754 para n=5

%4-aproximao racional de pad


%f1(x) = 1 + x + x^2/2! + x^3/3! + x^4/4! + x^5/5! ErroTruncamento1 = 3.7*10-3 (na real
1.6*10-3 visto no grafico)
%R32 = (a0 + a1x + a2x^2 + a3x^3)/(1 + b1x + b2*x^2)
%ET(x) ~=0.0037754 para n=5
npade = 3;
mpade = 2;
M = npade + mpade;
%determinar coeficientes c
%c COMEA DO 1
c = [1 1 1/2 1/6 1/24 1/120] %o c(0) foi trocado por c(1) e etc =D
%calcular os Bs
A=[
[c(3) c(4) -c(5)]; %o c(0) foi trocado por c(1) e etc pq o octave comea do 1
[c(4) c(5) -c(6)];
];

baux= fgauss(mpade, A); %b comea em 1 mesmo, igual a formula do pade, pois bo=1
sempre.
b(1)=baux(2)
b(2)=baux(1)
%o b(0) NO foi trocado por b(1), pois s usamos b(1 e b(2)
b(3) = 0 %para m=2
%calcular os As
a(1) = c(1);
%o a(0) foi trocado por a(1) e etc =D
a(2) = b(1)*c(1) + c(2);
a(3) = b(2)*c(1) + b(1)*c(2) + c(3);
a(4) = b(3)*c(1) + b(2)*c(2) + b(1)*c(3) + c(4);
%R32 = (a1 + a2x + a3x^2 + a4x^3)/(1 + b1x + b2*x^2)
188

%5-aproximao racional de Pad sobre serie com polinomios de Chebyschev de M=4 termos
%f2(t) = (81*t0)/64+(217*t1)/192+(13 t2)/48+(17 t3)/384+t4/192
%R22(x)=(a1.T0 + a2.T1+ a3.T2 )/(1 + b1.T1 + b2.T2)
npade2 = 2;
mpade2 = 2;
M2 = npade2 + mpade2;
%determinar coeficientes c
%c COMEA DO 1
c2 = [81/64 217/192 13/48 17/384 1/192]
%calcular os b's
A2=[
[(c2(3)/2+c2(5)/2) c2(2)/2 -c2(4)]; %o c(0) foi trocado por c(1) e etc pq o octave
comea do 1
[ c2(4)/2
c2(3)/2 -c2(5)];
];
b2= fgauss(mpade2, A2); %b comea em 1 mesmo, igual a formula do pade, pois bo=1
sempre.
a2(1) = c2(1)
+c2(2)*b2(1)/2+c2(3)*b2(2)/2; %o a(0) foi trocado por a(1) e
etc =D
a2(2) = c2(2)+c2(1)*b2(1)+c2(3)*b2(1)/2+c2(2)*b2(2)/2+c2(4)*b2(2)/2;
a2(3) = c2(3)+c2(1)*b2(2)+c2(2)*b2(1)/2+c2(4)*b2(1)/2+c2(5)*b2(2)/2;
np = 20*n;
ap = -1;
bp = 1;
hp = (bp-ap)/np;
xp = ap:hp:bp;
yep = exp(xp);
for i = 1 : np+1
yip(i) = resto(n, C, xp(i));
endfor
yst = 1 .+ xp .+ xp.^2 ./ factorial(2) .+ xp.^3 ./ factorial(3) .+ xp.^4 ./ factorial(4) .+ xp.^5 ./
factorial(5);
ysc = 1 .+(383 .*xp)./384 +xp.^2 ./2 .+(17 .*xp.^3)./96 .+xp.^4 ./24;
ypade = (a(0+1) + a(1+1) .*xp + a(2+1) .*xp.^2 + a(3+1) .*xp.^3) ./(1 + b(1) .*xp + b(2)
.*xp.^2);
ypade2 = (a2(0+1)*1 + a2(1+1) .*xp + a2(2+1) .*(2.*xp.^2.-1) ) ./(1 + b2(1) .*xp + b2(2)
.*(2.*xp.^2-1));
Et=abs(yep-yst);
Ec=abs(yep-ysc);
Ep=abs(yep-ypade);
Epc=abs(yep-ypade2);
plot(xp,Et,"k;Erro=|f(x)-f1(x)|, f1(x)=Serie Maclaurim n=5;",xp,Ec,"g;Erro=|f(x)-f2(x)|,
f2(x)=Serie Chebyschev n=4;", xp, Ep, "m; Erro=|f(x)-R32(x)|, R32(x)= Racional Pade
189

M=5;", xp, Epc, "c; Erro=|f(x)-R22(x)|, R22(x)= Racional Pade-Chebyschev M=4;")


%plot(xp,yep,"r;F(x)=exp(x);", xp,yip,"b;Pn(x) interpolador n=5;", xp, yst, "k;Serie
Maclaurin n=5;", xp, ysc, "g; Serie Chebyschev M=4;", xp, ypade, "m; Pade R32;", xp,
ypade2, "c; Pade-Chebyschev R22;")
Grid
-----------------------------------------------------------------------------------------------------------------

Concluso: os Erros da aproximao racional de Chebyschev-Pad com M=4 se mantm de


forma distribuda e na mesma ordem da srie de Chebyschev, no traz novas vantagens
computacionais.
Pad com M=5 bem superior s demais aproximaes de mesmo nmero de termos.
Exerccio: Para f(x) = ex determine
a). o polinmio aproximador de Chebyshev de grau M=4;
b). a aproximao racional R22(x) a partir do aproximador de Chebyshev em x e calcule os
12 + 6x + x 2
erros exatos. Compare com e x R 22 ( x) =
Emax = 0,0039961;
12 6x + x 2
c). a aproximao racional R40(x) a partir do aproximador de Chebyshev e calcule os erros
x2 x3 x4
x
+
+
Emax = 0,0099485;
exatos. Compare com e R 40 ( x) = 1 + x +
2
6 24
d). a aproximao racional R04(x) a partir do aproximador de Chebyshev e calcule os erros
1
exatos. Compare com e x R 04 ( x ) =
Emax = 0,051615;
2
x
x3 x4
1 x +

+
2
6 24

190

Captulo 7 - Aproximao por Ajuste, com coeficientes lineares e no lineares


7.1).
.1). Aproximao por Ajuste de Curvas:
No captulo anterior, abordamos a aproximao da funo tabelada (xk,yk), com yk =
f(xk), por interpolao polinomial, interpolao por Splines cbicas e Curvas de Bezier.
xk
x1
yk = f(xk) y1

...
...

xm
ym

Contudo, quando a funo tabelada for oriunda de experimentos, coleta de dados ... ,
desde que no caracterize caminhos, nenhuma das tcnicas anteriores adequada.

m=41 pontos experimentais.


figura 1 - Exemplo de distribuio de dados obtidas experimentalmente.
Pode-se
se observar no exemplo da figura 1 que os 'm' pontos seguem uma tendncia,
caracterizando
rizando o seu comportamento, nestes casos prefervel escolher uma funo que
represente esta tendncia, ao invs de passar uma funo interpoladora que passe sobre todos
os m pontos.
Para isto deve-se
se observar o seguinte:
(1). Em experimentos tem--se, geralmente, uma grande quantidade de pontos coletados;
(2). Alguns pontos coletados podem estar afetados por erros inerentes (de observao,
calibragem, etc,...) e que no devem afetar a aproximao;
(3). A plotagem dos pontos pode sugerir uma funo com tendncia conhecida e que no seja
polinomial.
Definio 1:: Uma funo de ajuste uma funo com tendncia previamente conhecida e que
mais se aproxima de todos os pontos (xk,yk), k=1,2,...,m, e no, necessariamente, os contm.
urva que "mais se aproxima de todos os pontos", pode-se
pode recorrer a
Para quantificar a curva
minimizao dos desvios os pontos tabelados a curva ajustada.
Definio 2:: Para uma funo experimental tabelada (xk,yk), k=1,2,...,m, e uma representante
de sua tendncia y = g(x), denomina-se
denom
de desvio local dk a seguinte expresso:
191

d k = g( x k ) y k

figura 2 Exemplo de desvio local dk em xk.


Agora, vamos tentar obter g(x) de modo que:
m

(i).

d
k =1

seja mnima:

Nesse critrio os valores de dk podem se cancelar, mesmo se tiverem valores altos, se o


sinais forem contrrios.
Ento no uma forma adequada, pois ambgua, no distingue o bom ajuste do ruim.
Existem vrias curvas que satisfazem o critrio (i).
m

(ii).

| d
k =1

| seja mnima:

Tambm uma forma ambgua, que no distingue dentre os ajustes bom e ruim, e no
permite minizao.
m

(iii).

d
k =1

2
k

seja mnima:

Com esta soma quadrtica dos desvios, tem-se


tem se as seguintes caractersticas:
- Desaparece o sinal
- Enfatizam-se
se os grandes desvios
- Minimizam-se
se os pequenos desvios
- No ambgua, s existe uma funo g(x) que satisfaa este critrio
Portanto com este critrio se consegue distinguir o bom ajuste do ruim.
Por exemplo,
tem
Reportando-se aos casos visualizados na figura 4 tem-se:
192

(4i)

= 25

= 17

k =1
m

(4ii)

k =1

6.1.1). Mtodo dos Mnimos Quadrados para Ajuste a Curvas Polinomiais:

Para a funo desconhecida tabelada em m pontos abaixo:


xk
x1
yk = f(xk) y1

x2
y2

...
...

xm
ym

pode-se propor o ajuste dos pontos a um polinmio Pn(x), de grau n (n<m):


Pn ( x) = a0 + a1 x + ... + an x n
e

d k = Pn ( xk ) yk = a0 + a1xk + ... + an xkn yk


Ento,
m

k =1

k =1

d k2 = a0 + a1 xk + ... + an xkn yk

E necessrio agora minimizar

d
k =1

dada por ( a0 , a1 , a2 ,..., an )


m

k =1

k =1

2
k

, que uma funo dos coeficientes do polinmio,

( a0 , a1 , a2 ,..., an ) = d k2 = a0 + a1 xk + ... + an xkn yk

Para minimizar ( a0 , a1 , a2 ,..., an ) , primeiramente determinam-se os pontos crticos da


seguinte forma:

= 0,
= 0,
= 0 , ...
a 0
a 1
a 2

=0
an

onde
m

= 2[a0 + a1 xk + ... + an xkn yk ].1 = 0


a0 k =1

m
= 2[a0 + a1 xk + ... + an xkn yk ].xk = 0
a1 k =1

193

m
= 2[a0 + a1 xk + ... + an xkn yk ].xk2 = 0
a2 k =1
M
m

= 2[a0 + a1 xk + ... + an xkn yk ].xkn = 0


an k =1

Dividindo as expresses anteriores por dois e desenvolvendo os 'm' somatrios tem-se,


por exemplo,
a0 + a1 x1 + ... + an x1n y1 +

a0 + a1 x2 + ... + an x2 y2 +

a0
M

a + a x + ... + a x n y = 0
n m
m
0 1 m
Resultando
m
m
m
m

m.a0 + xk a1 + xk2 a2 + L + xkn an = yk


a0
k =1
k =1
k =1
k =1

Desenvolvendo as demais expresses e reescrevendo em forma de sistema linear, temse:

xk

xn
k

x x
x x

2
k

2
k

3
k

Obs.: Entenda-se

n +1
k

n+2
k

a yk
0

n +1
L
a1 xk yk
k
M =

M
L xk2 n an xkn yk
L

x
x

n
k

(*)

como

x
k =1

A soluo deste sistema linear (n+1)x(n+1) equaes fornece os n+1 coeficientes de


m

Pn ( x ) com o menor desvio quadrtrico

d
k =1

2
k

Faz-se necessrio verificar qual o grau m mais adequado ao ajuste de Pm(x) ao


conjunto de pontos tabelados.
Ex. Ajuste o conjunto de pontos tabelados abaixo a uma reta e estime f(5) e f(10).
xk
1
yk = f(xk) 0

3
1

4
2

6
4

8
5

Soluo:
194

Temos m = 5 pontos e o grau do polinmio ajustador n = 1.


P1 ( x ) = a 0 + a 1 x

Aplicando o sistema (*)


22 a 0 12
5
22 126 a = 75

a 0 = 0.9458

a 1 = 0.7603

P1 ( x) = 0.9458 + 0.7603 x

avaliao por diviso sinttica ou por Horner


f ( 5) P1 ( 5) = 2.85
f (10) P1 (10) = 6.65
Deve-se analisar qual seria a maneira mais eficiente de resolver o sistema (*), neste
sentido verifica-se que o sistema (*) de pequeno porte e formado por uma matriz densa de
coeficientes, o que sugere a utilizao de um mtodo direto para resoluo. Adicionalmente
observa-se que o sistema (*) simtrico ( aij =

x
k =1

i+ j 2
k

) e que normalmente este

considerado um sistema mal condicionado. O mal condicionamento do sistema (*)


acentuado com a proximidade numrica entre os valores de xk.
No sistema formado no exemplo anterior o condicionamento da matriz A de
coeficientes pode ser dada por:

A =

det(A )
1 2

onde i =

a
j =1

2
ij

A = 0,05

Portanto, o sistema do exemplo anterior mal condicionado, o que sugere um mtodo


especfico para sua resoluo.
No caso de sistemas de equaes mal condicionados recomendado que se utilize um
mtodo de decomposio LU. Neste caso o mtodo de Cholesky particularmente
interessante para a resoluo destes sistemas com matriz de coeficientes simtricas e positivas
definida.
Ex.: Para
xk
0
yk = f(xk) 1

0,25
1,284

0,5
1,6487

0,75
2,117

1,0
2,7183

Estime f(0,6) atravs de:


a). ajuste linear;
b). ajuste parablico.
Decida sobre qual o resultado mais confivel.
Soluo:

195

n = 1 e m = 5 p 1 (x) = a 0 + a 1x

a). Ajuste Linear:

Montando o sistema (*) de equaes tem-se

5 2 ,5 a 0 8,768
2 ,5 1,875 a = 5,4514

a 0 = 0,89968
(Mtodo LU Cholesky)

a 1 = 1.70784

p1 ( x) = 0,89968 + 1.70784 x melhor reta possvel


f (0,6) p1 (0,6) = 1,9244
b). Ajuste parablico: n = 2 e m = 5 p 1 ( x ) = a 0 + a 1 x + a 2 x 2
De (*) tem-se

5
2,5
1,875 a 0 8,768
a 0 = 1,00514

1,875 1,5625 a 1 = 5,4514 a1 = 0,86418


2,5
a = 0,84366
1,875 1,5625 1,3828 a 2 4,4015
2

(Mtodo LU Cholesky)

p2 ( x ) = 1,00514 + 0,86418.x + 0,84366 x 2 melhor parbola possvel

f (0,6) p2 (0,6) = 1,8274


Via de regra, o resultado mais confivel o da curva polinomial na qual ocorre o menor
m

desvio total D = d k2 . Para se ter um padro de comparao, normalmente adota-se o valor


k =1

normalizado do desvio total, dado por:

D=

1 m 2
dk
m k =1

Neste exemplo, tem-se


Para a reta
D = 0,00800
e para a parbola D = 0,00005
Concluso: O resultado considerado mais confivel o da parbola, por ter o menor desvio
total em relao aos pontos tabelados. Esta concluso no vlida em casos de polinomiais
com grandes variaes de curvatura, existentes em polinomiais de grau elevado.
O ponto crtico determinado s pode ser um ponto de mnimo desvio, pois por excluso, no
pode ser um ponto de mximo desvio, uma vez que sempre possvel obter-se uma nova
funo ajustadora mais longe dos pontos experimentais e assim nunca podemos atingir um
ponto de mximo desvio quadrtico, sempre haver uma curva mais longe dos pontos
experimentais.
Por outro lado, pode-se calcular a matriz Hessiana, com as derivadas de 2 ordem:

196

3 # 4 ) , ) , , )5
1 =2
2 =8>0
3)#
6
1#

1&

3 # 4 ) , ) , , )5
3)#
9
93 # 4 ) , ) , , )5

3#4

3) 3)

) , ) , , )5
3) #

3 # 4 ) , ) , , )5

3) 3)
93 # 4 ) , ) , , ) 5
3)# 3)

3 # 4 ) , ) , , )5

3) 3)
9
#
3 4 ) , ) , , )5 9
3)#

3#4

) , ) , , )5

3) 3)
3 # 4 ) , ) , , )5
3) #
#
3 4 ) , ) , , )5
3)# 3)

3#4

67 ,6:

9
=
9

) , ) , , )5

3) 3)#
9
3 # 4 ) , ) , , )5
3) 3)#
3 # 4 ) , ) , , )5 9
3)##

k =1

k =1

k =1

=9
67 ,6:, ,6;

xk
k =1

xk
k =1
m

x
k =1

2
k

9
>0
9

2
k

xk2
k =1
m

x
k =1

2
k

x
k =1
m

x x
k =1

3
k

3
k

k =1

4
k

9>0
9

E assim por diante, se H1>0, H2>0, ..., Hn>0, ento A matriz H positiva definida e o ponto
crtico obtido ( a0 , a1 , a2 ,..., an ) um ponto de mnimo.
6.1.2 - Ajuste por Mnimos Quadrados a Funes no Polinomiais:
Quando a plotagem, ou outra tcnica, sugerir que o conjunto de pontos
xk
x1
x2
...
xm
yk = f(xk) y1
y2
...
ym
tem tendncia no polinomial conhecida, o ajuste poder ser efetuado por:
1). Deduo direta para a forma no polinomial:
A exemplo do efetuado para funes polinomiais pode-se deduzir uma funo prpria
representativa dos pontos tabelados.
Exemplos:
a). Ajuste de 'm' pontos tabelados a uma curva do tipo:
g( x ) = a x 2 + b ln(x)

(exemplo com coeficiente a e b lineares)

Note que nenhuma transformao de variveis gera uma funo polinomial, por isso para
obter procede-se a minimizao do desvio quadrtico total D que uma funo dos
parmetros (a,b):

(a, b) = dk2 = [axk2 + b ln( xk ) yk ]


m

k =1

k =1

Minimizando ( a , b ) em relao a (a, b), tem-se

197


=0 e
a
onde

=0
b

m
= 2[axk2 + b ln( xk ) yk ].xk2 = 0
a k =1
m
= 2[axk2 + b ln( xk ) yk ]. ln( xk ) = 0
b k =1

( x )a + ( ( x ln x ))b = ( y x )
( ( x ln x ))a + ( (ln x ) )b = ( y

4
k

2
k

2
k

2
k

ln x k )

Note que o sistema acima linear, pois a funo representativa g( x ) = a x 2 + b ln(x)


linear em relao aos coeficientes a e b.
b). Ajuste de 'm' pontos tabelados a uma curva do tipo:
h ( x ) = a x 2 + ln(bx)

(exemplo com coeficientes a e b NO lineares)

Note que tambm nenhuma transformao de variveis gera uma funo polinomial, por isso
procede-se a minimizao do desvio quadrtico total D que uma funo dos parmetros
(a,b):

(a, b) = d k2 = [axk2 + ln(bxk ) yk ]


m

k =1

k =1

Minimizando ( a , b ) em relao a 'a' e 'b', determina-se as derivadas de em relao a


'a' e 'b', e gera-se um sistema no linear em relao aos coeficientes (a,b), pois as funes
derivadas, h1(a,b) e h2(a,b), so no lineares em relao 'a' e 'b'.

][ ]

m
(a, b)
= 2. axk2 + ln(bxk ) yk . xk2 = 0
a
k =1
m
x
( a, b)
= 2. axk2 + ln(bxk ) y k . k = 0
b
k =1
bxk

Nesses casos temos que determinar os valores de 'a' e 'b' pelo mtodo de Newton, a partir de
um valor inicial (ao,bo):
m

f
(a,
b)
=
axk2 + ln(bxk ) y k . xk2 = 0

k =1

m
1
f (a, b) =
axk2 + ln(bxk ) y k . = 0

b
k =1

][ ]

2). Transformao de Variveis:


Algumas formas no polinomiais, permitem transformar a forma no polinomial em
198

uma polinomial, atravs de artifcios algbricos (mudana de variveis), resolver o Ajuste


polinomial transformado, via (*) e posteriormente retornar a forma no polinomial de origem,
mas no geram exatametne os mesmos resultados.
Exemplos:
a). Exponenciais: y = a b x ( b = acelerador ou desacelerador exponencial)
ln( y ) = ln(a ) + x ln( b )

Fazendo ln( y ) = z ; ln( a ) = a 0 ; ln( b) = a 1 tem-se


z = a 0 + a 1 x que um polinmio de 1 grau em ( x k , z k )

Promove-se o ajuste linear ao conjunto de pontos ( x k , z k ) , onde z k = ln( y k ) , para se


determinar a 0 e a 1 . Obtidos os coeficientes a 0 e a 1 do polinmio recuperam-se os valores de
a e b atravs de suas relaes:
a = e a0
b = e a1

Exemplo:
Ajuste a tabela

xk
yk

1
3
2,5 13

4
22

6
36

a uma curva exponencial do tipo y = a b x .


Estime f(2,5) e avalie o valor de x correspondente a y = 50.
Soluo:
y = a b x ln( y ) = ln(a ) + x ln( b )

Montando o sistema para (xk,ln(yk)) tem-se

4 14
14 62

a 0 10,155
a = 42,473
1

a 0 = 0.673

a 1 = 0,533

Retornando aos valores de a e b tem-se:

a = e 0,673 = 1,960
b = e 0 ,533 = 1,704
y = 1,96 (1,704) x
f ( 2 ,5) = 1,96 (1,704) 2 , 5 = 7 ,429
50 = 1,96 (1,704) x x = 6,077
199

b). Geomtricas: y = a xb

com b

ln( y) = ln( a ) + b ln( x )

Fazendo ln( y ) = z ; ln( a ) = a 0 ; b = a 1 e ln( x) = t , tem-se


z = a 0 + a 1 t que um polinmio de 1 grau em ( t k , z k ) .

Promove-se o ajuste linear ao conjunto de pontos ( t k , z k ) , onde t k = ln( x k ) e


z k = ln( y k ) , para se determinar a 0 e a 1 . Obtidos os coeficientes a 0 e a 1 do polinmio
recuperam-se os valores de a e b atravs de suas relaes:
a = e a0
b = a1

b). Hiprboles: y =

1
a 0 + a 1x

1
= a 0 + a 1x
y
Fazendo 1 / y = z ; tem-se
z = a 0 + a 1 x que um polinmio de 1 grau em ( x k , z k ) .

Promove-se o ajuste linear ao conjunto de pontos ( x k , z k ) , onde z k = 1 / y k , para se


determinar a 0 e a 1 .
Exerccio em computador:
A equao de estado de RedlichKwong, permite relacionar propriedades termodinmicas de gases
reais, como o ar, por exemplo, com P como variavel depentente de v e T:
< =, > =

?>

= A

> .=. =DA

(1)

Onde R a constante universal dos gases = 8,314 (J)/(mol.K) e os valores de 'a' e 'b' so parmetros
de cada gs, que podem ser determinados a partir de valores de propriedades fsicas do gs: P,v,T
medidos experimentantalmente.
Como toda medio experimental possui erros "inerentes", ento procedemos uma srie de 'm'
medies com o intuito compensar os erros de uma medida para outra. Nesse exemplo, foram
efetuadas 20 medies, descartadas 2 e sero consideradas m=18 medies efetivas para a
determinao dos parmetros 'a' e 'b' do gs, conforme segue:
m=18 % Nmero de pontos experimentais
v=[9.0 8.5 8.0 7.5 7.0 6.5 6.0 5.5 5.0 9.0 8.5 8.0 7.5 7.0 6.5 6.0 5.5 5.0 ] %v(m3/mol)
T=[300 310 320 340 360 370 380 390 400 410 420 440 460 470 480 490 500 510 ] % T (K)
P=[277.4415 303.5736 332.9762 377.4045 428.1888 473.9876 527.4325 590.6120 666.4529
379.1701 411.2932 457.8422 510.6061 559.0243 614.9029 680.1102 757.1948 849.7274] % P (Pa)

Se tivessemos 2 pontos obtidos com exatido, poderamos substitui-los na eq. (1) de Redlich
200

Kwong, gerando 2 equaes no lineares, conforme abaixo:


E a, b =

HI

I .J . J DK

L1 = 0

E# a, b =

HI#

J# K

L2 = 0

I# .J#. J#DK

e determinar os 2 valores incgnitas, a e b, usando o Mtodo de Newton, mas ao invs de 2 pontos


exatos, temos m=18 experimentais, que podem compensar os seus erros pela repetio do
experimento.
Assim, vamos usar o mtodo de ajuste dos parmetros 'a' e 'b' pela minimizao do desvio quadrtico
?>
B
entre de uma varivel, no caso a Presso, < =, > =

, calculado em cada ponto


= A

> .=. =DA

(v(k),T(k)) e o valor efetivamente medido de P(k), com k=1 a m.


Ento a funo desvio total quadrtico fica, como na eq. (2) abaixo:
M B, A = T
P UO

?> P

= P

Q> P .= P . = P DA

< P R

(2)

Para determinar os parmetros 'a' e 'b', vamos obter o ponto crtico de D em relao a 'a' e 'b':
VM B,A
VB

VM B,A
VA

= S. T
P UO

?> P

= P

= S. T
P UO

?> P

= P

Q> P .= P . = P DA
B

Q> P .= P . = P DA

< P R . O
U

Q> P .= P = P DA

< P R . O? > P .

U .

U
A S

= P

R=W

(3)
B

Q> P .= P

Ento, determine 'a' e 'b', resolvendo as duas equaes no lineares abaixo:

XU B, A = T
P UO

= P

XS B, A = T
P UO

= P

?> P

Q> P .= P . = P DA

Q> P .= P . = P DA

< P R . O

Q> P .= P = P DA

U
R
= P DA S

= W (4)

R=W

(5)

y=y+(R*T(k)/(v(k)-x(2))-x(1)/(sqrt(T(k))*v(k)*(v(k)+x(2)))-P(k))*(-1./(sqrt(T(k))*v(k)*(v(k)+x(2))));
?> P

< P R . O? > P .

= P

A S

Q> P .= P

U
R
= P DA S

= W (6)

y=y+(R*T(k)/(v(k)-x(2))-x(1)/(sqrt(T(k))*v(k)*(v(k)+x(2)))-P(k))*(+R*T(k)/(v(k)-x(2))^2+x(1)/
(sqrt(T(k))*v(k)*(v(k)+x(2))^2));

Sugesto: aplique o Mtodo de Newton, com derivadas calculadas numericamente, para resolver as
o o
equaes (5) e (6) acima, a partir do valor inicial nulo (a ;b )=(0;0).
Calcule tambm o desvio quadrtico total mdio, eq. (7), entre os valores das Presses P obtidas
com a eq. (1), usando Tk, vk e a, b,obtidos das eqs. (5) e (6), em relao aos m=18 pontos Pk
experimentais:
M=

T
P UY

?> P

= P

Q> P .= P . = P DA

< P Z

(7)

Respostas: a = 0.0071255, b = 0.0099997, erro = 1.1086e-009, D = 3.1853e-009


% Construindo grafico 3D da superficie P-v-T:
% Calculando passos:
hv=(v(m)-v(1))/100;
hT=(T(m)-T(1))/100;
% Definindo pontos:
vp=v(1):hv:v(m);
Tp=T(1):hT:T(m);
for i=1:101
for j=1:101
Pp(i,j)=funoP(a,b,R,vp(i),Tp(j));
end
end
% Plotando:
surf(vp,Tp,Pp)
201

xlabel('v(m3/mol)')
ylabel('T(K)')
zlabel('P(Pa)')
grid on
axis square
hold on
plot3(v,T,P,'*')
hold off
--------------xxxxx-------------------Function y=funoP(a,b,R,vp,Tp);
y=R*Tp/(vp-b)-a/(sqrt(Tp)*vp*(vp+b));
end

202

Ex.:
A tabela abaixo com m=5 pontos, obtidos experimentalmente, relaciona o volume adimensional de
lcool gerado V em um reator fictcio em funo da sua temperatura adimensional T mdia de reao:
T=[ 0.2 0.4 0.6 0.8 1.0 ];
V=[ 0.04 0.14 0.26 0.39 0.50 ];
Considere que o comportamento do volume de lcool gerado V em funo da sua temperatura mdia
2 -1
de reao T conhecida e dada por uma funo no polinomial V(T)=(a + b/T ) .
a). Avalie os parmetros a e b atravs de ajuste de curvas, por deduo direta da forma no
2 -1
polinomial V(T)=(a + b/T ) e por transformao parametrizada, transformando para polinomial, de
modo a levar em conta todas as m=5 medies experimentais em ambos os casos; (1,0)
2 -1
b). Calcule V(T=0.8), pela funo V(T)=(a + b/T ) ajustada e calcule o seu desvio local em T=0.8;
(0,5)
2
c). Monte um algoritmo que determine os parmetros a e b, de V(T)=1/(a + b/T ), atravs de
ajuste de curvas, direto e parametrizado, de modo a considerar as m=5 medies
experimentais acima. (2,0).

%Ajuste funes no lineares e no polinomiais: V(T)=(a+b*T^(-2))^(-1) com


transformao para forma polinomial
clear
clc
m=5;
T= [0.2 0.4 0.6 0.8 1.0 ];
V= [0.04 0.14 0.26 0.39 0.50];
%transformando para polinomial:
% V
=(a+b*T^(-2))^(-1)
% V^(-1)= a +b *T^(-2)
%
y= a0+a1*x
x=T.^(-2)
y=V.^(-1)
n=1;
neq=n+1;
for i=1:neq
for j=1:neq
soma=0;
for k=1:m
soma=soma+x(k)^(i+j-2);
end %k
A(i,j)=soma;
end %j
soma=0;
for k=1:m
soma=soma+x(k)^(i-1)*y(k);
end %k
A(i,neq+1)=soma;
end %i
A
a=fgauss(neq,A)
%Voltando para o Problema no Polinomial
aa=a(1)
bb=a(2)
%V(T)=(aa+bb*T^(-2))^(-1)
D=0;
for k=1:m
D=D+((aa+bb*T(k)^(-2))^(-1)-V(k))^(2);
end
D
Tp=T(1):(T(m)-T(1))/100:T(m);
203

Vp=(aa.+bb.*Tp.^(-2)).^(-1);
plot(T,V,"*;Dados experimentais;",
1);")
x = 25.0000
y = 25.0000
A = 5.0000
36.5903
a = {1.11383

6.2500 2.7778 1.5625


7.1429 3.8462 2.5641
36.5903 40.5531
675.2200 686.3330
0.95610}

Tp,Vp,"g;V(T)=(aa+bb*T^(-2))^(-

1.0000
2.0000

aa = 1.1138
bb = 0.95610

D = 3.5688e-004 (ajuste parametrizado com mudanas de variveis no atinge o MNIMO


desvio quadrtico, como vemos a seguir)
% Ajuste direto para determinao de coeficientes no lineares de funes ajustadas
clear
clc
%Metodo de newton com derivadas numericas para resolver o ajuste:
V(T)=(a+b*T^(-2))^(-1)
m=5;
T= [0.2 0.4 0.6 0.8 1.0];
V= [0.04 0.14 0.26 0.39 0.50];
n=2;
xi=[0.01
0.01];
dxi=[1.e-6 1.e-6];
erro=1.e-4; cont=0;
while (erro>1.e-6 & cont<30)
cont=cont+1;
A=[
(g1([xi(1)+dxi(1),
xi(2)],m,T,V)-g1(xi,m,T,V))/dxi(1),
(g1([xi(1),
xi(2)+dxi(2)],m,T,V)-g1(xi,m,T,V))/dxi(2),
g1(xi,m,T,V);
(g2([xi(1)+dxi(1),
xi(2)],m,T,V)-g2(xi,m,T,V))/dxi(1),
(g2([xi(1),
xi(2)+dxi(2)],m,T,V)-g2(xi,m,T,V))/dxi(2),
g2(xi,m,T,V);]
dx=fgauss(n,A);
x=xi+dx;
xi=x;
dxi=dx;
erro=max(abs(dx));
204

[cont x erro]
end %while
aa=x(1)
bb=x(2)
%V(T)=(aa+bb*T^(-2))^(-1)
D=0;
for k=1:m
D=D+((aa+bb*T(k)^(-2))^(-1)-V(k))^(2);
end
D
Tp=T(1):(T(m)-T(1))/100:T(m);
Vp=(aa.+bb.*Tp.^(-2)).^(-1);
plot(T,V,"*;Dados experimentais;", Tp,Vp,"g;V(T)=(aa+bb*T^(-2))^(1);")
function y= g1(x,m,T,V)
y=0;
for k=1:m
y=y+((x(1)+x(2)*T(k)^(-2))^(-1)-V(k))*(x(1)+x(2)*T(k)^(-2))^(-2);
end
end
function y= g2(x,m,T,V)
y=0;
for k=1:m
y=y+((x(1)+x(2)*T(k)^(-2))^(-1)-V(k))*(x(1)+x(2)*T(k)^(-2))^(2)*T(k)^(-2);
end
end
A = -2.7106e+007 -3.4175e+007 -2.0361e+005
-3.4176e+007 -5.1403e+007 -2.8434e+005
iter = 1, aa=0.0133222, bb=0.0133228 , Erro=0.0033228
:
A = -9.0449e-002 -1.1392e-001 2.8297e-010
-1.1392e-001 -1.7062e-001 3.4188e-010
iter=21, aa=9.9164e-001, bb=1.0095e+000, Erro=3.8020e-009
aa = 0.99164
bb = 1.0095

D = 2.5234e-005 (o ajuste direto resulta em desvio total menor (MNIMO) que o ajuste
parametrizado).
205

Capitulo 8 Integrao Numrica


b

Em muitos modelos matemticos tem-se


tem se que efetuar a operao I =

f (x )dx (ou de
a

ordens superiores). No clculo este problema j foi abordado, como pode ser visto na
enciclopdia Wikipdia, http://pt.wikipedia.org/wiki/Integral#Integral_definida :

A integral de
no intervalo [a,b] igual
ao limite do somtrio de cada um dos valores que a
funo f(x) assume, de 0 a n, multiplicados
multipli
por
.O
que se espera que quando n for muito grande o valor
da soma acima se aproxime do valor da rea abaixo da
curva e, portanto, da integral de
no intervalo. Ou
seja, que o limite esteja definido. A definio de integral
aqui apresentada chamada
amada de soma de Riemann,
mas h outras formas (equivalentes).

comprimento dos pequenos subintervalos nos quais se


divide o intervalo [a,b]. Os extremos destes intervalos
onde

so os nmeros

Valor ("altura") da funo


ponto amostral

onde

quando x igual ao

, definido como um ponto que est

no subintervalo
(podendo at mesmo ser
um destes pontos extremos do subintervalo).

Porm, as tcnicas vistas so mais exemplos de tratamento algbrico e de simplificaes do


que de tcnicas efetivas de se obter I. Veremos as duas definies de I:
1a) I = A, onde A a rea subentendida por y = f(x), x = a, x = b e y = 0.
2a) Efetuar I obter a primitiva ou anti-derivada
anti
F(x) de f(x).
A conexo entre as duas definies o Teorema Fundamental do Clculo:
b

f ( x )dx = A = F(b ) F(a )


a
b

Contudo, a aplicao do TFC em I =

f (x )dx pode ser difcil ou at impossvel,


a

uma vez que:


a) A integranda y = f(x) apenas uma tabela do tipo:
X
x1 ... xn+1
f(x) y1 ... yn+1
b) A y = f(x) pode ter primitiva obtida de maneira ineficiente.
206

c) Existem integrandas com primitivas desconhecidas.


1

Ex:

x 2

dx e

dx

ln(x)
2

7.1 Integrao Numrica de y = f(x)


b

Def. obter I =

f (x )dx

numericamente significa aplicar o TFC no em y = f(x) mas em

aproximadoras de y = f(x).
Os mtodos de integrao numrica podem ser agrupados em duas grandes
famlias:
1a) Newton;
2a) tipo Gauss.

207

8.1.1 Mtodos de Newton


a) Trapzios
b

Para se estimar I =

f (x )dx , proceder como segue:


a

(b a )
.
n

Dividir [a,b] em n subintervalos de comprimento h =

Obter os n + 1 valores funcionais (xi, yi), onde x1 = a, xi+1 = xi + h e yi = f(xi).


Para cada 2 pontos sucessivos (xi, yi) e (xi+1, yi+1) obter o interpolador de grau 1.

p i (x) = y i +
x i +1

Da, Ai =

p ( x )dx = 2 [y
h

y i +1 y i
(x x i )
h

+ y i +1 ]

xi

Finalmente,

i =1

f ( x )dx A i =

h
[y1 + y 2 ] + h [y 2 + y 3 ] + ... + h [y n + y n +1 ]
2
2
2
h
= [y1 + 2 y 2 + 2 y 3 + ... + 2 y n + y n +1 ]
2
n
h

= y1 + 2. yi + yn +1 = Tn
2
i=2

Teorema:
b

lim T = f ( x )dx
n
n

a
1

Exemplo: Efetue por Trapzios I =

f (x )dx , sendo
0

x
f(x)

0
3

0,25

0,5

5
8
Soluo:

0,75

2
208

Temos n + 1 = 5 n = 4 e xi+1 xi = 0,25 h = 0,25


1

Aplicando (1)

f ( x)dx
0

0,25
[3 + 2(5 + 8 + 4) + 2] 4,875
2

Devemos notar que o teorema quando utilizado em preciso finita pode ser invlido, pois
neste caso existe um 'n' timo, que no conhecido previamente.
Teorema do Resto:
b

Em

f ( x)dx se dividirmos o [a,b] em n partes iguais e aplicarmos Trapzios, ento


a

h ( b a )f ' ' ( )
, [a,b]
12
h 2 (b a )M
M = max f ' ' ( x )
ET
x[ a , b ]
12
com
, que um valor limite do erro de truncamento.

ET =

Deduo do erro de truncamento:

Para y = f(x), continuamente diferencivel dentro de [a; b], segundo o teorema de Taylor f(x)
pode ser escrita exatamente, a partir de qualquer ponto (x>), como:
f ()( x ) f ()( x ) 2
f n ()( x ) n
f ( x) = f () +
+
+ L +
+ L
1!
2!
n!
onde [ a ; b ] .
Pelo teorema do resto da srie de Taylor:

f ()( x )
f n ()( x ) n f n +1 ()( x ) n +1
f ( x) = f () +
+ L +
+
1!
n ! 3 144
(4
n2
+ 144
)! 4
14444444
4244444444
3
Pn ( x )

[; x]

Rn ( x )

Desse modo que f(x) = Pn(x) + Rn(x)


ou f(x) Pn(x) (Aproximao Polinomial,
assumindo truncamento da srie a partir de 'n').
Para interpolao polinomial geral de grau n:
n

Rn(x) = f ( x) Pn( x) =

f n +1 ( ) ( x xi )
i=0

( n + 1)!

No caso da aproximao por interpolao polinomial com n=1, usada no mtodo dos
Trapzios, f(x) = P1(x) + R1(x), onde os 2 pontos utilizados para ancorar P1(x) so xi e xi+1:

f 1+1 ( )( x xi )( x xi +1 )
f 1+1 ( )( x xi )( x xi +1 )
R1 ( x) =
e f ( x) = P1 ( x) +
(1 + 1)!
(1 + 1)!
Logo,
xi +1
xi +1
x

f 1+1 ( )( x xi )( x xi +1 )
f 2 ( ) i+1

=
+
f
(
x
)
dx
P
(
x
)
dx
=
A
+
(( x xi )( x xi +1 ) ).dx
i
x
x 1

+
(
1
1
)!
(
2
)!

xi
i
i
onde Ai a aproximao da rea de um Trapzio, entre xi e xi+1, dada por Ai =h/2*(yi+yi+1).
209

xi +1

xi
xi +1

f 2 ( )
f ( x)dx = Ai +
(2)!

xi

xi +1

f 2 ( ) x 3
x2
( xi + xi +1 ) + xi xi +1 x
x ( xi + xi +1 ) x + xi xi +1 .dx = Ai +
(2)! 3
2
x

xi +1

xi +1

f ( x)dx = Ai +

xi

f 2 ( ) x3
x2
( xi + xi +1 ) + xi xi +1 x = Ai + = Ai + ETn( )
(2)! 3
2
x
i

xi +1

3
3
2
2

f 2 ( ) x3
x2
f 2 ( ) xi +1 xi
xi +1 xi

( xi + xi +1 ) + xi xi +1 x =
ETn( ) =
( xi + xi +1 )
+ xi xi +1 ( xi +1 xi )

(2)! 3
2
(2)!
3
2
x

f ( ) x

ETn( ) =
(2)!

xi
x
( xi + xi +1 )
3

3
i +1

xi
+ xi xi +1 ( xi +1 xi )
2

2
i +1

com xi +1 = xi + h
3
2

f 2 ( ) ( xi + h)3 xi
( xi + h) 2 xi

ETn( ) =
x
x
h
x
x
h
x
h
x

(
+
+
)
+
(
+
)(
+

)
i
i
i
i
i
i

(2)!
3
2

ETn( ) =

3
2
3
2
2

f 2 ( ) ( xi + 3.xi h + 3.xi h 2 + h3 ) xi
( xi + 2 xi h + h) xi

x
h
x
x
h
h

(
2
+
)
+
(
+
)(
)
i
i
i

(2)!
3
2

3
2
3

f 2 ( ) xi 3.xi h 3.xi h 2 h3 xi
(2 xi h + h)
2
+
ETn( ) =
+
+
(2 xi + h)
+ hxi + xi .h

(2)! 3
3
3
3
3
2

ETn( ) =

2
2

f 2 ( ) 3.xi h 3.xi h 2 h3 4 xi h 2 xi h 2 xi h 2 h 2
2

.
+
+

+
hx
+
x
h
i
i

(2)! 3
3
3
2
2
2
2

Esta expresso do erro ETn() vlida para qualquer xi, ento pode-se simplificar esta
avaliao tomando um xi=0, logo:

ETn( ) =

f 2 ( ) h3 h 2 f 2 ( ) 2h3 3h 2
f 2 ( ) h 2
f 2 ( ).h 2
=

=
=
(2)! 3 2
(2)!
6
(2)! 6
12

ET ( ) =

f 2 ( ).h 2
12

Ento, o erro de truncamento em mdulo, tomando seu limite superior, mximo, total, no
intervalo [a,b], torna-se:
b

i =1

f ( x) dx Ai +

ETnMax =
a

ETnMax =

Max | f 2 ( x) | .h 2
dx =Tn + ETnMax
12

Max | f 2 ( x ) | .h 2
Max | f 2 ( x ) | .h 2
dx =
(b a )
12
12

Max f 2 ( x)
12

.h 2 .(b a) , com ento x [a,b]

Exemplo: Determine o n mnimo para que o erro de truncamento seja menor que = 10-6 ao
6

efetuar I =

1 + x dx

pelo mtodo dos Trapzios.

Soluo:
210

Temos f(x) = (1 + x)-1 f(x) = -(1 + x)-2 f(x) = 2(1 + x)-3


M = max f ' ' ( x ) = f ' ' (1) = 2 = 0,25
8
x[1, 6 ]

10 6

h 2 .5.0,25
h 0,0030984
12

n = 5 = 1613,7 n = 1614 ( recomendad o n = 2048)


h
Ao utilizarmos 'n' como potncia de 2, obtemos valores de 'h' exatos, na base
decimal e binria, e portanto valores de xi exatos tambm.
A aproximao Tn da integral I obtida pelo mtodo dos trapzios com n=1614
subdivises do intervalo x[1;6] em preciso simples de 8 dgitos significativos Tn =
1.25276315, Integral Exata = 1.25276297, erro = 1.8.10-7, ou seja, com de Erro de
truncamento inferior = 10-6.
Para calcular o Erro TOTAL, sobre o valor da integral aproximada Tn, e determinar
tambm a influencia dos Erros de Arredondamento podemos determinar tambm Tn* em
preciso dupla, de 16 dgitos significativos, com o mesmo nmero n=1614 de subdivises,
portanto com o mesmo Erro de Truncamento. Podemos calcular tambm o Erro total Exato,
subtraindo Tn do valor da Integral Exata Ie, (| Tn - Ie |) e o Erro Estimado (| Tn-T2n |) tambm.
Em preciso simples de 8 dgitos significativos Tn = 1,252763
Em preciso dupla de 16 dgitos significativos Tn*= 1,25276315211032
Erro estimado sobre Tn = 1,3.10-7 (n=1614, comparando com n=2*n).
Erro exato total sobre Tn = 1,8.10-7 (arredondamentos no influenciando)
Erro exato total sobre Tn*, calculado em preciso dupla = 1,7.10-7 (menor = 10-6)
Para n=2048:
Em preciso simples de 8 dgitos significativos Tn =1,252763
Em preciso dupla de 16 dgitos significativos Tn*=1,25276308253485
Erro estimado sobre Tn = 8,5.10-8 (n=2048).
Erro exato total sobre Tn = 2,8.10-8 (arredondamentos no influenciando)
Clculos efetuados em C, com variaveis float e double, de 32 e 64 bits:
Para n=4096:
Em preciso simples de 8 dgitos significativos Tn =1,25276327
Em preciso dupla de 16 dgitos significativos Tn*=1,2527629970052434
Erro estimado sobre Tn = 2,7.10-7 (n=4096).
Erro exato total sobre Tn = 3,0.10-7(arredondamentos continuam no influenciando
Para n=32768:
Em preciso simples de 8 dgitos significativos Tn =1,252762675
Em preciso dupla de 16 dgitos significativos Tn*=1,2527629689408351
Erro estimado sobre Tn = 2,9.10-7 (n=32768).
Erro exato total sobre Tn = 2,9.10-7(arredondamentos continuam no influenciando
Para n=65536:
Em preciso simples de 8 dgitos significativos Tn =1,25275445
Em preciso dupla de 16 dgitos significativos Tn*=1,25276296860674250000
Erro estimado sobre Tn = 8,5.10-6 (n=65536).
Erro exato total sobre Tn = 8,5.10-6(arredondamentos influenciam, alterando os
resultados)
Para n=131072:
Em preciso simples de 8 dgitos significativos Tn =1,25279605
211

Em preciso dupla de 16 dgitos significativos Tn*=1,252762968523208


Erro estimado sobre Tn = 3,3.10-5 (n=131072).
Erro exato total sobre Tn = 3,3.10-5 (arredondamentos influenciam, alterando mais
ainda os resultados)
Para n=262144:
Em preciso simples de 8 dgitos significativos Tn =1,25270736
Em preciso dupla de 16 dgitos significativos Tn*=1,2527629685023201
Erro estimado sobre Tn = 5,6.10-5 (n=131072).
Erro exato total sobre Tn = 5,6.10-5 (arredondamentos influenciam, alterando mais
ainda os resultados)
Erro exato total sobre Tn, calculado em preciso dupla = 6,9.10-12
Para n=4194304:
Em preciso simples de 8 dgitos significativos Tn =1,274151683
Em preciso dupla de 16 dgitos significativos Tn*=1,2527629684954742
Erro estimado sobre Tn = 2,1.10-2 (n=4194304).
Erro exato total sobre Tn = 2,1.10-2 (arredondamentos influenciam muito, alterando
os resultados drasticamente)
Erro exato total sobre Tn*, calculado em preciso dupla = 1,1.10-13
Percebe-se que existe um 'n' timo, que nesse caso em torno de n=4096, que
gerou os menores erros totais, no caso de clculos com preciso simples.
Note-se que a aplicabilidade do Teorema do erro pode ser muito difcil, pela limitao
de n.
Se aumentamos o valor de n, alm de 1614, reduzimos os erros de truncamento para
valores menores que 10-6, mas aumentamos o erro de arredondamento acumulado.

Para se contornar este problema pode-se efetuar algumas tentativas para TnI=
b

f (x )dx

e analisar a tendncia de evoluo dos resultados, extrapolando limites.

Uma forma de anlise pode ser efetuada via extrapolao para o limite de Romberg,
que consiste em:
1o) Efetuar k tentativas por Trapzios com hnovo =

h velho
, obtendo os T1, T2, ..., Tk.
2

2o) Considere que Ti = Ti , i = 1, ..., k


3o) Obter Ti j =

4 j Ti +j11 Ti j1
, j = 1, 2, ..., k 1
4j 1

Teorema (Romberg):
b

lim T = f ( x )dx
k

1
k

Exemplo: Efetuar

dx por Romberg, com k = 4 iniciando com h = 0,25.

Soluo:
h
h
h
h

2
4
8

1,7272219
1,7205186
1,7188411
1,7184216

1,7182841
1,7182819
1,7182818

1,7182818
1,7182818

1,7182818
212

b) Mtodo de Simpson
No mtodo dos Trapzios usamos dois pontos sucessivos para interpolar a
integranda com dois pontos sucessivos. No mtodo de Simpson usam-se trs pontos
sucessivos para interpolar y = f(x) por uma parbola P2(x).
b

Para efetuar I =

f (x )dx

por Simpson procede-se da seguinte maneira:

1o) Dividir [a,b] em n (par) partes iguais de comprimento h =

ba
;
n

2o) Para cada trs pontos sucessivos, (xi-1, yi-1), (xi, yi) e (xi+1, yi+1), igualmente espaados
com intervalo h = (xi-xi-1) = (xi+1 - xi), obter seu nico polinmio interpolador, por exemplo,
pelo Mtodo de Lagrange:

P2 ( x) = yi 1.

( x xi ).( x xi +1 )
( x xi 1 ).( x xi +1 )
( x xi 1 ).( x xi )
+ yi .
+ yi +1.
( xi 1 xi ).( xi 1 xi +1 )
( xi xi 1 ).( xi xi +1 )
( xi +1 xi 1 ).( xi +1 xi )

P2 ( x) = yi 1.

( x xi ).( x xi +1 )
( x xi 1 ).( x xi +1 )
( x xi 1 ).( x xi )
+ yi .
+ yi +1.
( h).(2h)
(h).( h)
(2h).(h)

3o) Pelo Teorema Fundamental do Clculo, integrando o interpolador polinomial P2(x):


xi +1

f ( x)dx

xi 1

xi +1

P ( x)dx = 3 [ y
h

i 1

4o) Da,

+ 4 yi + yi +1 ]

xi 1

f ( x )dx 3 [y
h

+ 4y 2 + y3 ] +

f ( x)dx 3 [( y
h

h
[y 3 + 4 y 4 + y 5 ] + L + h [y n 1 + 4 y n + y n +1 ]
3
3

+ y n +1 ) + 4( y 2 + y 4 + L + y n ) + 2( y 3 + y 5 + L + y n 1 )]

h
[E + 4.P + 2.IP]
3
n ( passo 2 )
n 1( passo 2 )

h
= y1 + 4 * yi + 2 * yi + yn+1 = S n
3
i=2
i =3

ALTERNATIVAMENTE a deduo de P2(x) pode ser:


---------------------------------------------------------------------------------------------------

Tomemos os dois primeiros intervalos (x0 , x1) e (x1 , x2).


Tem-se a tabela a seguir:
X x0

Y y0

x1 x2
y1 y2

onde: x1 x0 = h e

x2 x1 = h.

Vamos construir a parbola (do segundo grau) que passa pelos trs pontos dados
213

e, em seguir, vamos integrar essa parbola, achando a rea entre a curva e o eixo
de X.
Claro que essa rea no se altera se deslocamos o eixo de Y para a posio x =
x1 . Figura abaixo:
...
Ficamos com a tabela:
X -h

Y y0

0 +h
y1 y2

Seja Y = A X2 + B X + C a parbola que passa pelos trs pontos dados.


y0 = A (-h)2 + B (-h)
h) + C = A.h2 B.h + C

(eq. 1a)

y1 = A (02) + B(0) + C = C

(eq. 1b)

y2 = A (h)2 + B (h) + C = A.h2 + B.h + C

(eq. 1c)

Calculemos a integral da parbola de h a +h.


I1 = 2Ah3/3 + 2Ch = (2Ah2 + 6C) h/3 = (2Ah2 + 2C + 4C ) h/3
I1 = h/3. ((2Ah2 + 2C)) + 4C )
Porm, das equaes 1a, 1b e 1c acima, somado-se
somado se a primeira com a terceira,
tem-se:
y0 + y2 = 2Ah2 + 2C
da segunda equao, tem-se:
tem
y1 = C, logo
Logo:
I1 = h/3. ((2Ah2 + 2C) + 4C )
I1 = h/3. ((y0 +

y2 )+4.y1) = h/3 (y0 + 4 y1 + y2 )

Esta uma frmula simples que permite calcular a integral da parbola que
passa pelos 3 pontos
X -h

Y y0

0 +h
y1 y2
214

Se tomarmos esses 3 pontos e deslocarmos o eixo de y, paralelamente, a rea


sob a parbola no se altera, isto , a integral da parbola no muda.
Assim, dados trs pontos
X x0
x1 x2
Y y0 y1 y2
onde: x1 x0 = h e

x2 x1 = h, tem-se:

Voltando-se
se tabela total original, tem-se:
tem
X x0 = a x1 x2 ... xn-1 xn = b
Y y0
y1 y2 ... yn-1 yn

ou S n = y1 + 4 *
3

n ( passo 2 )

yi + 2 *

n 1( passo 2 )

i=2

y
i =3

+ y n +1

Esta a frmula de Simpson para clculo de integral definida.


--------------------------------------------------------------------------------------------------3

Exemplo: Efetue por Simpson

f (x )dx , onde f(x) dada por um software, conforme tabela:


0

i
xi
yi=f(xi)

1
0
4

2
0,5
6

3
1
7,5

4
1,5
8

5
2
5

6
2,5
3

7
3
2

Soluo:
215

Temos: h = xi+1 xi = 0,5; n = 6 (par)

Sn =
3

n ( passo 2 )
n 1( passo 2 )

h
y
+
4
*
y
+
2
*
yi + y n + 1

1
i

3
i=2
i =3

f (x )dx
0

0,5
[(4 + 2) + 4(6 + 8 + 3) + 2(7,5 + 5)] 16,5
3

Consideraes:
1a) Simpson, via de regra, fornece resultados mais precisos que Trapzios para um mesmo
esforo. Novamente exige um n timo, pelos mesmos motivos do Trapzios.
2a) Para se determinar um n timo pode-se:
i) Algebricamente, atravs do erro de truncamento total do Simpson, dado
por:

h 4 (b a ) f iv ( )
, [a, b]
180
No operacional por causa do desconhecido. Operacionalizando:
h 4 (b a )M
(* *) E S
, onde M = max f iv ( x )
180
x[ a , b ]
ES =

Exemplo: Determine o n timo para no cometer erro superior = 10-6 ao se


6

efetuar por Simpson

(1 + x)

dx .

Soluo:
f(x) = (1+x) f(x) = -(1+x) f(x) = 2(1+x)-3 f(x) = -6(1+x)-4
-1

-2

fiv(x) = 24(1+x)-5 fiv(1) =

24
24
=
5
32
(1 + 1)

h 4 .(5).0,75
h = 0,08323 n = 60
180
Aplicando em (* *)
180.32.10 6
h 4 .5.24
10 6
h4
h 4 48.10 6 h 0,0832358
180.32
120
5
n = = 60,07028... n = 60 (recomendado n = 64)
h

10-6

ii) Efetuar algumas tentativas sucessivas (hnovo = hvelho/2) e analisar o comportamento


dos resultados. No existe extrapolao para o mtodo de Simpson. Porm, existe e pode
ser aplicada a extrapolao de Aitken, que consiste em:
b

Se Si, Si+1 e Si+2 so trs aproximaes para I =


ento: S = Si + 2

(Si+ 2 Si+1 )

f (x )dx , obtidos por Simpson,


a

Si + 2 2Si +1 + Si

, que mais precisa que as trs que a geram.

Exemplo: Para

1 + x dx temos:

S1 = 39,874507
S2 = 39,77751
S3 = 39,77658
Aplicando em S temos:
216

S = 39,77658 -

0,000000864
S = 39,77657
0,096067

Onde S exata 39,77656.


3a) No fornece resultados de integrais imprprias.

4a) Quadratura Adaptativa


b

At o momento efetuamos I =

f (x )dx com h, depois

I f ( x )dx . Funciona
a

bem se f(x) uma funo bem comportada em [a,b], j se f(x) no for bem comportada
esta tcnica pode ser altamente ineficiente.

Dividir [a,b] em n subintervalos h1 =

Em cada subintervalo fazer:


-

ba
;
n

hi
h

f ( x i ) + 4f ( x i + i ) + f ( x i + h i )

6
2

h
Q i = i [f ( x i ) + 4f ( x i + h i 4 ) + 2f ( x i + h i 2 ) + 4f ( x i + 3 h i 4 ) + f ( x i + h ) ]
12
x i +1
h ..16
se Pi Q i < i
f ( x )dx = Q i
h a
xi

obter Pi =

seno h 2 =

h1
e retorna para obter Pi e Qi com h2.
2

217

7.1.2 Integrao Numrica Gaussiana


a

Considere que deseja-se efetuar I =

f (x )dx , onde:
b

com apenas dois (m=2) pontos de avaliaes de y = f(x), passando uma reta pelos extremos
dos intervalo, temos um Erro de Truncamento muito elevado, pois no mtodo de Newton
usamos um espaamento h constante. Por este motivo, Gauss props um mtodo de
aproximao, baseada em uma aproximao de f(x) por polinmios ortogonais de Legendre
de grau n=m-1, que minimizam o erro de truncamento e que integre de forma exata
polinmios de grau at 2m-1, calculados sobre m pontos escolhidos "adequadamente" de
modo a compensar os erros no clculo da rea abaixo da reta:
1o) Transformar x [a,b] em t [-1,+1] atravs de:

x(t ) =

ba
b+a
ba
.t +
dx =
dt
2
2
2

b+a
b a
b a b a
I = f ( x)dx =
f ( x(t ))dt =
f
.t +
1

dt

23
2
2
2
2

a
1
1 144
g (t )
42444
3
b

g (t )

m
1
1

f
(
x
(
t
))
dt
=
C ( m,k ) . f (b a)t ( m,k ) + (b + a) resultando em

1
2
2

k =1

2o) Calcular
b

I = f ( x )dx
a

(b a ) 1
2

f ( x (t )) dt =

(b a )
2

C
k =1

( m ,k )

1
1

. f (b a )t( m ,k ) + (b + a)
2
2

Onde C e t so parmetros fixos, independem da integranda y = f(x), e podem ser


encontrados na literatura para diversos nmeros m de pontos de avaliao de f(x).

218

m
1
2

Cm,k
c1 = 2

tm,k
t1 = 0

c1 = 1

t1 =-

c2 = 1
c1 = 5 9

t2 = +

c2 =

t1 = - 3 / 5
t2 = 0

c3 = 5 9
c1 = 0,34785485
c2 = 0,65214515
c3 = 0,65214515
c4 = 0,34785485
c1 = 0.23692689
c2 = 0.47862867
c3 = 0.56888888
c4 = 0.47862867
c5 = 0.23692689

t3 = + 3 / 5
t1 = -0,86113631
t2 = -0,33998104
t3 = +0,33998104
t4 = +0,86113631
t1 = -0.90617985
t2 = -0.53846931
t3 = +0.00000000
t4 = +0.53846931
t5 = +0.90617985

Valores de t e C para integrao de Gauss-Legendre,


Gauss
EM PRECISO DUPLA:
http://minerva.ufpel.edu.br/~rudi/grad/ModComp/MetNum/html/Apostilach3.html

Cmk

tmk

m=2
1

m=3
89
59

0.65214515486254614263
0.34785484513745385737

0.3399810435848562648
0.8611363115940525752

128225
0.47862867049936646804
0.23692688505618908751

0.00000000000000000000
0.53846931010568309104
0.90617984593866399280

0.46791393457269104739
0.36076157304813860757
0.17132449237917034504

0.23861918608319690863
0.66120938646626451366
0.93246951420315202781

5121225
0.38183005050511894495
0.27970539148927666790
0.129484966168869693271

0.00000000000000000000
0.40584515137739716691
0.74153118559939443986
0.94910791234275852453

m=4

m=5

m=6

m=7

Estes valores de tmk e Cmk podem calculados considerando que polinmios quaisquer de
grau at 2m-1,
1, para m pontos de avaliao, podem ser integrados por polinmios de grau
n=m-1, de forma exata:
:
1

k =1

g (t )dt = C

( m ,k )

.g (t ( m, k ) )
219

Para m=2 pontos, por exemplo, temos a aplicao de um polinmio de 1 grau n=2-1=1,
que integra polinmios g(t) de at 3 grau 2m-1=2.2-1=3, de forma exata, ento integra. P.
ex., g(t)=t0=1, g(t)=t1, g(t)=t2, g(t)=t3,

g (t )dt = C(m,k ) .g (t ( m,k ) ):

utilizando

k =1

1.dt = C(2,k ) .g (t (2,k ) ) => 2 = C ( 2,1) .1 + C ( 2,2) .1


1

1
1

k =1

g(t) = 1 =>

t.dt = C(2,k ) .g (t (2,k ) )

g(t) = t =>

g(t) = t2 =>
g(t) = t3 =>

=>

k =1

0 = C ( 2,1) .t ( 2,1) + C ( 2, 2) .t ( 2, 2)

2
2
2
t .dt = C(2,k ) .g (t (2,k ) ) => 2 / 3 = C(2,1) .(t (2,1) ) + C(2,2) .(t (2,2) )
1

1
1

k =1

k =1

3
3
3
t .dt = C( 2,k ) .g (t (2,k ) ) => 0 = C( 2,1) .(t (2,1) ) + C(2,2) .(t (2,2) )
2

Resolvendo este sistema no linear, pelo mtodo de Newton para x=[C21, C22, t21, t22],
conforme segue:

C ( 2 ,1) + C ( 2, 2 ) = 2
f 1 = x1 + x 2 2

f = x .x + x . x 0
1 3
2 4
C ( 2 ,1) .t ( 2,1) + C ( 2 , 2 ) .t ( 2, 2 ) = 0
2
=>

2
2
2
2
f 3 = x1 .( x 3 ) + x 2 .( x 4 ) 2 / 3
C ( 2 ,1) .(t ( 2 ,1) ) + C ( 2 , 2 ) .(t ( 2 , 2 ) ) = 2 / 3
f = x .x 3 + x .x 3 0
C .(t ) 3 + C .(t ) 3 = 0
1 3
2 4
4
( 2, 2 )
( 2, 2 )
( 2 ,1) ( 2 ,1)
Temos x=[C21, C22, t21, t22]:

C21 = 1.00000000 e t21 = 0.57735027


C22 = 1.00000000 e t22 = -0.57735027
Pela resoluo do sistema de 4 equaes no lineares, com f1=0, f2=0, f3=0 e f4=0 no
Octave, temos:
x = 1.00000 1.00000 0.57735 -0.57735

C21

C22

t21

t22

3o) O erro de truncamento mximo EG m desta integrao numrica para m pontos de


avaliao de f(x) dada por

E G m (b a ) 2 m +1

(m!) 4
Max f 2m (x) ,
3
(2m + 1)[(2m)!]

x [a; b]

lim EGm = 0
m

Exemplo:
Determine o nmero de pontos m mnimo para que o erro de truncamento mximo entre a
6

1
integral exata I= (1 + x ) dx e a aproximao por Gauss-Legendre seja inferior 10-6.

220

Soluo: Vamos calcular o erro EG m por tentativas, iniciando com:


m=6:

f(x) = (1+x)-1 f(x) = -(1+x)-2 f(x) = 2(1+x)-3 f(x) = -6(1+x)-4


fiv(x) = 24(1+x)-5 generalizando p derivado de ordem n temos
fn(x) = (-1)n . n! . (1+x)-(n+1)
Max|f2m| = f12(1) = (1) .
12

E G m (6 1) 2.6+1

12!
= 58472
(1 + 1) (12+1)

(6!) 4
Max f 2m (x) = 0,01342557
3
(2.6 + 1)[(2.6)!]

m=10:

20!
= 1,1601.1012
(1 + 1) ( 20+1)

20
Max|f2m| = f20(1) = (1) .

E G m (6 1) 2.10+1

(10!) 4
Max f 2m (x) = 0,00031719
(2.10 + 1)[(2.10)!]3

m=16:
Max|f2m| = f32(1) = (1) 32 .

E G m (6 1)

2.10 +1

32!
= 3,06325.10 25
(1 + 1) (32+1)

(10!) 4
Max f 2m (x) = 1,13669.10 -06
3
(2.10 + 1)[(2.10)!]

Note que necessrio apenas m=16 pontos (nossa tabela vai at m=5 pontos) no mtodo de GaussLegendre, que equivale a substituir f(x) por um polinmio de grau n=15, ou usar 15 subintervalos
entre o intervalo [a,b], enquanto nos mtodos de Simpson e Trapzios necessitvamos de n= 60 e
n=1614 subdivises do intervalo [a,b], respectivamente.
4

Exemplo: Efetue por Gauss I =

ln(x)dx , com m = 3.
1

Soluo:
Temos: f(x) = ln(x)
dx = 1,5dt
Assim,
1

i =1

x(t)= .(4-1).t+.(4+1)=1,5.t + 2,5


g(t) =f(x(t)) = ln(1,5.t + 2,5)

I = g (t )dt = ci g (ti )
I = c1 g (t1 ) + c2 g (t 2 ) + c3 g (t3 )
I=

.g (0.77459667) + 8 9 .g (0) + 5 9 .g (0.77459667)

I = 1,69739
I .(b-a). I = 1,5. 1,69739 = 2,54608
Iexata =

2,545177

Exemplo: Determine I =

1 + x dx

pelo mtodo de Gauss-Legendre com m=3 pontos:

221

a= 1
b= 6
m= 3

m
t(m,k)
C(m,k)
____________________________
3
-0.77459667 0.55555555
0.00000000 0.88888888
0.77459667 0.55555555
b

I = f ( x)dx =
a

Gm =

(b a ) .
2

(b a ) 1
2

C
k =1

( m ,k )

f ( x (t )) dt

. f ( xk ) =

(b a ) .

t(m,k)

(b a )
2

C
k =1

( m ,k )

1
1

. f (b a )t ( m ,k ) + (b + a ) = Gm
2
2

C
k =1

xk =

( m ,k )

. yk

ba
b+a
.t (m,k) +
2
2

yk = f (xk )

_________________________________________________________
1
-0.77459667
1.563508325
0.390090404719087
2
0.
3.5
0.222222222222222
3
0.77459667
5.436491675
0.155364140978245

(b a ) .[C

( 3 ,1) . f ( x1 ) + C ( 3 , 2 ) . f ( x 2 ) + C ( 3, 3 ) . f ( x3 )
2
(6 1) .[0,55555555 . 0,39009040 4719087 + 0,88888888 . 0,22222222 2222222 + 0,55555555 . 0,15536414 0978245 ]
Gm =
2
(
6 1)
Gm =
.[0,21671689 1510604 + 0,19753086 4197531 + 0,08631341 1654580545 ]
2
(6 1) .[0.50056116 736271645 ]
Gm =
2

Gm =

Gm = 1.25140291840679

Se determinarmos o Polinmio de grau n=2, que passa sobre os 3 pontos (xk,yk), teremos os
seguintes coeficientes: P2(x)=a0+a1.x+a2.x2
a0 = 0.599327, a1 = -0.154882 e a2 = 0.013468
222

P2(x)= 0.599327 -0.154882.x + 0.013468.x2


e se integrarmos o polinmio P2(x) entre a=1 e b=6, teremos Ip, que equivalente a Gm:
b

Ip = P2 ( x ).dx = (0,599327 - 0,154882.x + 0,013468.x 2 ).dx


Ip = 1.25140291813203 (Integrar P2(x) equivalente aplicar o somatrio de Gauss)
Gm= 1.25140291840679 (aplicar o somatrio de Gauss equivalente integrar P2(x))
Ie = 1.25276296849537 (Integral Exata demonstra que Ip e Gm so exatos at 3 dgito)
erroe = |Ie-Gm| = 0.00136005008857931 (erro exato acusa alteraes aps o 3 dgito)
errop = |Ie - Ip | = 0.00136005036333797 (erro exato acusa alteraes aps o 3 dgito)
Consideraes:
1a) Observando a expresso do EGm se comparado com o ESn nota-se que Gauss mais
preciso;
2a) Pelas suas caractersticas, Gauss mais estvel que Newton;
3a) Gauss no aplicvel se a integranda y = f(x) for uma tabela;
4a) Gauss fornece resultados pobres se y = f(x) possuir descontinuidades em [a,b];
3

dx
dx
dx
=
+
ex: I =
2x 1 2x 2 2x
1
5a) Gauss de natureza aberta, isto , a integranda no avaliada nos extremos a e b. Em
decorrncia disso:
b

Pode-se efetuar I =

f (x )dx com descontinuidades em a e b;


a

ln(x )dx :

Ex: Efetue I =

f(x) = ln(x)
g(t) = ln(0,5t + 0,5)

x = 0,5t + 0,5
m=3

ln xdx 0,94767237

(=

c g( t ) )
i

Pode-se efetuar integrais imprprias do tipo: I =

f (x )dx , fazendo:
a

y = 1/ x x =

f ( x)dx =
1/ a

dx =

y2

[a, ) ~ [ a ,0]

dy

a
f ( y)
f ( y)
dy
=
dy
2

2
y
y
0

Obs: Se a for zero a integral pode ser resolvida da seguinte forma:

= +

223

Captulo 9 Resoluo Numrica de Equaes Diferenciais Ordinrias

9.1 Introduo:
Equaes Diferenciais Ordinrias EDOs - ocorrem com muita freqncia na
modelao de fenmenos da natureza, como a taxa de variao da posio de um mvel x
como funo do tempo t e de sua acelerao a. No caso de acelerao a constante,
temos o movimento uniformemente variado, amplamente conhecido da Fsica, mas que
tambm pode ser modelado como a seguinte Equao Diferencial Ordinria de 1. Ordem e
suas condies iniciais:

d 2x
(t ) = a , onde a= acelerao
dt 2
dx
(0) = v0 , valor da velocidade inicial.
dt

x(0) = x0 , valor da posio inicial do mvel.


Neste caso a soluo da EDO acima obida por integrao direta:

d dx(t )
dx(t )
dx(t )
= a.t + C1

= a => d
= a.dt =>
dt
dt dt
dt
Integrando novamente teremos:

dx(t ) = (a.t + C1 ).dt =>

dx(t ) = (a.t + C ).dt

Aplicando as condies iniciais

=> x(t ) = a.t / 2 + C1 .t + C2


2

dx
(0) = v0 e x(0) = x0 , teremos
dt

x(t ) = a.t 2 / 2 + v0 .t + x0
H vrios mtodos que resolvem analiticamente uma equao destas, mas nem sempre
possvel obter-se esta soluo analtica, como a obtida acima.
Nestes casos, os mtodos numricos so a sada para se encontrar uma soluo
aproximada. Por exemplo, mesmo equaes diferenciais com aspecto simples como,
y= x+y

ou

y= 6y+x

no podem ser resolvidas em termos de funes elementares.


9.2 Problema de Valor Inicial:
Do clculo, se conhece a forma genrica com que se apresenta uma equao
diferencial ordinria de ordem n:

(8.1)

Onde

; n= 1,2,...,

224

Associada a eq.(8.1) deve haver um conjunto de condies para a varivel y, se tais


condies se referirem a um nico valor de x, tem-se um problema de valor inicial PVI.
Caso contrrio, tem-se um problema de valores de contorno PVC.
Numa primeira etapa do nosso estudo, estudaremos mtodos para resolver PVI de 1
ordem.

9.3 Mtodos baseados na Srie de Taylor:


Vamos resolver uma EDO de primeira ordem da forma:
(8.2)
Sujeita condio inicial

Suponhamos que a soluo da equao diferencial (8.2) seja dada por y = F(x)= ex
conforme figura abaixo,

Como conhecemos

, ento temos como calcular

Assim a reta r0(x) passa por (x0, y0), com coeficiente angular

, e podemos definir

.
Onde (x1-x0) o espaamento h entre dois pontos sucessivos, que permite calcular o
prximo ponto x1. O espaamento uniforme pode ser calculado como h=(b-a)/n, onde
x[a,b] e n o nmero total de subdivises do intervalo.

(8.3)
O raciocnio repetido com
assim sucessivamente. Generalizando, temos:

, para calcular o prximo ponto e

225

(8.4)
Ou y(k) = y(k-1) + h f(x (k-1), y(k-1)) e x(k) = x(k-1) + h, k=1,2,...n+1

(8.5)

Este o Mtodo de Euler Simples, que usa aproximaes de primeira ordem e toma
apenas os 2 primeiros termos da srie de Taylor.
Exemplo 1: Determine o valor de y em x = 1, com erro estimado inferior
considerando que y = x y + 2 e y(0) = 2.

a 10-6 ,

Vamos adotar (conforme (8.5) ) n = 8 nmero de subdivises (valor preliminar).


a=0
x(0) = 0
y(0) = 2 e f (x,y) = x y + 2
b=1
x(8) = 1
h = (1 0)/8 = 0,125
Obs.: considere x(n) = xn e y(n) = yn
y1 = y0 + h.f (x0,y0)
y1 = 2 + 0,125.(0-2+2) = 2
y2 = y1 + h.f (x1,y1)
y2 = 2 + 0,125.(0,125-2+2) = 2,015625 (...)
ponto inicial

ponto novo

K1=f(xk,yk)

0,000000000

0,125

2,000000000

0,12500

2,000000000

0,125000000

0,250

2,015625000

0,25000

2,015625000

0,234375000

0,375

2,044921875

0,37500

2,044921875

0,330078125

0,500

2,086181641

0,50000

2,086181641

0,413818359

0,625

2,137908936

0,62500

2,137908936

0,487091064

0,750

2,198795319

0,75000

2,198795319

0,551204681

0,875

2,267695904

0,87500

2,267695904

0,607304096

1,000

2,343608916

1,00000

2,343608916

y(0) = 2
y(1) ~ 2,34360
Qual o erro associado?
Se repetirmos todo o clculo com o dobro de sub-divises, n = 16, teremos um valor y(1)
com erros de truncamento muito inferiores, que pode ser considerado um valor exato
estimado:
h = (1-0)/16 = 0,0625
y1 = y0 + h. f(x0,y0)
y1 = 2 + 0.0625.(0-2+2)
y1 = 2
ponto inicial

y2 = 2 + 0,0625.(0,0625-2+2)
y2 = 2,00391

ponto novo

K1=f(xk,yk)

0,000000000 0,06250 2,000000000

0,06250

2,000000000

0,062500000 0,12500 2,003906250

0,12500

2,003906250

0,121093750 0,18750 2,011474609

226

0,18750

2,011474609

0,176025391 0,25000 2,022476196

0,25000

2,022476196

0,227523804 0,31250 2,036696434

0,31250

2,036696434

0,275803566 0,37500 2,053934157

0,37500

2,053934157

0,321065843 0,43750 2,074000772

0,43750

2,074000772

0,363499228 0,50000 2,096719474

0,50000

2,096719474

0,403280526 0,56250 2,121924507

0,56250

2,121924507

0,440575493 0,62500 2,149460475

10

0,62500

2,149460475

0,475539525 0,68750 2,179181695

11

0,68750

2,179181695

0,508318305 0,75000 2,210951589

12

0,75000

2,210951589

0,539048411 0,81250 2,244642115

13

0,81250

2,244642115

0,567857885 0,87500 2,280133233

14

0,87500

2,280133233

0,594866767 0,93750 2,317312406

15

0,93750

2,317312406

0,620187594 1,00000 2,356074130

16

1,00000

2,356074130

ErroExatoEstimado=

0,012465215

Assim, y(1) avaliado com duas exatides diferentes:


y(1) ~ 2,35610
(n = 16) pode ser considerado um valor exato estimado
y(1) ~ 2,34360
(n = 8)
Erro estimado = |y(1) n=16 - y(1)n=8| = 0,01250 > 10-6
Vamos buscar mtodos com maior exatido.
9.4 Mtodos de Runge-Kutta:
Os mtodos de Runge-Kutta so obtidos tomando mais termos nas sries de Taylor
para aproximar as solues das EDOs. Nesses mtodos, se cancelarmos os termos que
contm potncias de ordens maiores que p, ento esse mtodo de ordem p. O mtodo de
Euler Simples estudado anteriormente de primeira ordem (p=1), por que despreza os
termos de 2 e superiores.
Podemos dizer que os mtodos de Runge-Kutta de ordem p se caracterizam pelas
trs propriedades:
i)
so de passo simples (cada passo completo, no necessita de correes ou
iteraes internas);
ii)
no exigem o clculo de qualquer derivada de f(x,y); mas precisam calcular
f(x,y) em vrios pontos;
iii)
aps expandir f(x,y) por Taylor para funo de duas variveis em torno de
(xk,yk) e agrupar os termos semelhantes, sua expresso coincide com a do
mtodo de srie de Taylor de mesma ordem.
Mtodos de Runge-Kutta de 2 ordem
Exploramos inicialmente um mtodo particular que o mtodo de Euler
Aperfeioado, pois ele tem uma interpretao geomtrica bastante simples.
Conforme o prprio nome indica, este mtodo consiste em fazer mudanas no
mtodo de Euler para assim conseguir um mtodo de ordem mais elevada.
Graficamente o Mtodo de Euler Aperfeioado:

227

Dado o ponto inicial (xn,yn), supomos a situao ideal em que a curva desenhada com linha
cheia seja a soluo y(x) da nossa equao (isto s acontece mesmo no ponto incial (xn,yn).
Por (xn,yn) traamos a reta L1, definida por z1(x), cujo coeficiente angular
, ou seja,

Assim, dado o passo h,

do mtodo de Euler,

que chamamos aqui de


. Seja
Por P agora, traamos a reta L2, definida por z2(x), cujo coeficiente angular

A reta pontilhada Lo passa por P e tem por inclinao a mdia das inclinaes da
retas L1 e L2, ou seja, sua inclinao
A reta L passa por (xn,yn) e paralela reta Lo, ou seja, inclinao mdia no intervalo e
representada por:

O valor fornecido para yn+1 pelo mtodo de Euler Aperfeioado z(xn + h) = z(xn+1),
ou seja

Observamos que este mtodo de passo simples e s trabalha com clculos de


f(x,y), no envolvendo suas derivadas. Assim, para verificarmos que ele realmente um
mtodo de Runge-Kutta de 2 ordem, falta verificar se sua frmula concorda com a do
228

mtodo de srie de Taylor at os termos de 2 ordem em h:

No mtodo de Euler aperfeioado temos de trabalhar com


Desenvolvendo f(x,y) por Taylor em torno de (xn,yn), temos:

Ento o mtodo de Euler Aperfeioado fica:

Esta frmula concorda com a do mtodo de srie de Taylor at os termos de ordem


h2, provando assim ser um mtodo de Runge-Kutta de 2 ordem.
A forma geral dos mtodos de Runge-Kutta de 2 ordem
O mtodo Euler Aperfeioado um mtodo de Runge-Kutta de 2 ordem e podemos
pensar que ele pertence a uma classe mais geral de mtodos do tipo

que pode ser reescrito na forma:


229

Para o mtodo de Euler Aperfeioado,


a1 =

a2 =

b1 = 1

b2 = 1

Voltando ao nosso Exemplo 1, considerando agora o Mtodo de Runge-Kutta de 2 ordem,


temos:
y = x y +2

y(0) = 2
y(1) = ?

n=8
h = (1-0)/8 = 0,125

ponto inicial

ponto novo

K1=f(xk,yk)

K2=f(xk+h,yk+h*K1)

0,000000000

0,125000000

0,125

2,007812500

0,125

2,007812500

0,117187500

0,227539063

0,250

2,029357910

0,250

2,029357910

0,220642090

0,318061829

0,375

2,063026905

0,375

2,063026905

0,311973095

0,397976458

0,500

2,107398752

0,500

2,107398752

0,392601248

0,468526092

0,625

2,161219211

0,625

2,161219211

0,463780789

0,530808190

0,750

2,223381022

0,750

2,223381022

0,526618978

0,585791606

0,875

2,292906684

0,875

2,292906684

0,582093316

0,634331652

1,000

2,368933244

1,000

2,368933244

Agora com n = 16
ponto inicial

ponto novo

K1=f(xk,yk)

K2=f(xk+h,yk+h*K1)

0,000000000

0,062500000

0,063

2,001953125

0,063

2,001953125

0,060546875

0,119262695

0,125

2,007572174

0,125

2,007572174

0,117427826

0,172588587

0,188

2,016635187

0,188

2,016635187

0,170864813

0,222685762

0,250

2,028933642

0,250

2,028933642

0,221066358

0,269749710

0,313

2,044271645

0,313

2,044271645

0,268228355

0,313964083

0,375

2,062465158

0,375

2,062465158

0,312534842

0,355501414

0,438

2,083341291

0,438

2,083341291

0,354158709

0,394523789

0,500

2,106737619

0,500

2,106737619

0,393262381

0,431183482

0,563

2,132501553

0,563

2,132501553

0,429998447

0,465623544

0,625

2,160489740

10

0,625

2,160489740

0,464510260

0,497978369

0,688

2,190567509

11

0,688

2,190567509

0,496932491

0,528374210

0,750

2,222608344

12

0,750

2,222608344

0,527391656

0,556929678

0,813

2,256493386

13

0,813

2,256493386

0,556006614

0,583756201

0,875

2,292110974

14

0,875

2,292110974

0,582889026

0,608958462

0,938

2,329356208

15

0,938

2,329356208

0,608143792

0,632634805

1,000

2,368130539

16

1,000

2,368130539

230

ErroExatoEstimado=

y(1) ~ 2,36893
y(1) ~ 2,36813

0,000802705

n= 8
n= 16 (valor de referncia)

Erro estimando = 8.0 x 10-4 > 10-6


Vamos continuar buscando um mtodo com maior exatido.
Mtodo de Runge-Kutta de 4 ordem:
Aqui o truncamento da srie de Taylor ocorre no termo de 5 ordem (0(h5)) e tambm
conduz a mltiplas expresses, mas a mais popular a seguinte,

h
yi +1 = yi + .(K 1 + 2.K 2 + 2.K 3 + K 4 )
6
K1 = f ( xi ; yi )

K 2 = f ( xi + h / 2; yi + h / 2 * K1 )
K 3 = f ( xi + h / 2; yi + h / 2 * K 2 )
K 4 = f ( xi + h; yi + h * K 3 )
Voltando ao nosso Exemplo 1, considerando agora o Mtodo de Runge-Kutta de 4 ordem,
temos:
y = x y +2

y(0) = 2
y(1) = ?

n=8
h = (1-0)/8 = 0,125

ponto inicial

ponto novo

K1=f(xk,yk)

0,000000000

K2=f(xk+h/2,
yk+h/2*K1)
0,062500000

K3=f(xk+h/2,
yk+h/2*K2)
0,058593750

K4=f(xk+h,
x
y
yk+h*K3)
0,117675781 0,125 2,007497152

1 0,125 2,007497152 0,117502848

0,172658920

0,169211666

0,221351390 0,250 2,028801223

2 0,250 2,028801223 0,221198777

0,269873854

0,266831661

0,312844820 0,375 2,062289861

3 0,375 2,062289861 0,312710139

0,355665755

0,352981029

0,393587511 0,500 2,106531345

4 0,500 2,106531345 0,393468655

0,431376864

0,429007601

0,464842705 0,625 2,160262184

5 0,625 2,160262184 0,464737816

0,498191703

0,496100835

0,527725212 0,750 2,222367353

6 0,750 2,222367353 0,527632647

0,557155607

0,555310422

0,583218845 0,875 2,291862843

7 0,875 2,291862843 0,583137157

0,609191084

0,607562714

0,632191817 1,000 2,367880272

K2=f(xk+h/2,
yk+h/2*K1)

K3=f(xk+h/2,
yk+h/2*K2)

8 1,000 2,367880272

Agora com n = 16
ponto inicial

ponto novo
K4=f(xk+h,
yk+h*K3)

K1=f(xk,yk)

0,000000000

0,031250000

0,030273438

0,060607910 0,063 2,001913071

0,0625 2,001913071 0,060586929

0,089943588

0,089026192

0,117522792 0,125 2,007496917

0,1250 2,007496917 0,117503083

0,145081111

0,144219298

0,170989377 0,188 2,016529139

0,1875 2,016529139 0,170970861

0,196878022

0,196068423

0,221216585 0,250 2,028800809

231

0,2500 2,028800809 0,221199191

0,245536716

0,244776168

0,268400680 0,313 2,044115660

0,3125 2,044115660 0,268384340

0,291247330

0,290532861

0,312726037 0,375 2,062289313

0,3750 2,062289313 0,312710687

0,334188478

0,333517297

0,354365856 0,438 2,083148564

0,4375 2,083148564 0,354351436

0,374527953

0,373897437

0,393482846 0,500 2,106530700

0,5000 2,106530700 0,393469300

0,412423384

0,411831069

0,430229858 0,563 2,132282868

0,5625 2,132282868 0,430217132

0,448022847

0,447466418

0,464750481 0,625 2,160261473

10 0,6250 2,160261473 0,464738527

0,481465448

0,480942731

0,497179606 0,688 2,190331624

11 0,6875 2,190331624 0,497168376

0,512881864

0,512390817

0,527643950 0,750 2,222366600

12 0,7500 2,222366600 0,527633400

0,542394856

0,541933561

0,556262552 0,813 2,256247358

13 0,8125 2,256247358 0,556252642

0,570119747

0,569686400

0,583147242 0,875 2,291862069

14 0,8750 2,291862069 0,583137931

0,596164871

0,595757779

0,608403070 0,938 2,329105676

15 0,9375 2,329105676 0,608394324

0,620632002

0,620249574

0,632128726 1,000 2,367879490

16 1,0000 2,367879490

ErroExatoEstimado =

0,000000781

Os valores da Tabela esto aproximados, mas resolvendo no formato de varivel longa no


Octave possvel perceber o erro.
y(1) ~ 2.36788027192195
y(1) ~ 2.36787949045257

n=8
n = 16 (valor de referncia)

Erro estimado = 7.81469380761735 x 10-7 < 10-6


desejada em apenas n=8 sub-divises.

Problema Resolvido com exatido

Comparao com a soluo exata:


y = x y +2 => y +y = x +2 multiplicando um fator integrante u(x) em ambos os lados
temos:

dy
dy
+ y).u(x) = (x + 2).u(x) u(x) + u(x).y(x) = (x + 2).u(x)
dx
dx
Gostaramos que no lado esquerdo tivssemos apenas a derivada do produto
u(x).y(x). Ou seja que
(

d(u(x).y(x))
dy(x) du(x)
= u(x).
+
.y(x) fosse igual a
dx
dx
dx
dy(x)
u(x).
+ u(x) .y(x)
dx
Comparando termo a termo, o fator integrante, caso exista, deve satisfazer:
du(x)
= u(x)
dx
Resolvendo essa equao acima de variveis separveis, temos:
du(x)
du(x)
= dx =>
= dx ln(u(x))=x+C, escolhendo C=0 teremos =>
u(x)
u(x)

u(x) = ex ,
Substituindo o nosso fator integrante u(x), temos que
232

dy
dy
d(e x .y(x))
+ y).e x = e x . + e x .y =
, assim podemos trocar o termo
dx
dx
dx
dy
d(e x .y(x))
( + y).ex por
e a nossa EDO fica:
dx
dx
(

dy
d(e x .y(x))
d(e x .y(x))
x
x
( + y).e =
= (x + 2).e
= (x + 2).e x
dx
dx
dx
Integrando

d(e .y(x)) = (x + 2).e .dx e .y(x) = x .e .dx + 2.e .dx , integrando


u.dv = u.v v.du x .(e .dx) = x.e e .1.dx x .e .dx = x.e e
x .e .dx = ( x 1).e e
ento
2.e .dx = 2.e
e .y(x) = x .e .dx + 2.e .dx
x

por partes

ex .y(x) = ( x 1).e x + 2.ex + c = ( x + 1).ex + c , pois verificamos que


d
(( x + 1).e x ) = ((1).ex + ( x + 1).ex ) = (1.ex + x.ex + 1.e-x ) = ( x + 2).e x
dx
Logo,

ex .y(x) = ( x + 1).ex + c y(x) = ( x + 1) + c.e x , aplicando a condio inicial y(0) = 2


y(x = 0) = (0 + 1) + c.e0 = 2 c = 1
y(x) = ( x + 1) + e x Soluo exata
Assim,
1
ye= y(x = 1) = (1 + 1) + e = 2,36787944117144 Valor exato de y em x=1
ye = 2,36787944117144
Valor exato
y(1) ~ 2,36788027192195
n = 8 => Erro exato = 8,3075.10-7
y(1) ~ 2,36787949045257
n = 16 => Erro exato = 4,9281.10-8
Observe que com Mtodo de Runge-Kutta de 4 ordem e n=8 subdivises, temos Erro
estimado = 7.81469380761735 x 10-7 (obtido comparativamente com os resultados de n=16
subdivises), enquanto o Erro exato = 8,3075.10-7, ou seja, o erro estimado da mesma
ordem do erro exato.

Sistemas de EDOs:
Exemplo:
Equao Diferencial Ordinaria (EDO) de 2a. Ordem, reduzida ao um sistema de 2 EDOs de
1 ordem;
y''-4y'+4y=8t^2-16t+4;
y(0)=0;
y'(0)=1;
Como podemos resolver apenas uma EDO por vez, com a nossa metodologia, podemos
transformar uma EDO de 2. ordem em 2 sistemas de EDOs de 1. ordem,m com a
seguinte mudana de variveis:
y1(t)=y(t) -> y1'(t)=y'(t)=y2(t)
y1'(t)=z1(t,y1,y2)=y2;
233

y1(0)=y(0)=0
y2(t)=y'(t) -> y2'(t)=y''(t)=+4y'-4y+8t^2-16t+4
y2'(t)=z2(x,y1,y2)=+4y2-4y1+8x^2-16x+4 ;
y2(0)=y'(0)=1
Resultando em 2 EDOs com 2 condies iniciais:
y1'(t)=z1(t,y1,y2)=y2;
y1(0)=y(0)=0
y2'(t)=z2(x,y1,y2)=+4y2-4y1+8x^2-16x+4 ;
y2(0)=y'(0)=1
E resolvemos as 2 EDOs simultaneamente, pois uma depende da outra, atravs de uma
algoritmo como que segue:

a=0 % Valor inicial de x


b=1 % Valor final de x
n=8 % Numero de subdivises do intervalor [a,b]
h=(b-a)/n % espacamento em x
% Condio Inicial:
x(1) =a % Valor inicial de x
y1(1)=0; % Valor inicial de y1
y2(1)=1; % Valor inicial de y2
ye(1)=y1(1);
%[0 x y1 y2 y1]
for k=1:n
K1z1=z1(x(k),
y1(k),
y2(k)
);
K1z2=z2(x(k),
y1(k),
y2(k)
);
K2z1=z1(x(k)+0.5*h,y1(k)+0.5*h*K11,y2(k)+0.5*h*K12);
K2z2=z2(x(k)+0.5*h,y1(k)+0.5*h*K11,y2(k)+0.5*h*K12);
K3z1=z1(x(k)+0.5*h,y1(k)+0.5*h*K21,y2(k)+0.5*h*K22);
K3z2=z2(x(k)+0.5*h,y1(k)+0.5*h*K21,y2(k)+0.5*h*K22);
K4z1=z1(x(k)+h,
K4z2=z2(x(k)+h,

y1(k)+h*K31,
y1(k)+h*K31,

y2(k)+h*K32
y2(k)+h*K32

);
);

x(k+1)=x(k)+h;
y1(k+1)=y1(k)+(h/6)*(K1z1+2*(K2z1+K3z1)+K4z1);
y2(k+1)=y2(k)+(h/6)*(K1z2+2*(K2z2+K3z2)+K4z2);
ye(k+1)=2*x(k+1)*x(k+1)+x(k+1)*exp(2*x(k+1));
[x(k+1) K1z1 K1z2 K2z1 K2z2 K3z1 K3z2 K4z1 K4z2 y1(k+1) y2(k+1) ye(k+1)]
end
erroexato=abs(ye(n+1)-y1(n+1))
plot(x,ye,'*',x,y1,'r')

234

You might also like