Beruflich Dokumente
Kultur Dokumente
Assuntos Abordados
Aplicaes da Computao Cientfica Bibliotecas para Computao Cientfica Por que OO para Computao Cientfica Algumas Bibliotecas JScience Exemplos Resumo Concluso
2
Motivao
Por que OO e Computao Cientfica ? Relao entre OO e Computao Cientfica ainda pouco explorada Grande nfase no desenvolvimento utilizando Fortran (John Backus 1954-1957) Algum desenvolvimento feito em Linguagem C Muito pouco utilizando C++ Quase nada feito em Java
4
Aplicaes
Situaes que necessitam de Anlise Numrica como: Simulao computacional Reconhecimento de Padres Otimizao Predies
OO e a Computao Cientfica
Por que utilizar OO na Computao Cientfica? Mais intuitivo para quem usa Melhor adaptao de estruturas matemticas Encapsulamento garante que os dados no estejam espalhados Facilidade de personalizaes atravs de extenses ou composies
7
Caractersticas de Bibliotecas
Representam conceitos matemticos Capazes de resolver alguns tipos de problemas matemticos Podem ser integrados em aplicaes So otimizados Permitem customizaes Existem solues de Cdigo Aberto
9
Bibliotecas
Bibliotecas Open Source disponveis: CNL Class Library For Numbers GiNaC GiNaC is Not a CAS JScience Jakarta Math Commons O foco principal dessa apresentao ser o JScience.
10
12
16
20
JCM Solucionadores
21
23
24
JScience
JScience - Viso
Prover a mais compreensvel biblioteca Java para a comunidade cientfica; Criar sinergia entre todas as cincias pela integrao do conhecimento em uma mesma estrutura; Prover servios de qualidade para clculo cientfico.
27
JScience - Sobre
Projeto de cdigo aberto Primeira verso lanada em 26/01/2005 Verso atual adere as especificaes JSR 275: Units Specification do JCP Mais de 70 membros registrados que o utilizam (entre eles o projeto MathEclipse) Projeto em constante evoluo:
Tempo mdio de lanamento de verses: 2 meses
28
JScience - Mdulos
Mapeamento de estruturas matemticas Sistema de coordenadas para aplicaes geogrficas; lgebra linear; Funes; Nmeros; Medidas e unidades de medida; Modelos fsicos; Sistema monetrio.
29
JScience - Estruturas
30
JScience - Funes
31
JScience - Exemplos
import static org.jscience.physics.units.SI.*; Measure<ElectricResistance> R1 = Measure.valueOf(100, 1, OHM); // 1% precision. Measure<ElectricResistance> R2 = Measure.valueOf(300, 3, OHM); // 1% precision. Measure<ElectricPotential> U0 = Measure.valueOf(28, 0.01, VOLT); // 0.01 V fluctuation. Matrix<Measure> A = Matrix.valueOf(new Measure[][]{ { Measure.ONE , Measure.ONE , Measure.valueOf(0, OHM)}, { Measure.ONE.opposite() , Measure.ZERO , R1}, { Measure.ZERO , Measure.ONE.opposite(), R2}} ); Vector<Measure> B = Vector.valueOf((Measure)U0, Measure.valueOf(0, VOLT), Measure.valueOf(0, VOLT)); Vector<Measure> X = A.solve(B); System.out.println(X); System.out.println(X.get(2).to(MILLI(AMPERE))); > {(7.0 1.6E-1) V, (21.0 1.5E-1) V, (7.0E-2 7.3E-4) V;} > (70.0 7.3E-1) mA
32
JScience - Exemplos
// Define duas variaveis locais (x, y). Variable<Complex> varX = new Variable.Local<Complex>("x"); // f(x) = ix + 2x + 1 Polynomial<Complex> x = Polynomial.valueOf(Complex.ONE, varX); Polynomial<Complex> fx = x.pow(2).times(Complex.I).plus( x.times(Complex.valueOf(2, 0)).plus(Complex.ONE)); System.out.println(fx); System.out.println(fx.pow(2)); System.out.println(fx.differentiate(varX)); System.out.println(fx.integrate(varY)); System.out.println(fx.compose(fx)); // Calcula a expressao varX.set(Complex.valueOf(2, 3)); System.out.println(fx.evaluate());
33
Resumo
CLN vastamente utilizada, dispe de mecanismos interessantes porm sua biblioteca de funes limitada; GiNaC disponibiliza um mecanismo interessante (manipulao simblica) aliado a uma biblioteca potente porm complexa na sua instalao e utilizao; Jakarta Commons Math muito potente, bem planejada porm no disponibiliza uma gama muito grande de funcionalidades; JScience possui uma arquitetura estvel e baseada em definies matemticas. Entretanto, possui poucas classes implementadas.
35
Concluso
Ramo pouco evoludo; Esforos esto na direo de construir bibliotecas de clculo cientfico; Nenhum padro de projeto criado; Tpico interessante e vasto para desenvolvimento de teses.
36
Referncias
Wikipedia: http://en.wikipedia.org/wiki/Scientific_computing JScience: http://jscience.org/ https://jscience.dev.java.net/ GiNaC: http://www.ginac.de/ CLN: http://www.ginac.de/CLN/ Jakarta Commons Math: http://jakarta.apache.org/commons/math/ Java Community Process JSR 275: http://www.jcp.org/en/jsr/detail?id=275 MathEclipse http://www.plog4u.org/index.php/Using_MathEclipse
E por fim.
Perguntas ?
38