You are on page 1of 8

1

Clculo Numrico

3. Zeros Reais de Funes

Achar os zeros de uma funo achar os valores de x que satisfazem a equao (x) = u. Em
algumas funes o valor de x que satisfaz esta equao pode ser complexos. Neste estudo estaremos
interessados apenas em achar valores reais que satisfazem a equao.
Considerando o grfico cartesiano de uma funo, os zeros reais so os pontos das abscissas
em que o grfico toca o eixo 0x.
Procuram-se mtodos numricos para avaliar os zeros de uma funo nos casos em que a
soluo analtica muito difcil ou impossvel. Estes mtodos produzem apenas um valor aproximado
para esses zeros. A ideia destes mtodos (1) partir de uma aproximao inicial para a raiz e (2) em
seguida refinar essa aproximao atravs de um Processo Iterativo.

3.1 Fase I: Isolamento de Razes

O seguinte teorema ajuda no planejamento de um mtodo de localizar razes:
Teorema: Seja (x) uma funo contnua num intervalo |o, b]. Se (o)(b) < u ento existe pelo
menos um ponto x = p, entre o e b que raiz de (x). Procure se convencer por esquemas grficos
da veracidade deste teorema.

1. Como poderia usar este teorema para localizar razes de uma funo? Descreva o processo.
2. O que pode acontecer se a variao dos valores da funo for muito rpida em relao a pequenas
variaes de x?
3. Que outra condio deve ser acrescentada ao teorema para garantir que num dado intervalo h
apenas uma raiz?
4. O que acontece com os casos em que o grfico de (x) toca o eixo 0x por tangenciamento?

Pode-se utilizar os recursos de uma planilha de clculo para visualizar graficamente os zeros
de uma funo razoavelmente bem comportada.

A B C
1 Grfico de funo
2 Fator = 0,1
3 Const. = 0,5
4 N x f(x)
5 -10 -0,5 -0,9093
6 -9 -0,4 -0,99957
7 -8 -0,3 -0,93204
8 -7 -0,2 -0,71736
9 -6 -0,1 -0,38942
10 -5 0 0
11 -4 0,1 0,389418
12 -3 0,2 0,717356
13 -2 0,3 0,932039
14 -1 0,4 0,999574
15 0 0,5 0,909297
16 1 0,6 0,675463
17 2 0,7 0,334988
18 3 0,8 -0,05837
19 4 0,9 -0,44252
20 5 1 -0,7568
21 6 1,1 -0,9516
22 7 1,2 -0,99616
23 8 1,3 -0,88345
24 9 1,4 -0,63127
25 10 1,5 -0,27942

Para fazer um grfico como o exemplo acima, usando o Excel, proceda como segue.
1. Preencha uma coluna (neste exemplo a coluna A), com nmeros inteiros (neste exemplo, de 10
at 10)
f(x) = sen(4x)
-1,5
-1
-0,5
0
0,5
1
1,5
-1 -0,5 0 0,5 1 1,5 2
x
y

2

2. Defina um fator (neste exemplo 0,1 em B2). Este fator ser usado para multiplicar os nmeros
inteiros da coluna A.
3. Defina uma constante (neste exemplo 0,5 em B3). Esta constante ser usada para somar aos
nmeros inteiros da coluna A.
4. Faa na coluna B a frmula que transforma os nmeros inteiros da coluna A em valores de x em
que vo ser calculados os valores da funo (neste exemplo fizemos em B5 -> = A5*$B$2 + $B$3
e depois copiamos B5 para as outras clulas da coluna B). Ao variar os valores em B2 e B3 pode-
se variar o intervalo e o passo entre os valores de x para os quais a funo ser calculada.
5. Faa na coluna B a frmula da funo, em funo dos valores de x na coluna B. (neste exemplo
fizemos em C5 -> = sen(4*B5). Portanto a funo ser f(x) = sen(4x) )
6. Com o assistente de grfico, faa o grfico usando os valores da coluna B e C. O tipo de grfico
o de disperso.
Para aumentar o nmero de pontos colocados no grfico, os nmeros inteiros da coluna A podem ir de
100 at +100, por exemplo.

A anlise grfica da funo (x) ou da equao (x) = u, fundamental para se obter
boas aproximaes para a raiz.
Para isto, pode-se utilizar um dos seguintes processos:
I) esboar o grfico da funo (x) e localizar as abscissas dos pontos onde a curva intercepta o
eixo 0x.
II) a partir da equao (x) = u, obter a equao equivalente g(x) = (x), esboar os
grficos das funes g(x) e (x) no mesmo eixo cartesiano e localizar os pontos x onde as
duas curvas se interceptam, pois neste caso (p) = u g(p) = (p).

O esboo do grfico de uma funo implica um estudo detalhado do comportamento desta
funo, que envolve basicamente os itens: domnio da funo, pontos de descontinuidade,
intervalos de crescimento e decrescimento, pontos de mximo e mnimo, concavidade, pontos
de inflexo e assntotas ao grfico da funo. Um estudo de funes assim pode ser
encontrado, por exemplo, em: Clculo Diferencial e Integral de N. Piskounov, Ed. Mir de
Moscou.

Exerccios
III) Localize graficamente as razes das equaes:
a) 4. cos x e
2x
= 0
b) x/2 tg x = 0
c) 1 x ln x

= 0
d) 2
x
3x = 0
e) x
3
+ 2x
2
- 6x 8 = 0

3.2 Fase II: Refinamento

Em geral os mtodos de refinamento so iterativos. Um mtodo iterativo consiste numa
seqncia de instrues que so executadas com repetio de um ciclo. A execuo de um ciclo recebe
o nome de iterao. Cada iterao utiliza resultados das iteraes anteriores. Cada iterao tambm
efetua testes para verificar se j se atingiu um resultado suficientemente prximo do resultado
esperado.

Esquematicamente:

Dados iniciais
Clculos iniciais
Contador de iteraes k colocado em 1
Incio do ciclo
Calcular nova aproximao x
k

Teste Essa aproximao suficiente?
Em caso afirmativo sair do ciclo
Clculos intermedirios
3

Contador de iteraes k incrementado de 1
Fim do ciclo
Clculos finais
Fim

Critrios de Parada

Todo mtodo iterativo precisa efetuar o teste: Essa aproximao suficiente? Ou x
k

suficientemente prximo da raiz exata?
Duas interpretaes desta pergunta podem levar a resultados diferentes:
(x) raiz aproximada com preciso e se:
I) |(x) p| < e ou se
II) |(x)| < e
Como no se conhece p, o teste (I) pode ser trocado pela busca de um intervalo [a, b] tal que:
p |o, b] e b o < e

Procure visualizar graficamente que tipo de teste melhor para uma funo em que sua derivada
(inclinao) pequena (menor que 1) prximo da raiz e para uma funo em que sua derivada
(inclinao) grande (maior que 1) prximo da raiz.

Alm do teste de parada, um programa de computador deve ter estipulado um nmero mximo de
iteraes para evitar que o programa entre num ciclo sem fim (looping) devido a problemas no mtodo
ou erros no programa.

Mtodo de Bisseco

Neste mtodo adequado se tivermos uma funo contnua num intervalo [a, b] com uma
nica raiz neste intervalo. Em cada iterao divide-se o intervalo ao meio e verifica-se em qual metade
se encontra a raiz. Um algoritmo para o mtodo pode ser:

1) Dados iniciais:
a) intervalo [a, b]
b) preciso
2) k 1
3) enquanto b a
a) M f(a)
b) x (a+b)/2
c) Se M*f(x) > 0
i) ento a x
ii) seno b x
d) k k + 1
4) raiz (a+b)/2

Exerccio
2. O mtodo converge para a raiz com a preciso estipulada e aps k iteraes. A cada iterao o
intervalo dividido por 2. Assim para temos
b-u
2
k
< e. Resolva a inequao para k no caso em que
b- o = 1 e = 10
-9
. (log 2 = 0,3010)

Uma sugesto de programa completo em Pascal segue nas prximas linhas.

program raiz_por_bisseccao;

uses
crt; {instruo valida em Turbo Pascal 4.0 em diante}

var
teste, x, eps, inicio, fim, passo :real;

function f (x : real) : real;

4

begin

{esta rotina deve ser modificada para cada funcao especifica}

f := x*x - 2;
end;

procedure acharaiz(a, b, eps : real);

var
k : integer;
M, x, raiz : real;
c : char;

begin
k := 1;

writeln('Iteracao x f(x) b-a');

while (b-a) >= eps do
begin
M := f(a);
x := (a+b)/2;

if M*f(x) > 0
then
a := x
else
b := x;

writeln(k:7, ' ', x:15, ' ',f(x):15, ' ', b-a:15);

k := k + 1;
end;

raiz := (a+b)/2;
writeln;
writeln('Raiz = ', raiz);
write('Qualquer tecla para continuar');
c := readkey; {para o processamento ate que uma tecla seja pressionada}
writeln;
end;

begin
writeln('Resolucao de equacao pelo metodo da bisseccao');
writeln;
write('Entre o intervalo de busca da raiz ->');
readln(inicio, fim);
write('Entre o passo de busca ->');
readln(passo);
write('Entre a precisao desejada ->');
readln(eps);
x := inicio; {busca raiz no intervalo}
while x < fim do {repeticao para localizar uma raiz}
begin
teste := f(x)*f(x+passo);
if teste <= 0
then
acharaiz(x, x+passo, eps);
x := x + passo;
end;
end.

Exerccios
3. Use o mtodo de bisseco para achar:
a. a raiz da equao 1 x lnx com |(x) p| < 1u
-3

b. a raiz quadrada de 2 com 3 casas aps a vrgula
Use b o = 1, com o inteiro como ponto de partida.
4. Use a relao
b-u
2
k
< e. para estimar o nmero de iteraes para se chegar resposta no exerccio
anterior. O resultado confere? (log 2 = 0,3010)



5

Mtodo da Secante

Para obter um mtodo mais rpido pense na seguinte possibilidade. Se o grfico da funo no muito
irregular num intervalo (o, b) que contm uma raiz p ento a linha reta que liga (o, (o)) ao ponto
(b, (b)), deve passar perto da raiz. Fazendo x
o
= o e x
1
= b calcular x
2
como ponto de interseo da
reta que passa por (o, (o)) e (b, (b)) com o eixo x. (Desenhe a situao e use as propriedades de
semelhana de tringulos para obter x
2
. (Resposta esperada: x
2
=
x
c
](x
1
)-x
1
](x
c
)
](x
1
)-](x
c
)
)
Monte um algoritmo que repita o processo:
A partir de (x
o
, (x
o
)) e (x
1
, (x
1
)), calcula x
2
pela relao acima.
Faz x
o
- x
1
e x
1
- x
2

At |x
1
x
o
| < prcciso cspcciicoJo.

Exerccio
5. Use o mtodo da secante para achar:
a. a raiz da equao 1 x lnx com |(x) p| < 1u
-6

b. a raiz quadrada de 2 com 6 casas aps a vrgula

Mtodo Iterativo Linear (MIL) ou do Ponto Fixo (MPF)

Seja (x) uma funo contnua em |o, b], intervalo que contm uma raiz da equao (x) = u.
O MIL consiste em transformar esta equao em uma equao equivalente x = (x) e a partir de uma
aproximao inicial x
o
gerar a sequncia {x
k
] de aproximaes para p pela relao x
k+1
= (x
k
) ,
pois a funo (x) tal que (p) = u se e somente se p = (p). Uma funo que satisfaz a condio
acima chamada de funo de iterao para a equao (x) = u.

Exemplo
Para a equao x
2
x 6 = u, podemos ter vrias funes de iterao:
a)
1
(x) = x
2
6;
b)
2
(x) = _Vx +6;
c)
3
(x) = 1 +
6
x
;
d)
4
(x) =
6
x-1
;

Dada uma equao (x) = u existem infinitas funes (x) que so funes de iterao. A forma
geral destas funes (x) (x) = x + A(x)(x), com a condio que em p, ponto fixo de (x), se
tenha A(p) = u.

Pode-se mostrar ento que (p) = u (p) = p

Graficamente uma raiz da equao (x) = u a abscissa do ponto de interseo da reta y = x e da
curva y = (x).

Pode-se observar que para algumas funes (x), o processo pode gerar uma sequncia que diverge de
p.

Exerccio
6. Use as duas primeiras funes de iterao do exemplo anterior para verificar a convergncia delas
para uma das razes da equao x
2
x 6 = u.
a)
1
(x) = x
2
6
b)
2
(x) = _Vx +6;

Teorema Condies suficientes para que o processo MIL seja convergente.
Seja p uma raiz da equao (x) = u, isolada num intervalo I e centrado em p. Seja (x) uma
funo de iterao para a equao (x) = u.
Se,
6

i) (x) e '(x)so contnuas em I
ii) |x| H < 1, v x I e
iii) x
o
I,

ento a sequncia {x
k
] gerada pelo processo iterativo x
k+1
= (x
k
) converge para p.

Exerccio de aplicao do teorema anterior
7. Ainda considerando a equao x
2
x 6 = u e as funes de iterao
1
(x) = x
2
6
e
2
(x) = Vx +6, obtenha as derivadas de
1
(x) e
2
(x) e verifique para que valores de x
|
1
i
(x)| < 1 e |
2
i
(x)| < 1. Estes valores incluem as razes da funo? Confira este resultado com o
resultado da questo 7.
Verifique agora se a funo de iterao
3
(x) = 1 +
6
x
deve ser convergente.

Critrios de Parada

No MIL, escolhe-se x
k
como raiz aproximada de p, se, |x
k
x
k-1
| = |(x
k-1
) x
k-1
| < e ou se
|(x
k
)| < e.

O algoritmo para obteno de uma raiz pelo MIL seria:

1) Dados iniciais:
a) aproximao inicial xo
b) preciso
2) Se |f(xo) <
a) ento
i) raiz = xo
b) seno
i) k 1
ii) repita
(1) x1 ( xo)
(2) teste (|f(x1) < ) ou (|x1 xo| < ) {teste uma varivel lgica}
(3) Se teste
(a) ento
(i) raiz x1
(b) seno
(i) k k + 1
(ii) xo x1
iii) at teste {repete at teste ser verdadeiro}

Um programa em Pascal que realize este algoritmo pode ser:

program metodo_iterativo_linear_MIL;

uses crt; {peculiaridade do Turbo Pascal}

var
inicio, fim, passo, eps, x, teste, x0 : real;

function f (x : real) : real;

begin

{esta rotina deve ser modificada para cada funcao especifica}

f := x*x - x - 6;
end;

function phi(x : real) : real;

begin
phi := sqrt(x - 6);
end;

procedure acharaiz(x0, eps : real);

var
7

k : integer;
x1, raiz : real;
teste : boolean;
c : char;

begin
writeln('Iteracao x f(x)');
if abs(f(x0)) < eps
then
raiz := x0
else
begin
k := 1;
repeat
x1 := phi(x0);
teste := (abs(f(x1)) < eps) or (abs(x1 - x0) < eps);
if teste
then
begin
raiz := x1;
writeln(k:7, ' ', x1, ' ', f(x1));
end
else
begin
writeln(k:7, ' ', x1, ' ', f(x1));
k := k + 1;
x0 := x1;
end;
until teste;
end;
writeln('Raiz = ', raiz);
write('Qualquer tecla para continuar');
c := readkey;
writeln;
end;

begin
writeln('Resolucao de equacao pelo metodo iterativo linear');
writeln;
write('Entre o intervalo de busca da raiz ->');
readln(inicio, fim);
write('Entre o passo de busca ->');
readln(passo);
write('Entre a precisao desejada ->');
readln(eps);
x := inicio; {busca raiz no intervalo}
while x < fim do
begin
teste := f(x)*f(x+passo);
if teste <= 0
then
acharaiz(x, eps);
x := x + passo;
end;

end.

Mtodo de Newton-Raphson

O mtodo de Newton-Raphson um MIL que procura acelerar a convergncia escolhendo uma funo
de iterao que tenha inclinao nula prximo da raiz da funo. (
i
(p) = u)
Pode-se obter esta funo de iterao a partir da forma geral (x) = x +A(x)(x).
Obtm-se
i
(x) = 1 + A
i
(x)(x) + A(x)'(x)
para x = p temos:
i
(p) = 1 +A
i
(p)(p) + A(p)
i
(p) = 1 + A(p)
i
(p)
fazendo
i
(p) = u obtemos: A(p) =
1
]i(p)
. Portanto A(x) =
1
]i(x)
.
Ento (x) = x
](x)
]i(x)

Pode-se verificar que na sequncia x
k+1
= x
k

](x)
]i(x)
, x
k+1
a abscissa do ponto de interseo entre
o eixo 0x e a reta tangente curva (x) em (x
k
, (x
k
)).

8

Exerccio
8. Usando o mtodo de Newton-Raphson, crie um algoritmo prtico para o clculo da raiz quadrada de
um nmero qualquer.
9. Exemplifique seu algoritmo, calculando a raiz quadrada de 2 e 3 com 4 casas decimais.

Mtodo da Secante Revisitado

Para no ser necessrio calcular a derivada da funo cujas razes devem ser achadas, podera-se partir
de dois pontos (x
o
e x
1
) prximos a uma raiz. A derivada da funo na funo de iterao ento
substituda pela aproximao dada por: '(x
k
) =
](x
1
)-](x
c
)
x
1
-x
c
. Assim a funo de iterao fica:

(x
o
, x
1
) = x
2
= x
1

(x
1
)
(x
1
) (x
o
)
x
1
x
0


Mostre que a expresso equivalente usada no mtodo da secante.