Escolar Documentos
Profissional Documentos
Cultura Documentos
rico
Notas em Ca
Volume ???, 2016
Editores
Adilandri M
ercio Lobeiro (Editor Chefe)
Universidade Tecnol
ogica Federal do Parana - UTFPR
Campo Mour
ao, PR, Brasil
e-ISSN ????-????
ii
Agradecimentos
Estas notas seguem de muito perto a bibliografia referenciada e que correspondem
aos livros textos deste Curso. Sugere-se a sua aquisicao. O u
nico objetivo destas
notas e facilitar as atividades dos alunos em sala de aula, pois nao precisarao anotar
conte
udos e enunciados de exerccios. De forma que o aluno tem um maior conforto
em sala de aula e o professor podera explicar os temas de forma mais rapida. De
nenhuma maneira a leitura ou consulta da bibliografia esta descartada, isto e dever
do aluno.
Monitoria
Atendimento
Horarios
???
???
???
???
P.ALuno
Atendimento
Hor
arios
Terca
17:30-19:30
Sala
D001
Provas
Eventos
Primeira Prova
Segunda Prova
Reavaliac
ao
CN3XB (ID4A)
26/09/16
28/11/16
05/12/16
EA34D(IF4A)
26/09/16
28/11/16
05/12/16
iv
Conte
udo
Pref
acio
vii
1 Introdu
c
ao
ix
2 An
alise de Arredondamento em Ponto Flutuante
2.1 Introduc
ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Sistemas de N
umeros no Computador . . . . . . . . . . . . .
2.2.1 Representac
ao de um N
umero Inteiro . . . . . . . . .
2.2.2 Representac
ao de um n
umero real . . . . . . . . . . .
2.2.3 Mudanca de Base . . . . . . . . . . . . . . . . . . . . .
2.3 Representac
ao de N
umeros no Sistema F (, t, m, M ) . . . . .
2.3.1 Erro de Arredondamento e Aritmetica Computacional
2.3.2 Operac
oes Aritmeticas em Ponto Flutuante . . . . . .
2.4 Usando o MATLAB para a resolucao de exerccios . . . . . .
2.4.1 Mudanca de Base . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
2
2
2
4
5
5
8
11
11
3 Solu
c
oes de Equa
c
oes com Uma Vari
avel
3.1 Introduc
ao . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Metodo da Bissecc
ao . . . . . . . . . . . . . . . . . . .
3.3 Iterac
ao pelo Metodo do Ponto fixo . . . . . . . . . . .
3.4 Metodo de Newton-Raphson ou Metodo das Tangentes
3.5 Metodo da Secante ou Metodo de Newton Modificado
3.6 Metodo da Falsa Posic
ao . . . . . . . . . . . . . . . . .
3.7 Usando o MATLAB para a resolucao de exerccios . .
3.8 Metodo da Bissecc
ao . . . . . . . . . . . . . . . . . . .
3.9 Iterac
ao pelo Metodo do Ponto Fixo . . . . . . . . . .
3.10 Metodo de Newton-Raphson ou Metodo das Tangentes
3.11 Metodo da Secante ou Metodo de Newton Modificado
3.12 Metodo da Falsa Posic
ao . . . . . . . . . . . . . . . . .
3.13 Sistema N
ao Linear . . . . . . . . . . . . . . . . . . . .
3.13.1 Metodo de Newton . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
15
15
17
19
22
24
25
27
27
29
30
34
35
37
37
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Pref
acio
vii
viii
Captulo 1
Introdu
c
ao
C
alculo Num
erico e a obtencao da solucao de um problema pela aplicacao de
metodo numerico; a soluc
ao do problema sera caracterizada, entao, por um conjunto
de n
umeros, exatos ou aproximados.
M
etodo Num
erico e um algoritmo composto por um n
umero finito de operacoes
envolvendo apenas n
umeros (operacoes aritmeticas elementares, calculo de funcoes,
consulta a uma tabela de valores, consulta a um grafico, arbitramento de um valor,
etc.).
A resoluc
ao de tais problemas envolve varias fases que podem ser assim estruturadas:
Problema Real
ou Problema
Fsico
Levantamento de
Dados
Construcao do
Modelo
Matematico
Escolha do
Metodo
Numerico
Adequado
Analise dos
Resultados
Obtidos
Implementacao
Computacional
deste Metodo
Se Necessario
Reformular o Modelo
Matematico e/ou
Escolhe Novo Metodo
Numerico
Captulo 2
An
alise de Arredondamento
em Ponto Flutuante
2.1
Introdu
c
ao
Neste captulo [2], chamamos atencao para o fato de que o conjunto dos n
umeros represent
aveis em qualquer m
aquina e finito, e portanto discreto, ou seja nao e possvel
representar em uma m
aquina todos os n
umeros de um dado intervalo [a, b]. A implicac
ao imediata desse fato e que o resultado de uma simples operacao aritmetica
ou o c
alculo de uma func
ao, realizadas com esses n
umeros, podem conter erros.
A menos que medidas apropriadas sejam tomadas, essas imprecisoes causadas, por
exemplo,
1. por simplificac
ao no modelo matematico (algumas vezes necessarias para se
obter um modelo matem
atico sol
uvel);
2. erro de truncamento (troca de uma serie infinita por uma finita);
3. erro de arredondamento (devido a propria estrutura da maquina);
4. erro nos dados (dados imprecisos obtidos de experimentos, ou arredondados
na entrada); etc,
podem diminuir e algumas vezes destruir, a precisao dos resultados [?].
Exemplo 2.1. Calcular a
area do disco de raio 100 m utilizando:
a) = 3, 14;
b) = 3, 1416;
c) = 3, 141592654.
possvel obter exatamente
Como justificar as diferencas entre os resultados? E
esta
area?
Os erros ocorridos dependem da representac
ao dos n
umeros na m
aquina utilizada. A representac
ao de um n
umero depende da base escolhida ou disponvel na
m
aquina em uso e do n
umero m
aximo de dgitos usados na sua representac
ao.
O n
umero , por exemplo, n
ao pode ser representado atraves de um n
umero
finito de dgitos decimais. No exemplo mostrado acima, o n
umero foi escrito como
3, 14; 3, 1416 e 3, 141592654 respectivamente nos casos (a), (b) e (c). Em cada um
deles foi obtido um resultado diferente, e o erro neste caso depende exclusivamente
da aproximaca
o escolhida para . Qualquer que seja o disco, a sua
area nunca ser
a
obtida exatamente, uma vez que e um n
umero irracional.
Assim, nosso objetivo aqui sera o de alertar o leitor para os problemas que
possam surgir durante a resolucao de um problema, bem como dar subsdios para
evit
a-los e para uma melhor interpretacao dos resultados obtidos.
2.2
Sistemas de N
umeros no Computador
2.2.1
Representac
ao de um N
umero Inteiro
Em princpio, a representac
ao de um n
umero inteiro no computador nao apresenta
qualquer dificuldade. Qualquer computador trabalha internamente com uma base
fixa , onde e um inteiro 2; e e escolhido como uma potencia de 2.
Assim, dado um n
umero inteiro n 6= 0, ele possui uma u
nica representacao:
n = (nk nk+1 n1 n0 ) = (nk k + n(k1) (k1) + + n1 1 + n0 0 ),
onde os ni , i = 0, 1, , k s
ao inteiros satisfazendo 0 ni < e nk 6= 0.
Por exemplo, na base = 10, o n
umero 2015 e representado por
2315
= |{z}
2 103 + |{z}
3 102 + |{z}
1 101 + |{z}
5 100 ,
n3
n2
n1
n0
e e armazenado como n3 n2 n1 n0 .
2.2.2
Representac
ao de um n
umero real
A representac
ao de um n
umero real no computador pode ser feita de duas maneiras
[4]:
a) Representa
c
ao em Ponto Fixo: Este foi o sistema usado, no passado, por
muitos computadores. Assim, dado um n
umero real, x 6= 0, ele sera representado em ponto fixo por:
n
X
x=
xi i ,
i=k
onde k e n s
ao inteiros satisfazendo k < n e, usualmente, k 0 e n > 0 e os
xi s
ao inteiros satisfazendo 0 xi < .
Por exemplo, na base = 10, o n
umero 1997, 16 e representado por:
1997, 16
=
=
1 103 + |{z}
9 102 + |{z}
9 101 + |{z}
7 100 + |{z}
1 101 + |{z}
6 102
|{z}
x3
2
P
x2
xi
x1
x0
i=3
x1
x2
Introduc
ao
b) Representa
c
ao em Ponto Flutuante: Esta representacao, que e mais flexvel
que a representac
ao em ponto fixo, e universalmente utilizada nos dias atuais.
Dado um n
umero real, x 6= 0, este sera representado em ponto flutuante1 por:
x = d e ,
onde e a base do sistema de numeracao, d e a mantissa e e e o expoente. A
mantissa e um n
umero em ponto fixo, isto e:
d=
n
X
di i ,
i=k
2.2.3
Mudanca de Base
Como j
a dissemos anteriormente, a maioria dos computadores trabalham na base
onde e um inteiro 2; e e normalmente escolhido como uma potencia de 2.
Assim um mesmo n
umero pode ser representado em mais de uma base. Alem disso,
sabemos que, atraves de uma mudan
ca de base, e sempre possvel determinar a
representac
ao em uma nova base. Veremos entao, atraves de exemplos, como se faz
mudanca de base.
Exemplo 2.5. Mudar a representac
ao dos n
umeros:
a) 1101 da base 2, para a base 10. Neste caso, o procedimento e multiplicar cada
algarismo do n
umero na base 2 por potencias crescentes de 2, da direita para
a esquerda, e somar todas as parcelas.
b) 0, 110 da base 2, para a base 10. Neste caso, o procedimento e multiplicar cada
algarismo do n
umero na base 2, ap
os a vrgula, por potencias decrescentes de
2, da esquerda para a direita, e somar todas as parcelas.
c) 13 da base 10, para a base 2. Neste caso, o procedimento e dividir o n
umero por
2. A seguir, continuar dividindo o quociente por 2, ate que o u
ltimo quociente
seja igual a 1. O n
umero na base 2 ser
a ent
ao obtido tomando-se o u
ltimo
quociente e todos os restos ds divis
oes anteriores.
d) 0, 75 da base 10, para a base 2. Neste caso, o procedimento e multiplicar a parte
decimal por 2. A seguir continuar multiplicando a parte decimal do resultado
obtido por 2. O n
umero na base 2 ser
a ent
ao obtido tomando-se a parte inteira
do resultado de cada multiplicaca
o.
e) 3, 8 da base 10, para a base 2. Neste caso, o procedimento e transformar a parte
inteira seguindo o item c e a parte decimal seguindo o item d.
Introduc
ao
2.3
Representa
c
ao de N
umeros no Sistema F (, t, m, M )
Sabemos que os n
umeros reais podem ser representados por uma reta contnua.
Entretanto, em ponto flutuante podemos representar apenas pontos discretos na
reta real. Para ilustrar este fato consideremos o seguinte exemplo.
Exemplo 2.7. Quantos e quais n
umeros podem ser representados no sistema F (2, 3, 1, 2)?
Exemplo 2.8. Considerando o mesmo sistema do Exemplo 2.7, represente os
n
umeros: x1 = 0, 38, x2 = 5, 3 e x3 = 0, 15 dados na base 10 2 .
Exerccio 2.6. Considere o sistema F (3, 3, 2, 1).
a) Quantos e quais n
umeros podemos representar neste sistema?
b) Represente no sistema os n
umeros: x1 = (0, 40)10 , x2 = (2, 8)10 .
Exerccio 2.7. Considere o sistema F (2, 5, 3, 1).
a) Quantos e quais n
umeros podemos representar neste sistema?
b) Qual o maior n
umero na base 10 que podemos representar neste sistema (sem
fazer arredondamento)?
2.3.1
= 0, d1 d2 dt 10n
Introduc
ao
0, d1 d2 dt 10n .
0, 1 2 t 10n .
|p p |
ERp
|pp |
|p|
admitindo-se que p 6= 0.
Exemplo 2.11. Suponhamos que voce tenha a tarefa de medir os comprimentos
de uma ponte e de um rebite e que conseguiu 9999 e 9 cm, respectivamente. Se os
valores verdadeiros forem 10000 e 10 cm, respectivamente, calcule:
1. o Erro Absoluto;
2. o Erro Relativo.
Defini
c
ao 2.3 (Dgitos Significativos). O n
umero p e dito pr
oximo de p, t dgitos
significativos, se t for o maior inteiro n
ao negativo para o qual [5]
|pp |
|p|
< 0, 5 10t .
2.3.2
Operac
oes Aritm
eticas em Ponto Flutuante
Considere uma m
aquina qualquer e uma serie de operacoes aritmeticas. Pelo fato
do arredondamento ser feito ap
os cada operacao temos, ao contrario do que e valido
para n
umeros reais, que as operacoes aritmeticas (adicao, subtracao, divisao e multiplicac
ao) n
ao s
ao nem associativas e nem distributivas. Ilustraremos esse fato
atraves de exemplos [?].
Exemplo 2.13. Efetue as operac
oes abaixo fazendo arredondamento de tres dgitos
em ponto flutuante ap
os cada operac
ao.
1. (11, 4 + 3, 18) + 5, 05 e 11, 4 + (3, 18 + 5, 05);
3,18
e
2. 3,1811,4
5,05
5,05 11, 4;
3. 3, 18 (5, 05 + 11, 4) e 3, 18 5, 05 + 3, 18 11, 4.
Exemplo 2.14. Considerando o Sistema F (10, 3, 10, 10), some 1/3 dez vezes consecutivas usando arredondamento.
Exemplo 2.15. Seja P (x) = x3 3x2 + 3x 1 e Q(x) = ((x 3)x + 3)x 1. Com
base no F (10, 3, 10, 10) calcule P (2, 19) e Q(2, 19). Compare os resultados com o
valor verdadeiro, P (2, 19) = Q(2, 19) = 1, 685159, calculando o erro absoluto.
Observando os tres u
ltimos exemplos, vemos que erros consideraveis podem
ocorrer durante a execuc
ao de um algoritmo. Isso se deve ao fato de que existem
limitac
oes da m
aquina e tambem que os erros de arredondamento sao introduzidos
a cada operac
ao efetuada. Em consequencia, podemos obter resultados diferentes
mesmo utilizando metodos numericos matematicamente equivalentes.
Assim, devemos ser capazes de conseguir desenvolver um algoritmo tal que os
efeitos da aritmetica discreta do computador permaneca inofensivo quando um
grande n
umero de operac
oes s
ao executadas [?].
Cancelamento
O cancelamento ocorre na subtracao de dois n
umeros quase iguais. Vamos supor
que estamos operando com aritmetica de ponto flutuante. Sejam x e y dois n
umeros
com expoente e. Quando formamos a diferenca x y ela tambem tera o expoente e.
Se normalizarmos o n
umero obtido, veremos que devemos mover os dgitos para a
esquerda de tal forma que o primeiro seja diferente de zero. Assim, uma quantidade
de dgitos iguais a zero aparecem no final da mantissa do n
umero normalizado.
Estes zeros n
ao possuem significado algum. Veremos este fato atraves de exemplos.
Exemplo 2.16. Compare osresultadosdos c
alculos f (9875)
e g(9875)
utilizando o
b+ b2 4ac
2a
x2 =
b b2 4ac
.
2a
(2.3.1)
x1 x2 = c/a.
(2.3.2)
Introduc
ao
10
10, 1 3, 1 8, 2
;
14, 1 + 7, 09 3, 22
0, 5971 103
;
0, 4268 101
Introduc
ao
11
701
700
2.4
2.4.1
x2 = 62, 08390 .
12
Comando: dec2bin(d)
Este comando e utilizado para realizar a mudanca de um n
umero d na base 10 para
a base 2. Para us
a-lo basta digitar o comando na Command Window do software
colocando o n
umero o qual deseja-se mudar de base entre parenteses.
Exemplo 2.18. Representar o n
umero 23 na base 10, na base 2:
Introduc
ao
13
100
P
0, 1 e
i=1
100
P
i=1
14
Captulo 3
Solu
co
es de Equa
c
oes com
Uma Vari
avel
3.1
Introdu
c
ao
t
e 1 .
435000
e 1 .
16
Os metodos numericos discutidos neste captulo sao utilizados para obter solucoes
aproximadas para equac
oes desse tipo, quando a solucao exata nao pode ser obtida
por metodos diretos.
Defini
c
ao 3.1 (Zero de uma funcao). Seja f (x) uma func
ao real definida num
intervalo [a, b]. Chama-se zero desta funca
o em [a, b] (ou, raiz da equac
ao f (x) = 0)
a todo p [a, b] tal que f (p) = 0, como mostra a Figura 3.1.
Introduc
ao
17
Isolar a raiz, ou seja, achar um intervalo [a, b], o menor possvel, que contenha
uma raiz da equac
ao f (x) = 0;
Melhorar o valor da raiz aproximada, isto e, refina-la ate o grau de exatidao
requerido. Com a abordagem iterativa precisamos determinar um intervalo
inicial para construirmos a sequencia {pn }
a dada
n=1 e teremos que a raiz p ser
por:
p = lim pn
n
Alem disto, temos que estipular criterios de parada, pois na pratica nao calcularemos infinitos termos, mas apenas o suficiente para atingirmos a exatidao desejada.
3.2
M
etodo da Bissecc
ao
a1 + b1
b1 a1
=
2
2
Se f (p1 ) = 0, ent
ao p = p1 , e teremos encontrado a solucao. Se f (p1 ) 6= 0, entao
f (p1 ) tem o mesmo sinal de f (a1 ) ou de f (b1 ). Quando f (p1 ) e f (a1 ) tem o mesmo
sinal, p (p1 ; b1 ), e fazemos a2 = p1 e b2 = b1 . Quando f (p1 ) e f (a1 ) tem sinais
opostos, p (a1 ; p1 ), e fazemos a2 = a1 e b2 = p1 . Reaplicamos entao o processo
ao intervalo [a2 ; b2 ].
Criterios de parada, ou seja, metodos para interromper o processo:
18
|pn pn1 |
|pn |
< , pn 6= 0.
ba
2n1
< .
Observa
c
ao 3.2 (Precis
ao no comprimento do intervalo). Se f satisfaz o teorema
3.3 ent
ao o n
umero de iterac
oes n (menor inteiro) que ser
ao efetuadas pelo metodo
ate que se obtenha |b a| < e dado por
n
>
1+
log(ba)log()
.
log 2
Teorema 3.4. Suponha que f C[a; b] e f (a) f (b) < 0. O metodo da Bissecc
ao
gera uma sequencia {pn }
que
se
aproxima
do
valor
de
p
correspondente
ao
zero
n=1
de f , com
|pn p|
ba
2n
Observa
c
ao 3.3 (Precis
ao na convergencia da sequencia). Se f satisfaz o teorema
3.4 ent
ao o n
umero de iterac
oes n (menor inteiro) que ser
ao efetuadas pelo metodo
ate que se obtenha |pn p| < e dado por
n
>
log(ba)log()
.
log 2
Como
|pn p|
ba
2n
1
2n
, isto e,
No decorrer do texto, a n
ao especificacao da precisao, significa precisao na convergencia da sequencia.
Exemplo 3.3. Determine o n
umero de iterac
oes necess
ario para resolver a equac
ao
x3 + 4x2 10 = 0 para todo x [1, 2], com:
Introduc
ao
19
1. Precis
ao = 102 na convergencia da sequencia, ou seja, |pn p| < 102 .
2. Precis
ao = 102 no comprimento do intervalo, ou seja, |bn an | < 102 .
Exerccio 3.1. Justifique que a func
ao:
(x + 1)
+ 0, 148x 0, 9062 = 0
f (x) = cos
8
possui uma raiz no intervalo [1, 0] e outra no intervalo [0, 1].
Exerccio 3.2. Use o metodo da Bissecc
ao para encontrar p3 para f (x) =
em [0; 1].
xcos x
3.3
Itera
c
ao pelo M
etodo do Ponto fixo
Um n
umero p e Ponto Fixo (PF) para uma funcao g se g(p) = p.
Nesta sec
ao consideraremos o problema de encontrar solucoes para o problema
do ponto fixo, e a conex
ao entre os problemas do ponto fixo e os problemas de
encontrar as razes que queremos resolver.
Dado um problema de se encontrar a raiz f (p) = 0, podemos definir g como um
ponto fixo em p, da seguinte forma
g(x)
= x f (x).
Ainda que o problema que desejamos resolver esteja em encontrar uma forma
para o c
alculo das razes de uma funcao, o metodo do ponto fixo e mais facil de
examinar, e certas escolhas de pontos fixos levam a tecnicas muito poderosas para
o c
alculo das razes.
Primeiramente, e necess
ario que estejamos habituados com esse novo tipo de
problema, bem como decidir quando uma funcao tem um ponto fixo e como os
pontos fixos podem ser aproximados com uma precisao especificada.
Exemplo 3.4. Verifique que a func
ao g(x) = x2 2 para x [2; 3] tem pontos
fixos em x = 1 e x = 2. Encontre a func
ao f e suas raizes.
O seguinte teorema fornece condicoes suficientes para a existencia e a unicidade
de um ponto fixo.
20
k ,
Observa
c
ao 3.4.
a) g(a) [a; b];
b) g(b) [a; b];
2. x = g2 (x) =
3. x = g3 (x) =
4. x = g4 (x) =
1
2
4x
1/2
10 x3
10
4+x
5. x = g5 (x) = x
1/2
1/2
x3 +4x2 10
3x2 +8x ;
Introduc
ao
21
Teorema 3.7 (Teorema do Ponto Fixo). Seja g C[a, b] tal que g(x) [a, b] para
todo x [a, b]. Suponha, adicionalmente, que g 0 (x) existe em (a, b) e que uma
constante 0 < k < 1 exista, com
|g 0 (x)|
k ,
n1 ,
1
2
10 x3
10
4+x
1/2
1/2
22
x3 +4x2 10
3x2 +8x ;
x+3x4
2
3. g3 (x) =
x+3
x2 +2
4. g4 (x) = x
1/2
1/2
x4 +2x2 x3
4x3 +4x1 ;
3.4
M
etodo de Newton-Raphson ou M
etodo das
Tangentes
f (
x) + (x x
)f 0 (
x) +
(x
x)2 00
f ((x))
2
x) +
f (
x) + (p x
)f 0 (
(p
x)2 00
f ((p))
2
0
Resolvendo para p temos
p
f (
x)
f 0 (
x)
Essa relac
ao estabelece o cenario para a aplicacao do metodo de Newton, que
comeca com uma aproximac
ao inicial p0 e gera a sequencia {pn }
n=0 fazendo
pn
pn1
f (pn1 )
f 0 (pn1 )
para n 1 .
(3.4.1)
Introduc
ao
23
<
;
(3.4.2)
, pN 6= 0 .
(3.4.3)
ou
|f (pN )| <
.
(3.4.4)
= pn1
f (pn1 )
f 0 (pn1 )
, n1 .
(3.4.5)
necess
E
ario conhecer um intervalo que contenha o valor
Para decidir qual o melhor extremo do intervalo (a, b) a iniciar o metodo, basta
verificar qual dos extremos possui func
ao e segunda derivada com mesmo sinal:
f (xi ) f 00 (xi ) > 0 para i = {extremos do intervalo}.
Requer o conhecimento da forma analtica de f 0 (x), mas sua convergencia e
extraordin
aria.
A derivac
ao da serie de Taylor, feita com aplicacao do metodo de Newton, mostra
a import
ancia de uma aproximacao inicial precisa. A suposicao crucial para essa
aplicac
ao e que o termo envolvendo (p x)2 e, por comparacao com |p x|, tao
pequeno que ele pode ser cancelado. Isso sera claramente falso, a menos que x
seja uma boa aproximac
ao de p. Se p0 nao esta suficientemente proximo da raiz
verdadeira, h
a poucas raz
oes para acreditar que o metodo de Newton vai convergir
em direc
ao a raiz. Entretanto, em alguns casos, mesmo uma aproximacao inicial
pobre vai produzir convergencia.
O seguinte teorema de convergencia para o metodo de Newton ilustra a import
ancia te
orica da escolha de p0 .
24
Teorema 3.8. Seja f C 2 [a, b]. Se p [a, b] e tal que f (p) = 0 e f 0 (p) 6= 0, ent
ao
existe um > 0 tal que metodo de Newton gera uma sequencia {pn }n=1 converge
para p para qualquer aproximac
ao p0 [p , p + ].
Exemplo 3.7. Aplique o metodo de Newton para encontrar a raiz da equac
ao
f (x) = cos x x no intervalo [0, /4].
Exerccio 3.9. Seja f (x) = x2 6 e p0 = 1. Use o metodo de Newton para achar
p2 .
Exerccio 3.10. Use o metodo de Newton para encontrar soluco
es com precis
ao de
104 , ou seja |pN pN 1 | < 0, 0001, para os seguintes problemas:
1. x3 2x2 5 = 0, [1, 4];
2. x3 + 3x2 1 = 0, [3, 2];
3. x cos x = 0, [0, /2];
4. x 0, 8 0, 2 sin x = 0, [0, /2].
Exerccio 3.11. Determinar, usando o metodo de Newton, a menor raiz positiva
da equaca
o 4 cos(x) ex = 0 no intervalo [0; 1] com erro relativo inferior a 102 ,
ou seja, |pN pN 1 |/|pN | < 0, 01.
Exerccio 3.12. A equac
ao de Kepler, usada para determinar
orbitas de satelites,
e dada por M = x E sin x. Dado que E = 0, 2 e M = 0, 5, obtenha a raiz a raiz da
equac
ao de Kepler usando o Metodo de Newton com erro relativo inferior a 102 ,
ou seja, |pN pN 1 |/|pN | < 0, 01.
Exerccio 3.13. Voce est
a projetando um tanque esferico para armazenar
agua para
uma pequena vila em uma regi
ao em desenvolvimento. O volume do lquido que ele
armazena pode ser calculado por V = h2 [3R h]/3 , onde V e o volume [m3 ],
h e a profundidade da
agua no tanque [m], R e o raio do tanque [m]. Se R = 3 m
ate qual profundidade o tanque deve ser enchido para armazenar 30 m3 ? Use tres
iterac
oes do metodo de Newton-Raphson para determinar sua resposta. Use tres
iterac
oes do metodo da falsa posic
ao para determinar sua resposta. Determine o
erro percentual depois de cada iterac
ao.
3.5
M
etodo da Secante ou M
etodo de Newton Modificado
O metodo de Newton e uma tecnica extremamente poderosa, mas tem uma fraqueza:
a necessidade de se conhecer o valor da derivada de f em cada aproximacao. Frequentemente, f 0 (x) apresenta muito mais dificuldades e necessita de mais operacoes
aritmeticas para ser calculada do que f (x).
Para evitar o problema do c
alculo da derivada no metodo de Newton, introduzimos uma pequena variac
ao. Por definicao,
f 0 (pn1 )
lim
xpn1
f (x)f (pn1 )
xpn1
f (pn2 )f (pn1 )
pn2 pn1
f (pn1 )f (pn2 )
pn1 pn2
Introduc
ao
25
= pn1
, n2 .
, n2 .
pn
, n2 .
ou
3.6
M
etodo da Falsa Posic
ao
O M
etodo da Falsa Posi
c
ao (tambem chamado de Regula Falsi ou Regra Falsa)
gera aproximac
oes da mesma maneira que o metodo da Secante, mas tambem inclui
um teste para se assegurar que a raiz esteja dentro de um intervalo delimitado por
iterac
oes sucessivas.
Inicialmente, escolhe-se as aproximacoes iniciais p0 e p1 com f (p0 ) f (p1 ) < 0.
A aproximac
ao p2 e escolhida da mesma maneira que no metodo da Secante, como
sendo o valor em que o segmento que une os pontos (p0 , f (p0 )) e (p1 , f (p1 )) corta
o eixo dos x. Para decidir que segmento da secante deve ser usado para calcular
p3 checamos f (p2 ) f (p1 ). Se o valor e negativo, entao p1 e p2 delimitam uma
raiz, e escolhemos p3 como o ponto de interseccao do segmento unindo (p1 , f (p1 ))
e (p2 , f (p2 )) e o eixo dos x, e entao substitumos os valores em p0 e P1 . De modo
similar, uma vez que p3 e encontrado, o sinal de f (p3 ) f (p2 ) determina se usaremos
p2 e p3 ou p3 e p1 para calcular p4 . No u
ltimo caso, uma reatualizacao dos ndices de
p2 e p1 e realizada. Essa reatualizacao garante que a raiz esteja dentro do intervalo
entre os valores de iterac
oes sucessivas.
Exemplo 3.9. Aplique o Metodo da Posic
ao Falsa em f (x) = cos x x com p0 = 0
e p1 = /4 para x [0, /4].
Exerccio 3.15. Seja f (x) = x2 6. Com p0 = 3 e p1 = 2, ache p3 .
1. Use o metodo da Secante;
2. Use o metodo da Falsa posic
ao;
26
6?
discutida na introduc
ao deste captulo. Utilize esse valor para calcular a populac
ao
no fim do segundo ano, supondo que a taxa de imigrac
ao durante o ano permaneca
em 435000 indivduos por ano.
Introduc
ao
3.7
27
Nesta sec
ao ser
ao apresentados implementacoes basicas de algoritmos dos metodos
apresentados para a soluc
ao de equacoes de uma variavel. Para utiliza-los basta
seguir as seguintes intruc
oes:
Passo 1:Abrir o software MatLab;
Passo 2:Na janela Current Folder selecione a basta que contem os arquivos
dos algorimos em extens
ao .m;
Passo 3:Ao abrir a pasta selecione o algoritmo a ser utilizado.
Passo 4:Ao dar duplo clique no arquivo sera aberta uma janela de edicao
(Editor);
Passo 5:Para executar o arquivo clique em Run.
3.8
M
etodo da Bissecc
ao
28
Introduc
ao
29
end
end
c=(a+b ) / 2 ;
e r r=abs ( ba ) ;
r e l e r r=e r r / abs ( b ) ;
yc=f e v a l ( uF , c ) ;
%S ad a s
f p r i n t f ( Func
ao : )
d i s p ( f ) %f u n c
ao
f p r i n t f ( Aproximac
a o para a r a i z da f u n c a o : )
d i s p ( c ) %c e a aproximac a o para o z e r o
f p r i n t f ( Erro r e l a t i v o para a r a i z aproximada : )
d i s p ( r e l e r r ) %r e l e r r e a e s t i m a t i v a do e r r o r e l a t i v o para c
f p r i n t f ( Valor da f u n c a o a p l i c a d o na r a i z aproximada : )
d i s p ( yc ) %yc = f ( c )
end
3.9
Itera
c
ao pelo M
etodo do Ponto Fixo
%Entradas
syms x %r e c e b e a f u n c
a o no formato s i m b o l i c o .
g = i n p u t d l g ( { g ( x)= } , Func a o ) ; %f e a f u n c a o em formato s t r i n g g .
p0 = i n p u t d l g ( { p0 : } , Ponto i n i c i a l da i t e r a c a o ) ;
t o l = i n p u t d l g ( { t o l : } , T o l e r a n c i a ) ; %t o l e a t o l e r a n c i a .
max1 = i n p u t d l g ( { max1 : } , T o l e r a n c i a ) ; %n
u mero maximo de i t e r a c o e s .
p0 = str2num ( p0 { 1 } ) ; %str2num c o n v e r t e uma s t r i n g em um n
u mero .
t o l = str2num ( t o l { 1 } ) ;
max1 = str2num ( max1 { 1 } ) ;
uG = matlabFunction ( sym ( g ) , vars , [ x ] , f i l e , gx ) ; %matlabFunction
%t r a n f o r m a a f u n c
a o s i m b o l i c a em f u n c a o nume rica .
30
P( 1 ) = p0 ;
f o r k=2:max1
P( k ) = f e v a l (uG, P( k 1 ) ) ;
e r r = abs (P( k ) P( k 1 ) ) ;
r e l e r r = e r r / ( abs (P( k ) ) ) ;
p = P( k ) ;
i f ( err < tol ) | ( relerr < tol )
break
end
end
i f k == max1
d i s p ( o n
u mero m
aximo de i t e r a c o e s f o i e x c e d i d o )
else
f p r i n t f ( Func
ao : )
d i s p ( g ) %f u n c
ao
f p r i n t f ( Aproximac
a o para a r a i z : )
d i s p ( p ) %p e a aproximac a o para a r a i z .
f p r i n t f ( Erro r e l a t i v o para a r a i z aproximada : )
d i s p ( r e l e r r ) %r e l e r r e a e s t i m a t i v a do e r r o r e l a t i v o para p .
f p r i n t f ( N
umero de i t e r a c o e s r e a l i z a d a s : )
d i s p ( k ) %k e o n
u mero de i t e r a c o e s .
end
3.10
M
etodo de Newton-Raphson ou M
etodo das
Tangentes
Introduc
ao
31
f o r k = 1 : max1
p1 = p0 f e v a l ( uF , p0 ) / f e v a l ( df , p0 ) ;
e r r = abs ( p1 p0 ) ;
r e l e r r=e r r / abs ( p1 ) ;
p0=p1 ;
y=f e v a l ( uF , p0 ) ;
i f e r r <d e l t a
break ;
end
end
i f k == max1
d i s p ( O n
u mero m
aximo de i t e r a c o e s f o i e x c e d i d o )
else
%S ad a s
f p r i n t f ( Func
ao : )
d i s p ( f ) %f u n c
ao
f p r i n t f ( Aproximac
a o para a r a i z : )
d i s p ( p0 ) %p0 e a aproximac a o de NewtonRapshon para a r a i z .
f p r i n t f ( Erro r e l a t i v o para a r a i z c a l c u l a d a : )
d i s p ( r e l e r r ) %r e l e r r e a e s t i m a t i v a do e r r o r e l a t i v o para p0 .
f p r i n t f ( Valor da f u n c
a o a p l i c a d o na r a i z c a l c u l a d a : )
d i s p ( y ) %y e o v a l o r da f u n c a o a p l i c a d a na r a i z c a l c u l a d a , f ( p0 ) .
f p r i n t f ( N
umero de i t e r a c o e s r e a l i z a d a s : )
d i s p ( k ) %k e o n
u mero de i t e r a c o e s .
end
O segundo utiliza como criterio de parada o erro relativo, sendo solicitado como
par
ametro de entrada uma tolerancia delta.
Arquivo: newtonerrorelativo.m
Listing 3.4: Algoritmo para o Metodo de Newton-Raphson - Erro Relativo
%U i v e r s i d a d e T e c n o l o g i c a F e d e r a l do Parana
%Campus Campo Moura o
%Programa de Apoio ao Recurso D i g i t a l
%Algoritmo para o NewthonRaphson u t i l i z a n d o como c r i t e r i o de parada o e r r o
32
%r e l a t i v o .
function [ ] = newton erro relativo ()
%Entrada
syms x %r e c e b e a f u n c
a o no formato s i m b o l i c o
f = i n p u t d l g ( { f ( x)= } , Func a o ) ; %f e a f u n c a o em formato s t r i n g f
g = i n p u t d l g ( { g ( x)= } , Derivada da Func a o ) ; %g e a d e r i v a d a da f u n c
ao
%no formato s t r i n g g .
p0 = i n p u t d l g ( { p0 : } , Valor i n i c i a l ) ; %ponto i n i c i a l da i n t e r a c a o
d e l t a = i n p u t d l g ( { d e l t a : } , T o l e r a n c i a ) ; %d e l t a e a t o l e r a n c i a
max1 = i n p u t d l g ( { max1 : } , T o l e r a n c i a ) ; %n
u mero maximo de i t e r a c o e s .
p0 = str2num ( p0 { 1 } ) ; %str2num c o n v e r t e uma s t r i n g em um n
u mero ;
d e l t a = str2num ( d e l t a { 1 } ) ;
max1 = str2num ( max1 { 1 } ) ;
uF = matlabFunction ( sym ( f ) , vars , [ x ] , f i l e , fx ) ; %matlabFunction
%t r a n f o r m a a f u n c
a o s i m b o l i c a em f u n c a o nume rica .
d f = matlabFunction ( sym ( g ) , vars , [ x ] , f i l e , gx ) ; %d e r i v a d a da f u n c
ao f
f o r k = 1 : max1
p1 = p0 f e v a l ( uF , p0 ) / f e v a l ( df , p0 ) ;
e r r = abs ( p1 p0 ) ;
r e l e r r=e r r / abs ( p1 ) ;
p0=p1 ;
y=f e v a l ( uF , p0 ) ;
i f r e l e r r <d e l t a
break ;
end
end
i f k == max1
d i s p ( O n
u mero m
aximo de i t e r a c o e s f o i e x c e d i d o )
else
%S ad a s
f p r i n t f ( Func
ao : )
d i s p ( f ) %f u n c
ao
f p r i n t f ( Aproximac
a o para a r a i z : )
d i s p ( p0 ) %p0 e a aproximac a o de NewtonRapshon para a r a i z .
f p r i n t f ( Erro r e l a t i v o para a r a i z aproximada : )
d i s p ( r e l e r r ) %r e l e r r e a e s t i m a t i v a do e r r o r e l a t i v o para p .
f p r i n t f ( Valor da f u n c
a o a p l i c a d o na r a i z aproximada : )
d i s p ( y ) %y e o v a l o r da func a o , f ( p )
f p r i n t f ( N
umero de i t e r a c o e s r e a l i z a d a s : )
d i s p ( k ) %k e o n
u mero de i t e r a c o e s .
end
Por fim, o terceiro utiliza como criterio de parada a funcao aplicada na aproximac
ao para a raz, desta forma sera solicitado como dado de entrada a tolerancia
epsilon.
Introduc
ao
33
Arquivo: newtonfuncaoaplicada.m
Listing 3.5: Algoritmo para o Metodo de Newton-Raphson - Funcao Aplicada
%U i v e r s i d a d e T e c n o l o g i c a F e d e r a l do Parana
%Campus Campo Moura o
%Programa de Apoio ao Recurso D i g i t a l
%Algoritmo para o NewthonRaphson u t i l i z a n d o como c r i t e r i o de parada a
%f u n c
a o a p l i c a d a na aproximac a o para r a i z .
function [ ] = newton funcao aplicada ()
%Entrada
syms x %r e c e b e a f u n c
a o no formato s i m b o l i c o .
f = i n p u t d l g ( { f ( x)= } , Func a o ) ; %f e a f u n c a o em formato s t r i n g f .
g = i n p u t d l g ( { g ( x)= } , Derivada da Func a o ) ; %g e a d e r i v a d a da f u n c
a o no format
p0 = i n p u t d l g ( { p0 : } , Valor i n i c i a l ) ; %ponto i n i c i a l da i n t e r a c a o .
e p s i l o n = i n p u t d l g ( { e p s i l o n : } , T o l e r a n c i a ) ; %e a t o l e r a n i a nos v a l o r e s da f u n c
a
max1 = i n p u t d l g ( { max1 : } , T o l e r a n c i a ) ; %n
u mero maximo de i t e r a c o e s .
p0 = str2num ( p0 { 1 } ) ; %str2num c o n v e r t e uma s t r i n g em um n
u mero ;
e p s i l o n = str2num ( e p s i l o n { 1 } ) ;
max1 = str2num ( max1 { 1 } ) ;
uF = matlabFunction ( sym ( f ) , vars , [ x ] , f i l e , fx ) ; %matlabFunction
%t r a n f o r m a a f u n c
a o s i m b o l i c a em f u n c a o nume rica
d f = matlabFunction ( sym ( g ) , vars , [ x ] , f i l e , gx ) ; %d e r i v a d a da f u n c
ao f
f o r k = 1 : max1
p1 = p0 f e v a l ( uF , p0 ) / f e v a l ( df , p0 ) ;
e r r = abs ( p1 p0 ) ;
r e l e r r=abs ( e r r /p1 ) ;
p0=p1 ;
y=f e v a l ( uF , p0 ) ;
i f abs ( y)< e p s i l o n
break ;
end
end
i f k == max1
d i s p ( O n
u mero m
aximo de i t e r a c o e s f o i e x c e d i d o )
else
%S ad a s
f p r i n t f ( Func
ao : )
d i s p ( f ) %f u n c
ao
f p r i n t f ( Aproximac
a o para a r a i z : )
d i s p ( p0 ) %p0 e a aproximac a o de NewtonRapshon para a r a i z .
f p r i n t f ( Erro r e l a t i v o para a r a i z c a l c u l a d a : )
d i s p ( r e l e r r ) %r e l e r r e a e s t i m a t i v a do e r r o r e l a t i v o para p
f p r i n t f ( Valor da f u n c a o a p l i c a d o na r a i z c a l c u l a d a : )
d i s p ( y ) %y e o v a l o r da func a o , f ( p0 ) .
34
f p r i n t f ( N
umero de i t e r a c o e s r e a l i z a d a s : )
d i s p ( k ) %k e o n
u mero de i t e r a c o e s .
end
3.11
M
etodo da Secante ou M
etodo de Newton
Modificado
Neste algoritmo j
a n
ao e necess
ario conhecer a derivada da funcao a qual deseja-se
encontrar a raz, porem alem do ponto inicial de iteracao (p0) e preciso inserir como
dado de entrada uma outra aproximacao para raz, no caso p1. Tambem deve-se
entrar com o valor de uma tolerancia epsilon a qual esta relacionada aos valores
da func
ao e uma outra toler
ancia delta que sera o criterio de parada, podendo-se
atribuir um mesmo valor para as tolerancias, alem do n
umero maximo de iteracoes
(max1).
Arquivo: secante.m
Listing 3.6: Algoritmo para o Metodo da Secante ou Metodo de Newton Modificado
%U i v e r s i d a d e T e c n o l o g i c a F e d e r a l do Parana
%Campus Campo Moura o
%Programa de Apoio ao Recurso D i g i t a l
%Algoritmo para o NewthonRaphson M o d i f i c a d o Metodo da S e c a n t e .
function [ ] = secante ()
%Entrada
syms x %r e c e b e a f u n c
a o no formato s i m b o l i c o .
f = i n p u t d l g ( { f ( x)= } , Func a o ) ; %f e a f u n c a o em formato s t r i n g f .
p0 = i n p u t d l g ( { p0 : } , Valor i n i c i a l 1 ) ; %aproximac a o i n i c i a l para a r a i z .
p1 = i n p u t d l g ( { p1 : } , Valor i n i c i a l 2 ) ; %aproximac a o i n i c i a l para a r a i z .
d e l t a = i n p u t d l g ( { d e l t a : } , T o l e r a n c i a ) ; %d e l t a e a t o l e r a n c i a .
max1 = i n p u t d l g ( { max1 : } , T o l e r a n c i a ) ; %n
u mero maximo de i t e r a c o e s .
p0 = str2num ( p0 { 1 } ) ; %str2num c o n v e r t e uma s t r i n g em um n
u mero .
p1 = str2num ( p1 { 1 } ) ;
d e l t a = str2num ( d e l t a { 1 } ) ;
max1 = str2num ( max1 { 1 } ) ;
uF = matlabFunction ( sym ( f ) , vars , [ x ] , f i l e , fx ) ; %matlabFunction
%t r a n f o r m a a f u n c
a o s i m b o l i c a em f u n c a o nume rica .
f o r k=1:max1
p2=p1f e v a l ( uF , p1 ) ( p1p0 ) / ( f e v a l ( uF , p1) f e v a l ( uF , p0 ) ) ;
e r r=abs ( p2 p1 ) ;
r e l e r r=e r r / ( abs ( p2 ) ) ;
p0=p1 ;
p1=p2 ;
y=f e v a l ( uF , p1 ) ;
i f relerr < delta
Introduc
ao
35
break
end
end
i f k == max1
d i s p ( O n
u mero m
aximo de i t e r a c o e s f o i e x c e d i d o )
else
%S ad a s
f p r i n t f ( Func
ao : )
d i s p ( f ) %f u n c
ao
f p r i n t f ( Aproximac
a o para a r a i z : )
d i s p ( p1 ) %p1 e a aproximac a o de NewtonRapshon para a r a i z .
f p r i n t f ( Erro r e l a t i v o para a r a i z c a l c u l a d a : )
d i s p ( r e l e r r ) %r e l e r r e a e s t i m a t i v a do e r r o r e l a t i v o para p
f p r i n t f ( Valor da f u n c a o a p l i c a d o na r a i z c a l c u l a d a : )
d i s p ( y ) %y e o v a l o r da func a o , f ( p1 ) .
f p r i n t f ( N
umero de i t e r a c o e s r e a l i z a d a s : )
d i s p ( k ) %k e o n
u mero de i t e r a c o e s .
end
3.12
M
etodo da Falsa Posic
ao
O algoritmo para este metodo tem como parametros de entrada a funcao f a qual
deseja-se determinar a raz, o intervalo [a,b] no qual esta contida a raz, a tolerancia
(epsilon) e o n
umero m
aximo de iteracoes (max1). O criterio de parada utilizado
e a func
ao aplica na aproximacao da raz, se este valor for menor que a tolerancia
adotada a aproximac
ao para a raz foi encontrada.
Arquivo: falsaposicao.m
Listing 3.7: Algoritmo para o Metodo da Falsa Posicao
%U i v e r s i d a d e T e c n o l o g i c a F e d e r a l do Parana
%Campus Campo Moura o
%Programa de Apoio ao Recurso D i g i t a l
%Algoritmo para o Metodo da F a l s a P o s i c a o .
function [ ] = falsa posicao ()
%Entradas
syms x %r e c e b e a f u n c
a o no formato s i m b o l i c o
f = i n p u t d l g ( { f ( x)= } , Func a o ) ; %f e a f u n c a o em formato s t r i n g f .
a = i n p u t d l g ( { a : } , I n t e r v a l o ) ; %a e o extremo e s q u e r d o do i n t e r v a l o .
b = i n p u t d l g ( { b : } , I n t e r v a l o ) ; %b e o extremo d i r e i t o do i n t e r v a l o .
e p s i l o n = i n p u t d l g ( { e p s i l o n : } , T o l e r a n c i a ) ; % e a t o l e r a n i a nos v a l o r e s da f u n c
max1 = i n p u t d l g ( { max1 : } , T o l e r a n c i a ) ; %n
u mero maximo de i t e r a c o e s .
a = str2num ( a { 1 } ) ; %str2num c o n v e r t e uma s t r i n g em um n
u mero .
b = str2num ( b { 1 } ) ;
e p s i l o n = str2num ( e p s i l o n { 1 } ) ;
36
%S ad a s
f p r i n t f ( Func
ao : )
d i s p ( f ) %f u n c
ao
f p r i n t f ( A aproximac
a o para a r a i z e : )
d i s p ( c ) %c e a aproximac a o a r a i z .
f p r i n t f ( Valor da f u n c a o a p l i c a d o na r a i z c a l c u l a d a : )
d i s p ( yc ) %yc e o v a l o r da f u n c a o a p l i c a d a na r a i z c a l c u l a d a , f ( p0 ) .
f p r i n t f ( N
umero de i t e r a c o e s r e a l i z a d a s : )
d i s p ( k ) %k e o n
u mero de i t e r a c o e s .
end
Introduc
ao
3.13
37
Sistema N
ao Linear
3.13.1
M
etodo de Newton
i
h
y gfy
xk+1 = xk f gJ(f,g)
i(xk ,yk )
h
gfx f gx
yk+1 = yk J(f,g)
(3.13.7)
(xk ,yk )
com J(f, g) = fx gy fy gx .
Exemplo 3.10. Determinar uma raiz do sistema n
ao linear:
2
x + y2 = 2
x2 y 2 = 1
(3.13.8)
com precis
ao de 103 , usando o metodo de Newton e considerando (x0 , y0 ) =
(1.2, 0.7).
38
Bibliografia
[1] BARROSO, L. C. C
alculo Numerico (com aplicac
oes). Sao Paulo: Harbra Editora Ltda, 1987.
[2] BURDEN, R.; FAIRES, J. An
alise Numerica. 3. ed. Sao Paulo: Pioneira Thomson Learning, 2003.
[3] CHAPRA, S. C.; CANALE, R. P. Metodos Numericos para Engenharia. Sao
Paulo: Mc Graw Hill, 2008.
[4] FRANCO, N. B. C
alculo Numerico. Sao Paulo: Pearson Prentice Hall, 2006.
[5] MATHEWS, J. H.; FINK, K. D. Numerical Methods Using MatLab. 1. ed. Borre:
Prentice Hall Upper Saddle Biver NJ 07458, 1999.
[6] RUGGIERO, M. A. G.; LOPES, V. L. R. C
alculo numerico: aspectos te
oricos e
computacionais. S
ao Paulo: Makron Books, 1997.
39