• Nenhum resultado encontrado

Comparação entre C-XSC e JAVA-XSC

Para realizar a comparação entre C-XSC e JAVA-XSC foi necessário executar um con- junto de dados nas duas ferramentas utilizando as mesmas entradas. Para tal foi gerado mil números complexos intervalares aleatórios (Anexo E). A partir destes números, foi executado, para cada um deles, as funções contidas em ambas as ferramentas.

Na comparação foi realizado o teste T Student, que, segundo [Pocinho 2009], tem por objetivo comparar a quantidade da variabilidade devida às diferenças prevista nos resulta- dos entre dois grupos. A Estatística T representa o tamanho da diferença entre as médias para os dois grupos, tomando em consideração a variância total. Diante disto foi utilizada a calculadora de teste T da GraphPad 1 para comparar cada intervalo gerado nas duas ferramentas.

Para executar a comparação neste ferramenta é necessário informar dados em duas colunas, como ilustra a Figura 4.1. No caso desta comparação, a primeira coluna recebeu dados de C-XSC e a segunda coluna de JAVA-XSC.

Ao aplicar os dados na calculadora, em quase todas as funções testadas, a ferramenta apresentou que a diferença entre as duas entradas (um intervalo de C-XSC e outro de JAVA-XSC) é considerada não estatisticamente significante, sendo assim a saída de forma geral são iguais na duas ferramentas.

A única função que mostrou diferença foi a divisão. De acordo com [Lohner & Wolff 1985], existem três formas distintas de representar a divisão de um número complexo intervalar, uma delas utiliza aritimética de alta exatidão, que ainda não foi implementada em JAVA-XSC. Daí que surge tal diferença.

Figura 4.1: Interface gráfica da ferramenta GraphPad

4.4

Considerações

Diante da comparação feita entre as duas ferramentas utilizando o teste estatístico T Student, é possível dizer que JAVA-XSC é comparável em qualidade a uma ferramenta já consolidada, a C-XSC.

Os benefícios adicionais da ferramenta em estudo, é que a mesma apresenta métodos não presentes no C-XSC, tais como as de conversão de um número complexo polar para um complexo algébrico e vice-versa.

Conclusão

Ao falar-se em computação numérica, a forma como os dados são processados e apre- sentados se torna de suma importância, daí a preocupação com a exatidão desses cálculos que é imprescindível para se obter uma solução satisfatória. Sendo assim, a matemática intervalar, é uma perfeita abordagem para assegurar tal feito, uma vez que a análise de erros já vem incluída no próprio resultado da computação.

JAVA-XSC surgiu como uma alternativa a mais para o desenvolvimento e aperfeiçoa- mento de softwares que necessitam de um cálculo numérico mais preciso, através do uso da matemática intervalar. Esta biblioteca é composta por diversas funções que auxiliam o usuário a desenvolver aplicativos mais eficientes e precisos. Neste trabalho foram desen- volvidos e apresentados dois módulos adicionais a JAVA-XSC, ambos relacionados com os números complexos. O primeiro módulo trabalha com operações sobre os números complexos. Já no segundo módulo foi feita uma junção entre o poder computacional da matemática intervalar e os números complexos.

Ao realizar uma comparação com a C-XSC, uma ferramenta já consolidada, foi possí- vel observar que ambas retornam valores semelhantes. Sendo assim, JAVA-XSC se torna uma ferramenta computacional mais confiável.

Aliando as vantagens da linguagem de programação JAVA com o valor computacio- nal da matemática intervalar e dos números complexos, os usuários agora possuem uma ferramenta poderosa ao mesmo tempo que compacta e portável, fazendo com que apli- cativos, como pro exemplo na área da engenharia, possam ser utilizados em dispositivos móveis tais como smatphones e tablets.

mérico, é o uso de inteiros sinalizados da linguagem de programação JAVA. Isso faz com que a biblioteca apenas trabalhe com precisão simples, diferentemente da ferramenta GNP onde o usuário escolhe a quantidade de bits destinada a precisão dos cálculos.

Outra atual desvantagem de JAVA-XSC, mais especificamente em relação a C-XSC, é que a mesma ainda não possui uma aritmética de alta exatidão. De acordo com [Úrsula Adriane Lisboa Fernandes 2001], a aritmética de alta exatidão possibilita que os cálculos sejam efetuados com máxima exatidão, sendo assim, o resultado gerado difere do valor exato no máximo em um arredondamento. Para se ter uma aritmética de alta exatidão são necessários os seguintes requisitos:

• O uso de arredondamento direcionado (para baixo e para cima); • As quatro operações aritméticas (+,-,*,/) com máxima exatidão e • O produto escalar ótimo.

Em conjunto com a matemática intervalar, o uso da aritmética de alta exatidão gera resultados confiáveis e com máxima exatidão, onde o resultado está contido em um inter- valo cujos extremos diferem por apenas um arredondamento do valor real, pois os cálculos intermediários são feitos em registradores específicos, de forma a simular a operação nos reais, sendo o arredondamento para baixo e para cima feito apenas no final. JAVA-XSC possui os dois primeiros requisitos citados anteriormente para se obter uma aritmética de alta exatidão. Mas o terceiro ainda não foi implementado.

Como etapas futuras, existe a necessidade de se elaborarem módulos que venham a trabalhar com:

• Matrizes e vetores intervales; • Avaliação de zeros de polinômios; • Transformações rápidas de Fourier; • Sistemas de equações não-linear e

• Produto escalar ótimo, um dos requisitos da aritmética de alta exatidão.

Outra sugestão de pesquisa, é desenvolver o tipo inteiro não sinalizado em Java, desta forma seria possível reescrever a biblioteca JFloat para possuir múltiplas precisões. Uma última proposta seria o estudo da viabilidade de se implementar outras aritméticas com- plexas intervalares, tais como a circular e a setorial, além da implementação de outras aritméticas sobre os intervalos reais, como aritmética modal, aritmética afim e suas res- pectivas extensões para complexos.

Alefeld, Gotz & Junger Herberger (1983), Introduction to Interval Computations, Acade- mic Press, Ney York.

Baumgart, John K (1969), ‘Tópicos de história da matemática para uso em sala de aula (álgebra)’, São Paulo, Editora Atual .

Blomquist, F., W. Hofschuster, W. Kramer & M. Neher (2005a), ‘Complex interval func- tions in c-xsc’, Wissenschaftliches Rechnen/Softwaretechnologie .

Blomquist, F., W. Hofschuster, W. Kramer & M. Neher (2005b), ‘Complex interval func- tions in c-xsc’, Wissenschaftliches Rechnen/Software Technologie .

Boyer, C. (1974), ‘História da matemática’, São Paulo, Edgar Blücher .

Brent, Richard P. & Paul Zimmermann (2009), ‘Modern computer arithmetic’, Creative Common.

C-XSC, Team (2010), ‘Class reference’. [Online; accessed 06-Maio-2011].

URL:http://www2.math.uni-wuppertal.de/~xsc/xsc/cxsc/apidoc/html/ classcxsc_1_1real.html

Candu, Yves, Tarek Raissi & Nacim Ramdani (2006), ‘Complex interval arithmetic using polar form’, Reliable Computing .

Cerri, Cristina & Martha S. Monteir (2001), ‘História dos números complexo’, CAEM - Centro de Aperfeiçoamento de Ensino de Matemática.

da Justa Medeiros, Luiz Adauto (1972), Funções de uma Variável Complexa, Editora McGraw-Hill do Brasil e Editora da Universidade de Brasília, São Paulo, SP. da Silva, José Frank Viana (2007), Jfloat: Uma biblioteca de ponto flutuante para a lin-

guagem java com suporte a arredondamento direcionado, Dissertação de mestrado, Universidade Federal do Rio Grande do Norte. UFRN. PPGSC, Natal, RN.

de Mesquita, Marcos Paulo (2004), ‘Matemática intervalar: princípios e ferramentas c-xsc’. [Online; accessed 11-Abril-2011].

URL:http://www.comp.ufla.br/curso/ano2002/Matematica_intervalar_ principios_e_ferramentas_C_XSC.pdf

Dias, Cláudio Carlos & Neura Maria Dantas (2006), Geometria analítica e números com- plexos. Funções complexas elementares, EDUFRN, Natal, RN.

Dutra, José Enéas Montenegro (2000), Java-xsc: Uma biblioteca java para computa- ções intervalares, Dissertação de mestrado, Universidade Federal do Rio Grande do Norte. UFRN. PPGSC, Natal, RN.

Enge, Andreas, Mickaël Gastineau, Philippe Théveny & Paul Zimmermann (2011), ‘mpc — a library for multiprecision complex arithmetic with exact rounding’, INRIA . http://mpc.multiprecision.org/.

Ezequias (1998), ‘Para que servem os números complexos?’. [Online; accessed 15- Setembro-2011].

URL:http://www.profezequias.net/complexo.html

Felzenszwalb, Bernardo (1979), ‘Álgebras de dimensão finita’, Rio de Janeiro, IMPA - CNPq.

Fousse, Laurent, Guillaume Hanrot, Vincent Lefèvre, Patrick Pélissier & Paul Zimmer- mann (2007), ‘Mpfr: A multiple-precision binary floating-point library with correct rounding’, ACM Trans. Math. Softw .

Garrozi, Cícero & Jones Albuquerque (2009), ‘A aritmética intervalar como ferramenta para a solução de problemas de computação científica’, UFLA - Universidade Fede- ral de Lavras.

Granlund, Torbjorn & the GMP development team (2010), ‘The gnu multiple precision arithmetic library’, A GNU Manual .

Haible, Bruno (2005), ‘Cln, a class library for numbers’, Manual CLN .

Hanrot, Guillaume, Vincent Lefèvre, Patrick Pélissier, Philippe Théveny & Paul Zimmer- mann (2011), ‘Gnu mpfr: The multiple precision floating-point reliable library’, A MPFR Manual.

Hofschuster, Werner & Walter Krämer (2010), ‘C-xsc 2.0. library for extended scientific computing’, Bergische Universität Wuppertal, Scientific Computing/Software Engi- neering.

Kearfott, Baker, Milind Dawande, Kaisheng Du & Chenyi Hu (1994), ‘Intlib: A portable fortran-77 elementary function library’, ACM Trans. Math. Software .

Kearfott, R. (1996), ‘Rigorous global seach: Continuous problems’, Dordrecht: Kluwer Academics Publishers.

Kearfott, R. Baker (1995), ‘Usage notes for intlib and fortran 90 access to it’, University of Southwestern Louisiana.

Klatte, R., U. Kulish, M. Neaga, D. Ratz & Ch. Ullrich (1999), PASCAL-XSC. Language Reference with examples, Spring-Verlag, Alemanha.

Lohner, R. & J. Wolff (1985), ‘Complex interval division with maximum accuracy’, Ins- titute for Applied Mathematics, University of Karlsruhe.

Lohner, R., J. Wolff & V. Gudenberg (1985), ‘Complex interval division with maximum accuracy’, Institute for Applied Mathemathics, University of Karlsruhe .

Macedo, F. Wolfango (2004), ‘Análise de erros’. [Online; accessed 11-Abril-2011]. URL:http://home.utad.pt/~wmacedo/publicacoes/excerto_analise_ erros.PDF

Malavazi, Mazílio Coronel (2004), ‘Aritimética intervalar: Histórico, topologia e algo- ritmos’, Universidade do Estado de Mato Grosso, Curso de Licenciatura Plena em Ciência da Computação.

Menochi, Gisele (2004), ‘Números complexos’. [Online; accessed 05-Abril-2011]. URL:http://www.somatematica.com.br/coluna/gisele/29032004.php Moore, Ramon E. (1966), ‘Interval analysis’, Englewood Cliffs: Prentice-Hall .

Muller, Jean-Michel, Nicolas Brisebarre, Florent de Dinechin, Claude-Pierre Jeannerod, Vincent Lefèvre, Guillaume Melquiond, Nathalie Revol, Damien Stehlé & Serge Torres (2009), Handbook of Floating-Point Arithmetic, Birkhäuser, Boston.

Petkovic, Miodrag S. & Ljiljana D. Petkovic (1998), Complex Interval Arithmetic and Its Applications, Wiley-VCH, Berlin.

Revol, N. & F. Rouillier (2002), ‘Motivations for an arbitrary precision interval arithmetic and the mpfi library’, Reliable Computing pp. 23–25.

Revol, Nathalie (2002), ‘Mpfi 1.0’. [Online; accessed 29-Abril-2011]. URL:http://perso.ens-lyon.fr/nathalie.revol/mpfi.html

Úrsula Adriane Lisboa Fernandes (2001), Núcleo de aritmética de alta exatidão da bi- blioteca intervalar libavi.al, Dissertação de mestrado, Universidade Federal do Rio Grande do Sul, Curso de Pós-Graduação em Ciência da Computação, Porto Alegre. Santiago, Regivan H. Nunes, Benjamín Callejas Bedregal & Benedito Melo Acioly (2006), ‘Formal aspects of correctness and optimality of interval computations’, Formal Aspects of Computing.

Santos, J. M. (2001), Em direção a uma representação para equações algébricas: uma ló- gica equacional local, Dissertação de mestrado, Universidade Federal do Rio Grande do Norte. UFRN. PPGSC, Natal, RN.

team, The MPC (2011), ‘The multiple precision complex library’, A MPC Manual . Wiethoff, Andreas (1996), ‘C-xsc. a c++ class library for extended scientific computing’,

Institut für Angewandte Mathematik. Universität Karlsruhe. Wikipedia (2008), ‘Rounding’. [Online; accessed 14-Junho-2011].

Modos de Arredondamento

Este Anexo foi baseado em [Wikipedia 2008].

Arredondamento é a forma de simplificar números, onde é feita a redução do número mas ao mesmo tempo tentando manter o seu valor aproximado. O resultado se torna me- nos preciso, mas por outro lado, torna-se mais fácil de ser manuseado. O arredondamento é quase inevitável em muitos cálculos, principalmente quando dividimos dois números inteiros ou quando computamos funções matemáticas, tais como raízes quadradas e lo- garítmos. Os erros de arredondamento se acumulam geralmente, e em certos casos mal condicionados, podem induzir um resultado sem sentido.

Documentos relacionados