POO para Computa - PowerPoint PPT Presentation

About This Presentation
Title:

POO para Computa

Description:

Title: POO para Computa o Cient fica Author: Wellington Pinheiro Description: rea de t tulo lil s e borda esquerda com tr s elementos de tom azul-esverdeado ... – PowerPoint PPT presentation

Number of Views:81
Avg rating:3.0/5.0
Slides: 39
Provided by: Wellingto2
Category:
Tags: poo | computa | para

less

Transcript and Presenter's Notes

Title: POO para Computa


1
POO para Computação Científica
  • MAC-5715 Tópicos de Programação
  • Orientada a Objetos
  • Paulo Machado
  • Wellington Pinheiro

2
Assuntos Abordados
  • Aplicações da Computação Científica
  • Bibliotecas para Computação Científica
  • Por que OO para Computação Científica
  • Algumas Bibliotecas
  • JScience
  • Exemplos
  • Resumo
  • Conclusão

3
O que é Computação Científica?
  • Definição da Wikipedia
  • Computação científica (ou ciência computacional)
    é o campo de estudo interessado na construção de
    modelos matemáticos e técnicas de soluções
    numéricas utilizando computadores para analisar e
    resolver problemas científicos e de engenharia.

3
4
Motivação
  • Por que OO e Computação Científica ?
  • Relação entre OO e Computação Científica 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

5
Aplicações
Situações que necessitam de Análise Numérica
como
  • Simulação computacional
  • Reconhecimento de Padrões
  • Otimização
  • Predições

6
Áreas que Utilizam Computação Científica
  • Modelagem Financeira
  • Sistemas de Informações Geográficos
  • Química Computacional
  • Bio-Computação
  • Física Matemática
  • Mecânica Computacional
  • várias outras

6
7
OO e a Computação Científica
  • Por que utilizar OO na Computação Científica?
  • Mais intuitivo para quem usa
  • Melhor adaptação de estruturas matemáticas
  • Encapsulamento garante que os dados não estejam
    espalhados
  • Facilidade de personalizações através de
    extensões ou composições

7
8
Ferramentas Bibliotecas
O que há disponível para Computação Científica?
  • CAS Computer Algebra System (Mapple,
    Mathematica, Derive, etc)
  • Biblioteca de Funções e Classes (CLN, GiNaC,
    JCalculus, JScience, Jakarta Commons Math)
  • Desenvolvimento proprietário

8
9
Características de Bibliotecas
  • Representam conceitos matemáticos
  • Capazes de resolver alguns tipos de problemas
    matemáticos
  • Podem ser integrados em aplicações
  • São otimizados
  • Permitem customizações
  • Existem soluções de Código Aberto

9
10
Bibliotecas
  • Bibliotecas Open Source disponíveis
  • CNL Class Library For Numbers
  • GiNaC GiNaC is Not a CAS
  • JScience
  • Jakarta Math Commons
  • O foco principal dessa apresentação será o
    JScience.

10
11
CLN Class Library for Numbers
  • CLN tem as seguintes características
  • Escrita em C
  • Define vários tipos de dados
  • Disponibiliza um bom conjuntos de funções
    elementares, lógicas e trancedentais
  • Provê mecanismo de Coleta de Lixo

11
12
CLN Class Library for Numbers

12
13
CLN Class Library for Numbers
  • cl_I a 5
  • cl_I b 2
  • cl_I c -3
  • cl_F r (ab)c
  • r (acb)/a r abs(c)
  • r sqrt(c) r sin(r)
  • r gcd(a, 25)
  • r pi((float_format_t)10000)

13
14
GiNaC GiNaC is Not CAS
  • GiNaC tem as seguintes características
  • Escrito em C
  • Estende as capacidades do C através de
    manipulações simbólicas
  • Construído em cima do CLN
  • Suporte para funções polinomiais e racionais
  • Disponibiliza várias outras funções
  • Possui ambiente para emular um CAS ginsh.

14
15
GiNaC GiNaC is Not CAS
  • Funcionalidades do GiNaC
  • Expressões e Avaliação Automática
  • Definição de Símbolos
  • Contêineres para Somas, Produtos e Potências
  • Definições de Listas
  • Integração e Diferenciação
  • Suporte ao uso de Matrizes
  • E várias outras.

16
GiNaC Funções e Símbolos
16
17
GiNaC Exemplo Símbolo
  • ex f(int n, const ex x)
  • return pow(x, n)
  • int main()
  • symbol x("x")
  • symbol. ex e f(6, x)
  • cout ltlt e.degree(x) ltlt endl

18
GiNaC Exemplo Derivada
  • int main()
  • symbol x("x"), y("y")
  • ex P pow(x, 5) pow(x, 2) y
  • cout ltlt P.diff(x,1) ltlt endl
  • // 5x4 2x
  • cout ltlt P.diff(x, 2) ltlt endl
  • // 20x3 2
  • cout ltlt P.diff(y) ltlt endl
  • // 1 // -gt 1

19
Jakarta Commons Math (JCM)
  • Jakarta Commons Math tem as características
  • Escrito em Java
  • Possui uma representação OO intuitiva dos
    conceitos matemáticos
  • Disponibiliza funcionalidades mais poderosas
    (como resolução de sistemas lineares e análise
    matemática)
  • Abrange área de estatística
  • Faz parte do projeto Jakarta do Apache Group

19
20
JCM Representação de Funções
20
21
JCM Solucionadores
21
22
JCM Exemplo Matrizes
  • double coef 1d,1d, 1d,-1d
  • double s 2,0
  • BigMatrixImpl m
  • new BigMatrixImpl(coef)
  • BigDecimal x m.solve(s)
  • for (BigDecimal d x)
  • System.out.println(d.doubleValue()
  • "\t")

22
23
JCM Exemplo Raízes
  • try
  • UnivariateRealFunction f
  • new PolynomialFunction(new double 0, 1, 1,
    1)
  • UnivariateRealSolver solver new
    BisectionSolver(f)
  • System.out.println(Math.round(solver.solve(-1,
    1)))
  • catch (FunctionEvaluationException ex)
  • System.out.println(
  • "\nOcorreu um erro avaliando a expressão.")
  • System.exit(-1)
  • catch (ConvergenceException ex)
  • System.out.println(
  • "\nExpressão não tem uma raíz no "
  • "intervalo definido.")
  • System.exit(-1)

23
24
JCM Exemplo Estatística
  • / evaluation approach /
  • double values
  • new double 1, 2, 3, 4, 5
  • UnivariateStatistic stat new Mean()
  • System.out.println("mean "
  • stat.evaluate(values))
  • stat.clear()
  • System.out.println(
  • "mean after clear is NaN "
  • stat.getResult())

25
JCM Exemplo Estatística
  • / incremental approach /
  • double values new double 1, 2, 3, 4, 5
  • StorelessUnivariateStatistic stat new Mean()
  • System.out.println("mean before adding a value is
  • NaN " stat.getResult())
  • for (int i 0 i lt values.length i)
  • stat.increment(valuesi)
  • System.out.println("current mean "
  • stat.getResult())
  • stat.clear()
  • System.out.println("mean after clear is NaN "
  • stat.getResult())

26
POO para Computação Científica
JScience
27
JScience - Visão
  • Prover a mais compreensível biblioteca Java para
    a comunidade científica
  • Criar sinergia entre todas as ciências pela
    integração do conhecimento em uma mesma
    estrutura
  • Prover serviços de qualidade para cálculo
    científico.

28
JScience - Sobre
  • Projeto de código aberto
  • Primeira versão lançada em 26/01/2005
  • Versão atual adere as especificações JSR 275
    Units Specification do JCP
  • Mais de 70 membros registrados que o utilizam
    (entre eles o projeto MathEclipse)
  • Projeto em constante evolução
  • Tempo médio de lançamento de versões 2 meses

29
JScience - Módulos
  • Mapeamento de estruturas matemáticas
  • Sistema de coordenadas para aplicações
    geográficas
  • Álgebra linear
  • Funções
  • Números
  • Medidas e unidades de medida
  • Modelos físicos
  • Sistema monetário.

30
JScience - Estruturas
30
31
JScience - Funções
31
32
JScience - Exemplos
  • import static org.jscience.physics.units.SI.
  • MeasureltElectricResistancegt R1
    Measure.valueOf(100, 1, OHM)
  • // 1 precision.
  • MeasureltElectricResistancegt R2
    Measure.valueOf(300, 3, OHM)
  • // 1 precision.
  • MeasureltElectricPotentialgt U0
    Measure.valueOf(28, 0.01, VOLT)
  • // 0.01 V fluctuation.
  • MatrixltMeasuregt 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
  • )
  • VectorltMeasuregt B Vector.valueOf((Measure)U0,
  • Measure.valueOf(0, VOLT), Measure.valueOf(0,
    VOLT))
  • VectorltMeasuregt X A.solve(B)
  • System.out.println(X)
  • System.out.println(X.get(2).to(MILLI(AMPERE)))

33
JScience - Exemplos
  • // Define duas variaveis locais (x, y).
  • VariableltComplexgt varX new
  • Variable.LocalltComplexgt("x")
  • // f(x) ix² 2x 1
  • PolynomialltComplexgt x
  • Polynomial.valueOf(Complex.ONE, varX)
  • PolynomialltComplexgt 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())

34
JScience - Módulos Previstos (2006)
  • Transformada de Fourier
  • Física Nuclear
  • Integração
  • Algoritmos genéticos
  • Redes Neurais
  • Geradores de massa de dados aleatórios
  • Calendários
  • Elementos Químicos
  • Biologia Molecular

35
Resumo
  • CLN é vastamente utilizada, dispõe de mecanismos
    interessantes porém sua biblioteca de funções é
    limitada
  • GiNaC disponibiliza um mecanismo interessante
    (manipulação simbólica) aliado a uma biblioteca
    potente porém é complexa na sua instalação e
    utilização
  • Jakarta Commons Math é muito potente, bem
    planejada porém não disponibiliza uma gama muito
    grande de funcionalidades
  • JScience possui uma arquitetura estável e baseada
    em definições matemáticas. Entretanto, possui
    poucas classes implementadas.

36
Conclusão
  • Ramo pouco evoluído
  • Esforços estão na direção de construir
    bibliotecas de cálculo científico
  • Nenhum padrão de projeto criado
  • Tópico interessante e vasto para desenvolvimento
    de teses.

37
Referências
  • 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/co
    mmons/math/
  • Java Community Process JSR 275
  • http//www.jcp.org/en/jsr/detail?id275
  • MathEclipse
  • http//www.plog4u.org/index.php/Using_MathEclipse

38
E por fim.
  • Perguntas ?
Write a Comment
User Comments (0)
About PowerShow.com