Você está na página 1de 26

UNIVERSIDADE FEDERAL DE PELOTAS

DISCIPLINA DE CLCULO NUMRICO

REA 1
Noes Bsicas sobre Erros
Zeros Reais de Funes Reais
Resoluo de Sistemas Lineares

Rogrio Almeida Gouva

Pelotas, RS, Brasil


2015

1. INTRODUO
O Clculo Numrico tem por objetivo estudar algoritmos numricos para
resoluo de problemas que podem ser representados por um modelo matemtico.
Um algoritmo eficiente apresenta solues dentro de uma preciso desejada com
um custo computacional (tempo de execuo + memria) baixo.
As aproximaes obtidas para o que seriam as solues exatas do problema
apresentam sempre erros decorrentes da discretizao do problema, ou seja, passar
do modelo matemtico para o numrico, pela forma como as mquinas representam
os nmeros. importante que esses erros sejam sempre estimados e controlados
ao executar um algoritmo numrico para que as solues possam ser significativas
para o problema em questo.
Nesse relatrio sero apresentados os contedos aprendidos na sala de aula
de maneira simplificada e ilustrados com exemplos computacionais visando
relacionar a teoria do clculo numrico com problemas prticos.
Inicialmente ser repassadas noes bsicas sobre erros em calculos
numricos, sua significncia e exemplos prticos. Em seguida sero abordados os
mtodos de resoluo das razes de funes reais considerando as condies
iniciais mais apropriadas para cada exemplo e realizando um sumrio na
comparao dos diferentes mtodos. Finalmente, sero abordados os mtodos
diretos e iterativos de resoluo de sistemas lineares e comparaes quanto a
aptido de cada mtodo.
2. PACOTE DE SOFTWARE
Todos clculos apresentados nesse relatrio sero resolvidos com auxlio do
pacote cientfico para clculo numrico GNU OCTAVE, o qual distribudo
gratuitamente sob a licena General Public License e em maior parte compatvel
com o conhecido pacote pago MATLAB. O OCTAVE considerado a melhor
alternativa ao MATLAB e apresenta vantagens de leveza, menor tamanho em
disco e rodar em plataforma Linux.

3. NOES BSICAS SOBRE ERROS


3.1 Representao dos nmeros a representao de um nmero
depende da base escolhida ou disponvel na mquina em uso e do nmero mximo
de dgitos usado em sua representao.
Dessa maneira podemos obter resultados diferentes para um mesmo clculo,
dependendo do nmero de dgitos significativos, o caso da rea de uma
circunferencia de raio 100m:

Na calculadora o resultado ser: 31415.92654 m


J no Octave:
>>> format long; pi*100^2
ans = 31415.9265358979

Ou ainda:
>>> output_precision(30); pi*100^2
ans = 3.14159265358979318989440798759e+04

Tambm deve-se ter ateno a maneira como a mquina lida com os


nmeros pois o computador calcula usando os nmeros em binrio, isso pode levar
a erros de clculo. Por exemplo, ao realizar seguinte clculo no Octave
>>> 1-0.2-0.2-0.2-0.2-0.2
ans = 5.5511e-17

Esse erro se deve a 0.2 ser uma dzima perodica em binrio levando a erros
de preciso que dependem da eficincia da mquina.
Para saber qual a representao binria de um nmero decimal podemos
usar a funo dec2bin() do Octave:
>>> dec2bin(11)
ans = 1011

3.2 Erros os erros so entidades permanentes ao se realizar um clculo


numrico, uma vez que so tomadas aproximaes para traduzir um modelo
matemtico em numrico.
Definimos erro absoluto a diferena entre o valor exato de um nmero x de
seu valor aproximado x. Por exemplo, seja a raiz da funo f(x)=x-1, encontramos
por aproximao de um mtodo numrico x = 1.0012. Mas sabemos por aritmtica

que a raiz x=1 . Portanto h um erro absoluto:


EA = x x = -0.0012
Para comparar grandezas quanto a preciso mais conveniente utilizar a
definio de erro relativo dado pela diviso de erro absoluto pelo valor aproximado.
ER x =

EA x
x

Por exemplo, um erro de 0.1 em um x na ordem de 2000 no equivalente ao


erro de 0.1 em um y na ordem de 3.
3.3 Arredondamento e truncamento em um sistema de ponto flutuante
qualquer

nmero

pode

ser

representado como
Como a segunda parte no pode ser incorporada a mantissa necessrio
decidir como operar a mantissa definindo o erro absoluto. Existem algumas opes
que sero ilustradas no Octave:
* Truncamento: permanece apenas a mantissa;
>>> fix ([-2.7, 2.7]) -2

* Arredondamento assimtrico: para maior ou para menor.


>>> ceil ([-2.7, 2.7]) -2

>>> floor ([-2.7, 2.7]) -3

* Arredondamento simtrico: mais usual, arredonda a mantissa para o numero mais


prximo.
>>> round ([-2.7, 2.7]) -3

3.4 Anlise de erros nas operaes aritmticas o erro em uma operao,


geralmente causado pelo arredondamento, se propaga com as operaes
subsequentes. Levando isso em conta importante escolher os nmeros de dgitos
significativos de forma que os erros de arredondamento que se acumulam a cada
operao no se tornem importantes no resultado final.
Essas escolhas devem ser estudas com ateno observando se o modelo
numrico apresenta um numero muito grande de operaes e se pode haver
cancelamento subtrativo (dois numeros de magnitude similar subtrados gerando
erro relativo grande). O usurio deve ento escolher um nmero de digitos
significativos que elimine risco de propagao de erros sem exceder no custo
computacional.

4. ZEROS REAIS DE FUNES REAIS


Um nmero real zero de uma funo f(x) ou raz da equao f(x)=0 se
f()=0. Esses zeros so portanto os valores onde o grfico de f(x) corta o eixo das
abscissas.

Em equaes polinomiais at o segundo grau existem frmulas explcitas para


as razes em funo dos coeficientes, entretanto para maioria das funes
praticamente impossvel encontrar exatamente seus zeros. Para essas funes
devemos utilizar mtodos numricos para sua resoluo que no fornecem os zeros
exatos mas com excelentes aproximaes limitadas apenas pela preciso de
mquina.
Os mtodos de resoluo se dividem em duas fases:
FASE 1 isolamento de razes, obteno de um intervalo menor possvel que
contm a raz a real. Um intervalo para cada zero da funo, sem sobreposio.
FASE 2 refinamento, uma vez escolhidas as aproximaes iniciais do intervalo
melhorar sucessivamente at que a aproximao da raz esteja dentro da preciso
prefixada.
4.1 Isolamento de Razes o principal teorema para definir o intervalo que contm
uma raz :
Seja f(x) contnua em [a,b], e f(a)f(b) < 0 (isto , ela troca de sinal), ento
existe pelo menos um zero nesse intervalo.

A interpretao grfica simples:

O teorema auxiliar para isolar a raiz seria:


Se f'(x) existir e preservar sinal em [a,b], ento existe apenas um zero real de
f(x) nesse intervalo.

Conhecendo esses teoremas podemos estimar um intervalo para as razes


esboando o grfico da funo e calculando alguns de seus valores. Na prtica
sempre mais conveniente plotar o grfico em software e usar o conhecimento prvio
da algbra da funo, por exemplo, grau, periodicidade, simetria, etc.
4.2 Refinamento o refinamento se d sempre atravs de mtodos iterativos e
eles se diferenciam por seus algoritmos.

O mtodo iterativo funciona em ciclos sendo que cada ciclo denominados


iteraes partindo de informaes do ciclo anterior. Ao atingir um resultado proximo
suficiente do resultado esperado o clculo pra. Em um diagrama de fluxo, os
mtodos de refinamento ficam assim:

O critrio de parada x ser raiz aproximada com preciso :


(I) |x |<
(II)

ou

|f ( x )|<
No conhecemos para o teste (I), entretanto equivale a relao b-a <

onde (a,b) o intervalo de x. Ambos critrios no so necessariamente satisfeitos


simultaneamente:

Entretanto uma vez que um deles esteja satisfeito a aproximao quase


sempre boa o suficiente.
Muitas vezes o clculo pode entrar em um looping por erros internos e dessa
forma nunca satisfazer os critrios de parada, da importante estabelecer um
nmero mximo de iteraes. Caso no seja especificado o Octave tem como
nmero padro 256 iteraes.
Vamos aos mtodos:
4.2.1 Mtodo da Bisseco seja f(x) contnua no intervalo [a,b] tal que f(a)f(b) <
0, supondo uma nica raz nesse intervalo, esse intervalo ser dividido ao meio a
cada iterao, f(x) ser calculada e os critrios de parada verificados.

Caso os critrios no estejam satisfeitos um novo intervalo [a,b] gerado a


partir do sinal de f(x). Isto , mantendo f(a) e f(b) com sinais contrrios.
Criei um script do Octave com a funo bisseco, tomando como critrio de
parada o tamanho do intervalo:

A funo bisseco ir tomar uma funo f, um intervalo inicial (a,b), um =


err, e um nmero mximo de iteraes itermax.
Vamos fazer o exemplo #4 cap.2 do livro-texto no Octave:

Exatamente mesmo resultado do livro.


4.2.2 Mtodo da Posio Falsa seja f(x) contnua no intervalo [a,b] tal que
f(a)f(b) < 0, supondo uma nica raz nesse intervalo, nesse mtodo ao invs de
tomar o ponto mdio do intervalo, x ser a mdia ponderada:
x =

a . f (b)b . f ( a)
f (b)f ( a)

10

O script segue a mesma estrutura do mtodo da bisseco, mas o critrio de


parada ser o |f(x)| < :

Novamente, repetimos os resultados do exemplo:

O mtodo da posio falsa se mostra muito mais eficiente que a bisseco


reduzindo o nmero de iteraes a apenas 3 comparado a 10 iteraes pelo mtodo
de bisseco.

11

4.2.3 Mtodo do ponto fixo seja f(x) contnua no intervalo [a,b] que contm um
zero da funo. O mtodo consiste em transformar f(x)=0 em uma funo de
iterao equivalente (x)=x e gerar uma sequncia de aproximaes {x k} para pela
iterao xk+1=(xk). f()=0 quando ()= ento o clculo trmina.

Nem sempre ocorre convergncia por isso importante que (x) atenda
alguns critrios.

Convergncia de (x): seja uma raiz da equao f(x)=0, isolada num intervalo
I. A funo iterao (x) da equao leva a uma sequncia convergente para
se
(i) (x) e '(x) so contnuas em I.
(ii) |'(x)| < M < 1 , para todo x em I e,
(iii) x0 pertence a I
Utilizando o script a seguir no Octave podemos encontrar o zero de f(x) dada
a funo iterao, x inicial, a preciso e nmero mximo de iteraes:

12

Vejamos para o exemplo a seguir:

O mtodo de ponto de fixo pode ser rpido em encontrar as razes mas o


cuidado em obter uma funo de iterao apropriada limita sua aplicao.
4.2.4 Mtodo de Newton-Raphson esse mtodo um caso particular do mtodo
de ponto fixo em que a funo de iterao tem a forma:

Essa forma da funo de iterao acelera a convergncia pois parte do


princpio que '() ser 0. Ou seja, x= ser um ponto de mximo.
Geometricamente, o mtodo se traduz a encontrar sucessivas interseces
da tangente com o eixo dos x:

13

O seguinte script calcula as razes por Newton-Raphson no Octave, sendo


necessrio especificar a funo, sua derivada, seu ponto inicial, preciso e nmero
mximo de iteraes:

Fazendo para o mesmo exemplo do livro-texto:

Em apenas duas iteraes o mtodo de newton fornece a resposta. O mtodo


de Newton costuma apresentar divergencias apenas quando o ponto inicial se

14

encontra muito longe da raiz (como para qualquer mtodo iterativo) ou quando fica
muito prximo de um ponto de mximo ou mnimo f'(x)=0 por a linha ficar quase
paralela ao eixo x.
Observe a mesma funo com outro ponto inicial, dessa vez as iteraes
divergem inicialmente pela aproximao com um ponto de mximo:

4.2.5 Mtodo da Secante uma grande desvantagem do mtodo de NewtonRaphson a necessidade de conhecer a derivada da funo e calcul-la a cada
iterao. Essa dificuldade pode ser facilmente contornada utilizando o mtodo da
secante que substitui a derivada pelo quociente das diferenas:

So necessrias duas aproximaes iniciais nesse mtodo a interpretao


geomtrica aquela de secantes sucessivas que se aproximam do zero da funo.

15

O script para o mtodo de secante fica:

Testando no exemplo usual:

16

4.3 Comparao de Mtodos podemos sumarizar que os mtodos de bisseco


e mtodo de posio falsa so os menos restritivos para alcanar a convergncia,
entretanto, uma vez atendidos os critrios de convergncia temos em ordem
crescente de eficincia os mtodos de ponto fixo, da secante e de Newton-Raphson.
O mtodo de Newton-Raphson em teoria o mais eficaz, mas se mostra
dficil de aplicar em alguns casos por exigir o conhecimento da derivada da funo. A
derivada muitas vezes no pode ser obtida de maneira explcita pelo software e
tentativas de implement-la tendem a aumentar muito o custo computacional.
Os mtodos baseados no ponto fixo tambm mostram uma sensvel
depndencia ao ponto inicial escolhido que pode causar uma divergncia inicial no
mtodo. o caso de um x prximo a um ponto crtico de f no mtodo de Newton
Raphson.
Pode ser conveniente aliar um mtodo simples como o da posio falsa para
reduzir o tamanho do intervalo e obter um bom chute inicial, e ento usar o mtodo
de Newton ou da secante para obter a raz com alta preciso. Um exemplo de
mtodo de secante otimizando por bisseco mostrado a seguir:

17

Em um exemplo temos:

4.4 Estudo de equaes polinomiais


Alguns teoremas auxiliam na localizao de raizes em polinmios:
I. Regra de sinal de Descartes:

Dado um polinmio com coeficientes reais, o

nmero de zeros reais positivos, p, no excede o nmero de variaes de sinais dos


coeficientes. Alm disso v-p inteiro, par, positivo.

II. Regra de sinal de Descartes para negativos: para determinar as razes


negativos fazemos pn(-x) e usamos a regra de Descartes como para os positivos.

18

III. Sequncias de Strum: a sequncia de Strum {gk(x)} de um polinmio pn(x) tem


forma: g0(x) = pn(x), g1(x)=pn'(x), e gk(x) para k2 dado pelo resto da diviso dos
polinomios anteriores. Podemos saber se um polinmio tem raizes reais num
intervalo [a,b] calculando o nmero de variaes de sinal em cada sequncia.
Sejam va=s({gk(a)}) e vb=s({gk(a)}) o nmero de vezes que a sequencia trocou
de sinal, ento vb-va ser o nmero de raizes do polinmio nesse intervalo.
IV. Crculo com ao menos uma raiz: seja pn(x) um polinmio com coeficientes ak,
k=0,1,...,n. Existe pelo menos uma raiz no crculo centrado na origem com raio igual
a min{pl, pn} onde:

Exemplo:

IV. Crculo contendo todas razes:seja pn(x) um polinmio com coeficientes ak,
k=0,1,...,n. Seja:

Ento cada zero do polinmio se encontra dentro do crculo definido por |x|r.

19

Exemplo:

Parenteses Encaixados:
Para calcular o valor numrico de polinmios de menor custo computacional
utilizar a forma dos parnteses encaixados.

Que permite que o clculo seja realizado com mais eficincia pela mquina.

20

5. RESOLUO DE SISTEMAS LINEARES


Um sistema linear envolve m equaes e n variveis relacionadas. Pode ser
escrito em forma matricial:

Ax = b

Por exemplo o sistema:


x = (x1 x2)T
b = (3 -2)T

O problema de resolver um sistema linear m x n equivale a descobrir os


coeficientes x que permitem escrever b como uma combinao linear das colunas
da matriz A.

Para qualquer sistema linear existem 3 possveis situaes:

Se as colunas de A so linearmente independentes ento haver apenas uma


soluo para o vetor b, entretanto se as colunas forem linearmente dependentes
infinitas solues sero possveis.
Seja A uma matriz mxn ela apresentar posto dado pela dimenso de sua
imagem ao ser multiplicada por um vetor arbitrrio x.
O posto(A) min{m,n} sendo que:

21

Um sistema linear pode ento ser sumarizado quanto suas solues na tabela
abaixo:

Os mtodos numricos para resoluo de um sistema linear podem ser


divididos em dois grupos: mtodos diretos e mtodos iterativos.
Mtodos diretos so aqueles que, a menos de erros de arrendondamento,
fornecem a soluo exata do sistema linear, caso ela exista, aps um nmero finito
de operaes.
Mtodos iterativos geram uma sequncia de vetores {x(k)}, a partir de uma
aproximao inicial x(0). Sob certas condies esta sequencia converge para a
soluo x* caso ela exista.
5.1 MTODOS DIRETOS
5.1.1 Mtodos ineficientes um dos mtodos de resoluo mais ineficientes a
Regra de Cramer que para resolver um sistema n x n envolve o clculo de n+1
determinantes de ordem n, se n=20 por exemplo seriam necessrias nada menos
que ~20 * 20! multiplicaes. Tambm no inteligente tentar resolver o sistema
Ax = b calculando explicitamente a matriz inversa A -1 para fazer x*=A-1b pois o
nmero de operaes envolvidas muito grande.
5.1.2 Mtodo da eliminao de Gauss consiste em transformar o sistema linear
original num sistema linear equivalente (mesma soluo) com matriz dos
coeficientes triangular superior, pois estes so de resoluo imeditada.
So permitidas 3 operaes elementares sobre o sistema para obter o
sistema equivalente triangular, podem ser aplicadas tantas vezes quanto necessrio:
(I) trocar duas equaes;
(ii) multiplicar uma equao por uma constante no-nula;
(iii) adicionar um multiplo de uma equao a outra equao.

22

O seguinte algoritmo permite fazer eliminao de gauss no Octave:

Testando no sistema linear:

Observando que o ltimo valor fica muito prximo de zero devido a converso
dos nmeros pela mquina.
Pivotamento: ao gerar zeros na matriz inicial pelo escalonamento, importante
realizar troca de linhas para ter o maior nmero em mdulo naquela coluna como
piv. Isso evita ocorrncia de erros ao trabalhar com poucos dgitos significativos.
5.1.3 Fatorao LU na fatorao LU a matriz A decomposta em duas matrizes
triagulares L e U, inferior e superior, respectivamente. Essa tcnica utliza a
eliminao de gauss para obter as matrizes fatoradas, uma vez obtidas L e U
podemos resolver o sistema Ax = b em duas etapas:

23

A grande vantagem que caso o vetor dos resultados b mude, basta


recalcular com duas matrizes triangulares, sem a necessidade de aplicar gauss
novamente.
A matriz L ser formada pelos multiplicadores usados na eliminao de gauss
e U ser a matriz escalonada.

O script abaixo permite fatorar uma matriz A em L e U:

24

As vezes conveniente realizar pivotamento parcial na matriz exigindo


permutao de linhas, nesse caso as permutaes devem ser armazenas numa
matriz permutao e os fatores LU sero correspondentes a matriz permutada e no
a original.

Os fatores LU correspondem a A':

5.1.4 Fatorao Cholesky se A: n x n uma matriz simtrica e positiva, existe


apenas uma matriz triangular inferior G: n x n com diagonal positiva tal que A =
G*GT. ( uma matriz n x n positiva se xTAx > 0 para todo x em Rn )
Essa definio simplifica a fatorao de A da seguinte maneira:

Um script para realizar a fatorao de Cholesky para uma matriz A apropriada


mostrado a seguir:

25

5.2 MTODOS ITERATIVOS


5.2.1 Introduo e teste de parada
A ideia dos mtodos iterativos generalizar o mtodo do ponto fixo, um
sistema Ax=b se transforma num sistema para iterao:
(x(k)) = Cx+g = x(k+1)
Se a sequncia de aproximaes x(1),..., x(k), tal que o

lim x( k) =a
k

ento

a = Ca+g que e a soluo do sistema Ax=b.


O critrio de parada utilizado se baseia na diferena d entre x(k)-x(k-1) como
trata-se de um vetor com n entradas, tomamos
Se d(k) for menor que a preciso ento toma x(k) = x. Tambm pode ser
conveniente fazer o teste com base no erro relativo:

5.2.2 Mtodo de Gauss-Jacobi


Nesse mtodo geramos as funes de iterao isolando o x pela separao
da diagonal.

O novo sistema equivale a um Cx+g onde:

26

Portanto dada uma aproximao inicial x(0) calculamos de maneira recursiva


novos valores para x que idealmente se aproximaro da soluo do sistema.

REFERNCIAS BIBLIOGRFICAS
RUGGIERO M.A. e LOPES V.L. Clculo numrico: aspectos tericos e
computacionais. 2.ed. So Paulo, 1996