Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
F ACULDADE
DE
DE U BERLNDIA
M ATEMTICA
C LCULO N UMRICO
A GOSTO
DE
2003
Sumrio
1 Introduo
2 Zeros de Funes
11
3 Sistemas Lineares
27
49
5 Interpolao Polinomial
61
73
83
CAPTULO
1
Introduo
O Clculo Numrico tem por objetivo estudar esquemas numricos (algoritmos numricos) para resoluo de problemas que podem ser representados por um modelo matemtico.
Um esquema numrico considerado eficiente quando este apresenta solues dentro de
uma preciso desejada com custo computacional (tempo de execuo + memria) baixo.
Os erros cometidos nesta aproximao so decorrentes de dois fatores: A discretizao
do problema, ou seja passar do modelo matemtico para o esquema numrico; A forma
como as mquinas representam os dados numricos. Como exemplo consideremos que
desejamos calcular uma aproximao para a derivada de uma funo f (x) num ponto x
.
O modelo matemtico dado por
f 0 (
x) = lim
h0
f (
x + h) f (
x)
.
h
Um esquema numrico para aproximar a derivada dado por tomar h pequeno e calcular
f (
x + h) f (
x)
.
f 0 (
x)
(1.1)
h
Neste caso quanto menor for o valor de h mais preciso ser o resultado, mas existe uma
limitao para o valor de h. Se h for menor muito pequeno, ocorre o erro de cancelamento, isto , x
+h=x
, e neste caso a derivada de f (x) seria igual a zero para qualquer
que fosse f (x).
A representao de nmeros em mquinas digitais (calculadoras, computadores,
etc) feita na forma de ponto flutuante com um
nmero finito de dgito. Logo os nmeros
que tem representao infinita (Ex. 1/3, , 2) so representados de forma truncada.
Com isto algumas das propriedades da aritmtica real no so vlidas na aritmtica
computacional. Como exemplo, na aritmtica computacional temos
n
X
ak
k=0
6=
n
1 X
ak ,
N k=0
CAPTULO 1. INTRODUO
1.1.
O OCTAVE
1.1
O Octave
1.1.1
CAPTULO 1. INTRODUO
Smbolo
a+b
ab
ab
a/b ou b\a
abb
[tab1]
x=[1 2 3 4]
x =
1
y=[5; 6; 7; 8]
y =
5
6
7
8
Um exemplo de uma matriz 3 4.
>>
a=[1 2 3 4; 5 6 7 8; 9 10 11 12]
a =
1
5
9
2
6
10
3
7
11
4
8
12
1.1.
O OCTAVE
Os elementos na i-sima linha e na j-sima coluna, denotados por aij podem ser obtidos
pelo comando a(i,j), por exemplo a(2,3)=7. Note que os elementos no Octave-Gnu
so indexados iniciando em 1. Em algumas situaes necessitamos de vetores com
alguma estrutura particular. Por exemplo, um vetor cujo o primeiro termo vale 2 e o
ultimo vale 3 e os termos intermedirios variam um passo de 0.5. Este vetor pode ser
definido pela linha de comando
EDU>> v=-2:0.5:3
v =
Columns 1 through 7
-2.0000
-1.5000
-1.0000
-0.5000
2.5000
3.0000
0.5000
1.0000
Columns 8 through 11
1.5000
2.0000
De uma forma geral este comando tem a sintaxe v=a:passo:b. Quando o passo
igual a um podemos escrever o comando na forma reduzida v=a:b. Algumas matrizes
elementares podem ser geradas atravs de comandos simples, por exemplo:
A matriz identidade:
EDU>>I=eye(3)
I =
1
0
0
0
1
0
0
0
1
1
1
1
1
0
0
0
0
0
0
0
0
0
CAPTULO 1. INTRODUO
0
1
0
0
0
1
Note que neste exemplo terminamos o comando que define a matriz A com um ponto
e vrgula. Isto faz com que o resultado do comando (ou de uma expresso em geral)
no seja apresentado no monitor. Isto til para programas de grande porte, pois este
processo de apresentar os resultados no monitor consome muito tempo de execuo.
Entre vetores e matrizes de mesma dimenso possvel operar elemento com elemento.
Isto possvel atravs de uma notao especial, que consiste de usar um ponto antes do
smbolo da operao. Na Tabela 1.2 damos um resumo destas operaes aplicada a dois
vetores a e b de dimenso n.
Tabela 1.2: Operaes Elementares entre Vetores
Operao
Adio
Subtrao
Multiplicao
Diviso
Potenciao
Smbolo
a+b
a-b
a.*b
a./b
a.bb
Resultado
[a1 + b1 , a2 + b2 , a3 + b3 , . . . , an + bn ]
[a1 b1 , a2 b2 , a3 b3 , . . . , an bn ]
[a1 b1 , a2 b2 , a3 b3 , . . . , an bn ]
[a1 /b1 , a2 /b2 , a3 /b3 , . . . , an /bn ]
[a1 b1 , a2 b2 , a3 b3 , . . . , an bn ]
[tab2]
1.1.
O OCTAVE
7
Tabela 1.3: Funes Elementares
Funo
Valor Absoluto
Arco Co-seno
Arco Seno
Co-seno
Exponencial ex
Logaritmo Natural
Logaritmo base 10
Seno
Raiz Quadrada
Tangente
Sintaxe
abs(x)
acos(x)
asin(x)
cos(x)
exp(x)
log(x)
log10(x)
sin(x)
sqrt(x)
tan(x)
[tab3]
1.1.2
M-arquivos
8
x=input(Entre com o valor de, x=);
disp(O valor da aproximacao eh...)
dsen=(sin(x+h)-sin(x))/h
CAPTULO 1. INTRODUO
% Atribui Valores a x
% Mostra mensagem no monitor
As primeiras duas linha so comentrios que descrevem o script. Na quinta linha temos
o comando que permite atribuir valores a uma varivel. E na sexta linha o comando que
permite mostrar uma mensagem no monitor. Vamos supor que este arquivo seja salvo
com o nome de devira_seno.m. Para executar o script digitamos seu nome no prompt
do Octave-Gnu sem a extenso .m.
Functions
Numa funo em Octave-Gnu a primeira linha da forma function y=nome(argumentos).
A funo troca informaes com o MatLab workspace por intermdio da varivel y e dos
argumentos. Para ilustrar o uso de funes em Octave-Gnu considere o seguinte cdigo
function dsen=deriva_seno(x,h)
% Aproximacao da derivada do seno
% Usando o operardor de diferen\c{c}a finita progressiva.
dsen=(sin(x+h)-sin(x))/h;
Apesar deste arquivo poder ser salvo com um nome qualquer, usual usar o mesmo
nome da funo, ou seja, deriva_seno.m. Para execut-lo devemos digitar seu nome e
informar os valores dos argumentos, por exemplo,
EDU>>y= deriva_seno(3.14,0.001)
o que forneceria em y uma aproximao da derivada da funo seno em 3.14 Uma diferena importante entre esta verso, usando function, com a anterior que o valor calculado pode ser atribudo a uma varivel. Alm disso, agora podemos escolher o valor
de h, que na verso anterior estava fixo em h=0.0001. Vale notar que no primeiro caso
todas as variveis do scrips esto ativas, isto so variveis globais. Enquanto que no
segundo caso as variveis so locais, isto , a varivel h s ativa na execuo da funo
Controle de Fluxo
O controle de fluxo um recurso que permite que resultados anteriores influenciem
operaes futuras. Como em outras linguagens, o Octave-Gnu possui recursos que
permitem o controle de fluxo de execuo de comandos, com base em estruturas de
tomada de decises. Apresentamos as estrutura de loops for, loops while e if-else-end.
A forma geral do loop for
for n = vetor
comandos...
end
Os comandos entre for e end so executados uma vez para cada coluna de vetor. A
cada iterao atribui-se a x a prxima coluna de vetor. Por exemplo
1.1.
O OCTAVE
-1.0000
-0.0000
1.0000
0.0000
CAPTULO 1. INTRODUO
10
1.2
Atividades de Laboratrio
Problema 1.1 Usando o esquema numrico para a aproximao da derivada dado abaixo
ache uma aproximao para f 0 (), onde f (x) = sen(x) e tome h = 0.1, 0.01, 0.001, . . . 1010 .
Repita os clculos para f 0 (0). Comente os resultados.
f 0 (
x)
f (
x + h) f (
x)
h
x2 x3 x4
x
+
+
+
+
1!
2!
3!
4!
CAPTULO
2
Zeros de Funes
Neste captulo estudaremos esquemas numricos para resolver equaes da forma f (x) =
0. Na maioria dos casos estas equaes no tem soluo algbrica como existe para as
equaes de 2 o grau. No entanto, esquemas numricos podem fornecer uma soluo
aproximada satisfatria.
O processo para encontrar uma soluo envolve duas fases:
Fase I Isolamento das razes - Consiste em achar um intervalo fechado [a, b] que contm a
raiz.
Fase II Refinamento - Partindo de uma aproximao inicial refinamos a soluo at que
certos critrios sejam satisfeitos.
2.1
12
1.8
1.6
h(x)
1.4
1.2
0.8
0.6
g(x)
0.4
0.2
0.2
0.4
0.6
0.8
1.2
1.4
1.6
1.8
0
1
0.25
0.528
0.5
0.106
0.75
-0.277
1
-0.632
Sendo que f (0.5)f (0.75) < 0, ento a raz pertence ao intervalo [0.5, 0.75]. Note que
= ex 1 < 0 x R
I , isto f 0 preserva o sinal em [a, b] e com isto podemos concluir
que esta raiz nica. [exc1]
f 0 (x)
Devemos observar que o tabelamento uma estratgia que completa a anlise grfica. Somente com o tabelamento no conseguimos determinar se existe outras razes
no intervalo ou ainda em que intervalo devemos tabelar a funo.
13
3
2
2
1
1
a
a
0
1
1
2
2
3
0.5
1.5
f 0 (x)
2.5
0.5
1.5
f 0 (x)
preserva sinal
2.5
muda de sinal
2.5
3
2
1.5
a
0
|
1
1
0.5
0.5
f 0 (x)
1.5
muda de sinal
2.5
b
0.5
|
1.5
2.5
14
2.2
Refinamento
Nas prximas sees estudaremos os esquemas numricos que partindo de uma aproximao inicial x0 , vo gerar uma seqncia {xk } que converge para a raiz procurada, isto
xk quando k . A aproximao inicial parte do intervalo encontrado na Fase I,
Isolamento das Razes, e os termos da seqncia so calculados at que a aproximao
tenha atingido uma preciso desejada (critrio de parada).
2.3
Mtodo da Bisseco
Este mtodo baseado no Teorema 2.1. Seja f (x) uma funo contnua no intervalo
[a, b] tal que f (a)f (b) < 0 e seja > 0 um nmero dado. A idia reduzir a amplitude
do intervalo at atingir a preciso requerida: b a < , usando diviso sucessivas do
intervalo.
O mtodo procede da seguinte forma: faa [a0 , b0 ] = [a, b] e calcule
f (a0 ) < 0
x0 =
(a0 , x0 )
a0 + b0
f (b0 ) > 0
a = a0
1
2
f (x ) > 0
b
0
1 = x0
Com isto obtemos um novo intervalo [a1 , b1 ], de tal forma que a raz pertence ao intervalo e sua amplitude igual a amplitude do intervalo [a0 , b0 ] dividida por dois. Este
procedimento pode ser repetido, calculando
f (a1 ) < 0
x1 =
a1 + b1
2
x2 =
a2 + b2
2
f (b ) > 0
f (x ) < 0
1
f (a2 ) < 0
f (b ) > 0
f (x ) < 0
2
(x1 , b1 )
a =x
2
1
b =b
2
1
(x2 , b2 )
a =x
3
2
b =b
3
2
15
a1
a2
a3
||
||
||
a0
x1
x2
|
x0
b0
||
b1
||
b2
||
b3
2.3.1
Estudo da Convergncia
A convergncia bastante intuitiva, como podemos ver na Figura 2.3. Vamos dar uma
demonstrao analtica atravs do seguinte teorema:
Teorema 2.2 Seja f uma funo contnua em [a, b], onde f (a)f (b) < 0. Ento o mtodo da
Bisseco gera uma seqncia {xk } que converge para a raiz quando k .
16
Prova: O mtodo gera trs seqncias:
lim ak = M
lim bk = m
ak + bk
ak < xk < bk k IN
2
(2.1)
[ec1]
lim ak f
lim bk
= f 2 (m) 0
Portanto f (m) = 0
2.3.2
Pelo critrio de parada podemos observar que o nmero de iteraes depende do intervalo
inicial [a0 , b0 ] e da preciso requerida . Dada uma preciso temos,
bk ak <
b0 a0
b0 a0
< 2k >
2k
Como estes valores so sempre positivos, podemos aplicar a funo logaritmo, obtendo,
k>
log(b0 a0 ) log()
log(2)
17
Exemplo 2.3 No exemplo 2.2 isolamos uma raiz de f (x) = ex x no intervalo [0.5, 0.75].
Usando a preciso = 108 , temos
k>
Logo ser necessrio no mnimo 25 iteraes para que o mtodo da Bisseco possa atingir
a preciso desejada.
2.4
Seja f (x) contnua em [a, b], onde existe uma raiz da equao f (x) = 0. A estratgia deste
mtodo escrever a funo f de tal forma que f (x) = x (x). Se f () = 0, ento
() = 0 x = (x)
Isto , encontrar as razes de f (x) equivalente a achar os pontos fixo da funo (x).
Atravs da equao acima montamos um processo iterativo, onde, dado x0
xn+1 = (xn ), n = 1, 2, . . .
A funo chamada de funo de iterao e esta no determinada de forma nica.
As condies de convergncia so dadas no teorema abaixo.
Teorema 2.3 Seja uma raiz da funo f isolada no intervalo [a, b]. Seja uma funo
de iterao da funo f que satisfaz:
1) e 0 so contnuas em [a, b],
2) |0 (x)| M < 1 x [a, b],
3) x0 [a, b].
Ento a seqncia {xk } gerada pelo processo iterativo xn+1 = (xn ) converge para .
Prova: Sendo uma raiz ento f () = 0 = (), logo
xn+1 = (xn ) xn+1 = (xn ) ().
Como contnua e diferencivel, pelo Teorema do Valor Mdio temos que existe cn
pertencente ao intervalo entre xn e tal que
(xn ) () = 0 (cn )(xn )
Logo
|xn+1 | = |0 (cn )| |xn | M |xn |
Aplicando esta relao para n 1, n 2, , 0 e usando o fato que x0 [a, b] temos
|xn+1 | M n+1 |x0 |
18
Logo
lim xn+1 =
Observamos que quanto menor for o valor de |0 (x)| mais rpida ser a convergncia.
Exemplo 2.4 Consideremos a funo f (x) = ex x, onde existe uma raiz [0.5, 0, 75].
Uma forma de escrever f (x) = x (x) considerar (x) = ex . Verificando as condies
de convergncia temos:
1) As funes (x) = ex e 0 (x) = ex so contnuas em [0.5, 0.75].
2) A funo 0 satisfaz
max
x[0.5,0.75]
0.5 + 0.75
= 0.625
2
=
=
=
=
=
=
..
.
Na Figura 2.4 podemos ver que o comportamento do processo iterativo converge para a
raiz.
2.4.1
Critrio de Parada
Uma questo ainda est em aberto. Qual o xn que fornece uma aproximao para a raiz,
com uma certa preciso dada. Neste caso podemos usar como critrio de parada uma
das seguintes condies
|xn+1 xn |
(Erro Absoluto)
|xn+1 xn |
|xn+1 |
(Erro Relativo)
19
0.8
0.75
0.7
0.65
0.6
0.55
0.5
ex
0.45
0.4
0.4
0.45
0.5
x1
x2
0.55
0.6
x0
0.65
0.7
0.75
0.8
2.5
No mtodo anterior, vimos que quanto menor for |0 (x)| mais rpida ser a convergncia.
O mtodo de Newton-Raphson determinado de tal forma que teremos uma funo de
iterao tal que 0 () = 0, onde uma raiz de f . Com isto temos a garantia que existe
um intervalo [
a, b] que contm a raiz e que |0 (x)| 1 e conseqentemente a convergncia
ser mais rpida.
20
1
f 0 ()
f (x)
f 0 (x)
Com esta funo de iterao montamos o processo iterativo conhecido como mtodo de
Newton-Raphson, onde dado x0
xn+1 = xn
f (xn )
, n = 0, 1, 2, . . .
f 0 (xn )
f (xn )
f (xn )
xn+1 = xn 0
xn xn+1
f (xn )
Teorema 2.4 Sejam f , f 0 e f 00 , funes contnuas num intervalo [a, b], onde existe uma raiz
. Supor que f 0 (x) 6= 0 para x [a, b]. Ento existe um intervalo [
a, b] [a, b], contendo a raiz
, tal que se x0 [
a, b], a seqncia {xn } gerada pelo processo iterativo
xn+1 = xn
converge para a raiz.
f (xn )
f 0 (xn )
[TeNR]
Prova:(Exerccio 2.7)
Uma observao deve ser feita. A condio de que x0 [
a, b] no uma condio de
fcil verificao, visto que o Teorema garante a existncia do intervalo, mas no como
determin-lo. Observamos na Figura 2.6 casos em que o mtodo de Newton-Raphson
falho.
21
f(x)
xn+1
xn
ex x
f (xn )
=
x
+
n
f 0 (xn )
ex + 1
Logo a aproximao dada por x2 = 0.56714. Note que este mtodo encontrou a soluo em
duas iteraes, enquanto que no M.I.L. foi necessrio 6 iteraes para obter a aproximao
com a mesma preciso.
22
x1=x3
x0=x2
No Converge
x0
function x1=newton(xo,Ep)
x1=xo-f(xo)/df(xo)
while abs(x1-xo) > Ep,
xo=x1;
x1=xo-f(xo)/df(xo)
end;
2.6
Ordem de Convergncia
23
o erro na iterao k. Se
|ek+1 |
= C,
k |ek |p
lim
com p 1 e C > 0, dizemos que a seqncia converge com ordem p e com constante
assinttica C.
Como a seqncia converge, para valores de k suficientemente grande temos
|ek+1 | C|ek |p , com |ek | < 1
Assim quanto maior for o valor de p, menor ser o erro |ek+1 |. Quando p = 1 dizemos que
o mtodo tm convergncia linear. Se p = 2 dizemos que a convergncia quadrtica.
Primeiramente vamos determinar a ordem de convergncia do M.I.L. Sendo a seqncia {xn } gerada por xk+1 = (xk ), k = 0, 1, 2, . . . e que = () temos
xk+1 = (xk ) () = 0 (ck )(xk ),
onde a ltima igualdade conseqncia do Teorema do Valor Mdio e ck um nmero
entre xk e . Logo segue
xk+1
ek+1
= 0 (ck )
= 0 (ck )
xk
ek
Aplicando o mdulo e calculando o limite quando k tende ao infinito temos
|ek+1 |
= lim |0 (ck )| = |0 ()| = C
k
k |ek |
lim
f (xn )
f (xn )
en+1 = en 0
0
f (xn )
f (xn )
[ec13]
f 00 (cn )
(x xn )2 cn [x, xn ]
2
f 00 (cn )
( xn )2
2
(2.2)
24
e
n
f 0 (xn )
2f 0 (xn) n
Substituindo em (2.2) obtemos
f 00 (cn )
en+1
=
e2n
2f 0 (xn)
Finalmente aplicamos o mdulo e calculamos o limite quando k tende ao infinito obtendo
f 00 (cn ) f 00 ()
|en+1 |
=
= 1 |00 ()| = C
lim
=
lim
2
0
0
k |en |
k 2f (xn)
2f () 2
2.7
Observaes Finais
Neste captulo vimos trs mtodos diferentes para resolver equaes da forma f (x) = 0.
Faremos um breve comentrio das vantagens e desvantagens de cada mtodo.
No Mtodo da bisseco vimos que o nmero de iteraes depende apenas do intervalo inicial [a0 , b0 ] Logo este pode ser aplicado a qualquer funo f (x) que satisfaz
f (a)f (b) < 0. No importa o quanto f (x) seja complicada. A desvantagem que tem uma
convergncia lenta. Na prtica ele usado para refinar o intervalo que contm a raiz.
Aplicamos o mtodo em um nmero fixo de iteraes.
Em geral o M.I.L. mais rpido que o Mtodo da Bisseco. Usa menos operaes
por cada iterao. Pode encontrar razes em intervalos onde f (a)f (b) > 0 . A dificuldade
encontrar a funo de iterao que seja convergente.
O Mtodo de Newton-Raphson tm convergncia quadrtica. Porm este necessita
da avaliao da funo e sua derivada em cada ponto xn . Pode ocorrer de termos uma
raiz isolada num intervalo [a, b] e o mtodo acabe convergindo para uma outra raiz que
no pertence a [a, b]. Isto ocorre porque temos que tomar x0 [
a, b] [a, b]. Na prtica
tomamos x0 como ponto mdio do intervalo, pois isto aumenta as chances de tomar x0
dentro do intervalo [
a, b].
Nota 1 Em muitas situaes vamos necessitar de calcular o mximo do mdulo de uma
funo restrita a um intervalo, isto
max |f (x)|.
x[a,b]
Uma forma prtica para este clculo seguir os passos: Considerando que f (x) e f 0 (x)
so contnuas para x [a, b], ento uma forma prtica para o clculo do mximo seguir
os passos:
1: Calcula-se os valores da funo nos extremos do intervalo, |f (a)| e |f (b)|.
2: Verifique se a funo no possui ponto critico no intervalo, ou seja, achamos os valores de xk tal que f 0 (xk ) = 0 e xk [a, b]
3: Tomamos como o valor mximo o max{|f (a)|, |f (b)|, |f (xk )|}
[not1]
2.8. EXERCCIOS
2.8
25
Exerccios
xn+1
1
a
=
(p 1)xn + p1
p
xn
[ex1]
26
Exerccio 2.8 A funo f (x) = sen(cos( 3x)) tem uma raiz no intervalo [0.7, 0.9]. Encontre
uma aproximao com = 0.07, escolhendo entre os mtodos numricos estudados o mais
adequado. Justifique sua resposta.
Exerccio 2.9 Analise algbrica e geometricamente e encontre justificativas para o comportamento do mtodo de Newton-Raphson quando aplicado equao f (x) = 0.5x3 +
2.5x = 0 nos seguintes casos, x0 = 1 e x0 = 1.
2.9
Atividades no Laboratrio
Problema 2.1 Usando os dados do exerccio 2.6, compare o desempenho dos mtodos da
Biseco, M.I.L. e Newton-Rapshon, para diferentes valores de .
Problema 2.2 Considere a funo f (x) = x3 3.5x2 +4x1.5. Esta tem uma raz no intervalo
[0.8, 1.2]. Usando o mtodo de Newton-Raphson ache uma aproximao com preciso de
106 . Comente os resultados.
Problema 2.3 O Mtodo da Secante uma modificao do Mtodo de Newton-Raphson,
onde a derivada da funo substituda por
f 0 (xk )
f (xk ) f (xk1 )
.
xk xk1
Isto simplifica o programa, pois neste caso, no temos que informar quem a derivada de
f (x). Aplique este mtodo para o mesmo problema 2.1 e compare o desempenho do Mtodo
da Secante, em relao aos resultados obtidos pelo Mtodo de Newton-Raphson.
CAPTULO
3
Sistemas Lineares
a1,1 x1
a2,1 x1
a3,1 x1
..
.
an,1 x1
+ a1,2 x2 + a1,3 x3
+ a2,2 x2 + a2,3 x3
+ a3,2 x2 + a3,3 x3
..
..
.
.
+ an,2 x2 + an,3 x3
a1,n xn
a2,n xn
a3,n xn
..
.
= b1
= b2
= b3
..
.
an,n xn = bn
3.1
Mtodos Iterativos
Vamos considerar um sistema linear Ax = b, onde A IRnn e x, b IRn . Os mtodos iterativos seguem um esquema semelhante aos mtodos para o clculo de zeros de
funes. O sistema linear escrito na forma
x = Cx + g,
onde g IRn e C IRnn chamada de matriz de iterao. Assim montamos o processo
iterativo:
Dado x0
xk+1 = Cxk + g.
27
28
( n
X
1jm
||A|| = max
|aij |
i=1
m
X
1in
j=1
|aij |
1/2
n X
m
X
||A||2 =
|aij |2
Norma Euclidiana
i=1 j=1
A norma vetorial pode ser vista como um caso particular da norma matricial, onde
um vetor x IRn equivalente a uma matriz de ordem n 1. Com isto temos as normas
de vetores dadas por
||x||1 =
n
X
|xi |
Norma da Soma
i=1
||x||2 =
n
X
Norma do Mximo
!1/2
2
|xi |
Norma Euclidiana
i=1
O conceito de norma nos permite definir convergncia de uma seqncia de vetores {xk }.
Dizemos que xk x
se
lim ||xk x
|| = 0
k
Erro Absoluto
||xk+1 xk ||
||xk ||
Erro Relativo
29
3.1.1
..
.
||C||2 ||ek2 ||
..
.
||C||k ||e0 ||
Logo a seqncia {xk } converge para a soluo do sistema x
se
lim ||ek || = lim ||C||k ||e0 || = 0
3.1.2
a1,1 x1
2,1 x1
a3,1 x1
..
.
+ a1,2 x2
+ a2,2 x2
+ a3,2 x2
..
.
+ a1,3 x3
+ a2,3 x3
+ a3,3 x3
..
.
a1,n xn
a2,n xn
a3,n xn
..
.
= b1
= b2
= b3 ,
..
.
30
x1
x2
x3
..
.
xn
1
a2,2
x1
x3
..
.
..
.
..
.
a2,1
a2,2
=
a
3,1
a3,3
..
.
an,1
xn
an,n
x2
a1,2
a1,1
0
a3,2
a3,3
..
.
an,2
an,n
a1,3
a1,1
a2,3
a2,2
0
..
.
an,3
an,n
a1,n x
1
a1,1
x
a2,n
2
a2,2
x3
+
a3,n ...
a3,3
..
.
..
..
.
.
..
.
0
xn
b1
a1,1
b2
a2,2
b3
a3,3
..
bn
(3.1)
an,n
x1
(k+1)
x2
(k+1)
x3
..
.
(k+1)
xn
=
=
=
1
a1,1
1
a2,2
1
(k)
(k)
(k)
(k)
(k)
a3,1 x1
(k)
a3,2 x2
b3
a3,3
.. ..
. .
1
(k)
(k)
(k)
=
bn an,1 x1 an,2 x2 an,n1 xn1
an,n
[eq:sis1]
(3.2)
31
n
X
1
(k)
bs
as,j xj
as,s
j=1,j6=s
fim para
fim enquanto
Output: x IRn : soluo do sistema
3.1.3
7x1
x1
x1
+ 3x2 + 2x3 = 2
+ 3x2 x3 = 3
+ x2 3x3 = 1
vamos procurar uma aproximao da soluo, com preciso = 0.1 na Norma do Mximo, usando o Mtodo de Gauss-Jacobi. Vamos tomar como condio inicial o vetor x0 =
(0.5, 0.5, 0.5)T .
O primeiro passo verificar se o critrio de convergncia satisfeito. Calculando os
k temos
1 =
2 =
3 =
1
(|a1,2 | + |a1,3 |) =
|a1,1 |
1
(|a2,1 | + |a2,3 |) =
|a2,2 |
1
(|a3,1 | + |a3,2 |) =
|a3,3 |
5
<1
7
2
<1
3
2
<1
3
32
Logo o critrio das linhas satisfeito e com isto temos garantia que o Mtodo de GaussJacobi converge. Montando o processo iterativo temos
(k+1)
(k+1)
(k+1)
x1
x2
x3
1
(k)
(k)
2 3x2 2x3
7
1
(k)
(k)
3 x1 + x3
3
(3.3)
1
(k)
(k)
1 x1 x2
3
x1
(1)
x2
(1)
x3
1
= (2 3 0.5 2 0.5) = 0.642
7
=
1
(3 0.5 + 0.5) = 1.000
3
(3.4)
1
= (1 0.5 0.5) = 0.666
3
0.642 0.500
0.142
x1
(2)
x2
(2)
x3
1
= (2 3 1.000 2 0.666) = 0.904
7
=
1
(3 0.642 + 0.666) = 1.008
3
(3.5)
1
= (1 0.642 1) = 0.880
3
0.262
0.904 0.642
2
1
x x = 1.008 1.000 = 0.008 ||x2 x1 || = 0.262 >
0.214
0.880 0.666
Devemos continuar as iteraes at que o critrio de parada seja satisfeito (Exerccio).
3.1.4
33
x(k+1)
s
s1
n
X
X
1
(k)
(k)
bs
as,j xj
as,j xj
=
as,s
j=1
j=s+1
[eq:gj1]
(3.6)
k+1
k+1
Neste ponto os elementos xk+1
1 , x2 , , xs1 , j foram calculados e espera-se que estes
estejam mais prximos da soluo que os elementos xk1 , xk2 , , xks1 . Assim vamos substituir os elementos da iterao k, que aparecem no primeiro somatrio de (3.6), pelos
correspondentes elementos da iterao k + 1, isto
x(k+1)
=
s
s1
X
n
X
1
(k+1)
(k)
bs
as,j xj
as,j xj .
as,s
j=1
j=s+1
s1
n
X
X
1
(k+1)
(k)
bs
as,j xj
as,j xj
as,s
j=1
j=s+1
fim para
fim enquanto
Output: x IRn : soluo do sistema
3.1.5
Critrio de Sassenfeld
k =
1
|ak,k |
k1
X
j=1
|ak,j |j +
n
X
j=k+1
Ento o Mtodo de Gauss-Seidel gera uma seqncia {xk } que converge para a soluo do
sistema.
34
Exemplo 3.2 Dado o sistema linear
7x1
+ 3x2 + 2x3 = 2
+ 2x2 x3 = 2
+ x2 2x3 = 0
x1
x1
vamos procurar uma aproximao da soluo, com preciso = 0.1 na norma do mximo, usando o Mtodo de Gauss-Seidel. Vamos tomar como condio inicial o vetor x0 =
(0.5, 0.5, 0.5)T .
O primeiro passo verificar se o critrio de convergncia satisfeito. Calculando os
k temos
1 =
2 =
3 =
1
5
(|a1,2 | + |a1,3 |) = < 1
|a1,1 |
7
1
6
(|a2,1 |1 + |a2,3 |) = < 1
|a2,2 |
7
1
11
(|a3,1 |1 + |a3,2 |2 ) =
<1
|a3,3 |
14
Logo o critrio de Sassenfeld satisfeito e com isto temos garantia que o Mtodo de GaussSeidel converge. Note que se aplicarmos o critrio das linhas obtemos que 2 = 3 = 1, ou
seja, o critrio das linhas no satisfeito. Este um exemplo em que no temos a garantia
de convergncia do Mtodo de Gauss-Jacobi.
Montando o processo iterativo temos
(k+1)
(k+1)
(k+1)
x1
x2
x3
1
(k)
(k)
2 3x2 2x3
7
1
(k)
(k+1)
+ x3
2 x1
2
(3.7)
1
(k+1)
(k+1)
0 x1
x2
2
x1
(1)
x2
(1)
x3
1
= (2 3 0.5 2 0.5) = 0.642
7
=
1
(2 0.642 + 0.5) = 0.929
2
1
= (0 0.642 0.929) = 0.785
2
0.142
0.642 0.500
(3.8)
35
Para k = 1 temos
(2)
x1
(2)
x2
(2)
x3
1
= (2 3 0.929 2 0.785) = 0.908
7
=
1
(2 0.908 + 0.785) = 0.938
2
(3.9)
1
= (0 0.908 0.938) = 0.923
2
0.908 0.642
0.266
3.2
Mtodos Diretos
3.2.1
a1,1 x1
+ a1,2 x2 + a1,3 x3
a2,2 x2 + a2,3 x3
a3,3 x3
..
.
a1,n xn = b1
a2,n xn = b2
a3,n xn = b3
..
.
an,n xn = bn
bn
an,n
1
(bn1 an1,n xn )
an1,n1
1
(bn2 an2,n1 xn1 an2,n xn )
an2,n2
36
..
.
xk =
..
.
..
.
n
X
1
bk
ak,j xj
ak,k
j=k+1
..
.
e assim sucessivamente. Com isto obtemos o esquema numrico para soluo de sistema triangular superior dado pelo algoritmo abaixo
Algoritmo: Retro-Soluo
Input: Matriz triangular superior A IRnn e b IRn
xn bn /an,n
Para k = n 1,n 2, . . . 1, faa:
xk
n
X
1
bk
ak,j xj
ak,k
j=k+1
fim para
Output: x IRn : soluo do sistema
3.2.2
Dois sistemas lineares so ditos ser equivalentes se estes tem a mesma soluo. A
estratgia do Mtodo de Eliminao de Gauss transformar um sistema linear Ax = b
cuja a soluo facilmente obtida
em um sistema triangular superior equivalente Sx = b,
pela Retro-Soluo. Esta transformao realizada atravs das operaes elementares
(I) Trocar duas equaes.
(II) Multiplicar uma equao por uma constante no nula.
(III) Adicionar a uma equao uma outra multiplicada por uma constante no nula.
Aplicando qualquer seqncia dessas operaes elementares num sistema Ax = b obte de tal forma que estes sero equivalentes. Para descrever
=b
mos um novo sistema Ax
o Mtodo de Eliminao de Gauss vamos considerar o sistema linear
a1,1 x1
2,1 x1
a3,1 x1
..
.
+ a1,2 x2
+ a2,2 x2
+ a3,2 x2
..
.
+ a1,3 x3
+ a2,3 x3
+ a3,3 x3
..
.
a1,n xn
a2,n xn
a3,n xn
..
.
= b1
= b2
= b3 ,
..
.
37
onde det(A) 6= 0, isto , o sistema admite uma nica soluo. Um sistema linear pode
ser representado na forma de matriz estendida (A0 |b0 ), ou seja
(0)
(0)
a1,1
(0)
a2,1
(0)
a3,1
..
.
a1,2
(0)
a2,2
(0)
a3,2
..
.
(0)
(0)
(0)
(0)
a1,3 a1,n
(0)
(0)
a2,3 a2,n
(0)
(0)
a3,3 a3,n
..
..
.
.
(0)
(0)
an,3 an,n
an,1 an,2
(0)
b1
(0)
b2
(0)
b3
..
.
(0)
bn
mk,1 =
ak,1
(0)
a1,1
.
(0)
(1)
= L1
(1)
= Lk mk,1 L1 ,
L1
Lk
(0)
(0)
k = 2, 3, . . . , n
(1)
(1)
(1)
(1)
(1)
a1,n b1
(1)
(1)
a2,n b2
(1)
(1)
a3,n b3
..
..
.
.
(1)
(1)
an,n bn
= L1
(2)
= L2
(2)
= Lk mk,2 L2 ,
L1
L2
Lk
(1)
(1)
(1)
(1)
k = 3, 4, . . . , n
38
obtendo ao final da etapa a matriz
(2)
(2)
a1,1 a1,2
(2)
0 a2,2
0
0
..
..
.
.
0
0
(2)
(2)
a1,3 a1,n
(2)
(2)
a2,3 a2,n
(2)
(2)
a3,3 a3,n
..
..
.
.
(2)
(2)
an,3 an,n
(2)
b1
(2)
b2
(2)
b3
..
.
(2)
bn
(n1)
a1,1
0
0
..
.
0
(n1)
(n1)
a1,2
a1,3
(n1)
(n1)
a2,2
a2,3
(n1)
0
a3,3
..
..
.
.
0
0
(n1)
(n1)
a1,n
b1
(n1)
(n1)
a2,n
b2
(n1)
(n1)
a3,n
b3
..
..
.
.
(n1)
(n1)
an,n
bn
n
X
1
bk
ak,j xj
ak,k
j=k+1
39
3x1 + 2x2 x3 = 1
7x1 x2 x3 = 2
x +x =1
1
3
Escrevendo na forma de matriz estendida teremos
3
2 1
1
7 1 1 2
1
0
1
1
Etapa 1: Eliminar x1 das linhas 2 e 3.
(1)
= L1
(0)
(1)
= L2 m2,1 L1 ,
L1
(0)
L2
(1)
(0)
L3
(0)
(0)
= L3 m3,1 L1 ,
(0)
onde m2,1 =
onde m3,1 =
a21
(0)
a1,1
(0)
a31
(0)
a1,1
7
3
1
3
2
17
3
2 1
1
= L1
(2)
= L2
(2)
= L3 m3,2 L2 ,
L1
L2
L3
(1)
(1)
(1)
(1)
(01)
onde m3,2 =
a32
(1)
a2,2
3
2
1
1
4/3 13/3
0 17/3
0
0 20/17 20/17
b3
=1
a3,3
1
(b2 a2,3 x3 ) = 1
a2,2
1
(b1 a1,2 x2 a1,3 x3 ) = 0
a1,1
40
3.2.3
Pivotamento Parcial
mk,j =
ak,j
(k1)
ak,k
(k1)
Se o piv |ak,k | 1, ou seja este prximo de zero teremos problemas com os erros de
arredondamento, pois operar nmeros de grandezas muito diferentes aumenta os erros
( ver Ex. 3.4). A estratgia de pivotamento parcial baseada na operao elementar (I).
No incio de cada etapa k escolhemos como piv o elemento de maior mdulo entre os
coeficientes ak1
para i = k, k + 1, . . . , n.
ik
Exemplo 3.4 Vamos considerar o sistema linear, representado pela matriz extendida
1 3 2
3
4
2 1 2
3 2 1 2
Etapa 1: Escolha do piv
max |ai,1 | = |a3,1 |
1i3
3 2 1 2
4
2 1 2
1 3 2
3
Eliminar x1 das linhas 2 e 3.
(1)
= L1
(1)
= L2 m2,1 L1 ,
(1)
= L3 m3,1 L1 ,
L1
L2
L3
(0)
(0)
onde m2,1 =
(0)
(0)
onde m3,1
2
3
1
=
3
(0)
3
2
1 2
41
2i3
3
2
1 2
= L1
(2)
= L2
(2)
= L3 m3,2 L2 ,
L1
L2
L3
(1)
(1)
(1)
(1)
onde m3,2 =
7
11
3
2
1
2
8/3
8/3
0 11/3
0
0 13/11 13/11
b3
=1
a3,3
1
(b2 a2,3 x3 ) = 0
a2,2
1
(b1 a1,2 x2 a1,3 x3 ) = 1
a1,1
3.2.4
42
1 0 0
x1,1 x1,2 x1,3
a1,1 a1,2 a1,3
a
a
a
x
x
x
=
2,1
0 1 0 ,
2,2
2,3 2,1
2,2
2,3
x3,1 x3,2 x3,3
a3,1 a3,2 a3,3
0 0 1
Portanto cada coluna k da inversa da matriz A soluo de um sistema linear, onde o
vetor dos termos independentes a k-sima coluna da matriz identidade, isto
3
3
1 6
2 6 ,
1 5
4 1 6 1 0 0
3 2 6 0 1 0 ,
3 1 5 0 0 1
43
= L1
(0)
(1)
= L2 m2,1 L1 ,
(1)
= L3 m3,1 L1 ,
L1
L2
L3
3
4
3
=
4
(0)
(0)
onde m2,1 =
(0)
(0)
onde m3,1
1
0 0
4 1
6
= L1
(2)
= L2
(2)
= L3 m3,2 L2 ,
L1
L2
L3
(1)
(1)
(1)
(1)
onde m3,2 =
1
5
4 1
6
1
0
0
1
0 ,
0 5/4 3/2 3/4
0 0 1/5 3/5 1/5 1
Retro-Soluo: Encontrar a soluo dos sistemas triangulares superior.
Primeira coluna da inversa
x3,1 =
x2,1 =
x1,1 =
b13
=3
a3,3
1 1
(b a2,3 x3 ) = 3
a2,2 2
1 1
(b a1,2 x2 a1,3 x3 ) = 4
a1,1 1
b23
=1
a3,3
1 2
(b a2,3 x3 ) = 2
a2,2 2
1 2
(b a1,2 x2 a1,3 x3 ) = 1
a1,1 1
44
Terceira coluna da inversa
x3,3 =
x2,3 =
x1,3 =
b33
= 5
a3,3
1 3
(b a2,3 x3 ) = 6
a2,2 2
1 3
(b a1,2 x2 a1,3 x3 ) = 6
a1,1 1
4 1 6
3 2 6 ,
3 1 5
No exemplo acima temos que a inversa da matriz A a prpria A. Este tipo de matriz
usado como matriz teste para verificar a eficincia dos mtodos numricos.
Abaixo apresentamos uma implementao do Mtodo de Eliminao de Gauss em
MatLab que resolve k sistemas, onde a matriz A comum a todos.
%
%
%
%
%
%
%
%
%
%
function x=EGauss(A,varargin)
b=[varargin{:}];
db=size(b);
% Esta parte verifica se o sistema eh quadrado
da=size(A);
n=da(1);
if n ~=da(2),
disp(??? A matriz deve ser quadrada);
break;
end;
% Esta parte verifica se a dimens{\~a}o do vetor b
% esta de acordo com a dimens{\~a}o do sistema
if n ~=db(1), disp(??? Erro na dimens{\~a}o de b); break; end;
% Cria matriz estendida
45
Ax=[A,b];
% Fase da elimina\c{c}{\~a}o
for k=1:(n-1)
for i=k+1:n
if abs(Ax(k,k)) < 10^(-16),
disp(??? Piv{\^o} Numericamente Nulo);
break;
end;
m=Ax(i,k)/Ax(k,k);
for j=k+1:da(2) + db(2)
Ax(i,j) = Ax(i,j)-m*Ax(k,j);
end;
end;
end;
% Fase da Retro solu\c{c}{\~a}o
if abs(Ax(n,n)) < 10^(-16),
disp(??? Piv{\^o} Numericamente Nulo);
break;
end;
for m=1:db(2)
x(n,m) = Ax(n,n+m)/Ax(n,n);
end;
for k=(n-1):-1:1
for m=1:db(2)
som=0;
for j=k+1:n
som=som+Ax(k,j)*x(j,m);
end;
x(k,m) = (Ax(k,n+m)-som)/Ax(k,k);
end;
end;
3.3
Observaes Finais
A escolha do mtodo, que deve ser aplicado a um determinado problema, deve ser orientada nas caractersticas de cada mtodo que apresentamos nesta seo.
Os mtodos diretos apresentam a soluo de qualquer sistema linear no singular,
porm no temos um controle sobre a preciso da soluo. Aplicados em sistemas de
grande porte e matriz cheia ( dimenso acima 50 50 e poucos elementos ai,j = 0 )
apresentam grandes erros de arredondamentos. Os mtodos iterativos permitem um
controle sobre a preciso da soluo, porm estes no se aplicam a qualquer sistema. O
sistema deve satisfazer certas condies de convergncia para que determinado mtodo
seja aplicado.
46
3.4
Exerccios
Exerccio 3.1 Resolva o sistema linear abaixo, usando o Mtodo de Eliminao de Gauss.
1.7x1
1 2 2
2
3 2
2 2 1
Exerccio 3.3 Um sistema dito ser tridiagonal se este formado pela diagonal principal,
a primeira diagonal secundria inferior e a primeira diagonal secundria superior. Os
outros elementos so nulos. Isto , a matriz associada da forma:
a1,1 a1,2 0
0
0
a2,1 a2,2 a2,3 0
0
0 a3,2 a3,3 a3,4 0
0
0 a4,3 a4,4 a4,5
..
..
..
..
..
.
.
.
.
.
0
0
0
0
0
0
0
0
0
0
0
0
0
0
..
.
0
0
0
0
..
.
an1,n2 an1,n1
0
an,n1
0
0
0
0
..
.
an1,n
an,n
0.0002x1 + 2x2 = 2
2x1
+ 2x2 = 4
3.4. EXERCCIOS
47
kx1 + x2 = 2
k
x3 = 3
5
kx1 + x2 + 2x3 = 2
kx1 + 2x2 +
1.3x1 + 0.3x2 = 1
0.5x1 0.5x2 = 0
tomando
(0)
0.8
0.8
Exerccio 3.9 Enuncie as vantagens e desvantagens dos Mtodos Diretos em relao aos
Mtodos Iterativos.
48
3.5
Atividades no Laboratrio
Problema 3.1 Implemente as modificaes necessrias no programa do Mtodo de Eliminao de Gauss para que este execute o Pivotamento Parcial
Problema 3.2 Implemente o Mtodo de Gauss-Seidel, junto com o critrio de Sassenfeld.
Teste o programa para o sistema Ax = b, onde
A=
A=
2
1
0
0
0
0
1
2
1
0
0
0
0
1
2
1
0
0
0
0
1
2
1
0
0
0
0
1
2
1
0
0
0
0
1
2
15 4 3 2 1
1 15 4 3 2
2 1 15 4 3
3 2 1 15 4
4 3 2 1 15
b=
b=
5
8
12
16
20
17
30
10
5
15
20
= 1010
= 108
CAPTULO
4
Ajuste de Curvas: Mtodo dos Mnimos
Quadrados
Em geral, experimentos em laboratrio gera um conjunto de dados que devem ser analisados com o objetivo de determinar certas propriedades do processo em anlise. Obter
uma funo matemtica que represente (ou que ajuste) os dados permite fazer simulaes do processo, de forma confivel, reduzindo assim repeties de experimentos
que podem ter um custo alto. Neste captulo vamos analisar o esquema dos Mnimos
Quadrados, que fornece uma funo que melhor represente os dados.
4.1
Dado um conjunto de pontos (xk , f (xk )), k = 0, 1, 2, ..., m. O problema de ajuste de curvas
consiste em encontrar uma funo (x) tal que o desvio em cada ponto k, definido por
dk = f (xk ) (xk ),
seja mnimo, onde (x) uma combinao linear de funes contnuas gi (x), i = 1, 2, ..., n,
escolhidas de acordo com os dados do problema. Isto
(x) = 1 g1 (x) + 2 g2 (x) + + n gn (x)
Neste caso dizemos que o ajuste linear sob os parmetros i . A escolha das funes
gi depende do grfico dos pontos, chamado de diagrama de disperso, atravs do qual
podemos visualizar que tipo de curva que melhor se ajusta aos dados.
Exemplo 4.1 Vamos considerar a tabela de pontos dada abaixo.
x
f (x)
0.10
0.19
0.20
0.36
0.50 0.65
0.75 0.87
0.70
0.91
0.80
0.96
0.90
0.99
49
1.10
0.99
1.23
0.94
1.35
0.87
1.57 1.70
0.67 0.51
1.75
0.43
1.80 1.94
0.36 0.11
50
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0.2
0.4
0.6
0.8
1.2
1.4
1.6
1.8
A anlise do grfico de disperso (Fig. 4.1) mostra que a funo que procuramos se
comporta como uma parbola. Logo poderamos escolher as funes g1 (x) = 1, g2 (x) = x e
g3 (x) = x2 , pois (x) = 1 g1 (x) + 2 g2 (x) + 3 g3 (x) representa todas as parbolas e com a
escolha adequada dos i teremos aquela que melhor se ajusta aos pontos. [ex:03]
O Mtodo dos Mnimos Quadrados consiste em determinar os i de tal forma que a
soma dos quadrados dos desvios em seja mnimo, Isto : Achar os i que minimizam a
funo
F (1 , 2 , . . . , n ) =
m
X
(xk )
}|
k=1
A funo F uma funo que satisfaz F () 0 IRm . Isto , uma funo limitada
inferiormente e portanto esta tem um ponto de mnimo. Este ponto pode ser determinado
pelo teste da primeira derivada, sendo
F
=0
i (1 ,...,n )
i = 1, . . . , n.
m
X
k=1
51
m
m
m
X
X
X
g
(x
)g
(x
)
+
g
(x
)g
(x
)
+
1
1 k 1 k
2
1 k 2 k
n
k=1
k=1
k=1
m
m
m
X
X
X
1
g2 (xk )g1 (xk ) + 2
g2 (xk )g2 (xk ) + + n
g2 (xk )gn (xk ) =
k=1
k=1
k=1
..
..
..
..
..
.
.
.
.
.
m
m
m
X
X
X
1
k=1
k=1
k=1
m
X
k=1
m
X
k=1
m
X
..
.
f (xk )gn (xk )
k=1
a1,1 1
a2,1 1
+ a1,2 2 + a1,3 3
+ a2,2 2 + a2,3 3
+ a3,2 2 + a3,3 3
..
..
.
.
+ an,2 2 + an,3 3
a3,1 1
..
.
an,1 1
onde
ai,j =
m
X
a1,n n
a2,n n
a3,n n
..
.
an,n n = bn
bi =
k=1
= b1
= b2
= b3
..
.
m
X
k=1
Este sistema tem uma nica soluo se os vetores formados por gk = (gk (x1 ), gk (xn ))
so linearmente independentes. Isto equivalente a ter as funes gi (x) linearmente independentes. A matriz A associada ao sistema uma matriz simtrica, ou seja ai,j = aj,i .
Logo, para um sistema n n, ser necessrio calcular (n2 + n)/2 elementos.
Exemplo 4.2 Usando a tabela do exemplo (4.1), vamos ajustar os dados por uma parbola.
Para isto vamos tomar g1 (x) = 1, g2 (x) = x e g3 (x) = x2 . Calculando cada uma das funes
nos pontos xk temos.
x
f (x)
g1 (x)
g2 (x)
g3 (x)
0.10
0.19
1.0
0.10
0.01
0.20
0.36
1.0
0.20
0.04
0.50
0.75
1.0
0.50
0.25
0.65
0.87
1.0
0.65
0.42
0.70
0.91
1.0
0.70
0.49
0.80
0.96
1.0
0.80
0.64
0.90
0.99
1.0
0.90
0.81
1.10
0.99
1.0
1.10
1.21
1.23
0.94
1.0
1.23
1.51
1.35
0.87
1.0
1.35
1.82
1.57
0.67
1.0
1.57
2.46
1.70
0.51
1.0
1.70
2.89
1.75
0.43
1.0
1.75
3.06
1.80
0.36
1.0
1.80
3.24
15
X
k=1
15
X
k=1
15
X
k=1
15
X
k=1
g1 (xk ) g1 (xk ) = 15
g1 (xk ) g2 (xk ) = 16.29 = a2,1
g1 (xk ) g3 (xk ) = 22.62 = a3,1
g2 (xk ) g2 (xk ) = 22.62
1.94
0.11
1.0
1.94
3.76
52
15
X
k=1
15
X
k=1
15
X
k=1
15
X
k=1
15
X
k=1
Obtendo assim um sistema linear que pode ser resolvido por um esquema numrico estudado no captulo 3. A soluo do sistema dado por
1 = 0.00, 2 = 1.99,
3 = 0.99
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0.2
0.4
0.6
0.8
1.2
1.4
1.6
1.8
53
No exemplo ajustamos os dados a uma parbola, mas outras funes bases poderiam ser usadas. Como exemplo, poderamos pensar que os dados representam o
primeiro meio ciclo de uma funo senoidal. E neste caso poderamos tomar g1 (x) = 1
e g2 (x) = sen(x/2). Afinal qual seria a melhor escolha? (Veja exerccio 4.1) O desvio
fornece uma medida que pode ser usada como parmetro de comparao entre ajustes
diferentes. No caso do ajuste pela parbola temos que o desvio dado por
D=
15
X
k=1
Se o ajuste feito por uma funo senoidal tiver um desvio menor, ento este ajuste representaria melhor os dados. Outro ponto a ser observado que a dimenso do sistema
linear depende do nmero de funes bases que estamos usando. No caso da parbola
usamos trs funes bases e temos um sistema 3 3. No caso de uma funo senoidal
teremos um sistema 2 2.
4.2
No caso contnuo temos uma funo f (x) dada num intervalo [a, b] e no mais uma tabela
de pontos. O procedimento anlogo ao caso discreto. Escolhidas as funes bases gi
devemos determinar a funo (x) = 1 g1 (x) + 2 g2 (x) + + n gn (x) de modo que o desvio
seja mnimo, onde
D=
Z b
a
(f (x) (x))2 dx
Z b
a
gi (x)gj (x)dx
bi =
Z b
a
f (x)gi (x)dx
Exemplo 4.3 Vamos determinar a melhor parbola que se ajuste a funo f (x) = sen(x)
no intervalo [0, 1]. Para isto devemos tomar, como funes bases, as funes g1 (x) = 1,
g2 (x) = x e g3 (x) = x2 . Calculando os termos do sistema linear temos
a1,1 =
a2,2
a2,3
Z 1
g1 (x)g1 (x)dx = 1
1
= a2,1
2
0
Z 1
1
=
g1 (x)g3 (x)dx = = a3,1
3
0
Z 1
1
=
g2 (x)g2 (x)dx =
3
0
Z 1
1
=
g2 (x)g3 (x)dx = = a3,2
4
0
a1,2 =
a1,3
Z 1
g1 (x)g2 (x)dx =
54
Z 1
0
Z 1
0
Z 1
0
Z 1
0
g3 (x)g3 (x)dx =
1
25
cuja a soluo dada por 1 = 0.027, 2 = 4.032 e 3 = 4.050. Assim temos que
(x) = 0.027 + 4.032x 4.050x2 . A figura (4.3) mostra o grfico comparativo entre a funo
f (x) ( linha: ) e o ajuste (x) (linha: ).
1.2
0.8
0.6
0.4
0.2
0.2
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
4.3
Ajuste No Linear
Existem casos, onde o diagrama de disperso de uma funo indica que os dados devem
ser ajustado por uma funo que no linear com relao aos i . Como exemplo, vamos
55
considerar os dados
x
f (x)
1.0 0.5
0
0.5
1.0
1.5
2.0
2.5
3.0
0.157 0.234 0.350 0.522 0.778 1.162 1.733 2.586 3.858
Montando o diagrama de disperso (Veja figura 4.4) podemos considerar que f (x) tem
um comportamento exponencial. Isto , f (x) (x) = 1 e2 x . Note que neste caso o
4
3.5
2.5
1.5
0.5
0
1
0.5
0.5
1.5
2.5
56
pontos temos
x
f (x)
z = ln(f (x))
g1 (x)
g2 (x)
1.0
0.5
0
0.5
1.0
1.5
2.0
2.5
3.0
0.157
0.234
0.350
0.522
0.778 1.162 1.733 2.586 3.858
1.851 1.452 1.049 0.650 0.251 0.150 0.549 0.950 1.350
1.000
1.000
1.000
1.000
1.000 1.000 1.000 1.000 1.000
1.0
0.5
0
0.5
1.0
1.5
2.0
2.5
3.0
9
X
k=1
9
X
k=1
9
X
k=1
15
X
k=1
15
X
g1 (xk ) g1 (xk ) = 9
g1 (xk ) g2 (xk ) = 9 = a2,1
g2 (xk ) g2 (xk ) = 24
z(xk ) g1 (xk ) = 2.254
z(xk ) g2 (xk ) = 9.749
k=1
2 = 0.800
2 = 2 = 0.800
4.4
Observaes Finais
57
3.5
2.5
1.5
0.5
0
1
0.5
0.5
1.5
2.5
podemos ter mais de um valor para um determinado ponto. (Veja exerccio 4.4) A funo
obtida considera os dois valores faz uma mdia entre estes valores.
Os elementos ai,j so obtidos pelo produto interno entre as funes gi e gj definidos
por
Caso Discreto:
hgi , gj i =
Caso Contnuo:
hgi , gj i =
m
X
k=1
Z b
a
hgi , gj i =
0,
ki ,
para i 6= j
para i = j
58
1.5
0.5
0.5
1.5
2
1
0.5
0.5
1.5
2.5
4.5
Exerccios
Exerccio 4.1 Usando os dados abaixo, faa um ajuste de curva com g1 (x) = 1 e g2 (x) =
sen(/2x). Calcule o desvio e compare com os resultados obtidos no Exemplo (4.1).
x
f (x)
0.10
0.19
0.20
0.36
0.50 0.65
0.75 0.87
0.70
0.91
0.80
0.96
0.90
0.99
1.10
0.99
1.23
0.94
1.35
0.87
1.57 1.70
0.67 0.51
1.75
0.43
1.80 1.94
0.36 0.11
[exc4:01]
59
Exerccio 4.3 A tabela abaixo representa o calor especfico da gua em funo da temperatura.
t(o C)
0
5
10
25
30
35
C(t)
1.00762 1.00392 1.00153 0.99852 0.99826 0.99818
Faa um ajuste linear, um quadrtico e um cbico. Faa um ajuste no linear da forma
(x) = 1 e2 x , com 1 , 2 > 0. Calcule o desvio e ache uma aproximao para t = 15 em
cada um dos casos. Sabendo que o valor exato da funo C(15) = 1.00000, qual dos casos
acima apresentou melhor aproximao?
1
1 + e(1 x+2 )
0.1
0.3
0.5
0.5
0.7
0.8
0.8
1.10
1.30
1.80
x
f(x) 0.833 0.625 0.500 0.510 0.416 0.384 0.395 0.312 0.277 0.217
Verifique, pelo teste do alinhamento, qual a melhor escolha para ajustar os dados
entre as funes z = 1 2 x e z = 1 x2 . (Obs: Note que neste caso a tabela apresenta dois
valores diferentes para os pontos x = 0.5 e x = 0.8. ) [ex4:02]
Exerccio 4.4 Ajustar os dados abaixo funo z =
1
Exerccio 4.5 Usando os polinmios de Legendre g1 (x) = 1, g2 (x) = x e g2 (x) = (3x2 1),
2
que so ortogonais em [1, 1], ache a melhor parbola que aproxima a funo f (x) = cos(x)
no intervalo [3, 3]. (Obs: A ortogonalidade dos polinmios nos forneceria uma matriz
diagonal, se o ajuste fosse feito no intervalo [1, 1]. Logo devemos fazer uma mudana de
varivel de tal forma que obteremos novas gi que sero ortogonais em [3, 3] ) [exc4:03]
Exerccio 4.6 Seja f(x) uma funo real, contnua no intervalo [0, 2]. Ache os valores de
i e i , para o ajuste da forma
(x) = 1 cos(x) + 1 sen(x) + 2 cos(2x) + 2 sen(2x) + + n cos(nx) + n sen(nx)g2 (x).
Este ajuste a aproximao de uma funo pela sua Srie de Fourier, cuja as aplicaes
em processamento de imagens e sinais so bem difundidos.
4.6
Atividade no Laboratrio
Problema 4.1 Implemente o ajuste de curvas, de tal modo que o usurio possa escolher o
nmero de funes bases e os tipos de funes entre os grupos:
Grupo I: g1 (x) = 1, g2 (x) = x, g3 (x) = x2 , . . . , gn (x) = xn1 .
Grupo II: g1 (x) = cos(x), g2 (x) = cos(2x), g3 (x) = cos(3x), . . . , gn (x) = cos(nx).
Grupo III: g1 (x) = 1, g2 (x) = ex , g3 (x) = e2x , . . . , gn (x) = e(n1)x .
Teste programa para os dados gerados pelo programa abaixo e comente os resultados
obtidos
% Gera pontos para teste de ajuste
n=input(Numero de pontos );
h=2/n;
x=-1:h:1;
f=exp(-4*(x*2).^2).*(-16*x);
60
CAPTULO
5
Interpolao Polinomial
1 x0 x0 2
1 x1 x1 2
1 x2 x2 2
.. ..
..
. .
.
1 xn xn 2
x0 n
x1 n
x2 n
..
.
xn n
61
a0
a1
a2
..
.
an
f0
f1
f2
..
.
fn
62
n l1
Y
Y
(xl xj ).
l=1 j=0
Como xl =
6 xj para l 6= j, segue que o determinante da matriz A diferente de zero e
portanto o sistema admite uma nica soluo
Exemplo 5.1 Vamos achar uma aproximao para f (0.3) usando o polinmio interpolador
dos dados abaixo.
xk
fk
0.0
4.00
0.2
3.84
0.4
3.76
Como temos, trs pontos (n + 1 = 3), o grau do polinmio ser menor ou igual a dois. Logo
p(x) = a0 + a1 x + a2 x2
Impondo a condio fk = p(xk ) obtemos:
f0 = 4.00 = p(0) = a0 + a1 0 + a2 02
f1 = 3.84 = p(0.2) = a0 + a1 0.2 + a2 0.22
f2 = 3.76 = p(0.4) = a0 + a1 0.4 + a2 0.42
1 0
0
4.00
5.1
63
Forma de Lagrange
n
X
fk Lk (x)
k=0
Lk (xj ) =
0
1
se k 6= j
se k = j
pn (xj ) = f0 L0%
(xj )+ f1 L1%
(xj )+ + fj Lj%
(xj )+ + fn Ln%
(xj )= fj
Logo pn (x) satisfaz a condio de interpolao, sendo assim, o polinmio interpolador
de f (x) nos pontos x0 , x1 , . . . , xn . Os polinmios Lk (x) so chamados de polinmios de
Lagrange e estes so obtidos da seguinte forma:
Lk (x) =
0.0
4.00
0.2
3.84
0.4
3.76
(x x1 )(x x2 )
(x 0.2)(x 0.4)
1
=
=
(x2 0.6x + 0.08)
(x0 x1 )(x0 x2 )
(0 0.2)(0 0.4)
0.08
(x x0 )(x x2 )
(x 0)(x 0.4)
1 2
=
=
(x 0.4x)
(x1 x0 )(x1 x2 )
(0.2 0)(0.2 0.4)
0.04
(x x0 )(x x1 )
(x 0)(x 0.2)
1
=
=
(x2 2.6x)
(x2 x0 )(x2 x1 )
(0.4 0)(0.4 0.2)
0.08
64
5.2
Forma de Newton
A forma de Newton do polinmio interpolador baseada nos operadores de diferenas divididas, que definimos a seguir: Seja f (x) uma funo tabelada em n + 1 pontos distintos
x0 , x1 , . . . , xn . Definimos o operador de diferena dividida de ordem zero em xk por
f [xk ] = f (xk ).
O operador de diferena dividida de ordem um, nos pontos xk , xk+1 , definido da seguinte
forma
f [xk ] f [xk+1 ]
f [xk , xk+1 ] =
xk xk+1
Este valor pode ser interpretado como uma aproximao para a primeira derivada de
f (x), em xk . O operador de diferena dividida de ordem dois, nos pontos xk , xk+1 , xk+2 ,
definido da seguinte forma:
f [xk , xk+1 , xk+2 ] =
Note que a forma de clculo desses operadores construtiva, no sentido de que para
obter a diferena dividida de ordem n necessitamos das diferenas divididas de ordem
n 1, n 2, . . . , 1, 0. Um esquema prtico para o clculo desses operadores dado pela
tabela abaixo
x
x0
x1
x2
x3
..
.
f3
..
.
xn1
fn1
>
xn
5.2.1
fn
>
>
>
..
.
fn1 fn
xn1 xn
Construo do Polinmio
65
os pontos x, x0 , x1 temos
f [x, x0 , x1 ] =
f [x, x0 ] f [x0 x1 ]
x x1
f (x0 ) f (x1 )
x0 x1
= f (x1 )
De forma anloga, podemos calcular a diferena dividida de ordem n, sobre os pontos
x, x0 , x1 , . . . , xn , obtendo
f (x) = pn (x) + En (x),
onde
pn (x) = f (x0 ) + (x x0 )f [x0 , x1 ] + (x x0 )(x x1 )f [x0 , x1 , x2 ] + +
(x x0 )(x x1 ) (x xn1 )f [x0 , x1 . . . , xn ]
En (x) = (x x0 )(x x1 ) (x xn )f [x, x0 , x1 , . . . , xn ]
[eq5:01]
[eq5:02]
(5.1)
(5.2)
Assim podemos aproximar f (x) por pn (x), sendo que o erro dado por En (x). O polinmio
pn (x) o polinmio interpolador de f (x) sobre os pontos x0 , x1 , . . . xn , pois p(xj ) = f (xj ),
para j = 0, 1, . . . , n.
66
5.3
Estudo do Erro
f (n+1) ()
com [x0 , xn ]
(n + 1)!
[teo:51]
H(xi ) = En (x)G(x
%i ) En (x
%i )G(x) = 0
e para t = x temos H(x) = En(x)G(x) En(x)G(x) = 0.
67
00
H (t)
..
.
H (n+1)
H (t)
f (n+1) ()
(n + 1)!
onde temos que ter alguma informao sobre a funo que permita limitar sua derivada
de ordem n + 1.
5.4
Uma das caractersticas da interpolao que esta pode fornecer uma aproximao
local, sem a necessidade de usar todos os dados disponveis. Como exemplo, vamos
considerar a tabela abaixo
x
f (x)
0.2
0.16
0.34
0.22
0.4
0.27
0.52
0.29
0.6
0.32
0.72
.
0.37
68
Vamos achar uma aproximao para f (0.44), usando um polinmio de grau 2. Neste
caso, necessitamos de 3 pontos e o ideal escolher aqueles que esto mais prximos do
valor que desejamos aproximar. Logo a melhor escolha ser x0 = 0.34, x1 = 0.4 e x2 = 0.52.
Isto se justifica pela frmula do erro, pois
|f (n+1) (x)|
|f (n+1) (x)|
= 0.00032 max
x[x0 ,x2 ] (n + 1)!
x[x0 ,x2 ] (n + 1)!
5.5
Interpolao Inversa
0.2
0.587
0.3
0.809
0.4
0.951
0.5
1.000
0.6
0.951
0.7
0.809
0.8
0.587
Vamos procurar uma aproximao de x de tal forma que f (x) = 0.9, usando uma interpolao quadrtica na forma de Newton.
Em primeiro lugar devemos determinar em que intervalo pode ocorrer f (x) = 0.9. Neste
exemplo temos duas possibilidades, para x [0.3, 0.4] ou x [0.6, 0.7]. Em segundo lugar
devemos verificar se a funo f (x) admite inversa. Para o primeiro caso temos que a
funo f (x) crescente no intervalo [0.2, 0.5]. Logo esta admite inversa neste intervalo.
No segundo caso a funo admite inversa no intervalo [0.5, 0.8], pois esta decrescente
neste intervalo. Como desejamos uma interpolao quadrtica temos que ter no mnimo
trs pontos e nos dois casos temos quatro pontos. Portanto possvel achar as duas
aproximaes. Vamos nos concentrar no primeiro caso. Montando a tabela da funo
inversa temos
69
0.587
0.2
0.809
0.3
0.951
0.4
1.000
0.5
Como desejamos um polinmio de grau 2, devemos escolher trs pontos e a melhor escolha
so os pontos que esto mais prximos do valor a ser aproximado, y = 0.9 (x0 = 0.809, x1 =
0.951 e x2 = 1.000). Calculando as diferenas divididas temos
y
0.809
f 1
0.3
ordem 1
ordem 2
0.704
0.951
0.4
6.999
2.040
1.000
0.5
5.6
Observaes Finais
70
2
1.5
0.5
0.5
1
0.8
0.6
0.4
0.2
0.2
0.4
0.6
0.8
% x=[-1.0,-0.8,-0.6,...,0.6,0.8,1.0]
% Calcula o polinomio e a funcao nos pontos
% xf=[-1.0,-0.98,-0.96,...,0.96,0.98,1.0]
% Compara os graficos e mostra o fenomeno de Runge
%
clear;
xf=-1:0.02:1;
f=1./(1+25 *xf.^2);
x=-1:0.2:1;
fk=1./(1+25 *x.^2);
% Forma de Lagrange
n=size(xf); % pontos onde vamos calcular o polinomio
m=size(x); % pontos de interpolacao
for s=1:n(2)
p(s)=0;
for l=1:m(2)
L=1;
for k=1:l-1
5.7. EXERCCIOS
71
L=L*(xf(s) -x(k))/(x(l)-x(k));
end;
for k=l+1:m(2)
L=L*(xf(s) -x(k))/(x(l)-x(k));
end;
p(s)=p(s)+fk(l)*L;
end;
end;
plot(xf,f,xf,p,:);
print -depsc fig51.eps
5.7
Exerccios
Exerccio 5.1 A tabela abaixo fornece o nmero de habitantes do Brasil (em milhes) de
1900 a 1970.
ano
Hab.
1900
17.4
1920
30.6
1940
41.2
1950
51.9
1960
70.2
1970
93.1
a) Usando o polinmio interpolador de grau 2, na forma de Lagrange, ache uma aproximao para a populao no ano de 1959.
b) Usando interpolao quadrtica na forma de Newton, estime, com o menor erro possvel, em que ano a populao ultrapassou os 50 milhes.
c) Com os resultados obtidos no tem a) podemos estimar a taxa de crescimento da
populao neste perodo? Justifique sua resposta.
que preciso podemos calcular 20, usando interpolao sobre estes pontos?
Exerccio 5.3 Considere o problema de interpolao linear para f (x) = sen(x)+x, usando
os pontos x0 e x1 = x0 + h. Mostre que |E1 (x)| h2 /8.
Exerccio 5.4 Dada a tabela abaixo.
x
f (x)
-0.2
0.980
-0.1
0.995
0.1
0.996
0.15
0.988
0.35
0.955
a) Quando possvel, ache uma aproximao para f (0.25) e f (0) , usando o polinmio
interpolador na forma de Newton, com o menor erro possvel.
b) Se tivssemos usado o polinmio interpolador na forma de Lagrange sobre os mesmos
pontos obteramos melhor resultado? Justifique.
Exerccio 5.5 Num experimento de laboratrio, uma reao qumica liberou calor de acordo
com as medies mostradas na tabela abaixo
72
hora
Co
8:00 hr
0
9:00 hr
130
9:30 hr
210
10:00 hr
360
5.8
Atividades no Laboratrio
CAPTULO
6
Integrao Numrica - Frmulas de
Newton Ctes
O objetivo deste captulo estudar esquemas numricos que aproxime a integral definida
de uma funo f (x) num intervalo [a, b]. A integrao numrica aplicada quando a
primitiva da funo no conhecida ou quando s conhecemos a funo f (x) num
conjunto discreto de pontos.
As frmulas de Newton-Ctes so baseadas na estratgia de aproximar a funo
f (x) por um polinmio interpolador e aproximamos a integral pela integral do polinmio.
As aproximaes so do tipo
Z b
a
n
X
Ai f (xi )
i=0
6.1
Regra do Trapzio
f (x)dx
Z x1
x0
p1 (x)dx
73
74
Z x1
x0
x1 2 x0 2
= f (x0 )(x1 x0 ) + f [x0 , x1 ]
x0 (x1 x0 )
2
2
= f (x0 )(x1 x0 ) +
=
=
f (x1 ) f (x0 )
x1 x0
(x1 x0 )2
2
(x1 x0 )
(f (x0 ) + f (x1 ))
2
h
(f (x0 ) + f (x1 )),
2
onde h = x1 x0 . A frmula acima representa a rea do trapzio que tem f (x1 ) e f (x0 )
como os valores das bases e h como o valor da altura. Na figura 6.1 temos uma representao desta aproximao.
f(x)
f(x1)
p(x)
f(x0)
6.2
||
||
x0
x1
Clculo do Erro
No captulo de interpolao vimos que uma funo f (x) pode ser representada por
f (x) = pn (x) + En (x),
6.2.
CLCULO DO ERRO
75
f (x)dx =
Z b
a
pn (x)dx +
Z b
a
En (x)dx,
Z b
a
E1 (x)dx =
Z b
a
(x x0 )(x x1 )
f 00 ()
h3
dx = f 00 (), [a, b]
2
12
h3
max |f 00 ()|
12 [a,b]
|ET |
Exemplo 6.1 Como exemplo, vamos considerar a funo f (x) = ex , cuja a primitiva,
conhecida como funo de Gauss, descrita na forma de uma srie. Vamos aproximar a
integral no intervalo [0, 1] usando a Regra do Trapzio. Desta forma temos que h = 10 = 1
e segue que
Z 1
1
2
2
2
ex dx (e0 + e2 ) = 0.6839397
2
0
Para calcular o erro cometido temos que limitar a segunda derivada da funo no intervalo
[0, 1]. Sendo
2
f 00 (x) = (4x2 2)ex
temos que nos extremos do intervalo vale
|f 00 (0)| = 2 e |f 00 (1)| = 0.735759.
Para calcular os pontos crticos da f 00 (x), devemos derivar f 00 (x) e igualar a zero, obtendo,
r
000
f (x) = (12x 8x )e
x2
= 0 x = 0 ou x =
3
2
[a,b]
h3
1
max |f 00 ()| = = 0.166667
12 [a,b]
6
Note que esta estimativa do erro informa que a aproximao obtida no garante a
primeira casa decimal como exata, pois a soluo exata da integral est entre os valores 0.6839397 0.166667. Neste caso devemos usar um procedimento mais preciso, como
descrito na prxima seo.
76
6.3
ba
e xk = x0 + kh com k = 0, 1, . . . , n
n
Aplicando a Regra do Trapzio em cada subintervalo [xk , xk+1 ] segue que
h=
Z b
a
f (x)dx
=
h
h
h
h
h
(f0 + f1 ) + (f1 + f2 ) + (f2 + f3 ) + + (fn2 + fn1 ) + (fn1 + fn )
2
2
2
2
2
h
[f0 + 2(f1 + f2 + + fn1 ) + fn ]
2
O erro cometido na aproximao igual a soma dos erros cometidos em cada subintervalo, logo temos que o erro da forma
|ET G | n
h3
max |f 00 ()|
12 [a,b]
77
2
Exemplo 6.2 Considerando a funo do exemplo anterior, f (x) = ex em [0, 1], vamos
determinar o nmero de subintervalos necessrios para que a Regra do Trapzio Repetida
fornea uma aproximao com pelo menos 3 casas decimais exatas. Para isto devemos
ter que |ET G | 104 , logo
h3
n
max |f 00 ()| 104
12 [0,1]
Sendo h = (b a)/n e que o mximo da segunda derivada da funo em [0, 1] 2 (Ver ex.
anterior) segue que
n
h3
1 1
max |f 00 ()| 104 n 3
2 104
12 [0,1]
n 12
1
6 104
n2
n2 1666.666
n 40.824
6.4
Neste caso, usamos o polinmio de grau 2 que interpola a funo f (x). Para isto necessitamos de trs pontos x0 , x1 e x2 . Como os pontos devem ser igualmente espaados
tomamos h = (b a)/2 Na figura 6.4 temos uma representao desta aproximao para
uma funo f (x). Para obter a aproximao da integral vamos considerar o polinmio
interpolador na forma de Newton,
p2 (x) = f (x0 ) + (x x0 )f [x0 , x1 ] + (x x0 )(x x1 )f [x0 , x1 , x2 ].
E com isto segue que a integral da funo f (x) aproximada por
Z b
a
f (x)dx
=
Z x2
x0
p2 (x)dx
h
(f (x0 ) + 4f (x1 ) + f (x2 )),
3
78
f(x )
0
f(x )
1
f(x2)
x1
||
||
x0
x2
Z b
a
E2 (x)dx =
Z b
a
(x x0 )(x x1 )(x x2 )
h5
f 000 ()
dx = f (iv) (), [a, b]
3!
90
h5
90
[a,b]
10
1
ba
=
=
2
2
2
1
f (x)dx (f (0) + 4f (1/2) + f (1)) = 0.74718
6
79
[a,b]
h5
max |f (iv) ()| = 0.00416667
90 [a,b]
Desta forma podemos garantir que as duas primeiras casas decimais esto corretas.
6.5
Podemos melhorar a aproximao da mesma forma que fizemos com a Regra do Trapzio.
Vamos dividir o intervalo de integrao em n subintervalos de mesma amplitude. Porm
devemos observar que a Regra de Simpson necessita de trs pontos, logo a regra se
aplica a cada dois subintervalos da forma [xs , xs+2 ], o que implica que n deve ser um
nmero par. Neste caso temos que
h=
ba
e xs = x0 + sh, para s = 0, 1, . . . , n
n
f (x)dx
=
h
h
h
h
(f0 + 4f1 + f2 ) + (f2 + 4f3 + f4 ) + + (fn4 + 4fn3 + fn2 ) + (fn2 + 4fn1 + fn )
3
3
3
3
h
[f0 + 4(f1 + f3 + + fn1 )2(f2 + f4 + + fn2 ) + fn ]
3
O erro cometido nesta aproximao a soma dos erros em cada subintervalo [xs , xs+2 ] e
como temos n/2 subintervalos segue que:
|ESR | n
h5
max |f (iv) ()|.
180 [a,b]
80
Exemplo 6.4 Considerando a integral da funo f (x) = ex , no intervalo [0, 1], vamos
determinar o nmero de subintervalos necessrios para obtermos uma aproximao com
trs casas decimais exatas. Para isto limitamos o erro por |ESR | 104 . Sendo h = (ba)/n
e max[0,1] |f (iv) ()| = 12 segue que
n
h5
1 12
max |f (iv) ()| 104 n 5
104
180 [a,b]
n 180
1
15 104
n4
n4 666.66666
n 5.0813274
O menor valor de n que garante a preciso n = 6. Note que a Regra de Simpson necessita
de bem menos subintervalos que a Regra do Trapzio (n = 41).
6.6
Observaes Finais
As frmulas de Newton-Ctes so obtidas aproximando a funo por um polinmio interpolador. No captulo da interpolao polinomial, vimos que quanto maior o grau do
polinmio, maior so os erro nos extremos. Logo, no prtico usar polinmios de
grau muito alto, para aproximar as funes. Como exemplo veja a Figura 5.1, em que a
funo foi aproximada por um polinmio de grau 10. Podemos observar que a integral
do polinmio no uma boa aproximao para a integral da funo. Neste contexto, a
melhor estratgia usar as frmulas repetidas, que permitem obter uma aproximao
com uma certa preciso desejada, usando frmulas que so obtidas por polinmios de
baixo grau.
Pelas frmulas de erro podemos observar que a Regra do Trapzio exata para
polinmios de grau um, o que natural, pois aproximamos f (x) por um polinmio de
grau 1. No entanto, na Regra de Simpson aproximamos a funo por um polinmio
de grau 2 e esta exata para polinmios de grau trs. Este aumento da preciso se
deve as propriedades de simetria que a frmula do erro tem em relao aos pontos de
interpolao.
6.7
Exerccios
Exerccio 6.1 Calcule as integrais pela Regra do Trapzio e pela Regra de Simpson usando seis subintervalos.
Z 4
Z 0.6
dx
xdx e
1+x
1
0
Exerccio 6.2 Calcule o valor de com trs casas decimais exatas usando a relao
=
4
Z 1
0
dx
1 + x2
81
Exerccio 6.3 Mostre que se f 0 (x) contnua em [a, b] e que f 00 (x) > 0, x [a, b], ento a
aproximao obtida pela Regra do Trapzio maior que o valor exato da integral.
Exerccio 6.4 Dada a tabela abaixo, calcule a integral
svel.
x
f (x)
0.15
1.897
0.22
1.514
0.26
1.347
0.30
1.204
Z 0.30
0.15
Exerccio 6.5 Considere que f (x) aproximada pelo polinmio de grau 3 e determine a
regra de integrao, aproximando a integral da funo pela integral do polinmio. Ache a
frmula do erro.
Exerccio 6.6 Baseado na Regra de Simpson, determine uma regra de integrao para a
integral dupla
Z bZ d
a
f (x, y)dx dy
6.8
x2 + y 2 dx dy
Atividades no Laboratrio
Problema 6.1 Implemente a Regra de Simpson Repetida e aplique no problema do exerccio 6.2. Monte um esquema para a integral dupla, usando o programa anterior.
82
CAPTULO
7
Equaes Diferenciais Ordinrias
Muitos dos modelos matemticos nas reas de mecnica dos fluidos, fluxo de calor, vibraes, so representados por equaes diferenciais. Em muitos casos, a teoria garante
a existncia e unicidade da soluo, porm nem sempre podemos obter a forma analtica
desta soluo.
Neste captulo vamos nos concentrar em analisar esquemas numricos para soluo
de Problemas de Valor Inicial (P.V.I.), para equaes diferenciais de primeira ordem. Isto
, achar a funo y(x) tal que
(
y 0 = f (x, y)
y(x0 ) = y0
Os esquemas numricos calculam a aproximao de y(x) nos pontos x1 , x2 , x3 , . . ., em que
xk = x0 + kh para um dado passo h > 0 (ver Figura 7.1). O valor da funo no ponto xk
aproximado por yk , que obtido em funo dos valores anteriores yk1 , yk2 , . . . , y0 . Desta
forma, os esquemas numricos determinam a aproximao da funo para valores de
x > x0 , o que justifica o nome de problema de valor inicial. Os mtodos so classificados
em duas classes:
Mtodos de Passo Simples: So aqueles em que o clculo de yk depende apenas de
yk1 .
Mtodos de Passo Mltiplo: So aqueles em que o clculo de yk depende m-valores
anteriores, yk1 , yk2 , . . . , ykm . Neste caso dizemos que o mtodo de m-passos.
7.1
Mtodo Euler
y 0 = f (x, y)
y(x0 ) = y0
83
84
y0
y1
y2
y3
y5
y
h0
h
h
y 0 (x0 ) = lim
[eq7:03]
(7.1)
y 0 = x 2y
y(0) = 1
Neste caso temos que x0 = 0 e y0 = 1. Vamos usar o Mtodo de Euler para obter uma
aproximao para y(0.5), usando h = 0.1. Desta forma temos
y1 = y0 + h(x0 2y0 ) = 1 + 0.1(0 2 1) = 0.8 y(x1 ) = y(0.1)
85
A soluo analtica do P.V.I. dada por y(x) = (5e2x + 2x 1)/4. No grfico abaixo comparamos a soluo exata com os valores calculados pelo Mtodo de Euler. Note que em
cada valor calculado o erro aumenta. Isto se deve porque cometemos um erro local na
aproximao da derivada por (7.1) e este erro vai se acumulando a cada valor calculado.
Na prxima seo daremos uma forma geral do erro local.
Figura 7.2: Comparao da soluo exata (linha - ) com a aproximada (pontos o).
7.2
y 0 = f (x, y)
y(x0 ) = y0
y 0 (xk )
y 00 (xk )
y (n) (xk )
y (n+1) ()
(x xk ) +
(x xk )2 + +
(x xk )n +
(x xk )n+1
1!
2!
n!
(n + 1)!
86
y 0 (xk )
y 00 (xk ) 2
y (n) (xk ) n y (n+1) () n+1
h+
h + +
h +
h
1!
2!
n!
(n + 1)!
[eq7:22]
(7.2)
y 00 (xk ) =
= fx + fy f
000
y () 2
Eloc (xk+1 ) =
h [xk , xk+1 ]
2!
Em geral, podemos determinar a ordem de um mtodo pela frmula do erro. Se o erro
depende da n-sima potncia de h dizemos que o mtodo de ordem n1. Quanto menor
for o valor de h menor ser o erro local.
Exemplo 7.2 Vamos utilizar o mtodo de 2o ordem para aproximar y(0.5), usando h = 0.1,
para o P.V.I.
(
y 0 = x 2y
y(0) = 1
Neste caso temos que f (x, y) = x 2y, logo segue que
y 00 = fx + fy f = 1 2(x 2y)
Substituindo em (7.2) temos que
y 00 (xk ) 2
y 0 (xk )
h+
h
1!
2!
h2
= y(xk ) + h(xk 2y(xk )) + (1 2xk + 4y(xk ))
2
y(xk+1 ) = y(xk ) +
87
h2
(1 2xk + 4yk )
2
=
=
y2
=
=
y3
=
=
y4
=
=
y5
=
=
h2
(1 2x0 + 4y0 )
2
0.12
1 + 0.1(0 2 1) +
(1 2 0 + 4 1) = 0.825
2
h2
y1 + h(x1 2y1 ) + (1 2x1 + 4y1 )
2
0.12
0.825 + 0.1(0.1 2 0.825) +
(1 2 0.1 + 4 0.825) = 0.6905
2
h2
y2 + h(x2 2y2 ) + (1 2x2 + 4y2 )
2
0.12
0.6905 + 0.1(0.2 2 0.6905) +
(1 2 0.2 + 4 0.6905) = 0.58921
2
h2
y3 + h(x3 2y3 ) + (1 2x3 + 4y3 )
2
0.12
0.58921 + 0.1(0.3 2 0.58921) +
(1 2 0.3 + 4 0.58921) = 0.515152
2
h2
y4 + h(x4 2y4 ) + (1 2x4 + 4y4 )
2
0.12
(1 2 0.4 + 4 0.515152) = 0.463425
0.515152 + 0.1(0.4 2 0.515152) +
2
y0 + h(x0 2y0 ) +
O grfico na Figura 7.3 compara os resultados obtidos por este mtodo, com os resultados obtidos pelo mtodo de Euler.
Os resultados obtidos pelo mtodo de 2o
ordem so mais precisos. Quanto maior
a ordem do mtodo melhor ser a aproximao. A dificuldade em se tomar mtodos de
alta ordem o clculo da relao de y (n+1) (x) = [f (x, y)](n) .
7.3
Mtodos de Runge-Kutta
88
Montamos a reta L2 com coeficiente angular dado por f (xn+1 , yen+1 ) = f (xn , yn + hy 0 ) e
passa pelo ponto P ( Ver figura 7.4-b ).
L2 (x) = yen+1 + (x xn+1 )f (xn+1 , yen+1 )
Montamos a reta L0 que passa por P e tem como coeficiente angular a mdia dos coeficientes angular de L1 e L2 (Ver figura 7.4-c). Finalmente a reta que passa pelo ponto
(xn , yn ) e paralela a reta L0 tem a forma
1
L(x) = yn + (x xn ) (f (xn , yn ) + f (xn+1 , yn + hyn0 ))
2
Calculando no ponto xn+1 temos
1
yn+1 = yn + h (f (xn , yn ) + f (xn+1 , yn + hyn0 ))
2
Podemos observar que o valor de yn+1 (Ver figura 7.4-d) est mais prximo do valor exato
que o valor de yen+1 . Este esquema numrico chamado de mtodo de Euler Melhorado,
onde uma estimativa do erro local dado por
|Eloc (xn )|
h3
6
max
[xn ,xn+1 ]
|y 000 ()|
Determinamos o mtodo de Euler Melhorado por uma construo geomtrica. Tambm podemos obter uma demonstrao analtica. Desenvolvemos a srie de Taylor da
89
L1
P
ye
ye
n+1
n+1
yn
yn
xn
xn+1
L1
P
yen+1
xn
xn+1
P
yen+1
L2
L1
L2
yn+1
L0
L0
yn
yn
xn
xn+1
xn
xn+1
funo f (x, y) e calculando no ponto (xn+1 , yn + hyn0 ). A expresso encontrada deve concordar com a Srie de Taylor at a segunda ordem. Em geral um mtodo de Runge-Kutta
de segunda ordem dado por
yn+1 = yn + a1 hf (xn , yn ) + a2 hf (xn + b1 h, yn + b2 hyn0 ),
onde
a1 + a2 = 1
a b = 1/2
2 1
a b = 1/2
2 2
[eq7:06]
(7.3)
90
7.4
Mtodos de Adams-Bashforth
So mtodos de passo mltiplos baseados na integrao numrica. A estratgia integrar a equao diferencial no intervalo [xn , xn+1 ], isto
Z xn+1
xn
y 0 (x)dx =
Z xn+1
xn
f (x, y(x))dx
y(xn+1 ) = y(xn ) +
Z xn+1
|
xn
(7.4)
f (x, y(x))dx
{z
[eq7:01]
(7.5)
Integrao Numrica
A integral sobre a funo f (x, y) aproximada pela integral de um polinmio interpolador que pode utilizar pontos que no pertencem ao intervalo [xn , xn+1 ]. Dependendo
da escolha dos pontos onde vamos aproximar a funo f (x, y) os esquemas podem ser
classificados como:
Explcito: So obtidos quando utilizamos os pontos xn , xn1 , . . . , xnm para interpolar a funo f (x, y);
Implcito: So obtidos quando no conjunto de pontos, sobres os quais interpolamos a funo f (x, y), temos o ponto xn+1 .
7.4.1
91
Mtodos Explcitos
Vamos considerar o caso em que a funo f (x, y) interpolada sobre os pontos (xn , fn )
e (xn1 , fn1 ), onde fn = f (xn , yn ). Considerando o polinmio interpolador na forma de
Newton temos
f (x, y) p(x) = fn1 + f [xn1 , xn ](x xn1 )
Integrando sobre o intervalo [xn , xn+1 ] temos
Z xn+1
xn
p(x)dx =
=
=
=
=
=
Z xn+1
xn
xn+1 2
xn 2
fn1 (xn+1 xn ) + f [xn1 , xn ]
xn1 xn+1
+ xn1 xn
2
2
fn fn1 1
hfn1 +
xn+1 2 2(xn h)xn+1 xn 2 + 2(xn h)xn
h
2
fn fn1 1
hfn1 +
xn+1 2 2xn xn+1 + xn 2 + 2h(xn+1 xn )
h
2
fn fn1 1
hfn1 +
(xn+1 xn )2 + 2h2
h
2
h
(3fn fn1 )
2
h
(3fn fn1 )
2
Este mtodo um mtodo explcito, de passo dois. Isto significa que yn+1 depende de
yn e yn1 . Logo necessitamos de dois valores para iniciar o mtodo: y0 que dado no
P.V.I.; y1 que deve ser obtido por um mtodo de passo simples. De uma forma geral, os
mtodos de k-passos necessitam de k-valores iniciais que so obtidos por mtodos de
passo simples, de ordem igual ou superior a ordem do mtodo utilizado.
Obtemos o mtodo, aproximando a funo pelo polinmio interpolador de grau um.
Assim o erro local, cometido por esta aproximao ser
Z xn+1
xn
E1 (x)dx =
Z xn+1
xn
= h3
(x xn1 )(x xn )
5 000
y ()
12
f 00 (, y())
dx
2!
[xn , xn+1 ]
5
max |y 000 ()|
12 [xn ,xn+1 ]
y 0 = 2xy
y(0.5) = 1
92
Vamos achar uma aproximao para y(1.1) pelo Mtodo de Adams-Bashforth explcito , de
passo dois, usando h = 0.2.
Do P.V.I segue que y0 = 1 e x0 = 0.5. Este um mtodo de passo dois e vamos ter
que calcular y1 por um mtodo de passo simples que tenha ordem igual ou superior ao do
Mtodo de Adams-Bashforth. Como o erro local depende de h3 temos que este mtodo
de 2o ordem. Assim vamos utilizar o mtodo de Euler Melhorado, que um mtodo de 2o
ordem.
h
(f (x0 , y0 ) + f (x1 , y0 + hy00 ))
2
0.2
= 1+
(2 0.5 1 + (2) 0.7 (1 + 0.2 (2 0.5 1))) = 0.788 y(0.7)
2
y1 = y0 +
y2 = y1 +
y3
h
251 (v)
[55fn 59fn1 + 37fn2 9fn3 ] Eloc (xn+1 ) = h5
y () com [xn , xn+1 ]
24
720
Neste caso necessitamos de quatro valores iniciais, y0 , y1 , y2 e y3 , que deve ser calculados
por um mtodo de passo simples de ordem maior ou igual a quatro (Ex. Runge-Kutta de
4o ordem).
7.4.2
Mtodos Implcitos
Neste caso o ponto (xn+1 , fn+1 ) um dos ponto, onde a funo f (x, y) ser interpolada .
Vamos considerar o caso em que a funo f (x, y) interpolada sobre os pontos (xn , fn ) e
(xn+1 , fn+1 ). Considerando o polinmio interpolador na forma de Newton temos
f (x, y) p(x)fn + f [xn , xn+1 ](x xn )
Integrando sobre o intervalo [xn , xn+1 ] temos
Z xn+1
xn
p(x)dx =
Z xn+1
xn
xn 2
xn+1 2
xn xn+1
+ xn xn
= fn (xn+1 xn ) + f [xn , xn+1 ]
2
2
93
1
xn+1 2 2xn xn+1 + xn 2
2
1
(xn+1 xn )2
2
h
(fn + fn+1 )
2
E1 (x)dx =
Z xn+1
xn
= h3
(x xn+1 )(x xn )
f 00 (, y())
dx
2!
1 000
y () [xn , xn+1 ]
12
Note que o clculo de yn+1 depende de fn+1 = f (xn , yn+1 ). Em geral a f (x, y) no
permite que isolemos yn+1 . Desta forma temos que usar um esquema Preditor-Corretor.
Por um mtodo explcito encontramos uma primeira aproximao para yn+1 (Preditor) e
este valor ser corrigido por intermdio do mtodo implcito (Corretor).
Exemplo 7.4 Vamos considerar o seguinte problema:
(
y 0 = 2xy y 2
y(0) = 1
Usando h = 0.1 vamos achar uma aproximao para y(0.2), usando o esquema
P
: yn+1 = yn + hf (xn , yn )
h
C : yn+1 = yn + (fn + fn+1 )
2
Sendo x0 = 0 e y0 = 1 temos
P
7.5
h
0.1
y1 = y0 + (f0 + f1 ) = 1 +
2 0 1 12 2 0.1 0.9 0.92 = 0.9005 y(0.1)
2
2
y2 = y1 + hf (x1 , y1 ) = 0.9005 + 0.1(2 0.1 0.9005 (0.9005)2 ) = 0.8013
0.1
h
y2 = y1 + (f1 + f2 ) = 0.9005 +
2 0.1 0.9005 (0.9005)2 2 0.2 0.8013 0.80132
2
2
= 0.8018 y(0.2)
94
de primeira ordem e assim poderemos aplicar qualquer um dos mtodos analisados nas
sees anteriores. Como exemplo vamos considerar o problema de terceira ordem dado
por
000
2
2
0
00
y = x + y y 2y x
y(0) = 1
y 0 (0) = 2
00
y (0) = 3
Para transformar num sistema de primeira ordem devemos usar variveis auxiliares.
Fazemos y 0 = w y 00 = w0 e fazemos y 00 = w0 = z y 000 = w00 = z 0 . Com isto a equao
acima pode ser representada por:
0
y =w
w0 = z
z 0 = x2 + y 2 w 2zx
y(0) = 1
w(0) = 2
z(0) = 3
0 1
0
y
0
y0
0
1 w + 0
w = 0 0
2
0
y 1 2x
z
x
z
|
{z
Y0
{z
} | {z }
{z
Y 0 = AY + X
Y (0) = Y0
yn+1
yn
0
1
0
yn
0
0
1 wn + 0
wn+1 = wn + h 0
zn+1
zn
yn 1 2xn
zn
xn 2
Tomando h = 0.1, vamos calcular uma aproximao para y(0.2). O clculo de Y1 Y (0.1)
segue que
0
y0
0
1
0
y0
y1
0
1 w0 + 0
w1 = w0 + h 0
x0 2
z0
y0 1 2x0
z0
z1
1.2
0
1
0 1
0
1
y1
1
2 + 0 = 2.3
w1 = 2 + 0.1 0 0
2
2.9
0
3
1 1 2 0
3
z1
7.6. EXERCCIOS
95
y2
y1
0
1
0
y1
0
0
1 w1 + 0
w2 = w1 + h 0
z2
z1
y1 1 2x1
z1
x1 2
y2
1.2
0
1
0
1.2
0
1.430
2.3
0
0
1
2.3
0
2.590
w
=
+
0.1
+
=
2
2.9
1.2 1 2 0.1
2.9
0.12
2.757
z2
Note que neste caso no estamos achando apenas o valor aproximado de y(0.2), mas
tambm de y 0 (0.2) e y 00 (0.2), sendo
y(0.2)
1.430
0
y
(0.2)
2.590
y 00 (0.2)
2.757
7.6
Exerccios
y0 = x y
y(1) = 2.2
h
[9fn+1 + 19fn 5fn1 + fn2 ]
24
251 (5)
y ()
720
= 2 y
,
y
y(1) = 0.25
y0 = y
y(0) = 1
96
yn+1 =
h2
1+h+
2
!n+1
b) Comparando com a soluo exata do problema, voc esperaria que o erro tivesse
sempre o mesmo sinal? Justifique.
Exerccio 7.5 Considere o P.V.I. abaixo.
(
y 0 = x 2y
y(0) = 1
a) Ache as aproximaes, para y(x) no intervalo [0, 2], usando h = 0.2 e o esquema
numrico baixo
: yn+1 = yn + hf (xn + h/2, yn + h/2y 0 )
h
C ; yn+1 = yn + (fn+1 + fn )
2
P
b) Sabendo que a soluo exata dada por y(x) = (5e2x + 2x 1)/4, plote (novo verbo?)
um grfico com os valores obtidos pelo esquema Preditor e pelo esquema Corretor.
Compare os resultados.
Exerccio 7.6 Determine uma aproximao para y(1) utilizando o mtodo de Euler com
h = 0.1, para o P.V.I. abaixo.
(
y 00 3y 0 + 2y = 0
y(0) = 1y 0 (0) = 0
Exerccio 7.7 Determine o mtodo de Adans-Bashforth, quando aproximamos a integral
de f (x, y) pelo polinmio interpolador de grau 3 sobre os pontos, (xn , fn ), (xn1 , fn1 ), (xn2 , fn2 )
7.7
Atividades no Laboratrio
Referncias Bibliogrficas
97