Вы находитесь на странице: 1из 17

nlise de Complexidade de Mtodos Numricos para Interpolao

Bianca Costa Guimares e Luiz Thomaz de Nascimento

Departamento de Cincia da Computao do ICEx -- Universidade Federal de Minas Gerais Caixa Postal 702, 30.123-970 Belo Horizonte--MG bianca@dcc.ufmg.br lthomaz@dcc.ufmg.br

Resumo

Este trabalho, tem como objetivo apresentar uma reviso das anlises numricas aplicadas ao problema de interpolao. Os mtodos numricos de interpolao possuem uma aplicao direta na anlise numrica de complexidade de algoritmos. Neste trabalho, sero apresentados mtodos seqenciais de Newton, Lagrange e GregoryNewton. Sero apresentadas suas respectivas complexidades de avaliao e um estudo comparativo dos mesmos. Tambm ser apresentado, para problemas de ordem superior, o algoritmo paralelo de interpolao de Newton.

1-

Introduo

No estudo de projeto e anlise de algoritmos, desenvolve-se tcnicas para fazer anlise de complexidades. Esta anlise tem papel decisivo para o projeto de algoritmos eficientes. Muitas vezes analisar um algoritmo no uma tarefa fcil, pois envolve manipulaes de somas, equaes de recorrncia e outros clculos matemticos de difcil desenvolvimento. Sendo assim os mtodo numricos podem ser uma alternativa de avaliao de complexidades de algoritmos, especialmente nos casos em que a anlise exata difcil ou envolve probabilidades. Assim, este texto apresenta mtodos de interpolao seqenciais e paralelos que podem ser utilizados nestes estudos.

Na seo 2, descrito brevemente o conceito de complexidade de algoritmos. Na seo 3 so apresentados 3 mtodos numricos seqenciais de interpolao a saber, GregoryNewton, Newton e Lagrange com suas respectivas complexidades de computao. A seo 4 mostra um estudo comparativo referente as complexidades de cada um dos mtodos apresentados. Na seo 5 veremos uma anlise de complexidade de um algoritmo utilizando o mtodo seqencial de Newton. Na seo 6 apresentado o mtodo numrico paralelo de interpolao de Newton e algumas consideraes referentes sua implementao. Finalmente na seo 7 mostrado as concluses e consideraes sobre a aplicao dos mtodos numricos de interpolao.

2-

Anlise de complexidade

importante, quando avaliamos a eficincia de um algoritmo qualquer, sabermos como se comporta o nmero de operaes relevantes do algoritmo em funo do tamanho de sua entrada. Este comportamento chamado de anlise de complexidade de tempo do algoritmo. Quando avaliamos a quantidade de memria necessria em funo do tamanho da entrada, denominamos anlise de complexidade de espao. Existe uma vasta teoria sobre tcnicas de avaliao formal destas complexidades [1]. Muitas vezes as manipulaes algbricas envolvidas nestas avaliaes so complexas e nestes casos pode-se utilizar mtodos numricos para inferir sobre os comportamentos dos algoritmos.

3-

Mtodos Seqncias de Interpolao

Seja uma tabela com valores de x e y associados. Para se obter o valor de y para um dado x no constante na tabela necessrio encontrar uma funo que relaciona estas variveis. As funes mais utilizadas para determinar estas relaes so os polinmios. Um polinmio construdo com o intuito de aproximar uma funo denominado polinmio interpolador. Existem vrios mtodos para construir um polinmio interpolador a partir de um conjunto de pares de dados. Ser apresentado a seguir uma ferramenta para construir um polinmio interpolador de Lagrange, Newton e GregoryNewton.

3.1 -

Mtodo de Lagrange

Sejam dados n + 1 pontos ( e

, sendo distintos, tais que de grau no superior

. Deseja-se construir um polinmio

a n e possuindo nos pontos

o mesmo valor da funo

isto ,

Tem-se a frmula do polinmio interpolador de Lagrange de grau n

Por exemplo, a frmula de Lagrange com n=2, torna-se:

Temos abaixo a complexidade da interpolao de Lagrange para um um polinmio de grau n com relao ao nmero de operaes:

Operaes Complexidade Adies Multiplicaes n+1 Divises

3.2 -

Mtodo de Newton

Como visto no item anterior, os polinmios de Lagrange constituem um modo de interpolar sem a necessidade de resolver um sistema de equaes lineares. Ser mostrado, a seguir, um esquema alternativo para a construo de um polinmio interpolador.

Operador de diferena dividida

Seja a funo y = f(x) cujo grfico passa pelos pontos de diferena dividida definido como sendo

i = 0,1,2,...,n. O operador

a) ordem 0:

b) ordem 1:

c) ordem 2:

d) ordem n:

O teorema 3.2 mostra uma importante propriedade das diferenas divididas de um polinmio. Essa propriedade fundamental para a construo dos polinmios de Newton. Teorema 3.2 Se y=f(x) for um polinmio de grau n ento suas diferenas divididas de ordem n+1 so identicamente nulas, isto , .

Frmula de Newton

Fazendo e usando a notao de diferenas divididas com o operador , tem-se o polinmio de Newton de grau n.

ou

Temos abaixo a complexidade da interpolao de Newton para um um polinmio de grau n com relao ao nmero de operaes:

Operaes Complexidade Adies Multiplicaes n Divises

3.3 -

Mtodo de Gregory-Newton

Quando os valores das abscissas forem igualmente espaados, a formula de Newton pode ser simplificada, resultando na formula de Gregory-Newton. Portanto, o polinmio de Gregory-Newton um caso particular do polinmio de Newton para pontos igualmente espaados.

Operador de diferena finita ascendente

Seja a funo y = f(x) que passa pelos pontos

i = 0,1,2,...,n, sendo

. O operador de diferena finita ascendente definido como sendo

a) ordem 0:

b) ordem 1:

c) ordem 2:

d) ordem n:

Frmula de Gregory-Newton

Fazendo e usando a notao de diferenas finita ascendente com o operador , tem-se o polinmio de Gregory-Newton de grau n .

onde utiliza-se uma varivel auxiliar ou

Temos abaixo a complexidade da interpolao de Gregory-Newton para um polinmio de grau n com relao ao nmero de operaes:

Operaes Adies

Complexidade

Multiplicaes n n+1 Divises

4-

Estudo Comparativo dos Mtodos Seqenciais

Como vimos na seo anterior cada um dos mtodos numricos possui um nmero especfico de operaes aritmticas que podem ser resumidos na tabela abaixo:

Mtodo Numrico Lagrange GregoryNewton Newton

Nmero de Operaes Aritmticas Adies Multiplicaes Divises n+1 n n

Analisando a tabela acima no podemos afirmar diretamente qual o mtodo que possui o menor custo de computao. Isto deve-se ao fato de que em geral, um adio gasta menos ciclos de mquina que uma multiplicao que gasta menos ciclos que uma diviso. A dependncia dos tempos de ciclos em relao a arquitetura de mquina utilizada um fator importante a ser considerado na anlise de eficincia dos mtodos apresentados acima. Foram implementados os 3 mtodos utilizando o software MATLAB. Utilizando um conjunto de pontos a serem interpolados foram feitas vrias simulaes contabilizando o tempo de CPU gasto na execuo de cada um do mtodos. As simulaes foram feitas utilizando uma mquina PC 400Mhz. Os resultados podem ser sintetizados na figura abaixo.

Fig. 1 Tempo de processamento dos mtodos seqncias de interpolao

Na figura 1 podemos verificar que o mtodo Gregory-Newton o mais eficiente para a arquitetura PC. A desvantagem na utilizao deste mtodo, a exigncia de que as abscissas dos pontos a serem utilizados para o polinmio interpolador de grau n, devam ser necessariamente eqidistante.

5-

Anlise de Algoritmos Polinomiais

Nesta seo ser aplicada a tcnica de anlise de complexidade de algoritmos polinomiais utilizando interpolao de Newton. Esta tcnica s poder ser utilizada para algoritmos que independam do contedo da entrada de dados. Apresenta-se abaixo a anlise clssica de complexidade e a anlise via interpolao de Newton. Os valores das diferenas divididas necessrias foram calculados utilizando uma implementao no MATLAB.

5.1 -

Algoritmo da funo Mximo - Mnimo

Algoritmo MaximoMinimo(A,Inf,Sup,Min,Max) /* Objetivo: Encontra simultaneamente o maior e o menor elemento de Arranjo A A Arranjo com os elementos Inf,Sup ndices dos limites inferior e superior */

(1) se (Sup Inf) 1 ento (2) (3) (4) (5) (6) (7) (8) se A(Inf) < A(Sup) ento Max = A(Sup) Min = A(Inf) seno Max = A(Inf) Min = A(Sup) fim se

(9) seno (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) Meio = (Sup + Inf) % 2 /* diviso inteira */ MaximoMinimo(A,Inf,Meio,Maximo1,Minimo1) MaximoMinimo(A,Meio+1,Sup,Maximo2,Minimo2) se Maximo1 > Maximo2 ento Max = Maximo1 seno Max = Maximo2 fim se se Minimo1 > Minimo2 ento Min = Maximo2

(20) (21) (22)

seno Max = Maximo1 fim se

(23) fim se Fim Algoritmo

Anlise Clssica

Ser tomada como medida de custo relevante o nmero de comparaes entre os elementos do vetor A. Logo, T(n)=1, para n 2;

T(n)= T ( n/2 ) + T ( n/2 ) + 2 , para n >2.

Resolvendo esta relao de recorrncia, tem-se que:

Anlise via interpolao de Newton

A funo MaximoMinino foi implementada e os testes foram realizados utilizando vetores de entrada com tamanhos de , k = 2,...,5. Estes valores foram armazenados em um vetor x. Para cada foi obtido um respectivo custo de complexidade e armazenado na i-sima posio do vetor y. Para obter este custo introduziu-se no algoritmo um contador, incrementado-o a cada comparao realizada entre os elementos do vetor. A partir dos vetores x e y construiu-se a tabela de diferenas divididas.

0 1 2 3

4 8 16 32

4 10 22 46

3/2 3/2 3/2

0 0

Analisando a tabela, observa-se que as diferenas divididas de ordem 2 so identicamente nulas. Logo, o polinmio interpolador tem grau 1, ou seja, este algoritmo apresenta complexidade linear. Para determinar as constantes deste polinmio utilizada a frmula de Newton

Assim, o custo total para executar este programa com entrada de tamanho n ser

Como pode-se observar o custo de complexidade via interpolao de Newton idntico ao custo da complexidade via anlise clssica.

6-

Mtodo Paralelo de Interpolao

Introduo

Os algoritmos seqncias de interpolao em geral possuem complexidade de tempo igual a O(n2). Alguns estudos de pesquisadores [7] [8], tem mostrado avanos na diminuio deste limite mas estes melhoramentos no so muito significativos. Do ponto de vista prtico, a complexidade de tempo O(n2) para o problema da interpolao bastante razovel na resoluo dos problemas. Para os problemas de ordem superior tais algoritmos podem no oferecer performance satisfatria. O avano dos sistemas de computao paralela motivam os estudos no desenvolvido de algoritmos paralelos de interpolao, especialmente para os problemas de ordem superior.

Existem vrios algoritmos paralelos de interpolao. Muitos deles utilizam a representao pelo polinmio de Lagrange. Estes algoritmos possuem a complexidade de tempo O(Logn) e complexidade de espao O(n2Logn). Para que estes algoritmos possuam uma constante de proporcionalidade razovel so necessrias complexas implementaes utilizando DFT (Discrete Fourier Transform) direta e reversa. Existe uma preocupao quanto a estabilidade numrica destes algoritmos [6] ou seja, o fato dos mesmos utilizarem o nmero elevado de operaes faz com que os erros de arredondamento e truncamento devam ser considerados.

O algoritmo paralelo de interpolao apresentado, possui complexidade de tempo O(Logn) e assim fornece um ganho significativo em relao aos tradicionais algoritmos seqncias. Do ponto de vista de estabilidade numrica o algoritmo possui acumulao de erros similares aos algoritmos seqenciais [6]. A complexidade de espao deste algoritmo O(n2).

O algoritmo paralelo de interpolao apresentado aqui utiliza a representao de Newton para o polinmio interpolador. Esta representao, conforme veremos mais a frente, utiliza uma expanso das diferenas dividas (DD) como uma combinao linear dos valores da funo. Este algoritmo pode ser implementado em arquiteturas com memria compartilhada ou distribuda. Em particular iremos apresentar pseudo cdigos para uma arquitetura PRAM CREW (Parallel Random Access Machine Concurrent Read Exclusive Write).

Algoritmo Paralelo de Interpolao de Newton

O polinmio interpolador de Newton completamente determinado pelos coeficientes das diferenas divididas (DD). Os coeficientes e o polinmio, podem ser escritos como:

(1)

Conforme visto na seo 3, os coeficientes necessrios para calcular um polinmio (n=4) so a seguinte tabela triangular:

(2)

As entradas da diagonal principal so os coeficientes requeridos para o polinmio interpolador de Newton. interessante observar que os termos de uma dada coluna podem ser calculados independente uns dos outros, porm dependem dos termos da coluna anterior. Assim podemos derivar um algoritmo paralelo trivial para o calculo destes coeficientes utilizando um processador para cada elemento na coluna da tabela. Este algoritmo ir computar os coeficientes das DDs em O(n) utilizando O(n) processadores.

Para podermos diminuirmos o tempo de computao paralelo iremos utilizar uma frmula alternativa de clculo das DDs. Se consideramos:

(3)

temos que a kth DD de f dada por:

(4)

Vamos considerar o inverso do coeficiente

da DD

como sendo:

(5)

Assim para calcularmos a kth DD necessria no polinmio de Newton, precisamos computar:

(6)

Para calcularmos (6) podemos utilizar o algoritmo paralelo Prefix Sum. Este algoritmo possui a complexidade de tempo igual O(Logn) utilizando n processadores [7].

A primeira etapa do algoritmo calcular todos os necessrios para os clculos das DDs. Isto pode ser feito em nico passo aritmtico utilizando (n(n+1))/2 processadores.

A segunda etapa computar atravs de um Prefix Sum todos os valores de . Na formula (1) devemos aplicar o Prefix Sum n+1 vezes (0 at n referentes a cada termo do somatrio), para podermos calcularmos todas as DDs necessrias. Isto pode ser feita em O(Logn) passos aritmticos concorrentemente utilizando n(n+1) processadores.

A terceira etapa computar as divises de (4). Para tal utilizamos o resultado da segunda etapa para processarmos as (n x (n+1))/2 divises necessrias (1). Podemos fazer isto em um nico passo aritmtico utilizando (n(n+1))/2 processadores.

A quarta e ltima etapa executar as somas de (4). Isto pode ser feito utilizando o algoritmo paralelo Reduction. Cada soma pode ser feita por este algoritmo em [Log(n+1)] passo aritmticos utilizando n/2 processadores. Novamente como temos n+1 termos no somatrio em (1) iremos utilizar ao todo n/2(n+1) processadores.

Assim podemos computar todas as DDs necessrias para o polinmio interpolador de Newton em:

2 [Log(n+1)] + 2 passos Aritmticos utilizando n(n+1) processadores (7)

A complexidade de espao deste algoritmo dada pela complexidade de espao necessria para executar os Prefix Sums [6]. Isto porque esta etapa do algoritmo a que consome maior quantidade de espao. Assim temos que a complexidade de espao dado por:

4n(n+1) = O(n2)

(8)

Considerao sobre o nmero de processadores

Como vimos em (7) so necessrios n(n+1) processadores para a execuo do algoritmo apresentado. Vamos considerar que um nmero limitado de processadores esto disponveis, em particular quando p= m(n+1) onde 1 < m < n+1 e p o nmero total de processadores. Neste caso, nas etapas 2 e 4 iremos distribuir a tarefa de cada um dos

(n+1) termos para m processadores. Pode ser mostrado [6] que a complexidade de tempo para o algoritmo para esta situao dado por:

passo aritmticos (9)

Se possuirmos um nmero menor que (n+1) processadores disponveis a aplicao deste mtodo se torna ineficiente [6]. Quando temos m=1 temos O(n) operaes no algoritmo, o que nos fornece um speedup de O(n) sobre as implementaes seqncias clssicas.

7-

Consideraes Finais

Foi apresentada uma tcnica alternativa para calcular o comportamento de determinados algoritmos polinomiais. Dentre os mtodos seqenciais apresentados o mtodo de Newton pode ser considerado uma boa opo, pelo fato de possuir baixa complexidade de computao e no exigir que as abscissas dos pontos a serem utilizados no polinmio interpolador, sejam eqidistantes.

O algoritmo paralelo apresentado se mostra, do ponto de vista terico, uma boa alternativa para computar os polinmios interpoladores em sistemas de computao de alto desempenho. Gallopoulos [6], mostra um estudo terico e experimental sobre a estabilidade numrica deste algoritmo. Com os resultados obtidos neste estudo podemos afirmar que o algoritmo paralelo de interpolao de Newton:

1. Produz speedup relevante quando comparado com algoritmos seqenciais, quando o utilizamos em problemas de ordem superior, n > 70. 2. Seu resultado de acumulao de erro similar aos dos algoritmos seqenciais.

Isto torna as implementaes do mtodo apresentado rpidas e prticas para problemas de ordem superior.

O algoritmo paralelo apresentado assume-se um modelo de computao PRAM CREW no qual os processadores esto totalmente conectados. Pode ser mostrado [8] que a implementao do mesmo em sistema hiper cubo (cube connected), utiliza apenas 2 passos de roteamento adicionais.

8-

Referncias Bibliogrficas

[1] N. Ziviani, Projeto de Algoritmos com Implementaes em Pascal em C , 1993

[2] F.F. Campos, Algoritmos Numricos, 2001

[3] The MathWorks Inc., MATLAB Reference Guide Ed. 5.3 , 1999

[4] H.T.Kung, Fast evaluation and interpolation, 1973

[5] E.Horowitz, A fast method for interpolation using preconditioning 1972, pp. 157163

[6] E. Gallopoulos, A Parallel Method for Fast and Practical High-Order Newton Interpolation1989

[7] M.J. Quinn, Parallel Computing: Theory and Practice 1994

[8] E. Gallopoulos, A Fast and Practical Parallel Polynomial Interpolation 1972, pp. 157-163

Вам также может понравиться