Preliminares matemáticos e análise de erros 45
componente de módulo grande apareça, o algoritmo muda a escala da soma anterior e continua a mudar a escala, calcular o quadrado e a soma dos números restantes.
O algoritmo supõe que, na transição de números pequenos a médios, números pe-quenos sem mudança de escala são desprezíveis quando comparados a números mé-dios. De maneira análoga, na transição de números médios a grandes, números médios sem mudança de escala são desprezíveis quando comparados a números grandes. Por-tanto, a escolha dos parâmetros de mudança de escala deve ser feita de maneira que os números sejam igualados a 0 somente quando forem realmente desprezíveis. As relações típicas entre as características de máquina descritas port,s , l,emin, emax e
os parâmetros do algoritmo N, s, S , y eY são fornecidos depois do algoritmo.
O algoritmo usa três marcadores para indicar os vários estágios no processo de soma. Esses marcadores são valores iniciais fornecidos no Passo 3 do algoritmo. O MARCADOR 1 é 1 até que uma componente média ou grande seja encontrada; então, ele é alterado para 0. O MARCADOR 2 é 0 enquanto números pequenos estão sendo somados, muda para 1 quando um número médio é encontrado pela primeira vez e muda novamente para 0 quando um número grande é encontrado. O MARCADOR 3 é inicialmente 0 e muda para 1 quando um número grande é encontrado pela primeira vez. O Passo 3 também introduz o marcador FEITO, o qual é 0 até que os cálculos sejam concluídos e depois muda para 1.
ENTRADA N , s, S , y, Y , l, n, x
1, x2, . . . , xn.
SAÍDA NORMAou uma mensagem de erro apropriada.
Passo 1 Se n # 0 então SAÍDA (‘O inteirondeve ser positivo’);
PARE.
Passo 2 Se n ≥ N então SAÍDA (‘O inteiron é muito grande’);
PARE.
Passo 3 FaçaSOMA5 0;
MARCADOR1 5 1; (Os números pequenos estão sendo somados.)
MARCADOR2 5 0;
MARCADOR3 5 0;
FEITO5 0;
i 5 1.
Passo 4 Enquanto (i #n e MARCADOR15 1) execute o Passo 5. Passo 5 Seu x
iu, y então façaSOMA5SOMA1 (Sxi)2;
i 5i 1 1
senão faça MARCADOR15 0. (Um número não pequeno
encontrado.)
Passo 6 Se i .n então faça NORMA5 (SOMA) 1/2/S ;
FEITO 5 1
senão façaSOMA5 (SOMA/S ) /S ; ( Escala para números maiores.)
MARCADOR25 1.
Passo 7 Enquanto (i#ne MARCADOR25 1) execute Passo 8. (Soma dos números
de tamanho médio.)
Passo 8 Seu x
iu,Y então façaSOMA5SOMA 1 x
2
i;
i 5i1 1
46 Análise numérica
Passo 9 Se FEITO5 0 então
sei .n então faça NORMA5(SOMA)1/2;
FEITO51
senão faça SOMA 5 ((SOMA) s) s; ( Mudança de escala para os
números grandes.)
MARCADOR3 5 1.
Passo 10 Enquanto (i#n e MARCADOR3 5 1) execute Passo 11. Passo 11 Faça SOMA5SOMA1 ( sx
i)2; (Somar os números grandes.)
i5i11.
Passo 12 Se FEITO5 0 então
se SOMA1/2, l s então faça NORMA5 (SOMA)1/2 /s;
FEITO5 1
senão façaSOMA5 l. ( A norma é muito grande.)
Passo 13 Se FEITO5 1 então SAÍDA (‘A norma é’, NORMA)
senão SAÍDA (‘Norma ≥’, NORMA, ‘ocorreu overow’).
Passo 14 PARE.
As relações entre as características da máquinat,s , l,emin, emax e os parâmetros do
algoritmo N, s, S , y,eY foram escolhidos em [Brow, W.], p. 471 como sendo:
N 5 10e N , ondee
N 5 [(t 2 2)/2], o maior inteiro menor ou igual a (t 2 2)/2;
s 5 10eS , onde e s5 [2(emax1e N )/2];
S 5 10eS , onde e
S 5 [( 12emin )/2], o menor inteiro maior ou igual a (12emin)/2;
y 510ey, onde e y5 [(emin1t 2 2)/2];
Y 5 10eY , onde e
Y 5 [(emax2e N ) / 2].
O primeiro computador portátil foi o Osborne I, produzido em 1981, embora fosse muito maior e pesado do que consideraríamos atualmente como portátil.
A conabilidade incorporada neste algoritmo aumentou muito a complexidade em com- paração com o algoritmo apresentado antes na seção. Na maioria dos casos, os algoritmos de propósito especial e os de propósito geral dão resultados idênticos. A vantagem do algoritmo de propósito geral é que ele fornece segurança para seus resultados.
Muitas formas de software numérico de propósito geral estão disponíveis comer-cialmente e em domínio público. Muitos dos primeiros softwares foram escritos para computadores de grande porte e uma boa referência para eles éSources and Develop-ment of Mathematical Software,editado por Wayne Cowell [Co].
Agora que o computador pessoal se tornou sucientemente poderoso, softwares numéricos padrão estão disponíveis para eles. A maioria desses softwares numéricos está escrita em FORTRAN, embora alguns pacotes estejam escritos em C, C11 e
FORTRAN 90.
O sistema FORTRAN (FORmula TRANslator) foi a linguagem de programação cientíca de propósito geral original. Ela ainda é amplamente usada em situações que exigem cálculos cientícos intensivos.
Preliminares matemáticos e análise de erros 47
Procedimentos ALGOL foram apresentados para cálculos com matrizes em 1971 em [WR]. Um pacote de sub-rotinas FORTRAN com base principalmente em procedi-mentos ALGOL foi então desenvolvido nas rotinas EISPACK. Essas rotinas estão do-cumentadas nos manuais, publicados pela Springer-Verlag como parte de série Lecture Notes in Computer Science, [Sm,B] e [Gar]. As sub-rotinas FORTRAN são usadas para calcular autovalores e autovetores para diversos tipos de matrizes.
O LINPACK é um pacote de sub-rotinas FORTRAN para analisar e resolver sis-temas de equações lineares e resolver problemas de mínimos quadrados lineares. A documentação desse pacote está contida em [DBMS]. Uma introdução passo a passo ao LINPACK, EISPACK e BLAS (Basic Linear Algebra Subprograms) é fornecida em [CV].
O projeto EISPACK foi o primeiro pacote de software numérico de larga escala a tornar-se disponível em domí-nio público e abriu caminho para muitos outros pacotes fazerem o mesmo.
O pacote LAPACK, disponível pela primeira vez em 1992, é uma biblioteca de sub--rotinas FORTRAN que suplantou o LINPACK e o EISPACK, integrando esses dois conjuntos de algoritmos em um pacote unicado e atualizado. O software foi reestrutu-rado para atingir grande eciência em processadores vetoriais e outros multiprocessado-res de alto desempenho ou de memória compartilhada. O LAPACK foi expandido em profundidade e alcance na versão 3.0, a qual está disponível em FORTRAN, FORTRAN
90, C, C11 e JAVA. C e JAVA estão disponíveis apenas como interfaces de linguagem
ou tradutores de bibliotecas FORTRAN de LAPACK. O pacote BLAS não faz parte do LAPACK, mas o código para o BLAS é distribuído com o LAPACK.
Outros pacotes para a resolução de tipos especícos de problemas também estão em domínio público. Como alternativa para o netlib, você pode usar o Xnetlib para pesqui-sar os bancos de dados e recuperar software. Podem-se encontrar mais informações no artigoSoftware Distribution Using Netlib de Dongarra, Roman e Wade [DRW].
A engenharia de software foi estabelecida como uma disciplina de laboratório durante os anos 1970 e 1980. O EISPACK foi desenvolvido no Argonne Labs e o LINPACK, logo depois. No início dos anos 1980, Argon-ne foi reconhecido internacionalmente como líder mundial, não apenas no cálculo simbólico como também no numérico.
Esses pacotes de software são altamente ecientes, precisos e conáveis. Eles são cuidadosamente testados, e a documentação está prontamente disponível. Embora os pacotes sejam portáteis, é aconselhável investigar a dependência da máquina e ler toda a documentação. Os programas são testados para quase todas as contingências espe-ciais que possam levar a erros e falhas. No nal de cada capítulo, discutiremos alguns dos pacotes apropriados de propósito geral.
Os pacotes comercialmente disponíveis também representam a tecnologia de ponta em métodos numéricos. Seus conteúdos frequentemente baseiam-se nos pacotes de domínio público, mas incluem métodos em bibliotecas para quase todos os tipos de problemas.
A IMSL (International Mathematical and Statistical Libraries) consiste nas biblio-tecas MATH, STAT e SFUN para matemática numérica, estatística e funções especiais, respectivamente. Essas bibliotecas contêm mais de 900 sub-rotinas originalmente dis- poníveis em FORTRAN 77 e agora disponíveis em C, FORTRAN, 90 e JAVA. Essas
48 Análise numérica
sub-rotinas resolvem os problemas mais comuns de análise numérica. As bibliotecas estão comercialmente disponíveis a partir de Visual Numerics.
Os pacotes são entregues na forma compilada com documentação extensa. Há um programa-exemplo para cada rotina, bem como informações de referência. A IMSL contém métodos para sistemas lineares, análise de autossistemas, interpolação e apro-ximação, integração e diferenciação, equações diferenciais, transformadas, equações não lineares, otimização e operações básicas de matriz/vetor. A biblioteca também contém rotinas estatísticas extensas.
Em 1970, a IMSL tornou-se a primeira biblioteca cientíca em larga escala para computadores de grande porte. Desde então, as bibliotecas tornaram-se disponíveis para sistemas computacionais, variando desde supercom- putadores a computadores pessoais.
O Numerical Algorithms Group (NAG) existe no Reino Unido desde 1970 e ofe-rece mais de mil rotinas em uma biblioteca de FORTRAN 77, cerca de 400 sub--rotinas em uma biblioteca de C, mais de 200 subsub--rotinas em uma biblioteca de FOR -TRAN 90 e uma biblioteca númerica MPI FORFOR -TRAN para máquinas paralelas e redes de estações de trabalho ou computadores pessoais. Uma introdução útil às rotinas NAG pode ser vista em [Ph]. A biblioteca NAG contém rotinas para realizar a maioria das tarefas padrão de análise numérica de maneira similar às da IMSL. Ela também inclui algumas rotinas estatísticas e um conjunto de rotinas grácas.
O Numerical Algorithms Group (NAG) foi instituído no Reino Unido em 1971 e desenvolveu a primeira bi- blioteca de software matemático. Ela c