Você está na página 1de 62

Cálculo Numérico

Cálculo Numérico é uma


área da Matemática que se
ocupa com métodos do
cálculo que tem por objetivo
encontrar soluções
aproximadas de problemas.
O fato de encontrar
soluções de problemas por
métodos aproximadas, nos
leva a admitir uma margem de
erro na solução.
É salutar que para cada
problema específico se difina
precisão pretendida ou o erro
tolerado.
Exemplo 1:
Encontrar a taxa de juros
implícita nas condições de
venda a seguir:
À vista com 12% de desconto
ou em (1+11) sem acréscimo.
Supondo que a tolerância
do erro considerada no
problema anterior seja de um
erro menor que 0,1%.
Ao utilizar um método
numérico ou gráfico e descobrir
que a taxa porcentual procurada
fica no interior do intervalo
[2.4, 2.5], a solução aproximada
é qualquer número deste
intervalo, visto que, a diferança
entre qualquer número que se
utilize deste intervalo e a solução
exata, é menor que 0,1.
A equação que foi resolvida
para encontrar a taxa i do
problema que consta no
exemplo 1 é a seguinte:
Onde :Va é o valor à vista;
E é o valor da entrada;
P o valor de cada prestação;
n é o número de prestações(sem
contar a entrada) e
i é a taxa porcentual.
A solução exata não foi
calculada, e geralmente isto
não é importante, visto que,
na prática, so será utilizado
um valor aproximado deste,
mesmo sabendo qual é o
valor exato.
Veja um exemplo:
Quantos metros de
fita deverá ser comprada,
para que ser colocada na
diagonal de um quadrado,
se o lado mede 1 metro.
Solução exata:
É para resolver problemas,
como o do exemplo do cálculo
da taxa, que envolvem
equações para as quais não
há métodos algébricos, é que
se utiliza os
métodos numéricos
ou
Cálculo Numérico
Pode-se também optar pelo
método da tentativa e erro.
No caso do problema da taxa
de juros, isto é muito simples se
utilizamos o excel. Basta chutar as
taxas até que o saldo devedor da
ultima linha da planilha de
amortização fique igual a zero, ou
tão próximo, quanto se queira.
AS ETAPAS
a) Passar todos os termos da equação
para o lado esquerdo da equação, ficando
assim o lado direito com zero.
b) Procurar a raíz da função com lei igual a
equação formada.
c) Utilizando o método gráfico ou fazendo
uma tabela da função para isolar as raízes
que interessam.
d) Fazer o refinamento das raízes
utilizando um método de refinamento.
Métodos para refinamento que
serão estudados
a)Bisseção
b)Cordas
c)Newton
Outro exemplo de problema em que a
fórmula anterior se aplica:
Encontrar a taxa mensal de juros
compostos, nas vendas a prazo, que
aparecem de forma inplícita nas
condições de venda de uma loja.

a) À vista com 10% de desconto


ou
b) em 5 vezes (1+4) sem acréscimo.
 Para dada 100 de preço de tabela,
 O valor `a vista é 100(1-10/100)= 90;
 Va=90
 Se for à prazo a entrada e cada parcela
valem 100/5=20
 P=20 e E=20 n=4 i=?
Pode-se agora obter o
gráfico da função e verificar
em que intervalo do eixo
com coordenada i, o gráfico
corta este eixo.
Graphmática
Observando-se o último gráfico,
pode-se afirmar que a taxa
procurada fica no interior do
intervalo [5.4 , 5.6]

Utilizando estes dados para


conferir a planilha de
amortização temos:
Pode-se fazer uma tabela com
pares ordenados (i, f(i)) e encontrar
os intervalor onde há uma raíz,
verificando entre que valores de i, a
função f(i) troca de sinal, ou seja
em que intervalo de i , o gráfico da
função passa para de um lado do
eixo “x” para o outro lado deste
eixo.
Observando-se as tabelas
anteriores, percebe-se qua a taxa
procurada está no interior do
intervalo
[5.56 , 5.57]
a)Método das tabelas
Pode-se implementar o método do cálculo de
valores dda tabela x e f(x) verificando em qual
intervalo [a,b] produto f(a)f(b)<0, pois isto só
ocorre quando f(a) e f(b) tem sinais diferentes e
isto implica que existe pelo menos uma raíz
neste intervalo.
Calcula-se então valores de x e f(x) deste novo
intervalo, com incremento menor que o anterior,
e procura-se novo internalo onde há uma raíz.
Segue-se neste processo até que o incremento
do x esteja menor que o erro tolerado.
Continua-se então a procurar as demais raízes,
se isto fizer sentido.
Algoritmo para uma tabela
 tabela1 := proc (li, inc, n)
 global f;
 local x1, x2, i;
 for i to n do
 x1 := li+(i-1)*inc;
 x2 := x1+inc;
 print(x1,f(x1));
 if f(x1)*f(x2) <= 0 then
 print(`a=`,x1,` f(a)=`,f(x1));
 print(`b=`,x2,` f(b)`,f(x2)) ;
 fi ;
 od ;
 end:
Saída de ( x, f(x) ) para
li=0; inc=1 e n=10 > tabela1(0,1,10);
 0, -19.72
 1, -16.32
 2, -10.92
 3, -3.52
 a= 3, f(a)= -3.52
 b=, 4 f(b) 5.88
 4, 5.88
 5, 17.28
 6, 30.68
 7, 46.08
 8, 63.48
 9, 82.88
O próximo procedimento do
Maple que encontra raízes
pelo método baseado em
tabelas, serve como algoritmo
para fazer procedimentos de
linguagens de programação
tal como Pascal.
 raizes := proc (li, ls, erro)
 local cx, n, i, k, k0, x, inf; global f;
 if ls < li then do
 cx := li; li := ls; ls := cx ;
 od; fi;
 inf:=10^(-7); x := li+inf; n := abs(li-ls); k0 := 0; k := k0;
 while x < ls do
 for i to 10*n do
 if f(x)*f(x+10^k) < 0 then
 k := k-1; i := 1
 fi;
 x := x+10^k;
 if abs (f(x)) < erro then do
 print(`x=`,evalf(x),`f(x)=`,f(x));
 i := 1; k := k0; break;
 od; fi ;
 od;
 od;
 end:
Método da Bisseção
Seja f(x) uma função real contínua, no intervalo
[a, b], tal que f(a). f(b)<0 e  a tolerância
considerada.
O método de bisseção consiste em dividir o
intervalo [a, b] ao meio, obtendo dois subintervalos [a,
xo] e [xo,b] a serem considerados. Se o critério para
avaliação da tolerância for satisfeito, por exemplo, se
| f(xn)|< então xn é a raiz procurada, senão

escolhe-se um dos subintervalos para repetir o
procedimento.
Para efetuar a escolha, verifica-se em qual dos
intervalos [a, xo] ou [xo, b] a função tem sinais
contrários nos extremos ou seja , verifica-se se f(a).
f(x0)<0 ou se f(b). f(x0)<0.
Deve-se proceder desta forma para a escolha dos
Algoritmo para o método das Bisseções
bissecao := proc (erro, a, b)
 local a1, b1, xo, i ;
 global f;
 xo := a; a1 := a; b1 := b; i := 0;
 while erro < abs(f(xo)) do
 i := i+1;
 xo := (a1+b1)/2;
 if f(a1)*f(xo) < 0 then
 b1 := xo
 else
 a1 := xo ;
 fi ;
 od;
 print( ` raíz procurada é `,xo,` sendo que o erro é `,f(xo),`
 número de iterações`, i );
end:
Método das Cordas
 Seja f(x) uma função real contínua, no
intervalo [a, b], que contém somente um ponto r
tal que f(r) =0 e seja  a tolerância considerada.
 O método das cordas consiste em encontrar
subintervalos sucessivos de [a, b], obtidos pela
interseção do eixo x e a reta que passa pelos
pontos ( ai , f(ai) ) e ( bi , f(bi) ), onde ai e bi
são os extremos dos subintervalos que satisfazes a
condição f(ai).f(bi)<0, até encontrar um extremo
que satisfaça a tolerância  considerada.
Fórmulas do Método das Cordas
Implementaçãodo do método de cordas
 cordas := proc (erro, a, b)
 local p, x, df2, c, xo, xn, i, y1, y2;
 global f;
 xn := a; i := 0; df2 := D(D(p));
 xo := a-p(a)/(p(a)-p(b))*(a-b);
 if 0 < p(xn)*df2(xn) then c := a
 else c := b;
 fi;
 while erro < abs(p(xn)) do
 i := i+1; xn := xo-p(xo)/(p(xo)-p(c))*(xo-c);
 xo := xn;
 od;
 print(` a raíz procurada é `,xn,` o erro é `,abs(p(xn)),` o
número de iterações foi `,i);
 end:
Método de Newton
 Seja f(x) uma função real contínua, com as derivadas
f’(x) e f’’(x) também contínuas no intervalo [a, b], que
tenha somente um ponto r de [a, b], tal que f(r) = 0 e
seja  a tolerância considerada.
 O método de Newton consiste em encontrar uma
seqüencia de números de [a, b], obtidos pela interseção
da reta tangente ao gráfico de f(x) em um dos extremos
do intervalo ou subintervalos, com o eixo x.
 Se f(a). f”(a) >0 então inicia-se a iteração fazendo xo=a,
caso contrário inicia-se com xo = b.
 Faz-se tantas iterações até que o erro definido seja
menor ou igual a .

Os gráficos a seguir mostram a
interpretação geométrica do método
de Newton. A função utilizada para
fazer os gráficos é a seguinte:
A seqüência de iterações do método
de Newton é a seguinte:
 Após encontrar um intervalo [a,b] tal que a função seja
somente crescente ou somente decrescente, escolhe-se xo
entre {a ,b} de modo que f(xo) f”(xo)>0
Implementação do método de Newton
com o Maple
 newton := proc (erro, a, b)
 local f, x, df2, df1, p1, p2, xn, i, c;
 f := x-> evalf(x^3-1+x^2-2*x) ;
 df1 := D(f); df2 := D(D(f)); xn := a; i := 0;
 if 0 < f(xn)*df2(xn) then xn := a ;
 else xn := b ;
 fi;
 c := xn;
 while erro < abs(f(xn)) do
 xn := xn-f(xn)/df1(xn); i := i+1
 od;
 print(x,i,`=`,xn,` f(xn)=`,f(xn)); print(`número de iteraçãos :`,i)
 end:
Exercícios resolvidos
Método de Bissação
f(i)=78 - 10[1-(1+i) ]/i
-9

i f( i) i f( i)
1E-10 -12 0,02 -3,622
0,01 -7,66 0,025 -1,709
0,02 -3,622 0,03 0,1389 i f( i)
0,03 0,1389 0,0275 -0,777
0,04 3,6467 i f( i) 0,0288 -0,317
0,05 6,9218 0,025 -1,709 0,03 0,1389
0,06 9,9831 0,0275 -0,777
0,07 12,848 0,03 0,1389 i f( i)
0,08 15,531 0,0288 -0,317
0,09 18,048 0,0294 -0,089 erro<0,1
0,1 20,41 0,03 0,1389

Raíz procurada: i= 0,029 ou 2,9%


f(i)= 4600 -100[(1+i)36-1]/i
di i f(i) i1 f(i)
1E-09 1E-09 1000 0,01000 292,31216
0,01 0,01 292,31 0,01500 -127,59692
0,01 0,02 -599,4 0,02000 -599,43672
0,01 0,03 -1728
0,01 0,04 -3160 i2 f(i)
0,01 0,05 -4984 0,01000 292,31216
0,01 0,06 -7312 0,01250 88,44945
0,01 0,07 -10291 0,01500 -127,59692
0,01 0,08 -14110
0,01 0,09 -19012 i3 f( i)
0,01 0,1 -25313 0,01250 88,44945
0,01375 -18,00283
0,01500 -127,59692
i4 f(i) i10 f(i)
0,01250 88,449 i7 f(i) 0,01353 0,649
0,01318 31,350 0,01351 2,462 0,01354 -0,258
0,01385 -26,653 0,01360 -4,796 0,01355 -1,165
0,01368 -12,067
i5 f( i) i11 f(i)
0,01318 31,350 i8 f(i) 0,01353 0,649
0,01351 2,462 0,01351 2,462 0,01354 0,195
0,01385 -26,653 0,01355 -1,165 0,01354 -0,258
0,01360 -4,796
i6 f( i) i12 f( i)
0,01351 2,462 i9 f( i) 0,01354 0,195
0,01368 -12,067 0,01351 2,462 0,01354 -0,031
0,01385 -26,653 0,01353 0,649 0,01354 -0,258
0,01355 -1,165
i= 0,01354 ou 1,354%
dx x f(x ) x1 f(x)
1E-10 -1 3,0 -0,303
1 1 -0,69315 3,5 -0,084
1 2 -0,60944 4,0 0,1668
1 3 -0,30259
1 4 0,16679 x2 f(x)
1 5 0,7419 3,50 -0,084
1 6 1,38908 3,75 0,0378
1 7 2,08798 4,00 0,1668
1 8 2,82561
1 9 3,59328 x3 f(x)
1 10 4,38488 3,500 -0,084
3,625 -0,024
3,750 0,0378
X=
x4 f(x)
3,6250 -0,024
|x4-x3|= 0,0625 <0,1 3,6875 0,0066
3,7500 0,0378
dx x f(x ) x1 f(x)
1E-10 1 1,000 0,282
1 -5 -3,007 1,500 -0,982
1 -4 -2,018 2,000 -3,389
1 -3 -1,05
1 -2 -0,135 x2 f(x)
1 -1 0,6321 1,000 0,282
1 0 1 1,250 -0,240
1 1 0,2817 1,500 -0,982
1 2 -3,389
1 3 -15,09 x3 f(x)
1 4 -48,6 1,000 0,282
1,125 0,045 <0,1
1,250 -0,240
|x4-x3|= 0,063 <0,1
x4 f(x)
1,125 0,045
1,188 -0,091
1,250 -0,240

Você também pode gostar