Академический Документы
Профессиональный Документы
Культура Документы
e-mail: sergio.peters@ufsc.br
Florianópolis, 2014.
1
1. SISTEMAS DE NUMERAÇÃO
1.1 - INTRODUÇÃO
Ex. 1: X=(309,57)10
Para fins de uso algébrico X pode também ser representado na forma fatorada equivalente:
k n
Xβ = ∑ a iβ k −i
+ ∑ a k + jβ − j
i =1 j=1
(2)
O sistema decimal de numeração, adotado pela maioria dos países, foi desenvolvido
pelos astronômos hindus por volta do século V e divulgado ao mundo islâmico em 825 no livro do
matemático Alkhawarismi e definitivamente adotado no ocidente no século XVI. Sua aceitação como
padrão deve-se a algumas de suas características tais como:
i). Utiliza dez símbolos, dígitos (digitus = dedo em latim) ou algarismos (curruptela lógica de
Alkhawarismi). Tais símbolos atualmente são representados por: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9,
conhecidos por algarismos arábicos, que são derivados da versão ainda hoje usada no
mundo muçulmano:
٩, ٨, ٧, ٦, ٥, ٤, ٣, ٢, ١, ٠
Historicamente estes números tem diversas hipóteses sobre sua origem::
a) Número de ângulos existentes no desenho de cada algarismo;
b) Número de traços contidos no desenho de cada algarismo;
c) Número de pontos de cada algarismo;
d) Número de diâmetros e arcos de circunferência contidos no desenho de cada algarismo;
e) Figuras desenhadas a partir dos traços de um quadrado e suas diagonais.
2
ii). Faz uso do zero. O zero, aceito com muita relutância, é o indicador da ausência de certas
potências da base na representação de um número na forma fatorada;
iii). Adota o princípio da posicionalidade. No sistema posicional o valor de cada símbolo é relativo, isto
é, depende da sua posição no número.
Fazendo uso apenas dos símbolos 0 e 1, também chamados de bits (abreviatura de binary
digits); do zero e da posicionalidade, gera-se um novo sistema de numeração cuja correspondência
com o decimal será:
Decimal 0 1 2 3 4 5 6 7 8 9 10 . 19 .
Binário 0 1 10 11 100 101 110 111 1000 1001 1010 . 10011 .
Obs.: A forma fatorada do número binário (base 2) está representada na base 10.
(i). Simplicidade de representação física, bastam 2 estados distintos de uma máquina digital para
representar os dígitos da base: 0 = - , off
1 = + , on
Obs.: No futuro poderá se chegar a distinção de bits através dos atomos, que é a concepção do
computador quântico (quantum-bits, ou qubits).
Ex. 5: Adição:
+ : ℜxℜ → ℜ
(x,y) → x + y definida por:
0+0=0
0+1=1
1+0=1
1 + 1 = 10
(i). Número reduzido de símbolos para representar grandes quantidades, por isso é um sistema de
numeração interessante para visualização e armazenamento de dados. Os registros binários internos
de uma máquina digital são convertidos de forma direta para Hexadecimal quando são necessárias
visualizações externas, requisitadas pelo usuário.
As conversões entre bases são necessárias para que se possa melhor entender algumas das
causas dos erros existentes nas representações digitais de quantidades, pois o homem utiliza o
sistema decimal e os computadores as convertem para bases binária, hexadecimal, ou outra.
Nestes casos as conversões são obtidas escrevendo o respectivo número na sua forma
fatorada, representada na base decimal.
_
(17,5)10 = ((i),(ii))β
Procedimento de conversão:
= (0,00001)2
Ex. 12: (0,1)10 = ( )2
5
0,1 0,2 0,4 0,8 0,6 0,2 0,4 0,8 0,6 0,2
x 2 x2 x 2 x2 x2 x2 x2 x2 x2 x2
0,2 0,4 0,8 1,6 1,2 0,4 0,8 1,6 1,2 0,4
0 0 0 1 1 0 0 1 1 0 ...
(0,00011 0011...)2
dízima periódica ↵
Então: (0,1)10 = (0,00011001100110011...)2 ≅ (0,0001100110011)2 ≅ 2 .(1,100110011)2 ≅
-4
Devemos notar neste exemplo que, na conversão das bases, parte dos dígitos da
representação binária são descartados, por limitação do número de dígitos representáveis, o que
gera um erro de arredondamento.
Exercícios:
a) (10,57)10 = ( )2
b) (10,1011)2 = ( )10
c) (513,98)10 = ( )16
d) (A,0F)16 = ( )10
Início
leia n
x = 1/n
Para i = 1 até 100
x = (n + 1) x - 1
imprimir i , x
Fim para
Fim
1.3 - Existe uma base onde todo racional tem representação finita, de acordo com George Cantor
(1869) “todo racional tem representação finita na base fatorial”.
Lembre-se que:
Note que nos exercícios (ii), (iii) e (iv) tem-se representações exatas de números racionais,
que na base decimal são dízimas periódicas.
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
logo
3x161 + 1x16 + 4x16 = (31,4)16
Obs.: Nas conversões diretas entre as bases binária e hexadecimal (ou entre as bases binária e
octal), não há perda de dígitos (arredondamento). Mas nas conversões de base decimal para base
7
binária, ou para base hexadecimal, ou para base octal, podemos perder dígitos significativos. Por
exemplo:
Assim,
(17,3)10 = (11,4CCCC...)16 ≅ (11,4CC)16 (5 significativos)
≅ (17,296875)10
Exercícios:
Obs.: Verifique se houve perda de dígitos significativos em alguma das conversões, considerando um
número limitado de dígitos representáveis.
8
2. REPRESENTAÇÃO DIGITAL DE NÚMEROS:
2.1. - INTRODUÇÃO
(iii). Seria necessário mais uma posição para o sinal (s), para as representações de negativos,
totalizando 200 posições em cada registro:
s
100 posições para a parte inteira 99 posições para a parte fracionária
Por outro lado, em uma representação em Ponto Flutuante, esta calculadora científica
funciona com pouco mais de dez dígitos, incluindo posições reservadas ao expoente.
Então, em uma representação em Ponto Flutuante, onde a vírgula flutua segundo um certo
padrão, temos a seguinte representação genérica na base β:
Obs.: É necessário algum tipo de normalização para padronização da mantissa, no caso adota-se d1
≠ 0.
9
2.2. - PADRÃO 16 BITS
Convenciona-se que:
• Se s1 = 0 → número positivo.
• Se s1 = 1 → número negativo.
• s2 idem.
No registro total tem-se:
0 1 0 1 0 1 1 0 0 0 0 0 0 0 1 1
0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1
Lembre-se de que toda representação na máquina de 16 bits usa normalização com
padrão d1 ≠ 0.
0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1
M.P. = +(0,1111111111)2 . 215 = (2-1 + 2-2 + 2-3 + ... + 2-10 ) . 215 = (32736)10 ≅ (1 . 215)
Obs.: Os limites de representação dos números negativos são simétricos aos limites positivos
apresentados.
10
Na reta real temos a seguinte representação para F(2, 10, -15, +15):
c) Representação do zero:
0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
expoente mínimo
Devemos lembrar que este é o único número escrito não 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.
a = 0,1350 . 10-3
b = 0,0000 . 100
a = 0,000135 . 100
b = 0,0000 . 100
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 máquina digital representa corretamente o elemento
neutro da operação de adição.
11
d). Número máximo de elementos representáveis:
Ex. 20: Representar os dois primeiros números positivos do sistema F(2, 10, -15, +15)
1º positivo -
0 10... 0 1 1111
= (0,0000152587)10
2º positivo -
0 10... 0 1 1 1111
= (0,0000152885)10
Ex. 21: Caso uma operação aritmética gere o número (0,00001527)10, como ele será representado?
Como o valor acima não tem representação binária exata, ele será representado pelo valor discreto
mais próximo, no caso (0,0000152587)10 que é o menor positivo representável (mp).
NC = (β - 1) . βt - 1
Ex. 24: Em F(10, 10, -99, +99) (calculadora científica comum) temos:
NF = 2 . (10 - 1) . (99 - (- 99) + 1) . 1010-1 + 1
= 3,582 . 1012 elementos
12
e). Polarização na Representação em Ponto Flutuante
Ex. 25: Na máquina de 16 bits F(2, 10, -15, 15) podemos usar uma polarização 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 têm agora o mesmo sinal, (+), podemos usar todos os registros binários
reservados ao expoente, inclusive a posição do sinal, para representar o expoente polarizado (sem o
sinal). Assim, os limites polarizados do expoente são:
I = (00000)2 = (0)10
S = (11110)2 = (30)10
Podemos aqui aproveitar melhor os 5 bits reservados ao expoente tomando o maior valor
possível, adotando S = (11111)2 = (31)10.
Na forma polarizada qualquer número v representado nesta máquina deverá seguir a forma
abaixo:
0 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0
Outra otimização adotada no padrão IEEE 754 foi o não armazenamento do primeiro bit da mantissa,
que é sempre unitário, ou seja, usa-se a representação implícita do primeiro bit e abre-se uma
posição binária para armazenamento de um novo bit:
exp – 15
v = (-1)s . (1, mantissa)2 .2
Exercícios:
2.1 - Na máquina F(2, 3, -3, +3) com d1≠0 (não polarizada) calcule:
14
2.3). Precisão versus Exatidão
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 precisão decimal equivalente da máquina 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 dígitos (ou seja, pode representar entre 3 e 4 dígitos)
Assim, esta última máquina tem entre 8 e 9 dígitos significativos equivalentes. Isto não
significa que todas as frações decimais de 8 dígitos possam ser representadas precisamente em 27
bits, visto que a representação é discreta (com espaços vazios entre dois números consecutivos) e
nem todas as frações decimais têm representação binária finita. Isto significa que todos as
representações binárias da máquina estão “corretas” para 8 dígitos significativos na base 10, ou seja,
apresentam decimais equivalentes com pelo menos 8 dígitos corretos.
- EXATIDÃO: conceito relacionado com a forma que melhor representa uma grandeza numérica, ou
seja, uma representação é mais exata quando tem o menor desvio (erro) em relação ao valor exato.
Obs.: Note que se fossemos classificar o números acima quanto a exatidão teríamos o seguinte:
a) é mais exato que (b) (ou seja, (a) está mais próximo de π do que (b));
b) é menos exato que (c);
c) é mais exato que (a).
15
3 – REPRESENTAÇÃO NUMÉRICA SEGUNDO O PADRÃO IEEE 754 (1985)
1 8 23
s e f
msb lsb msb lsb
onde
s = 0 ⇒ v positivo e s = 1 ⇒ v negativo
e = expoente
f = mantissa
polarização = (127)10 = 27 - 1 = (01111111)2
msb = bit mais significativo e lsb = bit menos significativo
Obs.:
(i). A representação destes registros binários em computadores digitais é feita em grupos de bytes (8
bits) escritos de forma invertida (de traz para frente) em relação ao esquema binário 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 representação para a fração 1/10, que representada na
variável SINGLE do Pascal gera:
Esta deve ser interpretada na forma de bytes em ordem invertida, para compor o registro
binário correspondente. Para obter este registro procede-se da seguinte forma:
3D CC CC CD
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 - representação 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 (0<e<255)
f = (10011001100110011001101) 2
e). Para representar (0,10)10 na base binária no padrão IEEE de 32 bits temos duas possibilidades:
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
s e f
e.2). Converter (0,10)10 diretamente para o padrão 32 bits, considerando 0 < e < 255:
(e.2.2). Considerando que ainda temos 2 incógnitas, ‘e’ e ‘f’, vamos considerar o valor Mínimo de ‘f’,
f = 0, e calcular ‘e’:
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 = (1,6)10 => (1,f deve ser um número entre 1 e 2, se 'e' foi escolhido corretamente)
Resumindo:
s=0
e = (123) 10 = (01111011)2
(1,f)2 ≅ (1,10011001100110011001101)2
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
s e f
(ii). Note que a normalização da mantissa é uma otimização decorrente da normalização aplicada na
máquina de 16 bits. No caso de máquinas binárias o primeiro dígito significativo não nulo é sempre o
bit unitário, então não é necessário reservar um registro para armazenar sempre o mesmo valor.
Assim, adotou-se a normalização padrão IEEE com um bit unitário antes da vírgula, que não é
armazenado na memória dos computadores. Armazena-se a partir do 2º bit significativo.
(iii). Na representação específica dos primeiros valores positivos (e negativos) adotou-se uma
flexibilização da normalização, permitindo mantissas com primeiro(s) dígito(s) nulo, o que gerou uma
diminuição da região de underflow.
s = 0
e = 00000000
f = 00000000000000000000000
i). Representação 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 - representação 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 - representação em hexadecimal)
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 - representação em hexadecimal)
1 11 52
s e f
msb lsb msb lsb
onde
polarização = (1023) 10 = 210 - 1 = (01111111111)2
1 15 1 63
s e i f
msb lsb msb lsb
onde
polarização = (16383) 10 = 214 - 1 = (011111111111111)2
• Se 0 < e < 32767, então v = (-1)s . 2(e-16383) . (i,f) 2(onde i pode assumir 0 ou 1)
(se e = 0 ⇒ i = 1)
• Se e = 32767 e f = 0, então v pertence a região de overflow.
19
Padrão: 6 bytes ou 48 bits (precisão de 12 a 13 dígitos significativos equivalentes).
1 39 8
s f e
msb lsb msb lsb
onde
polarização = (129) 10 = 27 + 1 = (10000001)2
Ex. 41: Simulação do algoritmo para avaliação da precisão decimal equivalente de uma variável.
p1=1
repita
p1=p1/2
p2=1+p1
até p2=1
Devemos ressaltar que no caso da operação soma os expoentes devem estar alinhados pelo maior
expoente para que a soma possa ocorrer, independentemente da normalização da representação em
ponto flutuante (vide cap. 3). Assim,
e = (01111111) 2 = (127) 10
i). Representação da unidade: 1 =
f = 00000000000000000000000
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 - representação em hexadecimal)
ii). Representação do menor número (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 aritmético
e portanto o expoente de p1 deve ser o mesmo da representação da unidade):
20
P1 = (-1)0 . 2 (104-127) . (1,00000000000000000000000)2 - valor normalizado
e = (01101000) 2 = (104)10
P1 = f = 00000000000000000000000
0 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 - representação em hexadecimal)
Após a 23a divisão de P1=1 por 2, P1 representará um número desprezível na soma frente a
unidade, pois 1 + P1 = 1.
Exercícios:
4.1). a). Avalie as regiões de underflow e overflow de cada uma das variáveis apresentadas acima
e faça uma verificação em um compilador Pascal ou C;
b). Avalie a precisão decimal equivalente de cada variável, através da fórmula de
equivalência;
21
4.5). REPRESENTAÇÃO DE VARIÁVEIS INTEIRAS
Os formatos para representação de variáveis do tipo inteiras podem seguir diversos padrões:
4.5.1). Shortint: são tipos inteiros limitados aos valores - 12810 e + 12710, sua representação interna
é feita em forma de byte (8 bits) com bit de sinal. Valores negativos são armazenados em forma de
complemento de dois.
Ex. 43: Se for efetuada a operação de adição entre + 12710 e -12710, em forma de complemento e
dois, tem-se:
+ 127 01111111
− 127 10000001
00000000
4.5.2). byte: são tipos inteiros sem bit de sinal (não permite armazenar negativos). Estão limitados
aos valores 0 e 255.
4.5.3). Integer: são tipos inteiros limitados à faixa entre - 32768 e + 32767, correspondendo ao
armazenamento como 2 bytes com bit de sinal ("negativos" são armazenados em forma de
complemento de dois).
Ex. 45:
Zero 010 = 0000 0000 0000 0000 = 000016
Agora observe o que acontece se for executada a soma da 'unidade' com o 'maior positivo' da
variável Integer 3276710, ou seja, estamos calculando um número na região de overflow:
4.5.4). Word: armazenamento de 2 bytes sem bit de sinal limitado a faixa entre 0 e 65535.
Obs.: Note que a representação de números inteiros acima do limite superior acarreta uma grande
perda de significação, cuja representação 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
Observe novamente que se for executada a soma da 'unidade' com o 'maior positivo' da variável
Longint 214747364710, estaremos calculando um número na região de overflow da variável
Longint:
Unidade 110 = 0000 0000 0000 0000 0000 0000 0000 00012 = 00 00 00 0116
+
Maior Positivo +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 número 'negativo' armazenado:
23
Obs.: Note que o armazenamento de inteiros negativos é sempre feito em forma de complemento de
dois. Isto é uma vantagem do ponto de vista de operações aritméticas, pois o carregamento na
unidade aritmética já está na sua forma final com expoentes iguais (alinhados) para efetuar as
operações de adição (ou subtração). Note que isto só é possível, pois os expoentes equivalentes na
notação de Tipos Inteiros são todos iguais a zero.
São aqueles existentes nos dados de entrada de um software numérico. Decorre, por
exemplo, de medições experimentais, de outras simulações numéricas, ...
x x2 x3 xn
ex = 1+ + + + ... + + ...
1! 2! 3! n!
Sabe-se que não é possível usar infinitos termos para avaliar uma função, então é necessário
estabelecer um limite para o número de parcelas utilizadas. Esta limitação nas parcelas gera um erro
de truncamento na série, que corresponde ao somatório dos termos abandonados.
É possível representar, de forma exata, uma função f(x) em um ponto qualquer x0+x a partir
de sua representação em x0, através de expansão em Séries 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 função, por exemplo, em torno de x0 = 0 (quando x0=0, temos o caso particular
da série 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
f ( x 0 = 0) = e0 = 1
n
Gerando então,
x x 2 x3 xn
f (0 + x ) = e x + 0 = 1 + + + + ... + + O( x ( n +1) )
1! 2! 3! n!
x n +1 x n+2
x
Se aproximamos e com 'n' termos, estamos desprezando O( x ( n +1) ) = + + ...
(n + 1)! ( n + 2)!
x x2 x3 xn
ex ≅ 1+ + + + ... +
1! 2! 3! n!
( n +1)
Assim, o termo O( x ) caracteriza o Erro de Truncamento da aproximação, lembrando que x,
nesse caso, representa o incremento de x entre o ponto inicial x0 e o novo ponto x0+x.
f ( x + h) − f ( x)
f ' ( x) = lim
h →0 h
Porém, se este limite exato não puder ser obtido, pode-se promover uma aproximação
numérica deste, tomando o incremento h como finito e promovendo sucessivos refinamentos. Assim,
pode-se obter uma seqüência de aproximações sucessivas de f'(x), com incremento cada vez menor,
mas não se pode chegar ao incremento nulo (h → 0). Então, também se quebra o processo
matemático, de refinamentos sucessivos, gerando um erro de truncamento do processo, que era
matematicamente infinito, tornando-o finito.
h2 h3 h4 hn
f ( x 0 + h) = f ( x 0 ) + f '( x 0 ) h + f ''( x 0 ) + f '''( x 0 ) + f ( x 0 ) +...+ f ( x 0 )
iv n
2! 3! 4! n!
-
h2 h3 h4 hn
f ( x 0 − h) = f ( x 0 ) − f '( x 0 ) h + f ''( x 0 ) − f '''( x 0 ) + f ( x 0 ) −...+ f ( x 0 )
iv n
2! 3! 4! n!
_______________________________________________________________________
h3 h4
f ( x 0 + h) − f ( x 0 − h) = f ' ( x 0 )( 2 h) + 2. f ' ' ' ( x 0 ) + 2. f ( x 0 )
IV
+...
3! 4!
25
f ( x 0 + h) − f ( x 0 − h ) 1 h3 1 V h5
f ' (x 0 ) = − . f ' ' ' (x0 ) − . f ( x 0 ) +...
2h h 3! h 5!
f ( x 0 + h) − f ( x 0 − h)
f ' (x 0 ) = − O( h 2 )
2h
2
onde o termo de segunda ordem O( h ) representa o somatório de todos os termos decorrentes da
aproximação em série, e é definido como Erro de Truncamento da aproximação.
h2 h4
O( h ) = f ' ' ' ( x 0 )
2
+ f ( x 0 ) +...
V
3! 5!
f ( x 0 + h) − f ( x 0 − h)
f ' (x0 ) ≅
e 2h
Ocorrem quando são desprezados os últimos dígitos que, ou não são fisicamente
significativos na representação numérica, ou estão além da capacidade de armazenamento na
máquina digital.
No caso específico de parcelas descartadas iguais a 5, tem-se um impasse que deve também
ser decidido estatisticamente. Nestes casos também 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 dígitos indesejados, sem nenhuma atualização no dígito anterior, e segundo grupo,
com parcela anterior impar, atualiza-se este dígito adicionando-lhe uma unidade. Também nesta
situação procurou-se distribuir estatisticamente o erro devido as parcelas descartadas.
O arredondamento também pode ser feito por cancelamento puro, onde a parte indesejada
26
do número é simplesmente cancelada, independente do seu valor, assumindo um erro de
arredondamento global para valores menores em todos os elementos de um conjunto de números.
Ex. 52: Representar a fração (1/3)10 em F(10,6,-99,+99) (normalização: vírgula antes do 1º dígito).
1 1
= = (0,00011001100110011...) 2
10 10 1010 2
⇒ dízima periódica em base binária
(1 / 10)10 = (0,11001100110011
14243 ...) 2 .2 −3
t = 10
1
≅
10 10
(0,1100110011)2.2-3
Obs.: Note que uma fração decimal exata (1/10 = 0,1) quando armazenada em uma máquina binária
se transforma em uma fração binária periódica, que deve ser aproximada devido à limitação do
registro em ponto flutuante utilizado no armazenamento.
N - Naturais
Z - Inteiros
Q - Racionais
I - Irracionais
R - Reais
C - Complexos
Obs.: Existem representações que generalizam todos os números como complexos, de modo
que um complexo com parte imaginária 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
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
a = (0,1001)2 . 22
b =(0,0001010)2 . 22
a + b = (0,1010)2 . 22
Obs.: Estes fatos ocorrem, geralmente, na soma de números com potências muito diferentes. Neste
caso o número de menor potência pode perder significação, total ou parcial, frente ao número de
maior potência. Ou seja, devido a faixa limitada de abrangência dos registradores em ponto flutuante,
o número menor perde dígitos significativos quando comparado com o número maior.
Conseqüências:
Esta é uma conseqüência de erros de arredondamento, que gera perda, total ou parcial, de
dígitos significativos.
Esta perda de dígitos significativos pode ocorrer nos seguintes casos:
a = 0,1351
- b = - 0,1369
a - b = - 0,0018 = - 0,1800.10-2
Note que o resultado final não sofreu arredondamentos, mas perdeu dígitos significativos,
pois as parcelas a e b tem quatro dígitos significativos e a subtração a - b tem apenas dois dígitos
significativos.
Obs.: A expressão de Baskara, para a solução exata da equação de segundo grau, muitas vezes,
aparece expressa de forma alternativa para minimizar perdas de significação:
− b ± b2 − 4ac
x1, 2 =
2a (Formula de Baskara)
29
− 2c
x1,2 =
b ± b 2 − 4ac (Fórmula obtida da racionalização do numerador da expressão
anterior)
Pode-se observar que as duas formas formas apresentadas para a solução podem
radicando de modo que as parcelas b e b − 4ac fiquem sujeitas a operação de adição nas duas
2
Exercícios:
Em geral, nas operações de divisão entre duas parcelas quaisquer, normalmente, são
gerados resultados com um número de dígitos maior que o permitido na representação em ponto
flutuante.
A avaliação sucessiva de x = f(x) com f(x) = (N+1) x - 1 ⇒ é uma constante ∀ x=1/N (na
ausência de arredondamentos)
27985
f (x) =
Ex. 60: Dada a função 9 ,1 − x 2
Avalie f(x) em x = 3 e em x = 3,00001 utilizando uma calculadora científica com
representação de 10 dígitos.
f(3) = 279850
f(3.00001) = 280018,0108
30
Note que uma variação de 0,0003333% na variável independente x gera uma variação de
0,06% no resultado final de f(x), ou seja, uma variação no resultado de cerca de 180 vezes superior.
Isto carateriza uma instabilidade intrínseca do modelo matemático em relação aos seus dados de
entrada.
Ex. 61: Avaliar f(x) = 1 - cos(x) para x = 10-4 (radianos), na mesma calculadora científica (10 dígitos).
g(10-4) = 5 . 10-5
Note que devido a perda de dígitos significativos por arredondamento, duas representações
idênticas da mesma função geram respostas diferentes. Neste caso, também tem-se um exemplo de
instabilidade do modelo, porém neste exemplo específico, se tem a possibilidade de reformular a sua
representação, gerando uma forma com menor perda de significação (g(x)).
Considerações finais:
(i). A avaliação de erros numéricos em máquinas 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 Numérico através das seguintes formas:
A representação dos erros numéricos em forma de Erro relativo (ou percentual) é mais
realística (vide exercício 4.3)
(ii). A estimativa de valores exatos, ou mais próximos do exato, para os resultados de algoritmos
numéricos, podem ser obtidas das seguinte formas:
- Estimar o valor mais exato como sendo aquele obtido com o algoritmo numérico
operando em dupla precisão, ou seja, reavalia-se o valor obtido numericamente, mas agora
com precisão superior, na expectativa de que os resultados sejam mais exatos.
- Tentar estimar o valor mais exato através de simulação do algoritmo numérico em Sistemas
de Computação Algébrica (SCA). Nestes sistemas pode-se recorrer a simulações com precisão
ilimitada e alguns casos especiais é possível se proceder a simulação exata do algoritmo.
Obs.: Existem outras alternativas, como por exemplo, proceder simulações numéricas utilizando
matemática intervalar, de forma que se possa limitar o erro existente a um intervalo aritmético. Outra
possibilidade é o tratamento do erro como uma variável de comportamento estatístico, deste modo
pode-se prever os limites do erro, segundo um tratamento estatístico de variáveis.
Exercícios:
5.2). Implemente o algoritmo abaixo em um compilador com aritmética numérica 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 então
Escreva ('Para minha precisao unitária', p1, ' eh 0 ', 'em ', j, ' repeticoes');
i:= TRUE;
fim SE
Até (i=TRUE);
Avalie a posição do 1º dígito significativo de P1, que indica a sua precisão relativa ao número 1
(unidade). Verifique que P1 vai diminuindo até que fique tão pequeno que não altera mais o valor de
P2. Avalie a influência dos erros de arredondamento no resultados.
5.3) Considerando o compilador Turbo Pascal e suas cinco variáveis do tipo real:
Variáveis 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 notação científica e também na notação 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 variáveis, no inicio do programa, execute o programa novamente e
compare os resultados, com os tipos REAL, SINGLE, DOUBLE, EXTENDED E COMP.
Conclusões:
O perfeito entendimento das causas dos erros numéricos gerados em máquinas digitais é um
fator decisivo para que o analista numérico possa fazer a escolha computacionalmente mais eficiente,
32
no momento de programar a resolução de um modelo matemático. Para resolver um determinado
modelo o analista numérico deve se preocupar com:
• a escolha de métodos de resolução com menor número de operações
aritméticas envolvidas;
• a escolha de um algoritmo com menor número de recursividade;
• a escolha de um compilador, para implementar o algoritmo, que represente
as variáveis envolvidas com precisão suficientemente grande;
• obter uma solução de custo mínimo, ou seja, com menor demanda de memória e menor
tempo de CPU;
• dimensionar o grau de confiabilidade dos resultados obtidos como solução do modelo
matemático.
33
2. SISTEMAS DE EQUAÇÕES LINEARES
2.1 - INTRODUÇÃO
Quando várias equações lineares são agrupadas, de modo que todas devam ser
satisfeitas simultaneamente por uma mesma solução, tem-se um sistema de equações lineares.
Existem aplicações de sistemas de equações lineares nos mais variados segmentos da
ciência e tecnologia.
a 11 a 12 L a 1n x 1 b 1
a a 22 L a 2 n x 2 b
A x = b ⇒ 21 = 2 (1)
M M L M M M
a n1 a n2 L a nn x n b n
x 1 + x 2 = 20
a).
x1 − x 2 = 4
1 1 x 20
. x = 4
1
b). Representação matricial do sistema (a).
1 − 1 2
São métodos que permitem obter a solução do sistema realizando-se um número finito
de operações aritméticas. Portanto, o esforço computacional necessário para se obter uma
solução do sistema é perfeitamente previsível. Esta solução seria exata se não fosse a presença
de erros de arredondamento.
34
São normalmente empregados a sistemas lineares com matrizes de coeficientes densas
e de porte médio (até 1000 equações).
Dentre os métodos diretos mais comuns estão:
Ex. 1): Resolver o seguinte sistema de equações lineares pelo método de eliminação de Gauss
sem pivotamento adotando operações aritméticas com 4 (quatro) dígitos significativos e
arredondamento ponderado.
k=1
0.448 0 .832 0 .193 M 1
0 .421 0 .784 − 0 .207 M 0 L 2 ← L 2 − 0 .421 /( 0 .448 ) L1 ⇒ L 2 ← L 2 − 0 .9397 .L1
− 0 .421 0 .784 0 .279 M 0 L 3 ← L 3 − ( − 0 .421) /( 0 .448 ) L1 ⇒ L 3 ← L 3 + 0 .9397 L1
35
0.448 0.832 0.193 M 1
0 0.002143 − 0.38837 M - 0.93973
0 1.56586 0.46037 M 0.93973
k=2
Obs.: Note-se que o valor de x3 pode ser diretamente obtido a partir da equação 3, uma vez
que esta equação independe de x1 e x2. Posteriormente os valores de x2 e x1 são obtidos das
equações 2 e 1, respectivamente.
x3 = 687.63333/284.25403 x3 = 2.41908
36
r1 = | 0.448x1 + 0.832x 2 + 0.193x 3 − 1 | = 0.00000
r2 = | 0.421x1 + 0.784x 2 − 0.207x 3 − 0 | = 0.00001
r3 = | - 0.421x1 + 0.784x 2 + 0.279x 3 − 0 | = 0.00000
Neste caso, também pode ser calculado o erro exato, dado por
erro = | Xexato - Xaproximado |.
A solução exata estimada abaixo foi encontrada através do OCTAVE (cgs(A, b)), com 16
dígitos significativos :
Xexato1 = 1.396286256155218
Xexato2 = -0.111080218034935
Xexato3 = 2.419080303873203
Ex. 2): Resolver o seguinte sistema de equações lineares pelo método de eliminação de Gauss
com pivotamento parcial utilizando operações aritméticas com 4 (quatro) dígitos
significativos e arredondamento ponderado.
k=1
− 0 .421 0 .784 0 .279 0
0 .421 0 .784 − 0 .207 0 (maior módulo da coluna k=1 está na linha i = 3).
i = 3 ( 0 .448 ) 0 .832 0 .193 1
37
(iii). Matriz pivotada:
Obs.: Note que as operações elementares aplicadas acima eliminam os elementos abaixo da
diagonal principal na primeira coluna k=1. A operação de eliminação 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ô.
(i). Busca parcial do maior módulo 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 .832 0.193 M 1
0 0 .002143 − 0 .3884 M - 0.9397 (maior módulo da coluna k=2 está na
linha i = 3).
0 (1 .5659 ) 0 .4604 M 0.9397
(ii). Observe que o pivo antigo, a22=0,002143 era um valor pequeno e poderia
propagar erros nas próximas operações de eliminação.
38
( 0 .448 ) 0 .832 0 .1930 M 1
0 (1 .5659 ) 0 .4604 M 0.9397
0 0 .002143 − 0 .3884 M - 0.9397 L 3 ← L3 − ( 0 .002143 / 1 .5659 ) L 2 ⇒ L 3 − 0 .00136767 .L 2
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 equação 3, e
posteriormente x2 e x1 a partir dos valores obtidos anteriormente.
Os resíduos ( r = | b - A x | ):
Neste caso, também pode ser calculado o erro exato, dado por erro = | Xexato - Xaproximado |,
através da solução exata encontrada através do OCTAVE (cgs(A, b)):
Xexato1 = 1.396286256155218
Xexato2 = -0.111080218034935
Xexato3 = 2.419080303873203
39
• Também consegue-se uma redução nos efeitos de erros de arredondamento
(diminuição da perda de significação), imperceptivel para sistemas pequenos
(poucas equações).
Ex. 3): Resolver o seguinte sistema de equações lineares, usando a pivotação total e
operações aritméticas com 4 (quatro) dígitos significativos e arredondamento ponderado.
j= 2
− 0 .421 0 .784 0 .279 M 0
i = 2 0 .448 0 .193 M 1
(o elemento de maior módulo está na coluna j = 2
( 0 .832 )
e na linha i = 2).
0 .421 0 .784 − 0 .207 M 0
1 2 3
40
Obs.: Observa-se que foi acoplada uma linha adicional na matriz de coeficientes para o
armazenamento da ordem de apresentação das variáveis envolvidas. Então, inicialmente tem-
se a ordem natural das variáveis x1, x2 e x3, cujos coeficientes multiplicadores são,
respectivamente, os elementos da primeira, segunda e terceira colunas.
(i). Busca do maior módulo dentre os elementos da matriz, a partir da segunda linha e
segunda coluna.
41
j= 2
0.832 0.448 0.193 M 1
i = 2 0 0.0971 M - 0.9423
(Elemento de maior módulo localizado na coluna
( − 0.8432 )
j=2 e linha i=2).
0 − 0.0012 − 0.3889 M - 0.9423
2 1 3
6º). Retrosubstituição:
S = {1.396,-0.1106, 2.419}
Os resíduos ( r = | b - A x | ) são:
Considerações:
- Observando os resíduos encontrados nos exemplos acima, nota-se que o resíduo nem
sempre é um bom elemento para certificarmos a exatidão da solução, pois embora
encontremos resíduos menores no método sem o uso do pivotamento, comparativamente aos
métodos que se utilizaram de pivotamento parcial e total, a solução do sistema normalmente é
mais exata nos métodos com pivotação. Pode-se observar que em sistemas de médio porte os
métodos com pivotação total fornecem soluções mais exatas.
- Pode-se observar que nas operações elementares sobre linhas aplicadas no método de
Gauss, aparece uma operação de divisão pelo pivô. Sabe-se que na maioria das operações de
divisão são gerados erros de arredondamentos (vide capítulo de erros numéricos), então ao
longo do processo de eliminações sucessivas, estes erros de arredondamento vão se
acumulando, pois os resultados obtidos em um estágio do processo de eliminação serão
usadas no estágio seguinte.
Para minimizar este efeito cumulativo dos erros de arredondamento, pode-se modificar
as operações elementares do processo de escalonamento da seguinte forma:
Substitui-se a linha corrente pelo produto entre a própria linha e o elemento pivô
subtraído do produto entre a linha do pivô e o elemento a ser eliminado.
Por exemplo:
a 31
L3 ← L3 - L
a 11 1
Sabendo-se que o objetivo desta operação é anular o elemento a31, pode-se modificar
esta operação, desde que se mantenha o resultado nulo na primeira coluna. Assim, se
a 31
L3 - L = 0 (para a primeira coluna k = 1)
a 11 1
Então, pode-se multiplicar a equação acima pelo elemento pivô a11, resultando numa
forma alternativa, que mantém o resultado nulo para primeira coluna da matriz.
a 11 L 3 - a 31 L 1 = 0
Exercícios:
1). Monte um algoritmo para resolver um sistema de equações lineares pelo método de Gauss
utilizando:
Pivotação Parcial;
Pivotação Total.
2). Como você avaliaria o determinante da matriz de coeficientes utilizando o processo de
eliminação adotado pelo método de Gauss?
Ex. 3): Resolver o seguinte sistema de equações lineares usando o método 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
1 2 3
3 1.5 4.75 x 1 8
4 2 3 x 2 = 7
2 5 3 x 3 − 12
3 1.5 4.75 M 8
4 2 3 M 7
2 5 3 M -12
44
2º). Pivotação parcial, correspondente ao primeiro pivô (k = 1):
k=1
3 1.5 4.75 M 8
i = 2 ( 4 ) 2 3 M 7
(o elemento de maior módulo está na linha i = 2).
2 5 3 M - 12
3 1.5 4.75 M 8 L 1 ← L 2
( 4 ) 2 3 M 7 L 2 ← L1 (Troca da linha L1 com a linha L2 e vice-versa)
2 5 3 M - 12
( 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 idêntico a eliminação de Gauss.
( 4 ) 2 3 M 7 L1 ← L1 / 4
3 1.5 4.75 M 8
2 5 3 M - 12
(i). Busca parcial do maior módulo da coluna k = 2 (busca a partir da segunda linha e
45
segunda coluna, pois a primeira coluna já foi anulada)
k=2
1 0.5 0.75 M 1.75
(elemento de maior módulo da coluna k=2 está
0 0 2.5 M 2.75 L2 ← L3
na linha i = 3).
0 (4) 1.5 M - 15.5 L3 ← L2
1 0 0.5625 M 3.6875
0 1 0.375 M - 3.875
0 0 2.5 M 2.75
1 0 0.5625 M 3.6875
0 1 0.375 M - 3.875
0 0 2.5 M 2.75 L 3 ← L 3 / 2.5
1 0 0.5625 M 3.688
0 1 0.375 M - 3.875
0 0 1 M 1.1
46
1 0 0.5625 M 3.688 L1 ← L1 − 0.5625L 3
0 1 0.375 M - 3.875 L 2 ← L 2 − 0.375L 3
0 0 1 M 1.1
1 0 0 M 3.069
0 1 0 M - 4.288
0 0 1 M 1.1
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
1 2 3
Obs.: Note que cada equação representa explicitamente uma incógnita, ou seja, o vetor b de
termos independentes modificado guarda a própria solução do sistema. Assim,
x1 = 3.069
x2 = - 4.288
x1 = 1.100
A solução obtida é
S = {3.069,- 4.288,1.100}
Exercícios:
3). Elabore um algoritmo para resolver um sistema de equações lineares pelo método de
Gauss-Jordan utilizando pivotação parcial;
A-1.(A.x) = A-1.(b)
(A-1.A).x = A-1.b
I.x = A-1.b
47
x = A-1.b
Portanto, pode-se obter o vetor de incógnitas x multiplicando a matriz inversa A-1 pelo
vetor b.
Trata-se de um método eficiente quando dispomos da inversa da matriz A, caso
contrário temos o custo adicional da determinação da inversa.
Ex. 4): Resolva o sistema de equações lineares indicado abaixo usando o método de inversão
de matrizes. Utilize o processo de pivotamento parcial para evitar pivôs nulos.
3x 1 + 1.5x 2 + 4.75x 3 = 8
4 x 1 + 2 x 2 + 3x 3 = 7
2 x + 5x + 3x = − 12
1 2 3
3 1.5 4.75 x 1 8
4 2 3 x 2 = 7
2 5 3 x 3 − 12
3 1.5 4.75 M 1 0 0
4 2 3 M 0 1 0
2 5 3 M 0 0 1
(ii). Através de operações 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 análogo ao utilizado no método de Gauss-Jordan.
Este procedimento também pode ser associado a um processo de pivotação parcial,
para evitar pivôs nulos e diminuir a perda de significação.
Seguem-se os passos para obtenção de A-1:
k=1
3 1.5 4.75 M 1 0 0
i = 2 ( 4 ) 2 3 M 0 1 0
(Elemento de maior módulo da coluna
k=1 está na segunda linha)
2 5 3 M 0 0 1
48
(ii). troca de linhas:
3 1.5 4.75 M 1 0 0 L1 ← L 2
(Troca da linha L1 com a linha L2 e
( 4 ) 2 3 M 0 1 0 L 2 ← L1
vice-versa)
2 5 3 M 0 0 1
4 2 3 M 0 1 0
3 1.5 4.75 M 1 0 0
2 5 3 M 0 0 1
4 2 3 M 0 1 0 L1 ← L1 / 4
3 1.5 4.75 M 1 0 0
2 5 3 M 0 0 1
Obs.: Note que existe uma completa analogia com o método de eliminação de Gauss-Jordan.
d). Pivotação parcial, correspondente ao segundo pivô (k=2):
(i). Busca parcial do maior módulo da coluna k = 2 (busca a partir da segunda linha,
pois a primeira linha já foi utilizada no processo de eliminação).
k=2
1 0.5 0.75 M 0 0.250
(o elemento de maior módulo da coluna
0 0 2.5 M 1 − 0.75 0 L 2 ← L 3
k = 2 está na terceira linha).
0 (4) 1.5 M 0 − 0.5 1 L 3 ← L 2
49
1 0.5 0.75 M 0 0.25 0
0 (4) 1.5 M 0 − 0.5 1 (Troca da linha L2 com a linha L3 e vice-versa)
0 0 2.5 M 1 − 0.75 0
Obs.: Note que a pivotação parcial eliminou um pivô nulo (processo possível em caso de
matrizes não singulares).
1 0 .5 0 .75 M 0 0 .25 0
0 4 1.5 M 0 − 0 .5 1 L 2 ← L 2 / 4
0 0 2 .5 M 1 − 0 .75 0
50
1 0 0 M - 0.225 0.4812 - 0.125
0 1 0 M − 0.15 − 0.0125 0.25
0 0 1 M 0.4 − 0.3 0
0.4 − 0.3 0
x1 = 3.069
x2 = - 4.288
x3 = 1.100
S = {3.069,-4.288,1.100}
Exercícios:
3x 1 + 1.5x 2 + 4.75x 3 = 8
4 ,01x 1 + x 2 + 3x 3 = 7
x + 0,5x - 0,05x = − 1
1 2 3
Além dos métodos de eliminação tradicionais, como Gauss, Gauss-Jordan e inversão, tem-se
as suas variações classificadas como métodos de decomposição LU, conforme o
procedimento que segue.
Nesta família de métodos diretos para a solução de um sistema linear faz-se uso do
fato de que, sob certas condições, uma matriz quadrada pode ser decomposta no produto de
duas matrizes triangulares. Uma destas variações do procedimento geral de eliminação é
conhecida como método de Crout (ou Cholesky para o caso particular de matrizes simétricas
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 não singular (Det (A) ≠ 0).
Além disso, se atribuirmos valores fixos aos elementos da diagonal, seja de L (lii = 1 no
Método de Doolitle) ou em U (uii = 1 no Método de Crout), esta decomposição será única.
Para a solução de A . x = b, pode-se decompor A segundo o Método de Crout,
conforme segue:
l 11 0 0 1 u 12 u 1n
l l 22 0 0 1 u2n
L= U=
21
l l n2 l nn 0 0 1
n1
1 u12 u13
0 1 u 23
0 0 1
l11 0 0 l11 .1 + 0.0 + 0.0 l11 .u12 + 0.1 + 0.0 l11 .u13 + 0.u 23 + 0.1
l l 22 0 l .1 + l .0 + 0.0 l .u + l .1 + 0.0 l .u + l .u + 0.1
21 21 22 21 12 22 21 13 22 23
l 31 l 32 l 33 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
52
l11 .1 + 0.0 + 0.0 = a11 l11 .u12 + 0.1 + 0.0 = a12 l11 .u13 + 0.u 23 + 0.1 = a13
l 21 .1 + l 22 .0 + 0.0 = a 21 l 21 .u12 + l 22 .1 + 0.0 = a 22 l 21 .u13 + l 22 .u 23 + 0.1 = a 23
l .1 + l .0 + l .0 = a l 31 .u12 + l 32 .1 + l 33 .0 = a32 l 31 .u13 + l 32 .u 23 + l 33 .1 = a33
31 32 33 31
l31.u13 + l32 .u23 + l33.1 = a33 => l33 = (a33 − (l31 .u13 + l32 .u 23 ))
Resumindo:
l11 = a 11
l 21 = a 21 u12 = a 12 / 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 ( c2 = ( b 2 − l 21 c 1 ) / l 22 )
l 33 = a 33 − l 31u13 − l 32 u 23 ( c 3 = ( b 3 − l 31 c 1 − l 32 c 2 ) / l 33 )
x 3 = c3
x 2 = c 2 − u 23 x 3
x 1 = c 1 − u 13 x 3 − u 12 x 2
a 11 a 12 a 13 M b 1 l 11 u 12 u 13 M c 1
a 21 a 22 a 23 M b 2 = l 21 l 22 u 23 M c 2
a 31 a 32 a 33 M b 3 l 31 l 32 l 33 M c 3
54
k −1
1
u kj = a kj − ∑ l kr u rj (j = k+1,..., n+1 (incluindo c)
l kk r =1
l i1 = a i1 i = 1,2,3,...,n
u1j = a 1j / l11 j = 2,3,...,n
Para k = 2,3,...,n-1
k −1
l ik = a ik − ∑ l ir u rk (i = k,k+1,...,n)
r =1
k −1
1
u kj = a kj − ∑ l kr u rj (j = k+1,...,n)
l kk r =1
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 Método de Crout, sem estratégia de pivotamento,
usando 4 dígitos significativos e arredondamento ponderado.
56
0.448 1.857 0.4308 M 2.232
0.421 (0.0022) − 176.5 M − 427.1
- 0.421 1.566 0 .279 M 0
Logo,
0.448 0 0 1 1.857 0.4308
L = 0.421 0.0022 0 U = 0 1 - 176.5
- 0.421 1.566 276.9 0 0 1
0,448.c 1 + 0.c 2 + 0.c 3 = 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
c1 = 1/0,448 c1 = 2,232
c2 = (0-(0,421.c1 )/0,0022 c2 = - 427,1
c3 = ( 0 - (-0,421.c1+1,566.c2 )/276,9 c3 = 2,419
57
7º). Processo de retrosubstituição sucessiva:
x3 = 2,419 x3 = 2,419
x2 = ( -427,1 + 176,5.x3 ) (-427,1+427,0) x2 = -0,1000
x1 = ( 2,232-(1,857.x2 - 0,4308.x3 )) (2,232+0,1857-1,042) x1 = 1,376
A solução obtida é
Neste caso, também pode ser calculado o erro exato, dado por
erro = | Xexato - Xaproximado |. A solução exata foi encontrada através do OCTAVE, e foi obtida
com 16 dígitos significativos. Vamos avaliar o erro utilizando também a precisão de 4 dígitos
significativos, que foi utilizada até aqui em todas as operações. Então:
Xexato1 = 1.396286256155218
Xexato2 = -0.111080218034935
Xexato3 = 2.419080303873203
Ex. 6): Resolver o sistema anterior pelo Método de Crout, com pivotamento parcial (é
imprescindível incluir o(s) vetor(es) 'b' do sistema na troca de linhas da pivotação),
usando 4 dígitos significativos e arredondamento ponderado.
58
1º). Geração da matriz expandida:
OBSERVE que a pivotação parcial deve ocorrer depois do cálculo dos valores de
lik na coluna k e antes do cálculo dos valores ukj da linha k, para que os elementos lii da
diagonal principal calculados sejam não nulos e tenham os maiores valores possíveis.
59
0.448 1.857 0.4308 M 2.232
0.421 0.0022 − 0 .207 M 0
- 0.421 1.566 0 . 279 M 0
60
(iii). Definição da linha k = 3 da matriz U - u3j: (j = 4)
x3 = 2.419 x3 = 2.419
x2 = ( 0.6001 - 0.2940 x3 ) (0.6001-0.7112) x2 = - 0.1111
x1 = ( 2.232 - 1.857 x2 - 0.4308 x3 ) (2.232+0.2063-1.042) x1 = 1.396
Neste caso, também pode ser calculado o erro exato, dado por erro = | Xexato - Xaproximado |,
através da solução exata encontrada através do OCTAVE (cgs(A, b)):
Xexato1 = 1.396286256155218
Xexato2 = -0.111080218034935
Xexato3 = 2.419080303873203
Ex. 7): Resolver os 3 sistemas abaixo de n=4 equações pelo Método de Crout, com
pivotamento parcial (é imprescindível incluir o(s) vetor(es) 'b' do sistema na troca de
linhas da pivotação):
61
x1 + 2.x2 + 3.x3 + 4.x4 = 1 x1 + 2.x2 + 3.x3 + 4.x4 = 1 x1 + 2.x2 + 3.x3 + 4.x4 = −1
x + 2. x − 3. x − 4. x = 0 x + 2. x − 3. x − 4 . x = 0 x + 2. x − 3. x − 4. x = 0
1 2 3 4 1 2 3 4 1 2 3 4
− x1 + 0.x2 + 2.x3 + 3.x4 = 1 − x1 + 0.x2 + 2.x3 + 3.x4 = 1 − x1 + 0.x2 + 2.x3 + 3.x4 = 1
x1 − 4.x2 − x3 + x4 =2 x1 − 4.x2 − x3 + x4 = −2 x1 − 4.x2 − x3 + x4 =2
Geração da matriz concatenada A (única) com os 3 vetores b1, b2, b3 de termos independentes:
A : b1 , b2 , b3
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
1º). k = 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
OBSERVE que a pivotação parcial deve ocorrer depois do cálculo dos valores de
lik na coluna k e antes do cálculo dos valores ukj da linha k, para que os elementos lii da
diagonal principal calculados sejam não nulos e tenham os maiores valores possíveis.
(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). Definição 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:
OBSERVE que a pivotação parcial deve ocorrer depois do cálculo dos valores de
lik na coluna k e antes do cálculo dos valores ukj da linha k, para que os elementos lii da
diagonal principal ”já calculados” sejam não nulos e tenham os maiores valores
possíveis.
1 2 3 4 : 1 1 − 1
1 (− 6 ) −1 1 : 2 − 2 2
− 1 2 2 3 : 1 1 1
1 0 − 3 − 4 : 0 0 0
(iii). Definição da segunda linha k = 2 da matriz U - u1j: (j=3,4) , que é igual a matriz A
menos o somatório dos produtos cruzados da sua linha e coluna, respectivamente, e dividido
pelo pelo pivô l22=-6.
1 2 3 4 : 1 1 − 1
1 (− 6 ) 0.67 0.5 : 2 − 2 2 0.67 = [−1 − (1* 3)] /(−6) 0.5 = [1 − (1* 4)] /(−6)
e
− 1 2 2 3 : 1 1 1
1 0 − 3 − 4 : 0 0 0 →
3º). k = 3:
OBSERVE que a pivotação parcial deve ocorrer depois do cálculo dos valores de
lik na coluna k e antes do cálculo dos valores ukj da linha k, para que os elementos lii da
diagonal principal ”já calculados” sejam não nulos e tenham os maiores valores
possíveis.
63
1 2 3 4 : 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
1 2 3 4 : 1 1 − 1
1 (− 6 ) 0.67 0.5 : 2 − 2 2
1 0 (− 6 ) 1.33 : 0 0 0 1.33 = [−4 − (1 * 4 + 0 * 0.5)] /(−6)
− 1 2 3.67 3 : 1 1 1 →
4º). k = 4:
1 2 3 4 : 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)
1 0 0 0 c1 1 c1 1
1 (− 6) 0 c
0 c2 2
2 = − 0.167
x =
1 0 (− 6) 0 c3 0 c3 0.167
− 1 2 3.67 1.11 c4 1 c4 1.55
Resolvendo U.x=c1
1 2 3 4 x1 1 x1 − 0.15
0 1 0.67 0.5 x − 0.167 x
x 2 = 2 = 0.325
0 0 1 1.33 x3 0.167 x3 − 1.9
0 0 0 1 x4 1.55 x4 1.55
Resolvendo U.x=c2
64
1 2 3 4 x1 1 x1 − 0.55
0 x x
1 0.67 0.5 2 0.5
2 = 0.525
x =
0 0 1 1.33 x3 0.167 x3 − 0.3
0 0 0 1 x4 0.35 x4 0.35
Resolvendo U.x=c3
1 2 3 4 x1 − 1 x1 − 0.85
0 1 0.67 0.5 x − 0.5 x
x 2 = 2 = 0.175
0 0 1 1.33 x3 − 0.167 x3 − 2.1
0 0 0 1 x4 1.45 x4 1.45
Considerações:
65
Operação Método de Crout Método de Gauss
Adicão +Subtração (2n +9n2-11n)/6
3
(2n +3n2-5n)/6
3
l 11 = a 11
l i1 = a i1 / l 11 (i = 2,3,...,n)
k −1 1/ 2
l kk = a kk − ∑ l 2kr
r =1
k −1
1
l ik = a ik − ∑ l ir l kr i = k+1,...,n
l kk r =1
n −1 1/ 2
e l nn = a nn − ∑ l 2nr
r =1
O método de Cholesky também é utilizado para fazer um teste rápido se uma dada
matriz simétrica é positiva definida ou não. Caso a decomposição seja possível (radicando
positivo) então a matriz simétrica é positiva definida.
Exercícios:
66
4 x1 − x2 + x3 = 0
− x 1 + 4.25x 2 + 2.75x 3 = 1
x + 2.75x + 3.5x = −1
1 2 3
7). Para resolver um sistema de equações lineares ordem 10 ( 10 equações por 10 icógnitas)
um computador (Pentium 133), utilizando o método de Eliminação de Gauss s/ pivotamento,
levou 0.11 segundos para encontrar a solução. Estime o tempo que este mesmo computador
levaria para resolver um sistema de ordem 100, utilizando o mesmo método.
r1 d1 0 0 L L 0 x1 b1
t r2 d2 0 L L 0 x2 b2
2
0 t3 r3 d3 L L 0 x3 b3
M M M M M M M M = M (3)
M M M M M M M M M
0 0 L L t n−1 rn −1 d n−1 xn−1 bn−1
0 0 L L 0 tn rn xn bn
r1 d1 0 0 L L 0 b1
t
t 2 r2 d2 0 L L 0 b 2 L2 ← L2 − 2 L1
r1
M M M M L L M M
M M t i −1 ri −1 d i −1 M M b i −1
M M M ti ri d i M b i
M M M M L L M M
0 0 L L 0 t n rn b n
67
r1 d1 0 0 L L 0 b1
0 r2* d2 0 L L 0 b *2
M M M M L L M M
M M t i −1 ri −1 d i −1 M M b i −1
M M M ti ri d i M bi
M M M M L L M M
0 0 L L 0 t n rn b n
t2 t2
onde r2* = r2 − d 1 e b *2 = b 2 − b1
r1 r1
Generalizando para uma linha i qualquer, tem-se:
r1 d1 0 0 L L 0 b1
0 r2* d2 0 L L 0 b *2
M M M M L L M M
M M 0 ri*−1 d i −1 M M b *i −1
M t
M M ti ri d i M b i L i ← L i − *i L i −1
ri −1
M M M M L L M M
0 0 L L 0 t n rn b n
r1 d1 0 0 L L 0 b1
*
0 r2 d2 0 L L 0 b *2
M M M M L L M M
M M 0 ri*−1 d i −1 M M b *i −1 (4)
M M M 0 r *
di M b *i
i
M M M M L L M M
0 0 L L 0 0 rn* b n
ti * ti
onde ri* = ri − *
d i −1 e b*i = b i − * b*i −1
ri −1 ri −1
ti *
ri* = ri − d
ri*−1 i −1
ti
b*i = b i − * b*i −1
ri −1
68
Como a solução de (3) é a mesma de (4), então por retrosubstituição sucessiva obtem-
se:
x n = b*n / rn*
x i = ( b *i − d i x i+1 ) / ri*
1 − 1 0 0 0 M 0
1 1 − 1 0 0 M 1
0 1 − 1 1 0 M 2
0 0 − 1 1 1 M − 1
0 0 0 −1 2 M − 2
Solução:
1 − 1 0 0 0 M 0
1 1 − 1 0 0 M 1 L 2 ← L 2 − L1
1
1
0 1 − 1 1 0 M 2
0 0 − 1 1 1 M − 1
0 0 0 −1 2 M − 2
1 − 1 0 0 0 M 0
0 2 − 1 0 0 M 1
0 1 − 1 1 0 M 2
0 0 − 1 1 1 M − 1
0 0 0 −1 2 M − 2
1 − 1 0 0 0 M 0
0 2 − 1 0 0 M 1
1
0 1 − 1 1 0 M 2 L3 ← L3 − L2
2
0 0 − 1 1 1 M − 1
0 0 0 −1 2 M − 2
69
1 − 1 0 0 0 M 0
0 2 −1 0 0 M 1
0 0 − 0.5 1 .
0 M 15
0 0 −1 1 1 M − 1
0 0 0 −1 2 M − 2
1 − 1 0 0 0 M 0
0 2 −1 0 0 M 1
0 0 − 0.5 1 0 .
M 15
( −1)
0 0 −1 1 1 M − 1 L 4 ← L 4 − L
( −0.5) 3
0 0 0 −1 2 M − 2
1 − 1 0 0 0 M 0
0 2 −1 0 0 M 1
0 0 − 0.5 1 .
0 M 15
0 0 0 −1 1 M − 4
0 0 0 −1 2 M − 2
1 − 1 0 0 0 M 0
0 2 −1 0 0 M 1
0 0 − 0.5 1 .
0 M 15
0 0 0 −1 1 M − 4
( −1)
0 0 0 −1 2 M − 2 L 5 ← L 5 − L
( −1) 4
1 − 1 0 0 0 M 0
0 2 −1 0 0 M 1
0 0 − 0.5 1 .
0 M 15
0 0 0 −1 1 M − 4
0 0 0 0 1 M 2
(v). Retrosubstituição:
1 . x5 = 2 x5 = 2
− 1 . x 4 + 1 . x 5 = −4 x4 = 6
− 0.5 . x 3 + 1 . x 4 = 15
. x3 = 9
2 . x2 - 1 . x3 = 1 x2 = 5
1 . x1 - 1 . x 2 = 0 x1 = 5
70
Solução = {5,5,9,6,2}
Considerações finais:
(i). Em sistemas de equações lineares que relacionam variáveis com grandezas de magnitudes
diferentes, como por ex.: metros e milímetros, podem existir coeficientes também com
magnitudes bastante diferentes. Nestes casos recomenda-se normalizar os coeficientes das
equações do sistema, dividindo cada equação pelo coeficiente de maior módulo. Este
procedimento reduz os erros por perda de significação;
(iii). As soluções dos sistemas de equações lineares podem ser classificadas segundo três
casos distintos:
(a). Sistema Determinado: quando o sistema de equações tem solução única, nestes
casos a matriz de coeficientes é não singular e o determinante é não nulo. Ocorrem quando
todas as equações do sistemas são linearmente independentes (LI), nenhuma é combinação
linear de outras.
(b). Sistema Impossível: quando o sistema de equações não tem solução alguma,
71
neste caso a matriz de coeficientes também é singular, e seu determinante é nulo. Ocorrem
quando alguma equação do sistema é impossível de ser satisfeita. Por exemplo, se alguma
equação do sistema é gerada a partir da combinação linear de apenas um dos membros de
duas outras equações, gerando uma equação inconsistente. No Método de Gauss com
pivotamento total, pode-se constatar este fato observando que no final do processo de
eliminação, uma, ou mais, linhas da matriz de coeficientes se anulam, mas o termo
independente não se anula. Na prática, significa ter uma equação com todos os coeficientes
nulos e que deve satisfazer a um termo independente não nulo, o que é impossível de ser
satisfeito.
Exercícios:
7). Classifique as possíveis soluções dos seguintes sistemas de equações lineares, através do
método 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
1 2 3
x 1 + 0.5x 2 − 1.75x 3 = − 1
b). 3x 1 + 1.5x 2 + 4.75x 3 = 8
4 x + 2 x + 3x = 7
1 2 3
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
1 2 3
x1 + 3x 2 = 4
a).
x1 + 3.00001x 2 = 4.00001
Toma-se agora um sistema de equações derivado do sistema (a), e que sofreu uma
pequena perturbação em dois de seus coeficiente, impondo-se uma variação ao coeficiente a22,
de 3.00001 para 2.99999 e em b2, de 4.00001 para 4.00002, conforme segue:
x1 + 3x 2 = 4
b).
x1 + 2.99999 x2 = 4.00002
Note que uma pequena variação em dois coeficientes, da ordem de 0.025% acarreta
uma variação enorme de 900% na solução do sistema. Classificam-se estes sistemas altamente
72
sensíveis a variações nos seus coeficientes como sistemas mal condicionados.
Imagine agora que esta pequena variação é devida a uma perturbação decorrente de
erros de arredondamento, que estão presentes em todo método direto, na manipulação dos
coeficientes das equações. Então, nestes casos pode-se obter soluções irreais, decorrentes de
pequenas alterações nos coeficientes.
Por isso, é necessário tomar cuidados especiais na resolução destes sistemas mal
condicionados, devido a grande sensibilidade da solução em relação aos seus coeficientes,
deve-se então conhecer uma maneira de identificar o sistema de equações mal condicionado,
de preferência antes de resolver o sistema. Para isto pode-se recorrer a alguns critérios:
|det( A )|
||det( A )|| = n << 1 , onde
∏α
i=1
i
n
αi = ∑a
i =1
2
ij ∀ i ∈ {1,2,...,n}
n
A ∞ = Max∑ a ij
1≤ i ≤ n
j= 1
que corresponde a maior soma dos módulos dos elementos de uma linha da matriz A.
det(A) = 0,00001
α 1 = 12 + 3 2 = 10
α 2 = 12 + (3,00001) 2 ≅ 10
73
0.00001
||det( A )|| = =10-6
10 10
||det(A)||= 10−6 << 1 => mal condicionado
(por convenção, usaremos <0,1 como mal condicionado)
300001 − 300000
|| A −1 ||= 300.001 + 300.000 = 600.001 onde A −1 =
− 100000 100000
Exercícios:
Considerações:
(i). Neste caso é interessante usar um método de solução que não altere a forma original das
equações, como é o caso dos métodos iterativos (vide capítulo ). Porém, os métodos
iterativos nem sempre convergem, como visto;
(iii). O processo de pivotamento é indispensável sempre que surgem zeros nas posições dos
pivôs durante a aplicação das operações elementares, no caso de matrizes de coeficientes não
singulares (det(A) ≠ 0). No entanto, nos casos específicos de sistemas mal condicionados, o
processo de pivotação é considerado imprescíndivel e a pivotação normalmente é insuficiente
para estabilizar os efeitos dos arredondamentos, nestas situações recomenda-se o uso da
pivotação total, ou completa, que torna a solução do sistema menos sensível aos efeitos dos
erros de arredondamento.
Calculando os resíduos das equações do sistema para cada solução proposta tem-se:
r1 = 4 − ( x 1 + 3x 2 )
R = {r1,r2} ⇒
r2 = 4.00001 − ( x 1 + 3.00001x 2 )
Para S1 ⇒ R1 = {0,0.00001} e
para S2 ⇒ R2 = {0.5,0.5}
Aparentemente, pela avaliação dos resíduos das equações, a solução mais exata é S1,
pois gera menores resíduos, porém, sabendo que a solução exata é S = {1,1}, conclui-se que a
solução S2 está mais próxima da solução exata do que S1.
Então, conclui-se que a avaliação dos resíduos das equações de um sistema não pode
ser usada como critério para análise da proximidade de uma solução em relação ao seu valor
exato (não pode ser usado como critério de convergência).
S = S1 + E ⇒ E = S - S1
A E = A (S - S1)
A E = A S - A S1
A E = b - A S1
75
Sabe-se que b - A S1 corresponde ao resíduo das equações do sistema em relação a
solução proposta S1, tem-se que
r = b - A S1
AE=r
S2 = S1 + E
(viii). Uma limitação deste processo de refinamentos sucessivos, além do alto custo, é o fato
dele se utilizar do mesmo procedimento de resolução que gerou os arredondamentos iniciais,
então, estes arredondamentos vão continuar também presentes ao longo do processo de
refinamento.
76
2.4 - Solução de Sistemas Lineares por Métodos Iterativos
2.4.1- Introdução
em geral, será mais eficiente resolvê-lo através de um método iterativo, desde que a
convergência seja possível.
Obs.: Note que se um algoritmo de um método direto, como o do Método de Gauss, for
aplicado ao um sistema com matriz de coeficientes esparsa, muitas operações aritméticas
desnecessárias serão empregadas, por exemplo na manipulação de zeros com outros zeros.
x1 = B-1 b - B-1 C xo
S = {x k } k = 0 , onde
∞
77
Aplicando a eq. (3) na eq. (4), tem-se
( B + C ) lim x k +1 = b (6)
k→∞
Mas A = B + C, então
A lim x k +1 = b
k →∞
Logo,
lim x k +1 = α
k→ ∞
O problema agora é que para se gerar a sequência (2) necessita-se da matriz inversa B-
1
e portanto esta inversa, por questão de eficiência, tem que ser obtida facilmente. A seguir
serão abordadas duas maneiras, não exclusivas, de se particionar a matriz A de modo que a
matriz B seja trivialmente invertida.
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.
x k +1 = D −1 (b − D −1 ( L + U ) x k ) (7)
onde os elementos de D-1 são trivialmente obtidos tomando-se os recíprocos dos elementos
diagonais de A. Expressando a eq. (7) na forma desenvolvida resulta
n
xik +1 = (bi − ∑ aij x kj ) / aii ⇒ i = 1,2,...,n (8)
j =1
j ≠i
3x 1 − x 2 − x 3 = 1
x 1 + 3x 2 + x 3 = 5
2x − 2x + 4x = 4
1 2 3
x1k+1 = (1 + x 2k + x 3k ) / 3
k+1
x 2 = (5 − x1 − x 3 ) / 3
k k
k+1
x 3 = (4 − 2x1 + 2x 2 ) / 4
k k
k x1k x 2k x 3k
0 0 0 0
1 0,333 1.667 1
2 1,222 1,222 1,667
3 1,296 0,704 1
4 0,901 0,901 0,704
5 0,868 1,132 1
6 1,044 1.044 1,132
Pode-se notar que a sequência evolutiva obtida para as variáveis x ik está convergindo
para a solução S, que no caso é dada por S = {1,1,1}.
xik +1 − xik
(ii). Max k +1 ≤ε ⇒ i = 1,2,3,...,n
xi
Corresponde à máxima diferença relativa entre valores novos e antigos de todas as
variáveis.
79
k x1k x 2k x 3k | x 1k +1 − x 1k | | x 2k +1 − x 2k | | x 3k +1 − x 3k |
0 0 0 0 - - -
1 0,333 1.667 1 0,333 1,667 1
2 1,222 1,222 1,667 0,889 0,555 0,667
3 1,296 0,704 1 0,074 0,518 0,667
4 0,901 0,901 0,704 0,395 0,197 0,296
5 0,868 1,132 1 0,033 0,197 0,296
6 1,044 1.044 1,132 0,176 0,088 0,132
Obs.: Note que, neste exemplo, o processo iterativo é do tipo oscilatório, onde as variáveis
aumentam e diminuem alternativamente. Este efeito prejudica a convergência, tornando o
processo lento.
x k +1 = ( D + L) −1 b − [( D + L) −1 U]x k (9)
( 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)
i −1 n
x k +1 = ( b i − ∑ a ij x kj +1 − ∑a ij x kj ) / a ii ⇒ i = 1,2,...,n (11)
j= 1 j = i +1
j<i j>i
3x 1 − x 2 − x 3 = 1
x 1 + 3x 2 + x 3 = 5
2x − 2x + 4x = 4
1 2 3
80
x1k +1 = (1 + x 2k + x 3k ) / 3
k +1 k +1
x 2 = (5 − x1 − x 3 ) / 3
k
k +1
x 3 = (4 − 2x1 + 2x 2 ) / 4
k +1 k+1
Note que as equações evolutivas se utilizam dos valores disponíveis mais atualizados.
Nos tópicos anteriores foram desenvolvidas duas formas (expressões (8) e (11)) de se
{ }
∞
construir uma seqüência S = x k de possíveis aproximações para a solução de Ax = b.
k =0
Aqui, será abordada a questão de quando esta seqüência será convergente. Para tanto,
necessita-se de mais dois conceitos.
n
Definição 1: No sistema Ax = b, sejam Si = ∑ | aij |, i = 1,..., n . Daí, diz-se que ele é diagonal
j =1
j ≠i
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.
Vide exemplos 7 e 8.
2o) O teorema da convergência contém uma condição suficiente, porém não necessária.
Portanto, se for verdadeiro, a seqüência S convergirá e se não for verdadeiro nada pode-se
x + 2. x 2 = 3
afirmar. Verificar que em 1 Gauss-Seidel fornece a seqüência convergente,
x1 − 3. x 2 = −2
mesmo não satisfazendo o teorema;
3o) Um sistema que não seja diagonal dominante pode, em alguns casos ser transformado,
através de troca de linhas e/ou colunas (pivotamento parcial e total), para satisfazer esta
condição;
4o) Existem sistemas, muitos até triviais, que não são solúveis por estes métodos iterativos, a
x −x =0
menos que x0 = α (α é própria solução). Testar isto em 1 2 ;
x +
1 2x = 3
onde x ik é o valor antigo, ∆x ik+1 é o valor da atualização imposta ao valor antigo x ik para
atingir o valor novo xik+1 .
x ik +1 = (1 − λ) x ik + λ x ik +1
i −1 n
x ik +1 = (1 − λ ) x ik + λ ( b i − ∑ a ij x kj +1 − ∑a ij x kj ) / a ii ⇒ i = 1,2,...,n (11)
j= 1 j= i + 1
j<i j>i
Ex. 11): Resolver o seguinte sistema pelo método de Gauss-Seidel adotando uma
subrelaxação λ = 0.5 (lembrando que no exemplo 8 este mesmo sistema foi resolvido e sofreu
oscilações).
3x 1 − x 2 − x 3 = 1
x 1 + 3x 2 + x 3 = 5
2x − 2x + 4x = 4
1 2 3
x1k+1 = (1 − λ ) x1k + λ (1 + x 2k + x 3k ) / 3
k+1 k +1
x 2 = (1 − λ ) x 2 + λ (5 − x1 − x 3 ) / 3
k k
k+1
x 3 = (1 − λ ) x 3 + λ (4 − 2x1 + 2x 2 ) / 4
k k +1 k+1
Note que as equações evolutivas se utilizam dos valores disponíveis mais atualizados.
Valor inicial: ( x10 , x 02 , x03 ) = (0,0,0) e λ = 0.5
K x1k x 2k x 3k | x 1k +1 − x 1k | | x 2k +1 − x 2k | | x 3k +1 − x 3k |
0 0 0 0 - - -
1 0.166 0.805 0.659 0.166 0.805 0.659
2 0.494 1.043 0.967 0.327 0.238 0.307
3 0.748 1.069 1.063 0.254 0.025 0.096
4 0.896 1.041 1.067 0.147 0.027 0.004
5 0.966 1.014 1.046 0.069 0.026 0.021
6 0.993 1.000 1.024 0.026 0.014 0.021
Obs.: Note que o processo iterativo com o fator de subrelaxação é mais estável, gerando um
83
processo de convergência monotônico (com erro sempre decrescente), e consequentemente
tem-se um processo iterativo mais rápido. Note que com as mesmas 6 iterações do método de
Gauss-Seidel atinge-se um erro máximo de 0,026 com sub-relaxação contra um erro de 0,129
sem sub-relaxação.
Considerações:
84
Capítulo 3 - Solução de Equações a uma Variável
3.0 - Preliminares
Definição 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 função f(x) se zerar a função 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 ⇒ α =
3
3 ln 2
3
Note-se que nem sempre é possível explicitar a variável da equação, ou seja, nem
sempre se consegue isolar a variável em um dos membros da equação para se obter uma raiz
α.
Pelas equações do exemplo anterior, conclui-se que:
2ª) A solução de f(x) = 0 pode ser muito difícil, ou até impossível, de ser obtida pela técnica
de isolamento da variável;
Para equações f(x) = 0 esta etapa é a mais difícil por ser a mais subjetiva . Ela pode ser
efetivada através de:
1º). Conhecimento teórico sobre o problema modelado que gerou a equação.
2º). Fazer esboço gráfico de y = f(x).
85
Limita-se à(s) raíz(es) reais (α)
pois a abcissa é definida em ℜ.
3º) Utilizar propriedades algébricas da função geradora y = f(x). Dentre estas propriedades
destacam-se:
Exemplo:
As funções geradoras do tipo pn(x) = a1xn + a2xn-1 + ... + an-1, com αi ∈ ℜ, são →denominadas
polinômios de grau n e as equações polinomiais, pn (x) = 0, possuem várias propriedades que
facilitam o isolamento das soluções.
Após isolada a raiz de f(x) = 0 ela será refinada através de técnicas específicas. Estas
técnicas podem ser agrupadas em três grandes famílias de métodos:
2ª) Métodos de linearização: Obtém-se uma aproximação inicial x0 (valor estimado) para o α
e posteriormente constrói-se uma seqüência iterativa { xi } i∞= 0 / lim xi = α.
i →∞
Para definir a seqüência iterativa, lineariza-se a equação não linear f(x) = 0, gerando uma
equação linear recursiva xi+1 = F(xi).
Estes métodos não têm convergência garantida, mas, dependendo da forma recursiva
86
estabelecida F(x), têm convergência rápida.
3ª) Métodos híbridos: consistem na mescla das duas metodologias, tentando associar as suas
vantagens: convergência garantida e alta velocidade de convergência.
Em f(x) = 0 se f(x) for contínua em [a,b] e ocorrer f(a) * f(b) < 0, então uma raiz α ∈
[a,b] pode ser obtida como segue:
a + b
i) obter x1 =
2
ii) se f(x ) = 0 ⇒ x1 = α
1
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 questão fundamental: será que klim
→∞
xk = α ?
|b − a |
Note-se que o comprimento de cada novo subintervalo é , onde a e b são os valores
2k
limites do intervalo inicial e k indica o nível iterativo, ou seja, número de bipartições.
|b − a |
Como: lim =0 ⇒ lim xk = α
k→∞
2k k→∞
Então, teoricamente, a raiz α será atingida quando o número k de bipartições tende ao infinito.
87
Exemplo:
x
1o ) Obtenha um raiz α de e sen(x) = 1, situada em [0,1], por bisseção com 4 partições.
6
4
2
0
-2
-4
-6
-8
-10
-1 0 1 2 3
x
Temos que f(x) = e sen(x) - 1 é uma função contínua 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
gráfico acima. Então partimos para o processo de refinamento. Como:
Considerações:
i) Quando truncar o processo de bipartições para assegurar uma precisão ε estabelecida?
1o) Podemos predefinir a quantidade de partições através de:
O comprimento de cada subintervalo é dado por:
|b − a |
|b − a | |b − a | ln
⇒ ≅ ε ⇒ k = ε (1)
2k 2k ln 2
Então, após a k-ésima bipartição o comprimento do subintervalo deverá ser da ordem da
precisão estabelecida ε.
1
ln -10
10
Aplicando (1) ⇒ k = = 33,2 ⇒ k = 34
ln 2
2o) Ou podemos repetir as bipartições até que um critério de parada seja satisfeito.
a) f ( x M K ) < ε
88
Observação: Note que apesar de xk ainda estar longe da raiz α, o critério de parada
estabelecido | f(xk) | < ε pode já ter sido satisfeito. Portanto, é um critério que deve ser
estabelecido, mas não serve como decisão final, é necessário associar uma outra condição de
parada, como a do item b).
b) | b - a | < ε
c) | xk - xk-1| < ε |xk - xk-1| é pequeno mas |f(xk)| ainda é grande
x k − x k −1 Valor relativo do critério de parada é mais realístico,
d) <ε principalmente quando xk é muito pequeno ou muito grande
xk
x k − x k −1
e) f ( x ) +
k
<ε É recomendável usar um critério combinado, que considere
xk mais de um efeito.
Considerações:
Note-se que uma das extremidades pode ficar fixa, sem atualização iterativa, atrasando o
processo de convergência. Assim, é muito importante alterar o critério de parada, o
critério de cálculo do erro, que não pode ser mais baseado na diferença 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 convergência unilateral, adotando-se o método de Pégaso, o método
da falsa posição modificado ou os métodos de linearização, que veremos a seguir.
Nestes métodos busca-se linearizar a equação f(x) = 0 escolhendo apenas uma das
incógnitas x como variável e todas a outras incógnitas são tratadas como se fossem
conhecidas, inicialmente assumindo valores estimados x*. Assim,
90
3
2
1
0
-1
-2
-3
-4
0 0.5 1 1.5 2 2.5 3 3.5 4
i) x .ln x * − 3,2 = 0
3,2
x=
ln x *
Adotando xo = 3
k x* x=3,2/ln(x*)
0 3,000 2,913
1 2,913 2,993
2 2,993 2,919
3 2,919 ...
... ... ...
53 2,954 2,954
ii)
x * ln x − 3,2 = 0
3,2
ln x = *
x
3, 2
x = ex
*
k x* 3, 2
*
x=e x
0 3 2,906
1 2,906 3,008
2 3,008 2,897
3 2,897 3,17
... ... ...
... ∞ ∞
Está divergindo.
Considerações:
1. Este processo iterativo é altamente sensível à escolha da forma iterativa x = F(x*), podendo
gerar seqüências iterativas convergentes, seqüências oscilatórias ou seqüências divergentes.
Em alguns casos podemos atenuar as oscilações usando fatores de amortecimento (sub-
relaxação) no processo de atualização da variável xk (vide capítulo 4).
91
2. Para se obter um resultado coerente e com exatidão, é necessário que a cada iteração a resposta se
aproxime mais e mais da solução real, ou seja, que o método convirja para o valor real da
raiz. No caso do método da bisseção, nós não precisamos nos preocupar com a convergência, pois
nesse método ela está sempre garantida, já que isolamos a raiz dentro de um dado intervalo e
nunca deixamos esse intervalo inicial. Já no método da iteração linear, a convergência não
é garantida a priori. A cada iteração podemos nos aproximar ou nos afastar da solução real. Portanto,
antes de resolver um problema através desse método é recomendável verificar se haverá ou não a
convergência. O seguinte Teorema coloca condições suficientes, porém não necessárias para
que o método de iteração linear seja convergente.
Teorema:
Seja uma função f(x) contínua em um intervalo [a,b] e α uma raiz de f(x) contida em [a,b]. Seja F(x)
uma função de iteração obtida a partir de f(x).
Se:
iii). x* ∈ [a,b].
Então: lim x k = α
k →∞
Seja f(x) uma função contínua no intervalo [a,b] e seja α um zero contido neste
intervalo, com derivadas f´(x) e f´´(x) contínuas, também em [a,b], mas com f´(x) ≠ 0.
Podemos encontrar uma aproximação xk para a raiz α de f(x)=0 no intervalo [a,b], utilizando
a sua expansão em série de Taylor em torno de um valor inicial x * ou xk −1 estimado.
Qualquer função f(x) pode ser representada, de forma exata, por série de Taylor e a
equação 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 * ). + ...
1444444 41!244444 2! 443
função original, com f ( x ) representado em série de Taylor
* ∆x * ∆x
1 2
′
f ( x ) = 0 ⇒ f ( x ) + f ( x ).
*
′′
+ f ( x ). + ... = 0
1424 3
eq. original 144444414 ! 244442!4443
eq. original com f ( x ) representado em série de Taylor com infinitas parcelas
Note que o valor x da fórmula de Newton é uma aproximação para a raiz de f(x)=0, e
não o seu valor exato, porque houve um erro de truncamento da série de Taylor representativa
de f(x), da ordem de O(∆x 2 ) , dado por
∆x 2 * ∆x
3
O (∆x ) = f ' ' ( x ).
2 *
+ f ' ' ' ( x ). + ... .
2! 3!
Características:
• Intuitivamente nota-se que o método de Newton tem convergência rápida. Pode-se provar
que a convergência deste método é quadrática, isto é, o erro da próxima iteração (k+1) é
aproximadamente o quadrado do erro da próxima iteração k.
i) se x0 é inadequado (onde a reta tangente, representativa de f(x) em x0, não corta o eixo x
nas proximidades de x0);
f (xk )
x k +1 = x k −
f ′ (x k )
fixando o denominador em f ′(x0):
f (x k )
x k +1 = x k − Newton modificado
f ′( x 0 )
Pode ser muito difícil, ou até impossível, para o usuário obter a derivada explícita de f′(x).
Como, então, refinar a raiz pelo método de Newton sem explicitar a f′(x)?
Por definição, 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
∆x *
xk − xk −1 f ′ (x k )
f ( xk )
xk +1 = xk −
f ( xk ) − f ( xk −1 )
xk − xk −1
( x k − x k −1 ). f ( x k )
x k +1 = x k − MÉTODO DA SECANTE
f ( x k ) − f ( x k −1 )
x . f ( xk ) − xk . f ( xk −1 )
xk +1 = k −1
f ( xk ) − f ( xk −1 )
94
3
2
1
0
-1
-2
-3
-4
0 0.5 1 1.5 2 2.5 3 3.5 4
f ( x* ) = x. ln x − 3,2
f ' ( x* ) = ln x + 1
f ( x* )
∆x = − → x = x * + ∆x
f ′( x )
*
A raiz obtida é 2,9542 com Erro=|xk - xk-1| < 10-3, em apenas 2 cálculos (iterações).
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 divisão de f(x) por (x - α) , que contém todas as outras raízes de
f(x), exceto α. Derivando esta expressão para f(x) tem-se:
f ′ ( x) = ( x − α ). g ′ ( x) + g ( x).1
Se α anular também a função quociente g(x) ⇒ g(x) = 0 (α é raiz de g(x)), então, f′(x) ⇒
f′(α) = 0. Pois f′(α)= (α - α). g′(x) + g(x) ⇒ f′(α) = 0.
0 0
Logo, com raízes repetidas a fórmula do Método de Newton apresenta f(x) → 0 e f'(x) → 0
também.
f (xk ) → 0
xk +1 = xk −
f ′ ( xk ) → 0
O que torna a convergência lenta.
f(x) = ex -x - 1
f′(x) = ex - 1
Aplicando a fórmula do método de Newton vem:
x0 = 1
x1 = 0,58198
x2 = 0,31906
.
95
.
.
x4 = 0,08635
.
. O processo se tornou muito lento,
.
perdeu a convergência quadrática.
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
[ f ′( xk )]2
f ( x) f ' ( x)
lim = lim = L
x→a g ( x )
x →a g ' ( x )
Logo,
f ( x) f ' ( x)
lim = lim = L , para o caso de f ( x ) → 0 e f ' ( x ) → 0 , resultando
x→ a f ' ( x) x → a f ' ' ( x)
f ( xk ) f ' ( xk )
xk −1 = xk − → xk −1 = xk −
f ' ( xk ) f ' ' ( xk )
Exemplo: Reaplicando o Método 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 fórmula do método de Newton vem:
x0 = 1
96
x1 = 0.367879
x2 = 0.0600801 --> O processo recuperou a rápida convergência quadrática.
x3 = 1.7692e-003
x4 = 1.5641e-006 --> 0
• Newton pode ser utilizado para se elaborar rotinas de funções pré-definidas para as
máquinas digitais.
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:
c , c ∈ℜ .
+
2) Crie uma rotina para obter
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
Solução com valor incia de ‘Hero’:
M = 0,68572
1,29
p = 1 ⇒ x0 = (1,68 − ) . 101 . 3,161
q = 1 0,84 + 0,68572
⇒ x0 = 26,370122
Exercícios:
1) Elabore uma rotina para efetuar a divisão sem utilizar a operação de divisão.
2) Crie uma rotina para obter 1 , sem o uso da divisão e da radiciação.
c
3 n
3) Crie rotinas para obter: c e c .
Existe atualmente uma forte tendência na literatura a se mesclar os métodos das duas
famílias anteriores para se criar métodos abrangentes e que minimizem as desvantagens dos
submétodos envolvidos.
3o ) Newton com X0 = 0
X1 = 0,5
. • Necessita de f ` (x)
.
. • Pode não convergir
X3 = 0,44285 • Pode convergir para um α já obtido
4o ) Secante com X0 = 0
X1 = 1
X2 = 0,3788 • Lento (comparando-se com Newton)
.
.
• Necessita de duas estimativas iniciais
. • Menos abrangente
X5 = 0,44286 • Nem sempre converge.
•
99
3.2.4.a) Poli-Algoritmo Newton & Bisseção
Dado f(x) = 0 este poli-algoritmo permite obter todos os α ∈ℜ que estão em [a,b],
seguindo-se os seguintes passos:
Observação: Note-se que ainda o método de Newton pode convergir para um α já obtido. Para
evitar esta possibilidade devemos retirar, algebricamente, as raízes já determinadas através do
seguinte procedimento:
→ Dados f(x) e α1 tal que f(α1) = 0. Então, f(x) = (x - α).g(x), com o quociente da divisão
entre f(x) e (x - α) não nulo (g(x) ≠ 0). Toda raiz αj de g(x) será também raiz de f(x). Este
processo de divisão gera uma função g(x) com uma raiz α a menos que f(x). Este processo é
usualmente denominado de deflação, na resolução de equações polinomiais.
Com este procedimento, evita-se o risco de Newton convergir novamente para α1.
Para retirar j raízes:
f (x k )
x k +1 = x k − j
f ′ ( x k ) − [ ∑ f ( x k ) / ( x k − α i )]
i =1
n = 1 → a1x + a2 = 0 ⇒ α = -a2/a1
− a 2 ± a 22 - 4a 1a 3
n = 2 → a1x2 + a2x + a3 = 0 ⇒ α =
2a 1
Resolvido pelos:
• Babilônios em 1800a.C. (algebricamente)
• Gregos
• Hindus no século I d.C. (Báscara)
y3 + py + q = 0 ⇒
−q p3 q2 −q p3 q2
α =3 2 + 27 + 4 + 2− 27 +
3
4
Precisamos avaliar o valor numérico de pn(x), bem como p'n(x), em x=u (valor inicial
x*), para podermos aplicar o método de Newton-Raphson às equações polinomiais pn(x)=0.
Rotina Horner
Leia N, u
Para i = 1 até n+1 faça
101
leia a[i]
fim para
Para k = 1 até n faça
p = p*u + a[k+1]
fim para
Fim
onde o quociente da divisão, pn-1(x) = b1xn-1 + b2xn-2 + ... + bn, pode ser obtido através da
igualdade da expressão a seguir, termo a termo:
pn(x) = (x-u).pn-1(x) + R1 onde R1 é o Resto e foi definido com bn+1, por convenção.
(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
Observe que o resto R1, definido como bn+1, segue a mesma lei de formação de bn, e por isso
convencionou-se definir R1=bn+1.
Este método de divisão sintética de polinômios é conhecido por Método de Briot-Ruffini.
Propriedade 4:
102
Propriedade 5:
Pois efetuando uma segunda divisão sintética 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 n (u) = k!R k+1 , onde Rk+1 = resto da (k+1)-ésima divisão sucessiva de pn(x) ÷ (x-u).”
(k)
(Importante para tratamento de raízes múltiplas, onde p'(x) tende a zero junto com p(x))
Solução: 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
Propriedade 7:
103
Se α é raiz de pn(x) = 0 então, pn(x) é divisível por (x - α).
Propriedade 8:
(i)
Uma raiz α de pn(x) = 0 possui multiplicidade M se e somente se p (α ) = 0 ,
n
( )
∀ i = 0, 1, ..., M-1 e p M (α ) ≠ 0 .
n
Alternativamente, podemos verificar o número M de vezes que pn(x) é divisível por
(x-α).
Corolário 1:
Uma polinomial pn(x) = 0 possui 'n' raízes, reais ou complexas, distintas ou repetidas.
Solução:
p(x) = x4 - 5x3 + 6x2 + 4x - 8 ⇒ p(2) = 0
p’(x) = 4x3 - 15x2 + 12x + 4 ⇒ p’(2) = 0
p’’(x) = 12x2 - 30x + 12 ⇒ p’’(2) = 0
p’’’(x) = 24x - 30 = 18 ⇒ p’’’(2) ≠ 0 ⇒ M = 3 ∴ α = 2 é repetida 3 vezes
Exercício: Crie uma rotina para testar a multiplicidade de uma raiz α ∈ ℜ de uma polinomial
pn(x) = 0.
Propriedade 9: Em a1xn + a2xn-1 + ... + an-1 = 0, seja M = máx{|a2|, |a3|, ..., |an+1|}. Então ∀
M
α raiz ⇒ | α |< 1 +
a1
Solução:
Aplicando a propriedade 9 temos que:
6
M = 6 ⇒ |α | < 1 + ⇒|α | < 3 ≅ α ∈ (-3,3) se α ∈ℜ
|3|
Propriedade 10:
p n (u)
Seja u = a + bi tal que p’(u) ≠ 0 e R = n * ⇒ existe pelo menos uma raiz α no
p'n (u)
círculo de centro u = (a,b) e raio R.
104
16
⇒ R= 4 * = 2,666... ⇒ ∃ pelo menos uma raiz no circulo de raio R=2,666 e centro C=(2;0),
24
no gráfico com abscissa x Real e ordenada y Imaginária:
R=2,666
1
0
C=(2;0)
-1
-2
-3
-1 0 1 2 3 4 5
Podemos verificar que todas as raízes deste polinômio são 1 ± i e ± 2i, portanto dentro do
circulo vermelho do gráfico acima.
40
30
20
10
Dado um polinômio Pn(x), então toda raiz α, real ou complexa, de Pn(x) = 0 satisfaz: |α|< r
=
1
ou
=
1
105
Ex.
Tomemos o polinômio P5(x) = x5 + x4 - 9x3 - x2 + 20x - 12. Então xp=0 = 0 (valor inicial) e a(1) =
1, o que nos leva a produzir a equação iterativa, como se o x de maior grau fosse separado,
análogo ao método de Iteração Linear, com coeficientes em módulo e os demais termos
colocados no lado direito tomados pelo seu valor x em um passo anterior:
1
= +9 #
+ + 20 + 12&5
Logo r = 3,805140857 e logo podemos afirmar que não há alguma raiz fora do círculo
centrado em zero e raio r. Desta forma podemos escolher todos os valores iniciais das
raízes de P5(x) dentro deste raio.
Dado o polinômio Pn(x), toda a raiz α, real ou complexa, satisfaz que |α|< max1 + max2
onde max1 e max2 são os maiores valores da sequência:
,
Ou
,
( = )* * / com i = 1; ... ; n.
+ -
+
Exemplo:
Seja o polinômio P5(x) = x5 + x4 - 9x3 - x2 + 20x – 12, a1 = 1, a2 = 1, a3 = -9, a4 = -1, a5 = 20, e
a6 = -12. Podemos então verificar que a série de fatores q(i) é a seguinte:
, , , , ,
0,608364342}
106
Vemos que max1 = 1,666 e max2 = 0,908560296, com raio = 2,575226902, então a cota
interna é 1/raio = 0,388315288.
Logo as raízes de P5(x) estão no intervalo: 0,388315288 < α< 5,114742527.
Propriedade 11:
As raízes complexas de equações polinomiais de "coeficientes reais" sempre ocorrem
aos pares conjugados, isto é, se α = a + bi for raiz, α = a - bi também é raiz.
Exemplo: x2 - x + 2 = 0
Solução:
1± 1− 8 1± − 7
α= ⇒α =
Por Báscara temos que: 2 2
α 1 = 0,5 + 7 4 i e α 2 = 0,5 − 7 4 i
Conseqüência:
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 raízes reais, uma
positiva e outra negativa.
Propriedade 13
Em pn(x) = 0, se existe k = 2, 3, ..., n tal que a k ≤ a k+1 * a k-1 e a n+1 ≠ 0 ⇒ existem
2
raízes complexas.
A regra dos sinais de Descartes, primeiramente descrita por René Descartes no seu trabalho La
géométrie, é um teorema que determina o número de raízes positivas e negativas de um polinômio.
Segundo a regra, se os termos de um polinômio com coeficientes reais não nulos Pn(x) são colocados em
ordem decrescente de grau, então o número de raízes positivas do polinômio é igual ao número de
permutações de sinal de Pn(x), ou menor por uma diferença par. O número de raízes negativas do
polinômio é igual ao número de permutações de sinal de Pn(-x), ou menor por uma diferença par. Ou seja,
o número de permutações é igual ao número de raízes positivas e negativas acrescido do número de
raízes imaginárias (que sempre acontecem ao pares em polinômio de coeficientes reais).
Exemplo
Possui uma mudança de sinal entre o segundo e o terceiro termos. Portanto possui apenas uma raíz
positiva.
107
Para contar o número de raízes negativa, fazemos a substituição :
Este polinômio tem duas permutações de sinal, logo o polinômio original possui 2 ou 0 raízes negativas.
Para confirmar o resultado, observe a fatoração do polinômio:
1o) Tomando pn(x) = a1xn + ... + an+1 e um x0 ≅ α e aplicando o método de Newton para
p (x ) R
refinar vem: ∆x = − 'n k = − 1 → x k+1 = x k + ∆x (também chamado de Método 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) = polinômio quociente da primeira divisão.
Exemplo: Aproxime com 3 iterações uma 1ª raiz de p3(x)=2x3 - x - 2 = 0 por Newton a partir
de x0=1.
Solução: p3(x)=2.x3+0.x2 -1.x - 2.x0 = 0
a1 = +2
a2 = 0
a3 = -1
a4 = - 2
Aplicando a divisão sintética de Briot-Rufini:
1a iteração: 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
c1 = 2
c2 = 2,4 + 1,2 . 2 = 4,8
108
c3 = R2 = 1,88 + 1,2 . 4,8 = 7,64 = R2
0,256
x2 = 1,2 - ( 7 ,64 ) = 1,166
c1 = b1 = 2
c2 = 2,332 + 1,166 . 2 = 4,664
c3 = R2 = b3 + x0.c2 = 1,719 + 1,166 . 4,664 = 7,1572 = R2
0,004
x3 = 1,166 - ( 7,157 ) = 1,165 ≅ α1 com Erro=|p(x3=1,165)|<0,001.
Observação:
Para determinar a 2ª e 3ª raízes e se evitar de obter a mesma 1ª raiz α1 novamente,
pode-se efetuar redução de grau (deflações), isto é:
- Tomar pn(x) ÷ (x - α1) obtendo pn-1(x), nesse caso com Resto R1 quase nulo (nas
divisões 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 método de no polinômio deflacionado.
Exemplo de multiplicidade:
Determine as 3 raízes de P(x)=x3-3.x2.+3.x-1=(x-1)3=0. Verifique que α1=1 tem
multiplicidade M=3:
1a. Divisão 1 1 -3 3 -1
1 -2 1
2a. Divisão 1 1 -2 1 0 => R1
1 -1
3a. Divisão 1 1 -1 0 => R2
1
4a. Divisão 1 1 0 => R3
1x3-3x2+3x-1 x-1
R1=0 1x2-2x+1 x-1
R2=0 x-1 x-1
R3=0 1 x-1
109
R4=1 0
Pela Propriedade 6: " p n (u) = k!R k+1 , onde Rk+1 = resto da (k+1)-ésima divisão.”
(k)
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.
pn (x k ) R
A essência do Método de Newton, para raízes não repetidas, prevê que ∆x = − '
=− 1
pn (x k ) R2
mas observe que no caso de aproximações de raízes xk múltiplas, R1 e R2 tendem a zero
juntos, podem gerar uma indeterminação 0/0, reduzindo a taxa de convergência (perde-se a
taxa de convergencia quadrática) e assim precisaremos aplicar a regra de L'Hospital:
pn (x k ) 0!.R1
∆x = − '
=− para M = 1
pn (x k ) 1!.R2
p'n (x k ) 1!.R2
∆x = − ''
=− para M = 2
p n (x k ) 2!.R3
p 'n' (x k ) 2!.R3
∆x = − '' '
=− para M = 3
p n (x k ) 3!.R4
.
.
pM -1
n (x k ) ( M − 1)!.RM ( M − 1)!.RM 1 R
∆x = − =− =− = − . M para M genérico
M
p n (x k ) M !.RM +1 M .( M − 1)!.RM +1 M RM +1
Temos uma dificuldade adicional na determinação de raízes múltiplas, que é o fato de não
conhecermos as raízes xk previamente, mas é possivel verificar que no processo iterativo de
convergência, os valores sucessivos de xk vão se aproximando de cada raiz de modo
gradativo, "lento no caso de raízes múltiplas", onde perde-se a convergência quadrática
quando R2 tende a zero gradativamente no denominador de ∆x. Normalmente não atingimos
um valor com erro razoável, com R1/R2.
Para acelerar a convergência, é necessário definir um valor limite mínimo de R2, R3,...,RM, no
caso de raízes de multiplicidade M, ou seja, definir quais valores de R2, R3,...,RM, são
pequenos suficientes para ser considerados nulos (ou quase nulos), por exemplo, se |R2|,
|R3|,..., |RM| são menores ou iguais a 0,1 (precisa ser melhor verificado) podemos dizer que a
Multiplicidade da raiz xk em avaliação é M, para o processo iterativo. Assim, para uma raiz xk
de multiplicidade M genérica:
pM -1
n (x k ) ( M − 1)!.RM ( M − 1)!.RM 1 R
∆x = − M =− =− =− . M
p n (x k ) M !.RM +1 M .( M − 1)!.RM +1 M RM +1
function p = FNRPolM(xa,n,ai,tol)
110
## 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 máximo - tolerância 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
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' divisões 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
2o ) Método de Müller
f(x) = 0 (1)
No método da Secante avalia-se o zero da função linear que passa por dois pontos da
curva de f(x)=0. Já no método de Müller avalia-se o zero da função quadrática que passa por
três pontos da curva de f(x)=0 a ser resolvida.
Supomos que três aproximações iniciais xi--2, xi-1 e xi são dadas para a solução de
f(x)=0. A aproximação seguinte xi+1 é obtida do zero do polinômio quadrático P(x) que passa
pelas três aproximações iniciais de f(x).
112
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 )
P ( x i −1 ) = a ( x i −1 − x i ) + b( x i −1 − x i ) + c = f ( x i −1 )
2
(3)
P ( x i ) = a ( x i − x i ) + b( x i − x i ) + c = f ( x i )
2
2c
xi +1 = xi − ( xi − xi −1 ) (4)
b ± b − 4ac
2
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)
xi − xi −1
q=
xi −1 − xi −2
A fórmula 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 método de Müller o sinal do radicando é escolhido de modo que o valor absoluto
do denominador, ou módulo para números complexos, seja o maior possível. Esta escolha,
que gera um denominador maior em magnitude, evita possibilidades de denominador nulo, e
gera um valor de xi+1 mais próximo de xi, dando mais estabilidade ao método numérico.
Assim escolhemos a seguinte expressão para atualizar xi+1
2c
x i +1 = x i − ( x i − x i −1 ) (5)
Max b ± b 2 − 4ac
Então aplica-se iterativamente a fórmula dada na eq. (5) até que uma condição de
parada seja satisfeita.
Note que, se o radicando gerar números complexos, podemos então obter raízes
complexas de f(x)=0. Além disso, este método não está limitado somente a equações com
coeficientes reais, pode-se encontrar inclusive raízes complexas de equações transcendentais.
Também podemos ter equações com coeficientes complexos e que podem gerar raízes
complexas não conjugadas.
113
Exercícios:
2). Compare a eficiência do método de Müller frente ao Método da Secante, partindo de uma
mesma condição inicial x0, para equações a sua escolha.
Sugestão para valores iniciais:
Secante: x0 e x1 = 1,10 x0
Müller: x0, x1 = 1,05 x0 e x2 = 1,10 x0
114
Capítulo 4. Resolução de Sistemas de Equações não Lineares
4.0 - Fundamentos
f1 ( x1 , x 2 , x3 ,..., x n ) = 0
f 2 ( x1 , x 2 , x3 ,..., x n ) = 0 ⇒ F(X ) = 0
M
f n ( x1 , x 2 , x3 ,..., x n ) = 0
onde
f1 x1
f x
F= e X =
2 2
... ...
fn xn
Exemplo:
a)
x1 + 2 x23 = 3 f 1 ( x1 , x2 ) = x1 + 2 x23 − 3 x1
2 ⇒ F= e X =
3x1 + x22 = 7 f 2 ( x1 , x2 ) = 3x1 + x2 − 7
2 2
x2
b)
3x1 − cos( x1 x 3 ) = 0,5
3
x1 − x1 x 2 x 3 = 5
x1 x2
e − ln( x12 + x 2 x 3 ) = 0
Exemplo:
115
x1 x2 = 1
2 ⇒ α = [0,604068; 1,655442]
x1 + x2 − 4 x1 + 2 x2 = 4
2
x1 + 2 x 2 − 3 = 0
2
3x1 + x 2 − 7 = 0
2 3
x2
2.5
1.5
0.5
x1
0
-3 -2 -1 0 1 2 3
f 1 ( x1 , x 2 ,......., x n ) = 0
f 2 ( x1 , x 2 ,......., x n ) = 0
M
f n ( x1 , x 2 ,......., x n ) = 0
116
O vetor de incógnitas [x1 x2 L xn ]
T
pode ser representado de forma vetorial
(sublinhada), x = [x1 x2 L x n ] , o vetor de valores iniciais das incógnitas por
T
x
(0)
[
= x1
(0)
x2
(0)
L xn ]
(0) T
e o vetor incremento de cada incógnita, diferença entre
x e x , dado por ∆ x i = [∆x1 ∆x 2 L ∆x n ] .
(0) (0) T
onde:
∂f 1 ( x ) ∂f ( x ) ∂f ( x )
( 0) (0) (0)
∂x1 ∂x 2 ∂x n
∂f ( x ) ∂f ( x ) ∂f ( x )
(0) (0) (0)
∂x1 ∂x 2 ∂x n
M
∂f ( x ) ∂f ( x ) ∂f ( x )
( 0) (0) (0)
∂x1 ∂x 2 ∂x n
∂f 1 ( x ( 0 ) ) ∂f ( x )
( 0)
∂f ( x )
(0 )
∂x1 ∂x 2 ∂x n
M
∂f ( x ( 0 ) ) ∂f ( x )
( 0)
∂f ( x )
( 0)
∂x1 ∂x 2 ∂x n
∂f 1 ( x ( 0 ) ) ∂f 1 ( x )
( 0)
∂f 1 ( x ) ∆x1
( 0) f 1 ( x ( 0) )
....
∂x1 ∂x 2 ∂x n
∂f ( x ( 0 ) ) (0 ) ( 0)
∂f 2 ( x ) ∂f n ( x ) ∆x 2
(0)
2 .... f 2 ( x )
∂x1 ∂x 2 ∂x n . = −
M
∂f ( x ( 0 ) ) M
∂f n ( x ) ∂f n ( x )
( 0) (0)
n ....
∂x n ∆x n
( 0)
∂x1 ∂x 2 f n ( x )
onde
117
∂f 1 ( x ( 0) ) ∂f1 ( x )
(0)
∂f1 ( x )
(0)
L
∂x1 ∂x 2 ∂x n
∂f 2 ( x ( 0 ) ) ∂f 2 ( x )
(0)
∂f 2 ( x )
(0)
J ( x ) = ∂x
( 0) L
1 ∂x 2 ∂x n
M M O M
∂f n ( x ) ∂f n ( x ) ∂f n ( x )
(0) (0) (0)
∂x L
1 ∂x 2 ∂x n
e x1 + x2 = 1 + 1
Exemplo 1: Resolver 2 por Newton com X 0 = com 3 iterações.
x1 + x2 = 4 − 1
2
Solução:
f 1 ( x1 , x 2 ) = e x1 + x 2 − 1
Temos F ( X ) =
f 2 ( x1 , x 2 ) = x12 + x 22 − 4
∂f 1 ( x ( 0) ) ∂f 1 ( x ( 0) )
∂x1 ∂x 2
J (x ) =
(0)
∂f 2 ( x ( 0 ) ) ∂f 2 ( x ( 0) )
∂x1 ∂x 2
e x1 1 x10 + 1
⇒ J(X ) = para X = X = 0 =
0
2x 1 2x 2 x 2 − 1
∂f 1 ( x ( 0) ) ∂f 1 ( x ) ∆x1
( 0)
f 1 ( x ( 0) )
∂x1 ∂x 2 . = −
∂f ( x ( 0 ) ) ∂f 2 ( x )
(0 )
2
∂x1 ∂x 2 ∆x 2 f 2 ( x ( 0 ) )
1a iteração:
118
e1 1 ∆x1 e − 2 ∆x1 = 0,0758 x 1 = 1,0758
* = − ⇒ ⇒
2 - 2 ∆x2 -2 ∆x 2 = −0,9242 x 2 = −1,9242
2a iteração:
2,933 1 ∆x1 0,0080 ∆x1 = −0,06629 x 12 = 1,0095
2,152 - 3,848 * ∆x = − - 0,8600 ⇒ ∆x = 0,1864 ⇒ 2
2 2 x 2 = −1,7378
3
x 2 = −1,7297
x 1 = 1
Solução Exata ⇒
x 2 = 1 − e
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
)∆x = −F (x
(k ) (k ) (k )
J (x )
(k )
A matriz Jacobiana J ( x ) é dada por:
2 x1( k ) 2 x 2( k ) 2 x 3( k )
J ( x ) = 4 x1( k ) −4
(k )
2 x 2( k )
6 x1( k ) −4 2 x 3( k )
1 1 1
J ( x ) = 2 1 − 4
( 0)
3 − 4 1
119
= [0,5 0,5 0,5] , F ( x ) é calculado por:
( 0) T ( 0)
Para x
1 ∆x1 0,25
( 0)
1 1
2 1 − 4 ∆x ( 0) = 1,25
2
3 − 4 1 ∆x3 ( 0) 1,00
dados por:
0,7852
x ( 4)
= 0,4966
0,3699
⇒ Por extensão:
∂f i f i ( x1 , x2 ,..., x j + h,..., xn ) − f i ( x1 , x 2 ,..., xn )
( x1 ,..., xn ) = lim
∂x j h→0 h
Utilizando um valor inicial pequeno para h, temos:
∂f i f i ( x1 , x2 ,..., x j + h,..., xn ) − f i ( x1 , x2 ,..., xn )
≅
∂x j h
f 1 ( x1 + h,...) − f 1 ( x1 ,..., x n ) f 1 ( x1 , x 2 + h,...) − f 1 ( x1 ,..., x n ) f 1 ( x1 , x 2 ,..., x n + h) − f 1 ( x1 ,..., x n )
h h h
2 1
f ( x + h,...) − f 2 ( x1 ,..., x n ) f 2 (..., x n + h) − f 2
....
h h
J (X ) =
M
f ( x + h,...) − f ( x ,..., x ) f n (..., x n + h) − f n
n 1 n 1 n
....
h h
Custo Computacional = 2.n2 cálculos das funções originais, mas sem necessidade
de se deduzir cada derivada parcial. É necessário estabelecer um h inicial que pode
ser atualizado por ∆xi para cada variável i.
x1 x 2 = 1
Exemplo 3: Resolva o sistema não linear pelo método de Newton,
x1 − e = 0
x2
f 1 ( x1 , x 2 ) = x1 x 2 − 1 x10 1
Solução: e X = 0 =
0
f 2 ( x1 , x 2 ) = x1 − e
x2
x 2 1
122
1a iteração:
a11 a12 ∆x1 0
a a * ∆x = −1,718
21 22 2
2ª iteração:
x11 1,445 ∆x1 + 0,445
X = 1 =
0
e h= =
x2 0,555 ∆x2 − 0,445
0,555 0,151 ∆x1 0,198 ∆x1 = 0,348 x12 = 1,793
1 * = ⇒ ⇒ 2
- 1,931 ∆x 2 0,287 ∆x 2 = 0,0316 x 2 = 0,587
6 ≅
x 2 = 0,56714 α 2
123
Capítulo 5 - Teoria de Aproximações
5.0). Fundamentos:
Sabe-se que a análise numérica trata do uso de modelos não aritméticos através de
quantidades aritméticas.
Nos próximos capítulos trataremos de um dos problemas centrais da Análise Numérica,
que é o da aproximação de uma função y = f(x) através de outra z = g(x).
Por que aproximar y = f(x)?
Dois são os motivos básicos 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 observações de maneira geral.
xi x1 x2 ... xn+1
yi = f(xi) y1 y2 ... yn+1
Ex.: Relação entre idade e produção média mensal de uma máquina (torno, robô,...).
x (meses) 1 2 3 4 5
y (103 peças/mês) 30 33 29 27 19
2o). A y = f(x) possui expressão conhecida, porém ineficiente ou impossível de ser utilizada.
Ex.:
(i). Construção de funções pré-definidas em bibliotecas de programas:
- ex, sen(x), ...
(ii). Computação Gráfica:
- traçar o gráfico de y = e ln( x )
(iii). Sistemas dedicados:
[ (
- obter valores de y = sen ln ar coth( x) )]
Neste exemplo, o tempo de CPU necessário para o cálculo da expressão acima é muito
grande. Computacionalmente é mais interessante utilizar uma aproximação para se obter a
resposta da expressão acima.
(iv). Manipulação Algébrica de modelos matemáticos:
2
∫ e − x dx
2
- obter
0
n +1
1 ). Polinomiais: g ( x) = ∑ ai x ( n +1) −i = Pn( x)
o
i =1
Vantagens:
- Só envolvem operações elementares;
- Facilmente deriváveis, integráveis, etc,...
- Formam um anel, ou seja, todas as transformações algébricas aplicadas resultam em
124
um outro polinômio.
Pn( x)
2o). Racionais: g( x) =
Qm( x)
Permite a representação de curvas do tipo
m
3o). Trigonométricas: g( x) = ∑ a i sen(ix)
i =1
“Seja y = f(x) contínua em [a,b], então ∀ ε > 0 sempre existe Pn(x) com n(ε) tal que
|f(x) - Pn(x)| < ε, ∀ x ∈ [a,b]”.
Para aproximar uma função y = f(x) contínua em [a,b] pode-se proceder como segue:
1o). Tome n+1 pontos (xi, yi = f(xi)), com i =1,2,...,n+1, desta função com xi ∈ [a,b]:
xi x1 x2 ... xn+1
yi = f(xi) y1 y2 ... yn+1
com x1 = a e xn+1 = b
n +1
Pn( x) = ∑ ai x ( n +1) −i = a1 x n + a2 x n −1 + L + an x + an +1 com coeficientes ai (i = 1,2,...,n+1
i =1
com número de coeficientes ncoef =n+1).
Tal que o polinômio Pn(x) passe por todos os pontos (xi, yi = f(xi)), ou seja,
Pn ( x i ) = y i ⇒ i = 1,2,...,n+1 (número de pontos npont =n+1)
125
Daí,
Pn( x1 ) = a1 x1n + a2 x1n −1 + L + an x1 + an +1 = y1
n −1
Pn( x2 ) = a1 x2 + a2 x2 + L + an x2 + an +1 = y2
n
Pn( x ) = a x n + a x n −1 + L + a x + a = y
n +1 1 n +1 2 n +1 n n +1 n +1 n +1
Que gera um sistema de equações lineares com nsist=n+1 incógnitas ai e npont =n+1
equações:
cuja solução fornece os ncoef =n+1 coeficientes ai do polinômio que passa por todos os
pontos (xi, yi = f(xi)). Este polinômio é denominado de INTERPOLADOR da função y = f(x).
Note-se que os elementos Uij da matriz dos coeficientes do sistema (*) U.a = y, têm lei
de formação dada por:
U ij = xi( n +1) − j
Tabela: i 1 2 2+1=3
x 1,0 1,5 2,0
y = ln(x) 0,0000 0,405465108108164 0,693147180559945
Solução:
n+1 = 3 ⇒ n=2 ⇒ P2 ( x) = a1x2 + a2 x + a3
a1 = -0,235566071312767
a2 = 1.399845394498246
126
a3 = -1.164279323185479
ErroMax = 0,00600172444201380
127
Algoritmo Interpolador Polinomial (resolvendo um sistema de eqs. Lineares):
for i = 1 : tsis
for j = 1 : tsis
A(i,j) = x(i)^((n+1)-j);
end%for
A(i,j) = 1.;
A(i, tsis+1) = y(i);
end%for
A
C = fgauss(tsis,A) % coeficientes do polinomio interpolador
np = 100;
hp = (b-a)/np;
xp = a:hp:b;
ye = log(xp);
yintp = frestoPn(n,C,xp);
erro = abs(ye -yintp);
ErroMax=max(erro)
1a). Será que o sistema (*) U.a = y sempre tem solução? Caso sempre exista solução,
esta será única?
2a). Será possível melhorar a eficiência computacional (menor tempo de resposta e
demanda de memória) para a obtenção 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?
128
5.1.a). Unicidade do Interpolador:
Vamos mostrar que existe um único interpolador de grau n para toda a tabela:
xi x1 x2 ... xn+1
yi = f(xi) y1 y2 ... yn+1
Percebe-se que o Determinante de X é não nulo, sempre que os pontos xi forem diferentes
entre si, ou seja, (x i - x j ) será sempre diferente de zero para pontos xi não repetidos e desta
forma a solução do sistema (*) terá solução única.
Assim, o polinômio gerado será único para valores de xi não repetidos, independentemente do
método utilizado para a sua determinação.
n +1
Pn( x) = ∑ yi ∏
n +1 (x − x ) j
i =1 j =1 (x − x )
i j
j ≠i
( x − x2 )( x − x3 ) ... ( x − xn +1 )
Pn( x) = y1 +
( x1 − x2 )( x1 − x3 ) ... ( x1 − xn +1 )
( x − x1 )( x − x3 ) ... ( x − xn +1 )
+ y2 +
( x2 − x1 )( x2 − x3 ) ... ( x2 − xn +1 )
+ L
( x − x1 )( x − x2 ) ... ( x − xn )
+ yn +1 +
( xn +1 − x1 )( xn +1 − x2 ) ... ( xn +1 − xn )
Pn ( x1 ) = y1
Pn ( x ) = y
2 2
Note que, , portanto Pn(x) passa sobre todos os pontos tabelados.
M
Pn ( xn +1 ) = yn +1
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 consequência da unicidade do interpolador polinomial.
x 0 1 3 4
y = f(x) 2 4 0 1
Estime f(2)e f(5).
Solução:
Temos n + 1 = 4 pontos ⇒ n=3
( x − x2 )( x − x3 ) . ( x − x4 )
Pn ( x ) = y1 +
( x1 − x2 )( x1 − x3 ) . ( x1 − x4 )
( x − x1 )( x − x3 ) . ( x − x4 )
+ y2 +
( x2 − x1 )( x2 − x3 ) . ( x2 − x4 )
( x − x1 )( x − x2 ) . ( x − x4 )
+ y3 +
( x3 − x1 )( x3 − x2 ) . ( x3 − x4 )
( x − x1 )( x − x2 ) . ( x − x3 )
+ y4
( x4 − x1 )( x4 − x2 ) . ( x4 − x3 )
130
( x − 1)( x − 3)( x − 4) ( x − 0)( x − 3)( x − 4)
P3 ( x) = 2 +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
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
yi +1 − yi
∆1 yi = ⇒ diferença de primeira ordem.
xi +1 − xi
131
∆y i +1 − ∆y i
∆2 y i = ∆ ( ∆y i ) = ⇒ diferença de segunda ordem.
x i +2 − x i
∆k −1 yi +1 − ∆k −1 yi
∆k yi = ⇒ diferença de k-ésima ordem.
xi +k − xi
i 1 2 3 4
x 1 3 4 7
y = f(x) 2 0 1 3
aplicando a definição 1.
i xi yi ∆1 yi ∆2 yi ∆3 yi
1 1 2 -1 2/3 -1/8 [(-1/12) - (2/3)] 1
⇒ =−
2 3 0 1 -1/12 - (7 - 1) 8
3 4 1 2/3 - -
4 7 3 - - -
o polinômio de grau n expresso na forma de Gregory-Newton pode ser definido como segue:
n k
Pn( x ) = y1 + ∑ ∆k y1 ∏ ( x − x j )
k =1 j =1
Pn( x1 ) = y1
Pn( x2 ) = y1 + ( y2 − y1 ) ( x2 − x1 ) = y2 (demais termos se anulam, pois (x - x 2 ) = 0, para x = x 2 )
( x2 − x1 )
Pn( x3 ) = y3
M
Pn( xn +1 ) = yn +1
Logo, Pn(x) é o único interpolador de grau n que passa sobre todos os pontos tabelados.
132
x 1 3 4 7
y = f(x) 2 0 1 3
Solução:
Temos n+1 = 4 ⇒ n = 3
Obs.: O armazenamento das diferenças divididas pode ser feito na forma de um vetor, haja
vista que apenas as diferenças no ponto i = 0 são utilizadas na forma final, portanto não se
deve utilizar uma matriz para este fim.
Algoritmo de Gregory-Newton:
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
Considerações:
(i). As estimativas das diferenças divididas também podem ser efetuadas no sentido
descendente:
∆k −1 y i − ∆k −1 y i −1
∆k y i = conferir
x i − x i−k
n k
Pn( x) = y1 + ∑ ∆k y1 ∏ ( x − x j )
k =1 j =1
i xi yi ∆ ∆2 ∆3 ∆4
1 1 2 -1 2/3 -1/8 3/160
2 3 0 1 -1/12 1/40 -
3 4 1 2/3 1/15 - -
4 7 3 1 - - -
5 9 5 - - - -
(iv). No método de Lagrange também é possível acrescentar um ponto qualquer a uma tabela
existente, mas é necessário utilizar o método de Neville que se utiliza de relações de
recorrência para avaliar o novo interpolador;
134
(v). Para tabelas (xi,yi) (i = 1,2,...,n+1) com xi+1 > xi e espaçamentos iguais (xi+1 - xi = h), os
cálculos das diferenças divididas ∆ y i podem ser simplificados. Para tanto, definem-se as
k
∆k y i
∆ yi = k
k
h k!
n
∆k y1 k
Pn( x) = y1 + ∑ k ∏ ( x − x j )
k =1 h k! j =1
(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 interpolação
β ∉ ( x 0 , x n ) tem-se uma extrapolação
caso se queira obter o valor de β correspondente ao valor γ da função tabelada
f (β ) = γ ⇒ β=?
t(ano) 85 89 93 95 96 ... ?
Consumo(KW) 5 5,7 6,2 6,7 7 15
(vii). O processo de interpolação polinomial também pode ser estendido a funções com várias
variáveis independentes, como veremos mais adiante.
Quando se aproxima uma função y = f(x) por um interpolador polinomial Pn(x) com x
∈ [x1,xn+1], comete-se erros de truncamento dado por:
E( x ) = f ( x ) − Pn( x) , ∀ x ∈ [ x1 , xn +1 ] e x ≠ x i .
135
A delimitação do erro de truncamento E ( x ) , para qualquer x ∈ [ x1 , xn + 1] , indicará o grau de
confiança dos resultados fornecidos por Pn( x ) ≅ f ( x) .
Teorema:
Se Pn(x) é o interpolador de
xi x1 x2 ... xn+1
yi = f(xi) y1 y2 ... yn+1
(i). Pode ser muito dificil obter f (ξ) (derivada n+1-ésima de f(x));
n+1
136
Solução:
Para n = 3 , então
h=(0,7-0,4)/3=0,1
i 1 2 3 4
xi 0,4 0,5 0,6 0,7
yi= f(xi) -0,916290732 -0,693147181 -0,510825624 -0,356674944
iv
Como f (x) é uma função decrescente em [0,4;0,7], o valor de M é obtido em x = 0,4
Então,
3
234,375 234,375
E (0,65) ≤
(3 + 1)!
∏ (0,65 − x ) =
i =0
i
(3 + 1)!
(0,65 − x0 )(0,65 − x1 )(0,65 − x2 )(0,65 − x3 )
234,375
E (0,65) ≤= (0,65 − 0,4)(0,65 − 0,5)(0,65 − 0,6)(0,65 − 0,7) = 9,15 . 10−4
(3 + 1)!
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 máximo
E (0,65) ≤ 9,15 . 10−4 .
Corolário 2 - "Se na tabela ocorrer xi+1 > xi (pontos ordenados) e xi+1 - xi = h (igualmente
M h n+1
espaçados ∀i), então E ( x ) ≤ com M = max f n +1 ( x) ".
( n + 1) x ∈[ x 0 , x n ]
Solução:
2 ,4 − 2
n=4 ⇒ h= = 0,1
4
137
M = max f ( v ) ( x) = f ( v ) (2,4) = e2,4
x ∈[ 2 ; 2 , 4 ]
e 2 ,4 ( 0,1) 5
Então, E ( x ) ≤ = 0,000022
5
Verificação:
P4(2,33) = 10,2779587404
e2,33 = 10,2779411764
Erro(real) = |10,2779587404 - 10,2779411764| = 0,000017564 < 0,000022
Solução:
2,15 − 2
n=3 ⇒ h= = 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 (4)
( x) = 3! 2-4 = 0,375
x∈[ 2 ; 2 ,15]
0,375.(0,05) 4
Então, E ( x ) ≤ = 5,859.10-7
4
Ex.: Delimitar o erro máximo cometido ao se aproximar y = ln(x), x ∈[1,2], através do
interpolador P20(x), dividindo [1,2] em 20 partes iguais.
Solução:
2 −1
n = 20 ⇒ h= = 0,05
20
Temos f(x) = ln(x) ⇒ f'(x) = x-1 ⇒ f''(x) = -1.x-2 ⇒ ... ⇒ f(21)(x) = 20! x-21
20! (0,05) 21
Então, E ( x ) ≤ = 5,5 . 10-11
21
Ex.: Calcular o grau 'n' mínimo do interpolador polinomial Pn(x) necessário para que o Erro
máximo entre f(x) e o interpolador Pn(x) seja menor que 1.10-6, ao se aproximar f(x)=ln(x)
através de Pn(x), em x∈[1;2], dividindo o intervalo [1,2] em n partes iguais.
Solução:
Nesse caso, pode-se estabelecer valores de 'n' (INTEIROS) para calcular o valor do Erro
máximo de truncamento, facilitando a obtenção das derivadas f(n+1)(x), pois os 'n' são números
inteiros:
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
Então, 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
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) = 6! 1-7 = 720
x∈[1, 2 ]
720.(0,1666667) 7
Então, E ( x ) ≤ = 3,6743.10-4 precisamos aumentar o 'n', vamos tentar n=8
7
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)
)
40320.(0,125) 9
Então, E ( x ) ≤ = 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
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 (11)
( x ) = 10! 1-11 = 3.628.800
x∈[1, 2 ]
3628800.(0,1)11
Então, E ( x ) ≤ = 3,2989.10-6 precisamos aumentar o 'n', vamos tentar n=11
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)
)
Exercícios:
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 mínimo necessário para que o Erro Máximo em cada função seja
menor que 1.10-6.
Splines são réguas flexíveis, de madeira ou plástico, que podem ser curvadas de forma
a passar por um dado conjunto de pontos (xi,fi) chamados nós. Foram muito utilizadas em
desenhos de engenharia, nos tempos em que não se tinha recursos gráficos disponíveis para
computadores. Apesar de ser usada desde o século passado, só no fim da década de 60 foi
desenvolvida a formulação matemática deste problema. Tal formalização possibilitou o
desenvolvimento de vários sistemas computadorizados que utilizam aproximações gráficas de
funções como CAD/CAM e TURBO GRAFIX.
140
Figura: Spline Física e pesos (ducks) que são fixados nas áreas de interesse causando a
deformação da estrutura de madeira ou plástico resultando assim na curva.
Definição 2: Sejam a = x0 < x1 <... < xm = b , com ‘m’ subdivisões do intervalo [a,b].
Uma função spline de grau k com ‘nós’ nos pontos (xi ,yi) com (i = 0,m) é uma função pk(x)
com as seguintes propriedades:
p1
pm-1
pi
po
y1
A função interpolante spline linear de f(x) nos ‘nós’ 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
local, como
( x − x i +1 ) (x − x i )
s1i ( x) = f ( x i ) + f ( x i +1 ) , ∀ x ∈[ x i , x i +1 ]
( x i − x i +1 ) ( x i +1 − x i )
i 0 1 2 3
x 1 2 5 7
y 1 2 3 2,5
( x − 5) ( x − 2) 1
s11 ( x) = 2 +3 = ( x + 4), x ∈ [2,5]
(2 − 5) (5 − 2) 3
( x − 7) ( x − 5) 1
s12 ( x) = 3 + 2,5 = (− x + 17), x ∈[5,7]
(5 − 7) (7 − 5) 4
142
Para obter f(3) utiliza-se a spline válida no intervalo x ∈[2,5] , portanto calcula-se
s12(3) = 1/3(3+4) = 7/3.
Para aproximar y = f(x) , x ∈ [a,b] por splines cúbicas 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 polinômio spi(x), de grau 3, para cada um dos ‘m’ subintervalos [xi,xi+1],
2a). spi(xi) = yi , para todo i = 0,1,2,...,m-1 e spm-1(xm) = ym (spi(xi) passa sobre (xi,yi))
Note que cada polinômio spi(x), relativo ao intervalo [xi,xi+1], deve passar pelos seus
dois pontos extremos (xi,yi) e (xi+1,yi+1).
Ou seja, em cada ponto xi, a INCLINAÇÃO dos dois polinômios 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
143
Tomando spi(x) para cada subintervalo [xi, xi+1] com i = 0,1,2,...,m-1, através da
eq.(1), e aplicando as condições estabelecidas nos itens 2a, 2b, 2c e 2d resulta que:
(i). sp i ( x i ) = d i = y i (2)
sp i (x i+1 ) = a i h + bi h + c i h i + d i = y i +1
3
i
2
i (3)
sp ′i ′( x ) = 6a i ( x − x i ) + 2 b i (5)
S i = sp ′′i (x i ) e
S i + 1 = sp ′i +′1 ( x i + 1 ) = sp ′i ′( x i + 1 )
(ii). sp ′i ′( x i ) = 2 b i = S i ⇒ bi = Si / 2 (6)
i ( x i + 1 ) = 6a i h i + 2 b i = S i + 1
sp ′′ (7)
144
(S i +1 − S i ) h i3 S i h 2i
y i +1 = + + c i h i + y i então
6h i 2
y i +1 − y i Si +1 h i + 2Si h i
ci = − (9)
hi 6
Agrupando tem-se:
a i = (S i +1 − S i ) / 6h i
b = Si / 2
i
(10)
c i = ( y i +1 − y i ) / h i − (S i +1 h i + 2S i h i ) / 6
d i = yi
Assim, tem-se os coeficientes das splines cúbicas em função dos valores de Si e Si+1.
Para obter estes valores, utiliza-se a condição 2c, sp ′i ( x i ) = sp i′−1 ( x i )
sp ′i ( x i ) = c i e
sp′i −1 (xi ) = 3a i−1h 2i−1 + 2bi−1hi−1 + ci−1
⇒ c i = 3a i−1 h 2i −1 + 2b i −1 h i−1 + c i−1 (11)
S 0
S1 y 2 − y 1 y 1 − y 0
h0 2( h0 + h1 ) h1
h1
−
h0
S 2 y 3 − y 2 y 2 − y 1
2( h1 + h2 ) h2
−
h1 h2 h1
M = 6
.
M .
y m − y m −1 − y m −1 − y m − 2
hm− 2 2(hm− 2 + hm−1 ) hm−1 S m−1 h m−1 h m− 2
S m
Como tem-se m+1 pontos com m+1 incógnitas Si, e da eq.(12) tem-se apenas m-1
equações (i=1,2,3,...,m-1), então este é um sistema linear com m-1 equações a m+1
incógnitas. Para que se tenha solução única é necessário impor mais duas condições especiais,
145
de preferência, nos pontos extremos de [a,b] envolvendo S0 e Sm. Dependendo de tais
condições pode-se ter vários tipos de Splines:
1) Supor que as splines cúbicas se aproximam de forma linear nos extremos, em x0=a e xm=b,
isto é, S0 = Sm = 0 ⇒ spline natural
S1 y 2 − y 1 y 1 − y 0
2( h0 + h1 ) h1 −
h1 h0
S2 y 3 − y 2 − y 2 − y 1
2( h1 + h2 )
h1 h2 h2 h1
=
M 6
.
M .
y m − y m −1 − y m −1 − y m − 2
hm−2 2(hm−2 + hm−1) S m −1 h m−1 h m− 2
S1 y 2 − y 1 y 1 − y 0
(3h0 + 2h1 ) h1 −
h1 h0
S2 y 3 − y 2 − y 2 − y 1
2( h1 + h2 )
h1 h2 h2 h1
=
M 6
.
M .
y − y
y m −1 − y m − 2
m m −1
−
hm−2 (2hm−2 + 3hm−1 ) S m −1 h m−1 h m− 2
S1
2( h0 + h1 ) h1
2( h1 + h2 )
S2
h1 h2
=
M
M
hm−2 2(hm−2 + hm−1 ) S m −1
146
y − y1 y1 − y 0
− h0u + 2 −
h1 h0
y 3 − y 2 y 2 − y1
−
h2 h1
6
.
.
− h v + y m − y m −1 − y m −1 − y m − 2
m −1 h m −1 h m− 2
Se for assumido um valor para os extremos a partir da extrapolação linear dos valores internos
tem-se duas equações adicionais para S0 e para Sm.
S1 − S0 S2 − S1 S m − S m−1 S m−1 − S m− 2
= e =
h0 h1 h m−1 h m− 2
Que geram equações adicionais que podem ser adicionadas ao sistema dado pela eq. (12),
Exemplo1. Aproximar a função tabelada abaixo por splines cúbicas, em [0,4] com h = 1, e
estime f(2,5).
x 0 1 2 3 4
y -3 -2 5 24 61
Solução:
Então hi = 1 e m = 4 intervalos.
2( h 0 + h 1 ) h1 0 S 1 [( y 2 − y 1 ) / h 1 − ( y 1 − y 0 ) / h 0
h1 2( h 1 + h 2 ) h2 S 2 = 6 [( y 3 − y 2 ) / h 2 − ( y 2 − y 1 ) / h 1
0 h2 2( h 2 + h 3 ) S 3 [( y 4 − y 3 ) / h 3 − ( y 3 − y 2 ) / h 2
4 1 0 S1 36
1 4 1 S 2 = 72 Sendo a solução S= {S1, S2,S3} = { 6,42857; 10,2857; 24,4285}
0 1 4 S 3 108
com S0 = S4 = 0. Assim, para i = 0:
147
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 1 ( x) = 0( x − 1) + 0( x − 1) 2 − 0, ( x − 0) − 2 para x∈[1,2]
3
(3h 0 + 2 h 1 ) h1 0 S 1 [( y 2 − y 1 ) / h 1 − ( y 1 − y 0 ) / h 0
h1 2( h 1 + h 2 ) h2 S 2 = 6 [( y 3 − y 2 ) / h 2 − ( y 2 − y 1 ) / h 1
0 h2 (2 h 2 + 3h 3 ) S 3 [( y 4 − y 3 ) / h 3 − ( y 3 − y 2 ) / h 2
5 1 0 S 1 36
1 4 1 S 2 = 72 Sendo a solução S = {S1, S2,S3} = { 24,8; 12; 19,2}
0 1 5 S 3 108
com S0 = S1 = 24,8 e com Sm = Sm-1 = 19,2. Assim,
sp 1 ( x) = 0( x − 1) + 0( x − 1) 2 − 0, ( x − 0) − 2 para x∈[1,2]
3
sp 3 ( x) = 0( x − 1) + 0( x − 1) 2 − 0, ( x − 0) − 2 para x∈[3,4]
3
Para efeito de comparação 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 quadráticos tem-se um resultado
mais realístico.
148
b=+pi %valor final do intervalo
m=16 %numero de subdivisões do intervalo [a ; b] para m+1 pontos
tx=a:(b-a)/m:b; %variavel auxiliar
x=tx
y=f1(tx) % valores exatos da função 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 cúbicas, 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 quadráticas 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;
d(i)= y(i);
end
np=4; %4 sub-divisões 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
149
Exemplo: função sen(x).
A curva vermelha é a Função EXATA de Runge. A curva cu azul é uma interpolação polinomial de 5ª ordem (usando seis pontos
de interpolação igualmente espaçados). A curva verde é uma interpolação polinomial de 9ª ordem (usando dez pontos de
interpolação igualmente espaçados). A oscilação pode ser minimizada usando-se os nós de Chebyshev em vez de nós
eqüidistantes para ancorar o polinômio interpolador. Neste caso,
caso, o erro máximo diminui quando a ordem do polinômio aumenta.
150
%1.Polinomial com pontos equidistantes;
x=a:((b-a)/n):b %variavel auxiliar
y=1./(1.+25.*x.*x) % valores exatos da função f(x) para os m+1 pontos tabelados
% Cálculo por interpolação 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; % (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 raízes do polinomio de grau m=n+1 de Chebyshev;
nk=16;mk=nk+1; % 17 nós de Chebychev, polinomio de grau nk=16
for i=1:mk
tk(i)=cos((2*i-1)*pi/(2*mk));
yaux(i)=1/(1+25*tk(i)*tk(i));
endfor
yk=1./(1.+25.*tk.*tk) % valores exatos da função f(t) para m ponto
% Cálculo por interpolação polinomial
for i=1:mk
a1(i,1)=1;
for j=2:mk
a1(i,j)=a1(i,j-1)*tk(i);
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
151
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-divisões 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;interpolação 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;interpolação nos de Chebyshev;",xpp,ypp,"g;Splines Cubicas;",xp,ye,"b;Funcao
exata f(x)=1/(1+25*x^2);")
152
Mas as Splines são essencialmente funções polinomiais, aplicadas em cada sub- sub
intervalo, logo tem-se
se instabilidades numéricas em regiões onde a curva fica muito
vertical,
ical, ou seja, onde a derivada tende ao infinito, como na curva circular abaixo:
Nestes casos, as curvas propostas por Pierre Bezier são adequadas, por que
separam uma função y=f(x) ou mesmo uma relação não funcional, em outras duas,
de modo parametrizado,, x=x(t) e y=y(t), onde t é um parâmetro independente. Desta
forma, x=x(t) e y=y(t), sempre serão funções bem comportadas, sem derivadas
tendendo ao infinito.
153
Somente usando o conceito de parametrização 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
ti t0 t1 ... tn-1 tn
pi p0 p1 ... pn-11 pn
Separando
ndo cada ponto pi=(xi,yi), i=0,...,n, em seus componentes xi e yi como funções
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 são funções, e gerar os pontos novos do
caminho usando estes dois aproximadores (interpoladores, por exemplo).
Aproximação 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).
154
9 9
89 : = ;9 . 1 − : 9
.: . 8 9 : = ;9 . 1 − : 9
.: .
4 4
8>9 : = ;9 . 1 − : 9
.: .>
4
Onde ;9 =
9!
9 !. !
Forma matricial de 89 : :
1−: 9
E H
D 1−: .: G
9
89 : = @;94 . … ;9 . 9 B D . G
4 ;9 .
9
D . G
D . G
C :9 F
Exemplos:
8 : = 1. 1 − : 4 . : 4 . 4
8 : = 1. 1 − : .: . + 2. 1 − : .: .
k=2 => Bezier quadrática.
4 4
+ 1. 1 − : .: .
4
+2. 1 − : .: .
+1. 1 − : .: . 8> : = 1. 1 − : 4 . : 4 . >4
+ 2. 1 − : .: .>
+ 1. 1 − : .: .>
=>
8# : = 8 # : = .: + K .: + L .: + M .:
# 4
1. 1−: # 4
. :4. 4 + 4, - 4 ), bx=3.( - )-cx, ax=( # - 4 )-
3. 1−: #
.: . +
dx= cx=3.(
3. 1−: #
.: . +
(cx+bx)
1. 1−: #
.: .
# #
#
8># : = 1. 1 − : # 4
. : 4 . >4 + 3. 1 − : #
.: .>
=> +3. 1 − : #
. : . > + 1. 1 − : # #
. : # . >#
8># : = >. : # + K>. : + L>. : + M>. : 4
dy= >4 , cy=3.(> ->4 ), by=3.(> -> )-cy, ay=(># ->4 )-
(cy+by)
Algoritmo:
%Curvas de Bezier
clear
n=4 %pontos
%y=[0 0 4 4];x=[0 4 4 0]; %parabola
%parab 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);
=y(1);
n=1000
h=1/n %Espaçamento 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));
*(by+t*ay));
t=t+h;
156
endfor
plot(x,y,'g',x,y,'x',xx,yy,'r')
Exemplo de um perfil:
Exemplo no Corel Draw (ferramenta ‘Forma (F10), Converter em curvas (crtl Q)’):
https://www.youtube.com/watch?v=qCk0C1QO4HY
157
Capítulo 6 - Aproximações por Séries e por Funções Racionais:
Aqui será abordada aproximação de y = f(x), x∈[a,b] com expressão conhecida, através
de outra função z = g(x). Este é um problema central da elaboração de bibliotecas de funções
pré-definidas para os sistemas dedicados.
Para fins de padronização e facilidade de avaliação da qualidade de g(x) vamos
normalizar o intervalo [a; b] fazendo-o operar no intervalo [-1;+1].
Isto é sempre possível através de transformações lineares:
Para y = f(x), x∈[a,b]:
b−a b+a
Fazemos x = t+ então,
2 2
Se t = -1 ⇒ x = a
Se t = +1 ⇒ x = b
b−a b + a
f (x ) = f t+
2 2
2x b+a
t= −
b−a b−a
b−a ad − bc
x= t+
d−c d−c
A aproximação polinomial de y = f(x) com x∈[a,b] pode ser obtido através de:
onde β ∈[ a ; b ] .
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 série de Maclaurin.
x2 x3 xn
(i). e x = 1 + x + + + L + + L
2 ! 3! n!
x2 x4 x6 (-1) n x 2n
(ii). cos( x ) = 1 − + − + L + + L
2 ! 4 ! 6! (2n)!
x2 x3 x 4 (-1)n +1 x n
(iii). ln(1 + x) = 0 + 1.x − + − + L + +L
2 3 4 n
x x2 x3 (-1) n+1 x n
(iv). ln( 1 + x ) = − + + L + + L
2.1 2.2 2.3 2n!
x
x3 x5 x7 (-1) n x 2n+1
(v). ∫e
0
− y2
=x− + −
1! 3 2 ! 5 3! 7
+ L +
n!(2n + 1)
+ L
159
Uma das grandes dificuldades existentes na aproximação de funções é a determinação
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 máximo para o erro de truncamento:
( x − β ) n +1 M
Emax = onde M = max f n +1 ( x)
(n + 1)! x ∈[ β , x ]
Exemplos:
Solução:
f 6 (ξ) x 6
Pelo resto ⇒ R 5 ( x) =
6!
M x6 e 1 16
R 5 ( x) ≤ ⇒ R 5 ( x) ≤ ⇒ R5 ( x) ≤ 0,003775
6! 6!
b). Determine o grau n para não se obter erro superior a ε = 10-8 ao se aproximar f(x) = ex,
x ∈ [-1;+1] por Taylor/Maclaurin.
Solução:
M x n +1
R n ( x) ≤ com M = max e x = e +1
( n + 1)! x ∈[ −1; +1]
e +1 1n +1
R n ( x) ≤ ≤ 10 − 8 ⇒ ( n + 1)! ≥ 2 ,7.10 8
( n + 1)!
Teorema: ''Se a série de Taylor de y=f(x) for convergente com lim termon = 0 e alternada nos
n →∞
sinais, então, o resto Rn(x) é aproximadamente o valor máximo do primeiro termo
abandonado''.
Ex.:
Determine o grau n para aproximar f(x) = ln(1+x), x ∈ [0;+1] por Maclaurin com ε = 10-5.
160
x 2 x3 x 4 (-1)n +1 x n (-1)n + 2 x n +1
ln(1 + x) = x − + − +L+ +
2 3 4 n 14n2 +4 13
Rn ( x )
(-1) n+2 x n +1
Rn( x) ≤ ≤ 10 − 5 ⇒ este 1º termo abandonado (sinais alternados) é máximo, em x
n +1
= 1.
(+1) n+1
≤ 10 −5 ⇒ n ≥ 100000
n +1
Note que nesta série a convergência é muito lenta, pois não tem fatorial no
denominador, e isto implica em grande número de termos na série.
f n +1 (ξ )( x − β ) n +1
Rn ( x) = ξ ∈[β; x]
(n + 1)! com
( x − β ) n +1 M
Emax = onde M = max f n +1 ( x)
ou pelo seu valor máximo, (n + 1)! x ∈[ β , x ]
, para β=0,
teremos
−2 −3
f ( x ) = ln(1 + x ) , f ' ( x ) = 1 /(1 + x ) , f ' ' ( x) = (−1).(1 + x) , f ' ' ' ( x) = (+1).1.2.(1 + x) ,
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)
x∈[ 0 ,1]
M é máximo em x=0 => M = n!
n +1
( x − 0) M (1 − 0) n +1 n! 1
Emax = este erro é máximo, em x = 1, e Emax = =
( n + 1)! ( n + 1).n! n + 1 (mesmo
resultado anterior, n≥100000, para que Erro(x)≤10-5).
Consideração:
Deve-se notar (ver avaliação a seguir) que a aproximação por Taylor/Maclaurin não
distribui uniformemente os erros, o que exige grande número de termos na série para
minimizar os erros máximos (localizados nos extremos). Assim, o tempo de resposta pode
ficar muito alto, mesmo com custo de armazenamento zero.
Por exemplo:
x 2 x3 x 4
Erro ( x) = e x − P4 ( x ) (P4(x) obtido por Maclaurin: e x = 1 + x + + + )
2! 3! 4!
161
Observe que os erros são crescentes a partir do ponto β = 0 de expansão da série e então
não são uniformente distribuídos no intervalo de trabalho.
Tn ( x) = cos(n arcos(x))
Tn ( x ) = cos( n θ) 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 − 8x 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 - 112x5 + 56x 3 - 7x
T8 ( x) = cos(8θ ) = 128x8 - 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)
162
Figura 1 – Polinômios de Chebyschev de grau n=0, 1, 2, 3, 4 e 5.
Prop1: Tn(x) é um polinômio de grau n e só existe um único Tn(x) para cada n. O coeficiente
coeficient
de xn em Tn(x) é 2n-1.
2k − 1
simples e obtidas via α k = cos π ; k = 1,2,...,n.
2n
1º). Obter um aproximador Pn(x) (por séries 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 potências xi pelas respectivas expressões em Ti e agrupa-los:
f ( x) = a0 .T0 + a1.T1 + a2 . (T2 + T0 ) 2 + a 3.(T3 + 3T1 )4/ + a4 . (T4 + 4T2 + 3T0 ) 8 + ... + E T1
f (T ) = b0 + b1T1 + b2 T2 + L + b n Tn + E T1 (2)
b n .1
onde o último termo b n Tn <
2 n−1
4º). Substituir em (3) cada Ti pela sua respectiva expressão em xi, agrupá-los gerando novos
coeficientes ci:
f ( x) = c 0 + c 1 x + L + c k x k + E T2 + E T1
Então,
Solução:
164
e x ≅ 1 + x + 0,5 x 2 + 0,16667 x 3 + 0,041667x 4 + E T1
Avaliação de erros:
x 2 x3 x 4
Erro ( x) = e − P4 ( x )
x
(P4(x) obtido por Maclaurin: e = 1 + x +
x
+ + )
2! 3! 4!
Note que os erros estão uniformemente distribuídos e todos se mantém abaixo do erro
165
de truncamento total previsto inicialmente, ET = 0,0278607.
1!
i =1
3!
i=2
5!
i =3
7!
i=4
9!
i =5
Erro máximo para séries 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.
x 2 i −1 x 2i −1 x9
ErroMaxMac= (−1) i +1 = 10 −6 ( −1) i +1 = = 2,755.10 −6
( 2i − 1)! p/ i=5 (em x=1) ( 2i − 1)! 9!
f n+2 (ξ )( x − β ) n+2
Rn( x) =
Ou pelo resto da série geral de Maclaurin, (n + 2)! , tomando o máximo do
próximo termo geral não nulo, depois do grau n=7:
f 7+2
(ξ )( x − β ) 7 + 2 f 9 (ξ )( x − β ) 9 cos(ξ )( x − 0) 9 cos( 0)(1 − 0) 9
R7 ( x) = ≤ Max = Max = = 2.7557.10 - 6
(7 + 2)! (9)! (9)! (9)!
Então,
x3 x5 x7
fMac ( x ) ≅ x − + −
3! 5! 7!
Observe que o erro de truncamento máximo da série de grau 'n' pode ser obtido pelo máximo
f n+2 (ξ )( x − β ) n+2
Rn( x) =
do próximo termo geral não nulo da série de Maclaurin, dado por , ou no (n + 2)!
caso, de séries com termos de sinais alternados (termo nulo não tem sinal), pelo máximo do
x n+2
±
próximo termo abandonado, neste caso, ( n + 2 )! .
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 prática, o limite da ordem de 10 −6 , pois na
−6 −6
estimativa de erros máximos temos ET = 3,100.10 + 2,755.10 = 5,855.10
-6
Logo,
8111 601 23
fCheb ( x ) ≅ .T1 - .T3 + .T5
9216 15360 46080
46079 1 959 3 23
fCheb ( x ) ≅ .x - .x + .x 5
46080 5760 2880
N=7
a = -1
b = +1
h = (b - a)/N; % passo
t = a:h:b;
y = sin(t);
c = fgauss(neq, A);
'coeficientes de Pn(x):'
[c]
167
%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
#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;
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.
−6 −6
Observe que o erro máximo estimado era ET = 3,100.10 + 2,755.10 = 5,855.10
-6
168
Ex.: Aproximar f(x) = ln(x+1) em x ∈ [0;+ 1] por Chebyschev com erro máximo ε = 1,5.10-6.
Solução:
x2 x3 x4
ln( x + 1) = x − + − + ...
2 3 4
Verifica-se que a série acima é convergente e alternada, e assim pode-se tomar o erro de
truncamento como o primeiro termo abandonado na série:
x n+1
E T1 = (-1)n
. −6
≤ 1,510
n +1
n ≥ 666666
169
Ou seja, houve uma grande economia de memória de tempo de processamento com a
aproximação por polinômios de Chebyschev. Só fica em aberto a questão de como obter um
aproximador de Chebyschev a partir de uma aproximação de Maclaurin de grau n = 666666.
Isto será apresentado mais adiante.
Considerações:
+1
1 f ( x)
0
b = ∫
π −1 1 − x 2
dx
+1
n
2 f ( x) Ti ( x)
f ( x) = ∑ b i Ti onde b i = π ∫ 1 − x 2 dx
i=0 −1
O problema é que estas integrandas não têm primitivas conhecidas, e devem ser
aproximadas por métodos numéricos (vide capítulo Integrações Numéricas).
#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 máximo 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
%Séries 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*T1-
0.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*T1-
0.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;
171
% 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
%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 -0.00308641975308642
erroMacMax = 0.00114412045384343
Nc = 3
cC = 0.4058509105773000 0.3333333333333340 -0.0586419753086420
0.0123456790123457
erroChebMax = 0.00152992292297832
172
173
I.V.3 - Aproximação Racional de y = f(x):
1º) Polinômios oscilam com pontos de ancoragem com certos desvios (tipo dados
experimentais);
2º) Não aproximam eficientemente funções assintóticas;
1
Ex.: f ( x) =
( x + 1)
2
1 p o ( x)
Ex.: f ( x ) = ⇒ R 1 ( x) =
x q 1 ( x)
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
a 0 + a1x + L + a n x n
R nm ( x) = ≅ f ( x)
1 + b1 x + L + b m x m (com b0=1 para obtermos uma única solução)
174
De modo que cada derivada de f(x) deve ser equivalente a derivada da aproximadora
racional Rnm(x):
fM ( x) ≅ c0 + c1 x + c2 x 2 + L + c M x M + E T
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) ≅ Rnm ( x)
a0 + a1 x + L + a n x n
c0 + c1 x + c2 x 2 + L + c M x M = (b0=1)
1 + b1 x + L + b m x m
(1 + b1 x + b2 x 2 + L + bm x m ).(c0 + c1 x + c2 x 2 + L + cM x M ) = a0 + a1 x + L + a n x n (**)
3º). Aplicar as condições (**) e isolar os coeficientes ai, de i=0 até i=n, em função dos valores
de bj e ck , para termos de graus i=0 até n ⇒
(1 + b1 x + b2 x 2 + L + bm x m ).(c0 + c1 x + c2 x 2 + L + cM x M ) = a0 + a1 x + L + a n x n (**)
a 0 = c0
a = b c + c
1 1 0 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
M
a = b c + b c
n n n −m m −1 n − m +1 + L + c n
Depois isolam-se os coeficientes bj, com variando j=1 até j=m, em função dos valores de ck,
e fazendo todos os termos de graus n+1 até n+m iguais a zero, gerando sistema (****),
175
cn −m+1 cn −m+ 2 L cn b m c n +1
cn −m+ 2 cn −m+3 L cn +1 b m-1 = - c n +2 (****)
M M M
c M-m c M − m+1 L c M −1 b1 c M
que é um sistema linear mxm, cuja solução fornece os bj, com j=1 até j=m, que substitídos em
(***) fornece os ai.
Obs.: Dependendo de n e m pode ocorrer que em (***) ou (****) apareçam ai e bj com i<0 ou
j<0. Nestes casos, fazer sempre ai = 0 e bj = 0.
Ex1.: Obtenha a aproximação racional R32(x) para f(x) = arctg(x), x ∈ [-1;+1] e avalie o erro
exato no final.
Solução:
x3 x5 x7 x 2n -1
f1 ( x)= x − + − + L + (-1)n +1 ⇒ n = 1,2,..., N.
3 5 14
7 4442444 2n43-1
ET
x7
Veja que o erro de truncamento máximo é dado por ET = − , pois é uma série
7 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 c 3 = −1 / 3
⇒ c1 = 1 c4 = 0
c2 = 0 c5 = 1 / 5
a0 + a1 x + a 2 x 2 + a 3 x 3
c0 + c1 x + c2 x 2 + c3 x 3 + c 4 x 4 + c5 x 5 = (b0=1)
1 + b1 x + b 2 x 2
(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 )
176
(c0 + c1 x + c2 x 2 + c 3 x 3 + c 4 x 4 + c 5 x 5 ) +
(c0b1 x + c1b1 xx + c2 b1 xx 2 + c 3b1 xx 3 + 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 +
(c0 b1 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 + c3 ) x 3 +
(c2 b 2 x 2 x 2 + c 3b1 xx 3 + c 4 x 4 ) + (c2 b 2 + c3b1 + c 4 ) x 4 +
(c3 b 2 x 2 x 3 + c 4 b1 xx 4 + c 5 x 5 ) + (c3 b 2 + c 4b1 + c5 ) x 5 +
(c 4 b 2 x 2 x 4 + c 5b1 xx 5 ) + (c 4 b 2 + c5b1 ) x 6 +
(c 5 b 2 x 2 x 5 ) = (a0 + a1 x + a 2 x 2 + a 3 x 3 ) (c5 b 2 )x 7 = (a0 + a1 x + a 2 x 2 + a 3 x 3 )
(c0 ) x 0 +
(c2 b 2 + c 3b1 + c 4 ) x 4 +
(c0b1 + c1 ) x + 1
(c3 b 2 + c 4b1 + c 5 ) x 5 +
(c0 b 2 + c1b1 + c2 ) x + 2
(c 4 b 2 + c 5b1 ) x 6 +
(c2b1 + c1b 2 + c 3 ) x = (a0 + a1 x + a 2 x + a 3 x )
3 2 3
(c 5 b 2 ) x 7 = 0 x 4 + 0 x 5 + 0 x 6 + 0 x 7
a 0 = c0
a1 = c0 b1 + 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
c 2 c3 b 2 c
c = - 4
3 c 4 b1 c 5
0 − 1 / 3 b 2 0 b 1 = 0
− 1 / 3 =- ⇒
0 b1 1/5 b2 = 3 / 5
177
a 0 = c 0
a = b c + c
1 1 0 1
a2 = b2 c0 + b1c1 + c2
a3 = b3 c0 + b2 c1 + b1c 2 + c3
para m = 2 ⇒ b3 = 0 , pois q 2 ( x) = 1 + b 1 x + b 2 x
2
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í,
Algoritmo:
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
178
%determinar coeficientes C
%C COMEÇA 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 começa do 1
[c(4) c(5) -c(6)];
];
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; Série
Maclaurim n=5;", xp, ypade, "c; Racional Pade R32;")
plot(xp,Et,"r;Erro=|arctg(x)-f1(x)|, f1(x)=Série Maclaurim n=5;", xp, Ep, "m; Erro=|arctg(x)-
R32(x)|, R32(x)= Racional Pade;")
grid
179
Avaliação de erro exato:
Exemplo: f(x)=exp(x) com n=5 termos na série de Maclaurin, Chebyshev n=4 e Padé R32.
clear
%Comparativo entre aproximações polinomial, séries de taylor, Chebyschev e Padé
%1-Interpolação 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
181
C = fgauss(tsis,A) % coeficientes do polinomio interpolador
npade = 3;
mpade = 2;
M = npade + mpade;
%determinar coeficientes C
%C COMEÇA 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 começa do 1
[c(4) c(5) -c(6)];
];
b= fgauss(mpade, A); %b começa 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
182
b
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)
183
Para um exemplo com p4 ( x) = a0 + a1 x + a2 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 2 + c3 x 3 + c 4 x 4 + c5 x 5 + c 6 x 6 + c7 x 7 =
1 + b1 x + b2 x 2 + b3 x 3
(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 + a2 x 2 + a 3 x 3 + a 4 x 4
(c0 + c1 x + c2 x 2 + c3 x 3 + c 4 x 4 + c5 x 5 + c 6 x 6 + c 7 x 7 )(1) +
(c0 + c1 x + c2 x 2 + c3 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 + c3 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 + c3 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 + c2b1 xx 2 + c 3b1 xx3 + c 4b1 xx 4 + c 5b1 xx5 + c 6b1 xx 6 + c 7b1 xx 7 ) +
(c0b2 x 2 + c1b2 x 2 x + c2b2 x 2 x 2 + c 3b2 x 2 x 3 + c 4b2 x 2 x 4 + c 5b2 x 2 x 5 + c 6b2 x 2 x 6 + c 7b2 x 2 x 7 ) +
(c0b3 x 3 + c1b3 x 3 x + c2b3 x 3 x 2 + c 3b3 x 3 x 3 + c 4b3 x 3 x 4 + c 5b3 x 3 x 5 + c 6b3 x 3 x 6 + c 7b3 x 3 x 7 ) =
= a0 + a1 x + a2 x 2 + a 3 x 3 + a 4 x 4
184
(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
(c 7 b1 + c 6 b2 + c5b3 ) x 8 − despreza − se
(c 7 b2 + c 6b3 ) x 9 − despreza − se
(c 7 b3 ) x10 − despreza − se
Exercícios:
Considerações:
1º). Não se tem uma forma prévia 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 método sugerem que se tome n =
m ou n = m +1 ou n = m-1.
x2 x3 x4
e x ≅ R 40 ( x) = 1 + x + + + ⇒ Emax = 0,0099485
2 6 24
1
e x ≅ R 04 ( x ) = 2
⇒ Emax = 0,051615
x x3 x4
1− x + − +
2 6 24
Dentre as três aproximações apresentadas, a forma R22 é a que apresenta menor erro de
truncamento.
2º). Para se obter uma aproximadora racional com distribuição uniforme de erros é necessário
compensar os erros na série geradora. Desta forma se for utilizada previamente a série
aproximadora por polinômios de Chebyschev no passo (1º), se obtém uma distribuição de
erros uniforme na aproximação racional.
3º). Pelos exemplos anteriores, nota-se que Padé não distribuiu uniformemente os erros em
[-1;+1], que é um defeito previsível, pois a distribuição de erros é uma extensão de
Chebyschev. Para sanar este problema, mescla-se Padé com Chebyschev. Desta forma é
utilizada primeiramente a série aproximadora por polinômios 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 série de Chebyschev em função de x.
M
f ( x) ≅ t ( x) = ∑ ck Tk ( x) = c0 + c1T1 + c2 T2 + L + c M TM
k =0
E aproximamos o polinômio aproximador de Chebyshev por uma forma Racional:
M
a 0 + a1T1 + L + a n Tn
∑ b T ( x) ≅ r ( x ) =
k =0
k k
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 n Tn
c0 + c1T1 + c2 T2 + L + c M TM − =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+ cMTM )(. 1+ b1T1 L + bmTm ) − (a0 + a1T1 + L+ a nTn ) = 0
186
(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 ) +
M
(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θ ) :
( )
Ti ( x).Tj ( x) = cos(iθ ). cos( jθ ) = (cos(i + j )θ + cos(i − j )θ ) = Ti + j ( x) + T|i- j| ( x)
1 1
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 )) +
M
(c0 .bm Tm + c1.bm (Tm+1 + Tm−1 ) / 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:
3. A partir do polinômio de Chebyshev acima, com M=4, aproxime uma forma Racional,
R22(x):
187
M
f ( x) ≅ f 2 ( x) = ∑ c k 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 polinômio de Chebyshev acima por uma forma Racional R22(x), n=2 e
m=2:
a + a T + a 2T2
R22 ( x) = 0 1 1
1 + b1T1 + b 2 T2 , com n+m=M (b =1).
0
Igualando
f ( x) ≅ f 2 ( x) = c0 + c1T1 + c2 T2 + c3T3 + c 4 T4
a0 + a1T1 + a 2T2
f ( x) ≅ R22 ( x) =
1 + b1T1 + b 2 T2
Aproximando Chebyschev por Padé:
a0 + a1T1 + a 2T2
f 2 ( x) − R22 ( x) = 0 ⇒ c0 + c1T1 + c 2 T2 + c 3 T3 + c 4 T4 − =0
1 + b1T1 + b 2 T2
Multiplicando ambos lados por ( 1 +b1T1 + b2T2 ):
(
Ti ( x).Tj ( x) = cos(iθ ). cos( jθ ) = (cos(i + j )θ + cos(i − j )θ ) = Ti + j ( x) + T|i- j| ( x)
1 1
)
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 )
188
(c0 + c1 .b1 / 2 + c2 .b 2 /2).T0 +
(c1 + c0 .b1 + c2 .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 = (a0 .T0 + a1T1 + a 2T2 )
Igualando termos de mesma ordem:
(c 2 /2 + c 4 / 2 ).b1 + c1 .b 2 / 2 = −c 3
c 3 .b1 /2 + c 2 .b 2 /2 = −c 4
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
189
%2-aproximação 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!
npade = 3;
mpade = 2;
M = npade + mpade;
%determinar coeficientes c
%c COMEÇA 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 começa do 1
[c(4) c(5) -c(6)];
];
baux= fgauss(mpade, A); %b começa em 1 mesmo, igual a formula do pade, pois bo=1
sempre.
b(1)=baux(2)
b(2)=baux(1) %o b(0) NÃO foi trocado por b(1), pois só usamos b(1 e b(2)
b(3) = 0 %para m=2
%calcular os As
npade2 = 2;
mpade2 = 2;
M2 = npade2 + mpade2;
%determinar coeficientes c
%c COMEÇA 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
começa do 1
[ c2(4)/2 c2(3)/2 -c2(5)];
];
b2= fgauss(mpade2, A2); %b começa em 1 mesmo, igual a formula do pade, pois bo=1
sempre.
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);
192
Capítulo 7 - Aproximação por Ajuste, com coeficientes linearess e não lineares
7.1).
.1). Aproximação por Ajuste de Curvas:
xk x1 ... xm
yk = f(xk) y1 ... ym
Contudo, quando a função tabelada for oriunda de experimentos, coleta de dados ... ,
desde que não caracterize caminhos, nenhuma das técnicas anteriores é adequada.
Pode-se
se observar no exemplo da figura 1 que os 'm' pontos seguem uma tendência,
caracterizando o seu comportamento, nestes casos é preferível escolher uma função que
represente esta tendência, ao invés de passar uma função interpoladora que passe sobre todos
os m pontos.
Definição 1:: Uma função de ajuste é uma função com tendência previamente
previamente conhecida e que
mais se aproxima de todos os pontos (xk,yk), k=1,2,...,m, e não, necessariamente, os contém.
Definição 2:: Para uma função experimental tabelada (xk,yk), k=1,2,...,m, e uma representante
de sua tendência y = g(x), denomina-se
denomina de desvio local dk a seguinte expressão:
193
d k = g( x k ) − y k
m
(i). ∑d
k =1
k seja mínima:
m
(ii). ∑| d
k =1
k | seja mínima:
Também uma forma ambígua, que não distingue dentre os ajustes bom e ruim, e não
permite minização.
m
(iii). ∑d
k =1
2
k seja mínima:
- Desaparece o sinal
- Enfatizam-se
se os grandes desvios
- Minimizam-se
se os pequenos desvios
- Não é ambígua, só existe uma função g(x) que satisfaça este critério
critério
Por exemplo,
194
m
(4i) ∑d
k =1
k = 25
m
(4ii) ∑d
k =1
k = 17
xk x1 x2 ... xm
yk = f(xk) y1 y2 ... ym
pode-se propor o ajuste dos pontos a um polinômio Pn(x) de grau n (n<m), ou a uma outra
função que melhor represente os m pontos:
Pn ( x) = a1 x n + a2 x n −1 + ... + +an x + an +1
Então,
∑ d =∑ [a x ]
m m
2
2
k
n
1 k + a2 xkn −1 + ... + an xk + an +1 − yk
k =1 k =1
m
E´ necessário agora minimizar ∑d
k =1
2
k , que é uma função dos coeficientes do polinômio,
k =1 k =1
∂ϕ ∂ϕ ∂ϕ
= 0, = 0 , ... =0
∂a1 ∂a 2 ∂an +1
onde
∂ϕ m
= ∑ 2[a1 xkn + a2 xkn −1 + ... + an xk + an +1 − yk ].xkn = 0
∂a1 k =1
∂ϕ
= ∑ 2[a1 xkn + a2 xkn −1 + ... + an xk + an +1 − yk ].xkn −1 = 0
m
∂a2 k =1
M
195
∂ϕ
= ∑ 2[a1 xkn + a2 xkn −1 + ... + an xk + an +1 − yk ].x1k = 0
m
∂an k =1
∂ϕ
= ∑ 2[a1 xkn + a2 xkn −1 + ... + an xk + an +1 − yk ].1 = 0
m
∂an +1 k =1
∂ϕ m m m m m
= ∑ a1 xk2 n + ∑ a1 xk2 n −1 + ... + ∑ an xkn +1 + ∑ an +1 xkn − ∑ xkn yk = 0
∂a1 k =1 k =1 k =1 k =1 k =1
∂ϕ m m m m m
= ∑ a1 xk2 n −1 + ∑ a1 xk2 n − 2 + ... + ∑ an xkn + ∑ an +1 xkn −1 − ∑ xkn −1 yk = 0
∂a2 k =1 k =1 k =1 k =1 k =1
M
∂ϕ m m m m m
= ∑ a1 xkn +1 + ∑ a1 xkn + ... + ∑ an xk2 + ∑ an +1 x1k − ∑ x1k yk = 0
∂an k =1 k =1 k =1 k =1 k =1
∂ϕ m m m m m
= ∑ a1 xkn + ∑ a1 xkn −1 + ... + ∑ an x1k + ∑ an +1 − ∑ yk = 0
∂an +1 k =1 k =1 k =1 k =1 k =1
m
Considerando ∑a k =1
n +1 = (an +1 + an +1 + ... + an +1 + an +1 ) = m.an +1 .
14444 4244444 3
m vezes
M
m m m m m
f n ( a1 , a2 ,..., an , an +1 , ) = ∑ a1 xkn +1 + ∑ a1 xkn + ... + ∑ an xk2 + ∑ an +1 x1k − ∑ x1k yk = 0
k =1 k =1 k =1 k =1 k =1
m m m m m
f n +1 ( a1 , a2 ,..., an , an +1 , ) = ∑ a1 xkn + ∑ a1 xkn −1 + ... + ∑ an x1k + ∑ an +1 − ∑ yk = 0
k =1 k =1 k =1 k =1 k =1
∑x 2n
k ∑x 2 n −1
k L ∑x 2 n − ( n −1)
k ∑x 2 n −( n )
k
a ∑ xkn y k
1
∑x 2 n −1
∑x 2 n−2
L ∑x n
∑x n −1
a 2 ∑ x k y k
n −1
M =
k k k k
(*)
M M
an+1 y
∑x ∑x ∑x ∑ k
n n −1 1
k k L k m neqs
m
Obs.: Entende-se ∑x k como ∑x k .
k =1
A solução deste sistema linear de neqs x neqs = (n+1)x(n+1) equações fornece os n+1
196
m
coeficientes de Pn (x) com o menor desvio quadrátrico ∑d
k =1
2
k .
Ex. Ajuste o conjunto de pontos tabelados abaixo a uma reta e estime f(5) e f(10).
xk 1 3 4 6 8
yk = f(xk) 0 1 2 4 5
Solução:
P1 ( x ) = a1 x + a 2
P1 ( x ) = 0 .7603 x − 0 .9458
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 utilização de um método direto para resolução. Adicionalmente
m
observa-se que o sistema (*) é simétrico ( a ij = ∑x k =1
2 n−(i + j −2)
k ) e que normalmente este é
det(A ) m
A =
α 1α 2
onde α i = ∑a
j =1
2
ij
A = 0 ,05
197
Ex.: Para
xk 0 0,25 0,5 0,75 1,0
yk = f(xk) 1 1,284 1,6487 2,117 2,7183
Solução:
De (*) tem-se
Via de regra, o resultado mais confiável é o da curva polinomial na qual ocorre o menor
m
desvio total D = ∑ d k2 . Para se ter um padrão de comparação, normalmente adota-se o valor
k =1
normalizado do desvio total, dado por:
1 m 2
D= ∑ dk
m k =1
O ponto crítico determinado só pode ser um ponto de mínimo desvio, pois por exclusão, não
pode ser um ponto de máximo desvio, uma vez que sempre é possível obter-se uma nova
função ajustadora mais longe dos pontos experimentais e assim nunca podemos atingir um
ponto de máximo desvio quadrático, sempre haverá uma curva mais longe dos pontos
experimentais.
Por outro lado, pode-se calcular a matriz Hessiana, com as derivadas de 2ª ordem:
,…,
=U>0
Q R
Q
P
+ST,
Q R ,…, Q R ,…,
U
Q Q Q V V
m
P = VV V
∑x
V = >0
k
Q R ,…, Q R ,…, V V
k =1
Q Q Q
m m
∑ xk ∑x 2
+ST, ,+S
k
V U V
Q W+1 Q W
m m
Q W+1 Q W
V 2 2 V ∑ xk ∑x 2
k
P# = V V =V V>0
Q W+1 Q Q W Q W Q W−1
m m m
2 ∑ x ∑x ∑ x 2 3
W
k k k
VQ R 1, … , Q R 1 , … , W+1 Q R 1 , … , W+1
2 2 2
k =1 k =1 k =1
W+1 V V V
Q W Q WQ Q W−1
2 2
m m m
∑ xk2 ∑ xk3 ∑x 4
W−1
k
k =1 k =1 k =1
E assim por diante, se H1>0, H2>0, ..., Hn>0, então A matriz H é positiva definida e o ponto
crítico obtido (a1 , a2 ,..., an+1 ) é um ponto de mínimo.
A exemplo do efetuado para funções polinomiais pode-se deduzir uma função própria
representativa dos pontos tabelados.
Exemplos:
k =1 k =1
∂ϕ ∂ϕ
=0 e =0
∂a ∂b
onde
∂ϕ m
= ∑ 2[axk2 + b ln( xk ) − yk ].xk2 = 0
∂a k =1
( ) ( )
∑ xk4 a + ∑ ( xk2 ln xk ) b = ∑ ( y k xk2 )
( ) ( )
∑ ( xk ln x k ) a + ∑ (ln xk ) b = ∑ ( y k ln x k )
2 2
Note que também nenhuma transformação de variáveis gera uma função polinomial (2o.
modo solução), por isso procede-se a minimização do desvio quadrático total D que é uma
função dos parâmetros (a,b):
∂ϕ (a, b)
[ ][ ]
m
= 2.∑ axk2 + ln(bxk ) − yk . xk2 = 0
∂a k =1
∂ϕ ( a, b)
[ ]. bxx
m
= 2.∑ axk2 + ln(bxk ) − y k k
=0
∂b k =1 k
200
Nesses casos temos que determinar os valores de 'a' e 'b' pelo método de Newton, a partir de
um valor inicial (ao,bo):
[ ][ ]
m
1
f (a, b) = ∑
k =1
axk2 + ln(bxk ) − y k . xk2 = 0
[ 1
]
m
f (a, b) =
2 ∑k =1
axk2 + ln(bxk ) − y k . = 0
b
Exercício em computador:
A equação de estado de Redlich–Kwong, permite relacionar propriedades termodinâmicas de gases
reais, como o ar, por exemplo, com P como variavel depentente de v e T:
X Y, Z = −
[∗Z ^
Y ] √Z .Y. Y ]
(1)
Onde R é a constante universal dos gases = 8,314 (J)/(mol.K) e os valores de 'a' e 'b' são parâmetros
de cada gás, que podem ser determinados a partir de valores de propriedades físicas do gás: P,v,T
medidos experimentantalmente.
Como toda medição experimental possui erros "inerentes", então procedemos uma série de 'm'
medições com o intuito compensar os erros de uma medida para outra. Nesse exemplo, foram
efetuadas 20 medições da variável pressão, que é função de outras duas. Foram descartadas 2
medições e serão consideradas m=18 medições efetivas para a determinação dos parâmetros 'a' e 'b'
do gás, conforme segue:
Se tivessemos 2 pontos obtidos com exatidão, poderíamos substitui-los na eq. (1) de Redlich–
Kwong, gerando 2 equações não lineares, conforme abaixo:
` a, b = − − g1 = 0 ` a, b = − − g2 = 0
c∗d + c∗d +
e f √d .e . e f e f √d .e . e f
e
e determinar os 2 valores incógnitas, ‘a’ e ‘b’, usando o Método de Newton, mas ao invés de 2 pontos
exatos, temos m=18 experimentais, que podem compensar os seus erros pela repetição do
experimento.
R , K = ∑o k − −g m n
c∗d 9 +
9 e 9 f ld 9 .e 9 . e 9 f
(2)
Para determinar os parâmetros 'a' e 'b', vamos obter o ponto crítico de D em relação a 'a' e 'b':
= 2. ∑o k − − g m n . k− n=0
pq +,f c∗d 9 +
p+ 9 e 9 f ld 9 .e 9 . e 9 f ld 9 .e 9 e 9 f
(3)
= 2. ∑o k − − g m n . kr ∗ i m . − . n = 0 (4)
pq +,f c∗d 9 + . +
pf 9 e 9 f ld 9 .e 9 . e 9 f e 9 f 2 ld 9 .e 9 e 9 f 2
Então, determine 'a' e 'b', resolvendo as duas equações não lineares abaixo:
201
, K = ∑o k − − g m n . k− n=0
c∗d 9 +
s1 9 e 9 f ld 9 .e 9 . e 9 f ld 9 .e 9 e 9 f
(5)
function y=f1(m,R,P,v,T,x)
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))));
end
s2 , K = ∑o k − − g m n . kr ∗ i m . + . n = 0 (6)
c∗d 9 + +
9 e 9 f ld 9 .e 9 . e 9 f e 9 f 2 ld 9 .e 9 e 9 f 2
function y=f2(m,R,P,v,T,x)
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));
end
Sugestão: aplique o Método de Newton, com derivadas calculadas numericamente, para resolver as
o o
equações (5) e (6) acima, a partir do valor inicial nulo (a ;b )=(0;0).
Calcule também o desvio quadrático total médio, eq. (7), entre os valores das Pressões P obtidas
com a eq. (1), usando Tk, vk e ‘a’, ‘b’,obtidos das eqs. (5) e (6), em relação aos m=18 pontos Pk
experimentais:
R= ∑o t − −g m u
c∗d 9 +
o 9 e 9 f ld 9 .e 9 . e 9 f
(7)
202
2ª). Transformação de Variáveis:
Exemplos:
203
a). Exponenciais: y = a b x ( b = acelerador ou desacelerador exponencial)
a = e a2
b = e a1
Exemplo:
Ajuste a tabela xk 1 3 4 6
yk 2,5 13 22 36
Solução:
a = e 0,673 = 1,960
b = e 0 ,533 = 1,704
y = 1,96 (1,704) x
204
Fazendo ln( y ) = z ; b = a1 ; ln( a ) = a 2 e ln( x ) = t , tem-se
a = e a2
b = a1
1
b). Hipérboles: y =
a2 + a1 x
1
= a2 + a1 x
y
Fazendo 1 / y = z ; tem-se
Ex.:
A tabela abaixo com m=5 pontos, obtidos experimentalmente, relaciona o volume adimensional de
álcool gerado V em um reator fictício em função da sua temperatura adimensional T média de reação:
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 função da sua temperatura média
2 -1
de reação T é conhecida e dada por uma função não polinomial V(T)=(a + b/T ) .
a). Avalie os parâmetros a e b através de ajuste de curvas, por dedução direta da forma não
2 -1
polinomial V(T)=(a + b/T ) e por transformação parametrizada, transformando para polinomial, de
modo a levar em conta todas as m=5 medições experimentais em ambos os casos; (1,0)
2 -1
b). Calcule V(T=0.8), pela função 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 parâmetros a e b, de V(T)=1/(a + b/T ), através de
ajuste de curvas, direto e parametrizado, de modo a considerar as m=5 medições
experimentais acima. (2,0).
aa = 1.1138
bb = 0.95610
206
D = 3.5688e-004 (ajuste parametrizado, com mudanças de variáveis, não atinge o MÍNIMO
desvio quadrático, como veremos a seguir)
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
207
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 (MÍNIMO) que o ajuste
parametrizado).
208
Capitulo 8 – Integração
ntegração Numérica
b
Em muitos modelos matemáticos tem-se
tem se que efetuar a operação I = ∫ f ( x )dx (ou de
a
ordens superiores). No cálculo este problema já foi abordado, como pode ser visto na
enciclopédia Wikipédia, http://pt.wikipedia.org/wiki/Integral#Integral_definida :
∫
“ f ( x )dx = A = F(b) − F(a ) ”
a
b
Contudo, a aplicação do TFC em I = ∫ f (x )dx pode ser difícil ou até impossível,
a
uma vez que:
209
c) Existem integrandas com primitivas desconhecidas.
1 5
dx
∫ ln(x)
−x 2
Ex: ∫e
0
dx e
2
b
Def. – obter I = ∫ f ( x )dx
a
numericamente significa aplicar o TFC não em y = f(x) mas em
aproximadoras de y = f(x).
210
8.1.1 – Métodos de Newton
a) Trapézios
b
Para se estimar I = ∫ f ( x )dx , proceder como segue:
a
(b − a )
- Dividir [a,b] em n subintervalos de comprimento h = .
n
- 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.
y i +1 − y i
p i (x) = y i + (x − x i )
h
x i +1
∫ p (x )dx = 2 [y + y i +1 ]
h
- Daí, Ai = i i
xi
b n
- Finalmente, ∫ f (x )dx ≅ ∑ A i =
a i =1
=
h
[y1 + y 2 ] + h [y 2 + y 3 ] + ... + h [y n + y n+1 ]
2 2 2
= [y1 + 2 y 2 + 2y 3 + ... + 2y n + y n +1 ]
h
2
h n
= y1 + 2.∑ yi + yn+1 = Tn
2 i=2
Teorema:
b
n
n →∞
∫
“ lim T = f ( x )dx ”
a
1
Exemplo: Efetue por Trapézios I = ∫ f ( x )dx , sendo
0
0 0,25 0,5 0,75 1
x
f(x) 3 5 8 4 2
Solução:
211
Temos n + 1 = 5 ⇒ n = 4 e xi+1 – xi = 0,25 ⇒ h = 0,25
1
Aplicando (1) ⇒ ∫ f ( x)dx ≅
0,25
[3 + 2(5 + 8 + 4) + 2] ≅ 4,875
0
2
Devemos notar que o teorema quando utilizado em precisão finita pode ser inválido, pois
neste caso existe um 'n' ótimo, que não é conhecido previamente.
Teorema do Resto:
b
Em ∫ f ( x)dx se dividirmos o [a,b] em n partes iguais e aplicarmos Trapézios, então
a
− h ( b − a )f ' ' (ζ )
2
ET = , ξ ∈ [a,b]
12
h 2 (b − a ) M M = max f ' ' (x )
ET ≤
12 com x∈[ a , b ]
, que é um valor limite do erro de truncamento.
Para y = f(x), continuamente diferenciável dentro de [a; b], segundo o teorema de Taylor f(x)
pode ser escrita exatamente, a partir de qualquer ponto β (x>β), como:
Desse modo que f(x) = Pn(x) + Rn(x) ou f(x) ≅ Pn(x) (Aproximação Polinomial,
assumindo truncamento da série a partir de 'n').
Para interpolação polinomial geral de grau n:
n
f n +1 (ξ )∏ ( x − xi )
Rn( x) = f ( x) − Pn( x) = i =0
( n + 1)!
No caso da aproximação por interpolação polinomial com n=1, usada no método dos
Trapézios, f(x) = P1(x) + R1(x), onde os 2 pontos utilizados para ancorar P1(x) são 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,
f 1+1 (ξ )( x − xi )( x − xi +1 ) f 2 (ξ ) i+1
xi +1 xi +1 x
∫ f ( x)dx = x∫ P1 ( x) +
(1 + 1)! dx = Ai + (2)! ∫ (( x − xi )( x − xi +1 ) ).dx
xi i xi
212
xi +1
f 2 (ξ ) f 2 (ξ ) x 3
∫( )
xi +1 xi +1
x2
∫ f ( x)dx = Ai + x − ( xi + xi +1 ) x + xi xi +1 .dx = Ai + − ( xi + xi +1 ) + xi xi +1 x
2
xi
(2)! xi
(2)! 3 2 x i
xi +1
f 2 (ξ ) x3
xi +1
x2
∫ f ( x)dx = Ai + − ( xi + xi +1 ) + xi xi +1 x = Ai + = Ai + ETn(ξ )
xi (2)! 3 2 x i
xi +1
f 2 (ξ ) x3 f 2 (ξ ) xi +1 − xi xi +1 − xi
3 3 2 2
x2
ETn(ξ ) = − ( xi + xi +1 ) + xi xi +1 x =
− ( xi + xi +1 ) + xi xi +1 ( xi +1 − xi )
(2)! 3 2 x (2)! 3 2
i
f (ξ ) x − xi − xi
2 3 3 2 2
x
ETn(ξ ) = i +1
− ( xi + xi +1 ) i +1
+ xi xi +1 ( xi +1 − xi )
(2)! 3 2
com xi +1 = xi + h
f 2 (ξ ) ( xi + h)3 − xi ( xi + h)2 − xi
3 2
ETn(ξ ) = − ( x + x + h ) + x ( x + h)( x + h − x )
(2)!
i i i i i i
3 2
f 2 (ξ ) ( xi + 3.xi h + 3.xi h2 + h3 ) − xi ( xi + 2 xi h + h) − xi
3 2 3 2 2
ETn(ξ ) =
− (2 xi + h) + xi ( xi + h)(h)
(2)! 3 2
f 2 (ξ ) xi 3.xi h 3.xi h2 h3 xi (2 xi h + h)
3 2 3
ETn(ξ ) = + + + − − + + +
2
( 2 x h ) hx x .h
(2)! 3
i i i
3 3 3 3 2
f 2 (ξ ) 3.xi h 3.xi h2 h3 4 xi h 2 xi h 2 xi h2 h2
2 2
ETn(ξ ) = + + − − − − + +
2
hx x .h
(2)! 3
i i
3 3 2 2 2 2
Esta expressão do erro ETn(ξ) é válida para qualquer xi, então pode-se simplificar esta
avaliação tomando um xi=0, logo:
f 2 (ξ ) h3 h 2 f 2 (ξ ) 2h3 − 3h 2 f 2 (ξ ) h 2 f 2 (ξ ).h 2
ETn(ξ ) = − = = − =−
(2)! 3 2 (2)! 6 (2)! 6 12
f 2 (ξ ).h 2
ET (ξ ) = −
12
Então, o erro de truncamento em módulo, tomando seu limite superior, máximo, total, no
intervalo [a,b], torna-se:
b b
n
Max | f 2 ( x) | .h 2
∫ f ( x) dx ≅ ∑ Ai + ∫ dx =Tn + ETnMax
a i =1 a
12
b
Max | f 2 ( x ) | .h 2 Max | f 2 ( x ) | .h 2
ETnMax = ∫ dx = (b − a )
a
12 12
Max f 2 ( x)
ETnMax = .h 2 .(b − a) , com então x∈ [a,b]
12
Exemplo: Determine o n mínimo para que o erro de truncamento seja menor que ε = 10-6 ao
6
1
efetuar I = ∫ 1 + x dx
1
pelo método dos Trapézios.
Solução:
213
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 ]
−6 h 2 .5.0,25
10 ≅ ⇒ h ≅ 0,0030984
12
Para calcular o Erro TOTAL, sobre o valor da integral aproximada Tn, e determinar
também a influencia dos Erros de Arredondamento podemos determinar também Tn* em
precisão dupla, de 16 dígitos significativos, com o mesmo número n=1614 de subdivisões,
portanto com o mesmo Erro de Truncamento. Podemos calcular também o Erro total Exato,
subtraindo Tn do valor da Integral Exata Ie, (| Tn - Ie |) e o Erro Estimado (| Tn-T2n |) também.
Em precisão simples de 8 dígitos significativos Tn = 1,252763
Em precisão dupla de 16 dígitos 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 não influenciando)
Erro exato total sobre Tn*, calculado em precisão dupla = 1,7.10-7 (menor ε = 10-6)
Para n=2048:
Em precisão simples de 8 dígitos significativos Tn =1,252763
Em precisão dupla de 16 dígitos significativos Tn*=1,25276308253485
Erro estimado sobre Tn = 8,5.10-8 (n=2048).
Erro exato total sobre Tn = 2,8.10-8 (arredondamentos não influenciando)
Para n=4096:
Em precisão simples de 8 dígitos significativos Tn =1,25276327
Em precisão dupla de 16 dígitos 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 não influenciando
Para n=32768:
Em precisão simples de 8 dígitos significativos Tn =1,252762675
Em precisão dupla de 16 dígitos 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 não influenciando
Para n=65536:
Em precisão simples de 8 dígitos significativos Tn =1,25275445
Em precisão dupla de 16 dígitos 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 precisão simples de 8 dígitos significativos Tn =1,25279605
214
Em precisão dupla de 16 dígitos 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 precisão simples de 8 dígitos significativos Tn =1,25270736
Em precisão dupla de 16 dígitos 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 precisão dupla = 6,9.10-12
Para n=4194304:
Em precisão simples de 8 dígitos significativos Tn =1,274151683
Em precisão dupla de 16 dígitos 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 precisão 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 cálculos com precisão simples.
Note-se que a aplicabilidade do Teorema do erro pode ser muito difícil, pela limitação
de n.
Se aumentamos o valor de n, além 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 Tn≅I=
b
∫ f ( x )dx
a
e analisar a tendência de evolução dos resultados, extrapolando limites.
Uma forma de análise pode ser efetuada via extrapolação para o limite de Romberg,
que consiste em:
h velho
1o) Efetuar k tentativas por Trapézios com hnovo = , obtendo os T1, T2, ..., Tk.
2
0
2o) Considere que Ti = Ti , i = 1, ..., k
4 j Tij+−11 − Tij−1
3 ) Obter Ti =
o j
, j = 1, 2, ..., k – 1
4j −1
Teorema (Romberg):
b
∫
“ lim T = f ( x )dx ”
k
1
k →∞ a
1
∫e
x
Exemplo: Efetuar dx por Romberg, com k = 4 iniciando com h = 0,25.
0
Solução:
h 1,7272219
h
2 1,7205186 1,7182841
h
4 1,7188411 1,7182819 1,7182818
h
8 1,7184216 1,7182818 1,7182818 1,7182818
215
b) Método de Simpson
b−a
1o) Dividir [a,b] em n (par) partes iguais de comprimento h = ;
n
2o) Para cada três pontos sucessivos, (xi-1, yi-1), (xi, yi) e (xi+1, yi+1), igualmente espaçados
com intervalo h = (xi-xi-1) = (xi+1 - xi), obter seu único polinômio interpolador, por exemplo,
pelo Método de Lagrange:
∫ P ( x)dx = 3 [ y + 4 yi + yi +1 ]
h
∫
x i −1
f ( x)dx ≅
x i −1
2 i −1
∫ f (x )dx ≅ 3 [y + 4y 2 + y 3 ] + [y 3 + 4 y 4 + y 5 ] + L + h [y n −1 + 4 y n + y n +1 ]
h h
4o) Daí, 1
a
3 3
b
∫ f ( x)dx ≅ 3 [( y + y n +1 ) + 4( y 2 + y 4 + L + y n ) + 2( y 3 + y 5 + L + y n −1 )]
h
1
a
h
[E + 4.P + 2.IP]
=
3
n −1( passo 2 )
h n ( passo 2 )
= y1 + 4 * ∑ yi + 2 * ∑ yi + yn+1 = Sn
3 i =2 i =3
X x0 x1 x2
Y y0 y1 y2
onde: x1 – x0 = h e x2 – x1 = h.
Vamos construir a parábola (do segundo grau) que passa pelos três pontos dados
216
e, em
m seguir, vamos integrar essa parábola, achando a área entre a curva e o eixo
de X.
Claro que essa área não se altera se deslocamos o eixo de Y para a posição x =
x1 . Figura abaixo:
...
Ficamos com a tabela:
X -h 0 +h
Y y0 y1 y2
y0 = A (-h)2 + B (-h)
h) + C = A.h2 – B.h + C (eq. 1a)
Calculemos
culemos a integral da parábola de –h a +h.
y0 + y2 = 2Ah2 + 2C
da segunda
nda equação, tem-se:
tem y1 = C, logo
Logo:
I1 = h/3. ((2Ah2 + 2C) + 4C )
Esta é uma fórmula simples que permite calcular a integral da parábola que
passa pelos 3 pontos
X -h 0 +h
Y y0 y1 y2
217
Se tomarmos esses 3 pontos e deslocarmos o eixo de y, paralelamente, a área
sob a parábola não se altera, isto é, a integral da parábola não muda.
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
n −1( passo 2 )
h n ( passo 2 )
ou S n = y1 + 4 *
3
∑ yi + 2 * ∑y i + y n +1
i=2 i =3
3
Exemplo: Efetue por Simpson ∫ f (x )dx , onde f(x) é dada por um software, conforme tabela:
0
i 1 2 3 4 5 6 7
xi 0 0,5 1 1,5 2 2,5 3
yi=f(xi) 4 6 7,5 8 5 3 2
Solução:
218
Temos: h = xi+1 – xi = 0,5; n = 6 (par)
n −1( passo 2 )
h n ( passo 2 )
Sn =
3
y1 + 4 * ∑ y i + 2 * ∑ yi + y n + 1
i=2 i =3
3
∫ f ( x )dx ≅
0,5
[(4 + 2) + 4(6 + 8 + 3) + 2(7,5 + 5)] ≅ 16 ,5
0
3
Considerações:
1a) Simpson, via de regra, fornece resultados mais precisos que Trapézios para um mesmo
esforço. Novamente exige um n ótimo, pelos mesmos motivos do Trapézios.
2a) Para se determinar um n ótimo pode-se:
i) Algebricamente, através do erro de truncamento total do Simpson, dado
por:
− h 4 (b − a ) f iv (ξ )
ES = , ξ ∈ [a, b]
180
Não é operacional por causa do ξ desconhecido. Operacionalizando:
h 4 (b − a )M
(* *) E S ≤ , onde M = max f iv (x )
180 x∈[ a , b ]
Solução:
f(x) = (1+x) ⇒ f′(x) = -(1+x) ⇒ f′′(x) = 2(1+x)-3 ⇒ f′′′(x) = -6(1+x)-4
-1 -2
24 24
fiv(x) = 24(1+x)-5 ⇒ fiv(1) = =
(1 + 1) 5
32
h 4 .(5).0,75
10-6 ≤ ⇒ h = 0,08323 ⇒ n = 60
180
Aplicando em (* *) ⇒
h 4 .5.24 180.32.10−6
10−6 ≅ ⇒ h4 ≅ ⇒ h 4 ≅ 48.10−6 ⇒ h ≅ 0,0832358
180.32 120
5
n = = 60,07028... ⇒ n = 60 (recomendado n = 64)
h
(Si+ 2 − Si+1 ) 2
S1 = 39,874507
S2 = 39,77751
S3 = 39,77658
Aplicando em S temos:
219
0,000000864
S = 39,77658 - ⇒ S = 39,77657
0,096067
Onde S exata é 39,77656.
∫
a
∫
−∞
∫
-∞
4a) Quadratura Adaptativa
b b
Até o momento efetuamos I = ∫ f ( x )dx com h, depois
a
h
2 ⇒ I ≅ ∫ f ( x )dx . Funciona
a
bem se f(x) é uma função “bem comportada” em [a,b], já se f(x) não for bem comportada
esta técnica pode ser altamente ineficiente.
b−a
- Dividir [a,b] em n subintervalos h1 = ;
n
- Em cada subintervalo fazer:
hi hi
- obter Pi = f ( x i ) + 4f ( x i + ) + f ( x i + h i )
6 2
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 )]
h
12
h i .ε.16
x i +1
- se Pi − Q i < ⇒ ∫ f ( x )dx = Q i
h−a xi
h1
- senão h 2 = e retorna para obter Pi e Qi com h2.
2
220
7.1.2 – Integração Numérica Gaussiana
a
Considere que deseja-se efetuar I = ∫ f ( x )dx , onde:
b
com apenas dois (m=2) pontos de avaliações de y = f(x), passando uma reta pelos extremos
dos intervalo, temos um Erro de Truncamento muito elevado, pois no método de Newton
usamos um espaçamento ‘h’ constante. Por este motivo, Gauss propôs um método de
aproximação, baseada em uma aproximação de f(x) por polinômios ortogonais de Legendre
de grau “n=m-1”, que minimizam o erro de truncamento e que integre “de forma exata”
polinômios de grau até “2m-1”, calculados sobre “m” pontos escolhidos "adequadamente" de
modo a compensar os erros no cálculo da área abaixo da reta:
b − a b − a b − a b+a
b 1 1
I = ∫ f ( x)dx = ∫ 1 f ( x(t ))dt = ∫ f .t + dt
2 3
a
2 −1 g (t )
2 −1 144
242444 2 3
g (t )
1 m
1 1
2o) Calcular ∫ f ( x(t ))dt = ∑ C
−1 k =1
( m,k ) . f (b − a)t ( m,k ) + (b + a) resultando em
2 2
b
(b − a ) 1 (b − a ) m
1 1
I = ∫ f ( x )dx ≅
2 ∫ f ( x (t )) dt =
2
∑C
k =1
( m ,k ) . f (b − a )t ( m , k ) + (b + a )
2 2
a −1
Onde C e t são parâmetros fixos, independem da integranda y = f(x), e podem ser
encontrados na literatura para diversos números ‘m’ de pontos de avaliação de f(x).
221
m Cm,k tm,k
1 c1 = 2 t1 = 0
2 −1
c1 = 1 t1 =- 3
−1
c2 = 1 t2 = + 3
3 c1 = 5 9 3/ 5
t1 = -
c2 = 8
9 t2 = 0
c3 = 5
9 t3 = + 3 / 5
4 c1 = 0,34785485 t1 = -0,86113631
c2 = 0,65214515 t2 = -0,33998104
c3 = 0,65214515 t3 = +0,33998104
c4 = 0,34785485 t4 = +0,86113631
5 c1 = 0.23692689 t1 = -0.90617985
c2 = 0.47862867 t2 = -0.53846931
c3 = 0.56888888 t3 = +0.00000000
c4 = 0.47862867 t4 = +0.53846931
c5 = 0.23692689 t5 = +0.90617985
Cmk ±tmk
m=2
1 1⁄
m=3
8⁄9 0
5⁄9
m=4
0.65214515486254614263 0.3399810435848562648
0.34785484513745385737 0.8611363115940525752
m=5
128⁄225 0.00000000000000000000
0.47862867049936646804 0.53846931010568309104
0.23692688505618908751 0.90617984593866399280
m=6
0.46791393457269104739 0.23861918608319690863
0.36076157304813860757 0.66120938646626451366
0.17132449237917034504 0.93246951420315202781
m=7
512⁄1225 0.00000000000000000000
0.3818300
0.38183005050511894495 0.40584515137739716691
0.27970539148927666790 0.74153118559939443986
0.129484966168869693271 0.94910791234275852453
Estes valores de tmk e Cmk podem calculados considerando que polinômios quaisquer de
grau até “2m-1”,
1”, para ”m” pontos de avaliação, podem ser integrados por polinômios de grau
“n=m-1”, “de forma exata”:”:
−1 k =1
222
Para m=2 pontos, por exemplo, temos a aplicação de um polinômio de 1º grau “n=2-1=1”,
que integra polinômios g(t) de até 3º grau “2m-1=2.2-1=3”, de forma exata, então integra. P.
ex., g(t)=t0=1, g(t)=t1, g(t)=t2, g(t)=t3,
−1 k =1
∫ t .dt = ∑ C(2,k ) .g (t ( 2,k ) ) => 2 / 3 = C (2,1) .(t (2,1) ) + C (2,2) .(t (2,2) )
1 2
2 2 2
g(t) = t2 =>
−1 k =1
∫ t .dt = ∑ C(2,k ) .g (t (2,k ) ) => 0 = C (2,1) .(t ( 2,1) ) + C ( 2,2) .(t (2,2) )
1 2
3 3 3
g(t) = t3 =>
−1 k =1
Resolvendo este sistema não linear, pelo método 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
C ( 2,1) .t ( 2,1) + C ( 2, 2 ) .t ( 2, 2 ) = 0 2 1 3 2 4
=>
C ( 2,1) .(t ( 2,1) ) + C ( 2, 2 ) .(t ( 2 , 2 ) ) = 2 / 3 f 3 = x1 .( x3 ) + x 2 .( x 4 ) − 2 / 3
2 2 2 2
C .(t ) 3 + C .(t ) 3 = 0 f = x . x 3 + x .x 3 − 0
( 2,1) ( 2,1) ( 2, 2 ) ( 2, 2 ) 4 1 3 2 4
Pela resolução do sistema de 4 equações não lineares, com f1=0, f2=0, f3=0 e f4=0 no
Octave, temos:
3o) O erro de truncamento máximo EG m desta integração numérica para ‘m’ pontos de
avaliação de f(x) é dada por
(m!) 4
E G m ≤ (b − a) 2 m +1 Max f 2m (x) , x ∈ [a; b]
(2m + 1)[(2m)!] 3
lim EGm = 0
m→∞
Exemplo:
Determine o número de pontos ‘m’ mínimo para que o erro de truncamento máximo entre a
223
6
−1
∫
integral exata I= (1 + x ) dx e a aproximação por Gauss-Legendre seja inferior 10-6.
1
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)
12!
Max|f2m| = f12(1) = (−1) . = 58472
12
(1 + 1) (12+1)
(6!) 4
E G m ≤ (6 − 1) 2.6+1 Max f 2m (x) = 0,01342557
(2.6 + 1)[(2.6)!] 3
m=10:
20!
Max|f2m| = f20(1) = (−1) . = 1,1601.1012
20
( 20 +1)
(1 + 1)
2.10+1 (10!) 4
E G m ≤ (6 − 1) Max f 2m (x) = 0,00031719
(2.10 + 1)[(2.10)!] 3
m=16:
32!
Max|f2m| = f32(1) = (−1) 32 . ( 32+1)
= 3,06325.1025
(1 + 1)
(10!) 4
E G m ≤ (6 − 1) 2.10+1 Max f 2m (x) = 1,13669.10-06
(2.10 + 1)[(2.10)!] 3
Note que é necessário apenas ‘m’=16 pontos (nossa tabela vai até m=5 pontos) no método de Gauss-
Legendre, que equivale a substituir f(x) por um polinômio de grau ‘n’=15, ou usar 15 subintervalos
entre o intervalo [a,b], enquanto nos métodos de Simpson e Trapézios necessitávamos de n= 60 e
n=1614 subdivisões do intervalo [a,b], respectivamente.
4
Exemplo: Efetue por Gauss I = ∫ ln(x)dx , com m = 3.
1
Solução:
Temos: f(x) = ln(x) x(t)= ½.(4-1).t+½.(4+1)=1,5.t + 2,5
dx = 1,5dt g(t) =f(x(t)) = ln(1,5.t + 2,5)
Assim,
1 3
I = ∫ g (t )dt = ∑ ci g (ti )
−1 i =1
I = c1 g (t1 ) + c2 g (t 2 ) + c3 g (t3 )
I= 5
9 .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
224
6
1
Exemplo: Determine I = ∫ 1 + x dx
1
pelo método de Gauss-Legendre com m=3 pontos:
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
(b − a)
1
(b − a ) m
1 1
I =∫ f ( x )dx =
2 ∫ f ( x(t ))dt ≅
2
∑C
k =1
( m ,k ) . f (b − a )t ( m ,k ) + (b + a ) = Gm
2 2
a −1
(b − a ) . m
(b − a ) . C . y
m
Gm =
2
∑ C ( m , k ) . f ( xk ) =
k =1 2 k =1
∑ ( m,k ) k
k t(m,k) xk =
b−a
.t (m,k) +
b+a yk = f (xk )
2 2
_________________________________________________________
1 -0.77459667 1.563508325 0.390090404719087
2 0. 3.5 0.222222222222222
3 0.77459667 5.436491675 0.155364140978245
(b − a ) .[C ]
Gm = ( 3,1) . f ( x1 ) + C ( 3, 2 ) . f ( x2 ) + C ( 3 , 3 ) . f ( x3 )
2
Gm =
(6 − 1) .[0,55555555 . 0,39009040 4719087 + 0,88888888 . 0,22222222 2222222 + 0,55555555 . 0,15536414 0978245 ]
2
Gm =
(6 − 1)
.[0,21671689 1510604 + 0,19753086 4197531 + 0,08631341 1654580545 ]
2
Gm =
(6 − 1) .[0.50056116 736271645 ]
2
Gm = 1.25140291840679
Se determinarmos o Polinômio de grau n=2, que passa sobre os 3 pontos (xk,yk), teremos os
225
seguintes coeficientes: P2(x)=a0+a1.x+a2.x2
e se integrarmos o polinômio P2(x) entre a=1 e b=6, teremos Ip, que é equivalente a Gm:
b 6
Ip = ∫ P2 ( x ).dx = ∫ (0,599327 - 0,154882.x + 0,013468.x 2 ).dx
a 1
Considerações:
1a) Observando a expressão do EGm se comparado com o ESn nota-se que Gauss é mais
preciso;
2a) Pelas suas características, Gauss é mais estável que Newton;
3a) Gauss não é aplicável se a integranda y = f(x) for uma tabela;
4a) Gauss fornece resultados pobres se y = f(x) possuir descontinuidades em [a,b];
3 2 3
dx dx dx
ex: I = ∫1 2 − x = ∫1 2 − x + ∫2 2 − x
5a) Gauss é de natureza aberta, isto é, a integranda não é avaliada nos extremos a e b. Em
decorrência disso:
b
- Pode-se efetuar I = ∫ f ( x )dx com descontinuidades em a e b;
a
1
Ex: Efetue I = ∫ ln(x )dx :
0
f(x) = ln(x) x = 0,5t + 0,5
g(t) = ln(0,5t + 0,5) m=3
1
∞
- Pode-se efetuar integrais impróprias do tipo: I = ∫ f ( x )dx , fazendo:
a
y = 1/ x ⇒ x = 1
y ⇒ dx = −
1
y2
dy [a, ∞) ~ [ 1 a ,0]
∞ 0 a
1
f ( y) f ( y)
∫ f ( x)dx = − ∫
a 1/ a y 2
dy = ∫
0 y
2
dy
∫
0
=∫ +∫
0 1
226
Capítulo 9 – Resolução Numérica de Equações Diferenciais Ordinárias
9.1 – Introdução:
d 2x
(t ) = a , onde a= aceleração
dt 2
dx
(0) = v0 , valor da velocidade inicial.
dt
x(0) = x0 , valor da posição inicial do móvel.
dx(t ) = (a.t + C1 ).dt => ∫ dx(t ) = ∫ (a.t + C ).dt => x(t ) = a.t / 2 + C1 .t + C2
2
1
dx
Aplicando as condições iniciais (0) = v0 e x(0) = x0 , teremos
dt
x(t ) = a.t 2 / 2 + v0 .t + x0
Há vários métodos que resolvem analiticamente uma equação destas, mas nem sempre é
possível obter-se esta solução analítica, como a obtida acima.
Nestes casos, os métodos numéricos são a saída para se encontrar uma solução
aproximada. Por exemplo, mesmo equações diferenciais com aspecto simples como,
(8.1)
Onde ; n= 1,2,...,
227
Associada a eq.(8.1) deve haver um conjunto de condições para a variável y, se tais
condições se referirem a um único valor de x, tem-se um problema de valor inicial – PVI.
Caso contrário, tem-se um problema de valores de contorno – PVC.
Numa primeira etapa do nosso estudo, estudaremos métodos para resolver PVI de 1ª
ordem.
Suponhamos que a solução da equação diferencial (8.2) seja dada por y = F(x)= ex
conforme figura abaixo,
próximo ponto x1. O espaçamento uniforme pode ser calculado como h=(b-a)/n, onde
x∈[a,b] e ‘n’ é o número total de subdivisões do intervalo.
(8.3)
228
(8.4)
Este é o Método de Euler Simples, que usa aproximações de primeira ordem e toma
apenas os 2 primeiros termos da série de Taylor.
y(0) = 2
y(1) ~ 2,34360
Se repetirmos todo o cálculo com o dobro de sub-divisões, n = 16, teremos um valor y(1)
com erros de truncamento muito inferiores, que pode ser considerado um valor exato
estimado:
229
3 0,18750 2,011474609 0,176025391 0,25000 2,022476196
4 0,25000 2,022476196 0,227523804 0,31250 2,036696434
5 0,31250 2,036696434 0,275803566 0,37500 2,053934157
6 0,37500 2,053934157 0,321065843 0,43750 2,074000772
7 0,43750 2,074000772 0,363499228 0,50000 2,096719474
8 0,50000 2,096719474 0,403280526 0,56250 2,121924507
9 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
Os métodos de Runge-Kutta são obtidos tomando mais termos nas séries de Taylor
para aproximar as soluções das EDO´s. Nesses métodos, se cancelarmos os termos que
contém potências de ordens maiores que p, então esse método é de ordem p. O método de
Euler Simples estudado anteriormente é de primeira ordem (p=1), por que despreza os
termos de 2 e superiores.
Podemos dizer que os métodos de Runge-Kutta de ordem p se caracterizam pelas
três propriedades:
i) são de passo simples (cada passo é completo, não necessita de correções ou
iterações internas);
ii) não exigem o cálculo de qualquer derivada de f(x,y); mas precisam calcular
f(x,y) em vários pontos;
iii) após expandir f(x,y) por Taylor para função de duas variáveis em torno de
(xk,yk) e agrupar os termos semelhantes, sua expressão coincide com a do
método de série de Taylor de mesma ordem.
230
Dado o ponto inicial (xn,yn), supomos a situação ideal em que a curva desenhada com linha
cheia seja a solução y(x) da nossa equação (isto só acontece mesmo no ponto incial (xn,yn).
Por (xn,yn) traçamos a reta L1, definida por z1(x), cujo coeficiente angular é
, ou seja,
A reta pontilhada Lo passa por P e tem por inclinação a média das inclinações da
A reta L passa por (xn,yn) e é paralela à reta Lo, ou seja, inclinação média no intervalo e é
representada por:
O valor fornecido para yn+1 pelo método de Euler Aperfeiçoado é z(xn + h) = z(xn+1),
ou seja
231
método de série de Taylor até os termos de 2ª ordem em h:
Esta fórmula concorda com a do método de série de Taylor até os termos de ordem
h2, provando assim ser um método de Runge-Kutta de 2ª ordem.
a1 = ½ a2 = ½ b1 = 1 b2 = 1
y’ = x –y +2 y(0) = 2 n=8
y(1) = ? h = (1-0)/8 = 0,125
Agora com n = 16
233
ErroExatoEstimado= 0,000802705
y(1) ~ 2,36893 n= 8
y(1) ~ 2,36813 n= 16 (valor de referência)
y’ = x –y +2 y(0) = 2 n=8
y(1) = ? h = (1-0)/8 = 0,125
Agora com n = 16
234
4 0,2500 2,028800809 0,221199191 0,245536716 0,244776168 0,268400680 0,313 2,044115660
5 0,3125 2,044115660 0,268384340 0,291247330 0,290532861 0,312726037 0,375 2,062289313
6 0,3750 2,062289313 0,312710687 0,334188478 0,333517297 0,354365856 0,438 2,083148564
7 0,4375 2,083148564 0,354351436 0,374527953 0,373897437 0,393482846 0,500 2,106530700
8 0,5000 2,106530700 0,393469300 0,412423384 0,411831069 0,430229858 0,563 2,132282868
9 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
Erro estimado = 7.81469380761735 x 10-7 < 10-6 Problema Resolvido com exatidão
desejada em apenas n=8 sub-divisões.
dy dy
( + y).u(x) = (x + 2).u(x) ⇒ u(x) + u(x).y(x) = (x + 2).u(x)
dx dx
Gostaríamos que no lado esquerdo tivéssemos apenas a derivada do produto
u(x).y(x). Ou seja que
235
Substituindo o nosso fator integrante u(x), temos que
dy dy d(ex .y(x))
( + y).ex = e x . + e x .y = , assim podemos trocar o termo
dx dx dx
dy d(ex .y(x))
( + y).e por
x
e a nossa EDO fica:
dx dx
∫ x .e .dx = ( x − 1).e e
x x
Observe que com Método de Runge-Kutta de 4ª ordem e n=8 subdivisões, temos Erro
estimado = 7.81469380761735 x 10-7 (obtido comparativamente com os resultados de n=16
subdivisões), enquanto o Erro exato = 8,3075.10-7, ou seja, o erro estimado é da mesma
ordem do erro exato.
Sistemas de EDO´s:
Exemplo:
Equação Diferencial Ordinaria (EDO) de 2a. Ordem, reduzida ao um sistema de 2 EDO´s 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 EDO´s de 1ª. ordem,m com a
seguinte mudança de variáveis:
y1(t)=y(t) -> y1'(t)=y'(t)=y2(t)
236
y1'(t)=z1(t,y1,y2)=y2;
y1(0)=y(0)=0
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);
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')
237