not equals, double d = 0.0; for(int i = 0; i < 10; i++){ d += 0.4; } System.out.println(d); ->"> not equals, double d = 0.0; for(int i = 0; i < 10; i++){ d += 0.4; } System.out.println(d); ->">
Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouRaphaella Abrantes Alterado mais de 9 anos atrás
1
COMPUTAÇÃO CIENTÍFICA COM JAVA-XSC Bruno José Torres Fernandes Edmo Sérgio Ribeiro de Brito Marcília Andrade Campos Renato Viana Ferreira bjtf, esrb, mac,rvf[at]cin.ufpe.br
2
Motivação Por que intervalos? Incapacidade de representação dos números reais nas máquinas Controle de erro numérico em computação científica Por que Java? Portabilidade Independência de plataforma e dispositivo Linguagem mais popular
3
Exemplos double d = 3.9-3.8; if(d==0.1) System.out.println("equals"); else System.out.println("not equals,“ + d); -> not equals, 0.10000000000000009 double d = 0.0; for(int i = 0; i < 10; i++){ d += 0.4; } System.out.println(d); -> 3.9999999999999996
4
Ponto-flutuante em Java Segue parcialmente o padrão IEEE 754 3 grandes falhas Não dá suporte aos bits de exceção Não implementa os arredondamentos direcionados Não provê um tipo intervalar de dado de máquina
5
Objetivos Desenvolver uma extensão intervalar para Java - Java-XSC Desenvolver uma calculadora intervalar utilizando a biblioteca Java-XSC Resolver problemas numéricos com a solução proposta
6
Resultados (1/5) Implementação dos arredondamentos direcionados Definição do tipo Intervalo
7
Resultados (2/5) Implementação da biblioteca Java-XSC, com as seguintes operações intervalares: Igualdade Comprimento Pertence Simétrico Recíproco Absoluto
8
Resultados (3/5) Adição Subtração Multiplicação Divisão Interseção União Está contido Distância
9
Resultados (4/5) Interval a = new Interval(3.9, 3.9, 10); Interval b = new Interval(3.8, 3.8, 10); Interval c = IntervalMath.sub(a,b); if(c.pertains(0.1)){ System.out.println("Pertence"); } else { System.out.println("Não pertence"); } System.out.println(c); -> Pertence [0.1, 0.1000000002]
10
Resultados (5/5) Interval d = new Interval(0, 0, 10); Interval e = new Interval(0.4, 0.4, 10); for(int i=0;i<10;i++){ d = IntervalMath.add(d, e); } System.out.println(d); ->[3.9999999991, 4.0000000013]
11
Java - XSCMapleInt Arredondamento para baixo: 2.0 com precisão de 10 -9 1.999999999 Arredondamento para cima: 2.0 com precisão de 10 -9 2.000000001 Comprimento de [1.0, 2.5] 1.5 Recíproco de [-5.0, -2.0] com precisão de 10 -9 [-0.500000001, - 0.199999999] 0.0 pertence a [-0.1, 0.1] true Adição: [1.0, 2.5] + [0.0, 8.9] com precisão de 10 -9 [0.999999999, 11.400000001] Subtração: [-8.9, 0.0] - [0.0, 8.9] com precisão de 10 -9 [-0.000000001, 17.800000001] [0.000000000, 17.800000001] Multiplicação: [1.0, 3.0] * [4.0, 5.0] com precisão de 10 -9 [3.999999999, 15.000000001] Divisão: [4.0, 5.0] / [1.0, 2.5] com precisão de 10 -9 [1.599999999, 5.000000001][1.599999999, 5.000000006]
12
Validação Uso da extensão intervalar do Maple – intpakX (MapleInt) Resultados esperados foram obtidos Precisão alcançada similar ou superior aos da biblioteca de comparação
13
Trabalhos Futuros Expansão da biblioteca para conter operações: Logarítmicas Trigonométricas Estatísticas Uso da biblioteca em outros projetos Simulação de ambientes
14
Cooperação DIMAp/ UFRN Karlsruhe Wuppertal
15
Conclusões Versão atual da biblioteca validada com o MapleInt Resultados bastante satisfatórios Grande possibilidade de expansão da biblioteca
16
Referências http://www.cin.ufpe.br/~javaxsc http://www.dimap.ufrn.br/~java-xsc http://www.math.uni- wuppertal.de/~xsc/software/intpakX/ http://java.sun.com/
17
COMPUTAÇÃO CIENTÍFICA COM JAVA-XSC Bruno José Torres Fernandes Edmo Sérgio Ribeiro de Brito Marcília Andrade Campos Renato Viana Ferreira bjtf, esrb, mac,rvf[at]cin.ufpe.br
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.