SlideShare a Scribd company logo
1 of 38
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
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
Motivação
5
Aplicações
• Simulação computacional
• Reconhecimento de Padrões
• Otimização
• Predições
Situações que necessitam de Análise
Numérica como:
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
• CAS – Computer Algebra System (Mapple,
Mathematica, Derive, etc)
• Biblioteca de Funções e Classes (CLN,
GiNaC, JCalculus, JScience, Jakarta
Commons Math)
• Desenvolvimento proprietário
O que há disponível para Computação
Científica?
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 = (a+b)+c;
r = (a+c*b)/a; r = abs(c);
r = sqrt(c); r = sin(r);
r = gcd(a, 25);
r = pi((float_format_t)10000);
13
14
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.
GiNaC – GiNaC is Not CAS
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 << e.degree(x) << endl;
}
18
GiNaC – Exemplo Derivada
int main()
{
symbol x("x"), y("y");
ex P = pow(x, 5) + pow(x, 2) + y;
cout << P.diff(x,1) << endl;
// 5*x^4 + 2*x
cout << P.diff(x, 2) << endl;
// 20*x^3 + 2
cout << P.diff(y) << endl;
// 1 // -> 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
/* 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());
JCM – Exemplo Estatística
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 < values.length; i++) {
stat.increment(values[i]);
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
• 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.
JScience - Visão
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
• 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.
JScience - Módulos
30
JScience - Estruturas
30
31
JScience - Funções
31
32
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
JScience - Exemplos
33
// 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());
JScience - Exemplos
34
• 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
JScience - Módulos Previstos (2006)
35
• 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.
Resumo
36
• 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.
Conclusão
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/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
38
Perguntas ?
E por fim….

More Related Content

What's hot

As funcionalidades do winplot no ensino de funções
As funcionalidades do winplot no ensino de funçõesAs funcionalidades do winplot no ensino de funções
As funcionalidades do winplot no ensino de funções01698928
 
Utilizando o Winplot como recurso ao ensino da matemática
Utilizando o Winplot como recurso ao ensino da matemáticaUtilizando o Winplot como recurso ao ensino da matemática
Utilizando o Winplot como recurso ao ensino da matemáticaCarolina Farhat
 
Função quadrática - Exercícios II
Função quadrática - Exercícios IIFunção quadrática - Exercícios II
Função quadrática - Exercícios IIAna Tapadinhas
 
Estudo das Funções
Estudo das FunçõesEstudo das Funções
Estudo das FunçõesAnderson Dias
 
Funções de varias variáveis calculo 2
Funções de varias variáveis calculo 2Funções de varias variáveis calculo 2
Funções de varias variáveis calculo 2Fábio Kataoka
 
Função polinomial do 1º grau
Função polinomial do 1º grauFunção polinomial do 1º grau
Função polinomial do 1º graudiasvarella
 
FunçãO Do 1º E 2º Grau Autor Antonio Carlos Carneiro Barroso
FunçãO Do 1º  E 2º Grau Autor Antonio Carlos Carneiro BarrosoFunçãO Do 1º  E 2º Grau Autor Antonio Carlos Carneiro Barroso
FunçãO Do 1º E 2º Grau Autor Antonio Carlos Carneiro BarrosoAntonio Carneiro
 
Projeto final Informática educativa I - Michele Zacharias
Projeto final Informática educativa I - Michele ZachariasProjeto final Informática educativa I - Michele Zacharias
Projeto final Informática educativa I - Michele ZachariasMichele Zacharias Dos Santos
 
AULÃO DE MATEMÁTICA Spaece 2° dia
AULÃO DE MATEMÁTICA Spaece 2° diaAULÃO DE MATEMÁTICA Spaece 2° dia
AULÃO DE MATEMÁTICA Spaece 2° diaananiasdoamaral
 
Funcoes varias variaveis
Funcoes varias variaveisFuncoes varias variaveis
Funcoes varias variaveisFilomena Alves
 
Funções de 1º e 2º grau
Funções de 1º e 2º grauFunções de 1º e 2º grau
Funções de 1º e 2º grauGustavo Mercado
 
06 variavel-aleatoria
06 variavel-aleatoria06 variavel-aleatoria
06 variavel-aleatoria奈莫 里玛
 
Funcao Polinomial Do 1 Grau
Funcao Polinomial Do 1 GrauFuncao Polinomial Do 1 Grau
Funcao Polinomial Do 1 GrauAntonio Carneiro
 
Funcao Polinomial De 2 Grau
Funcao Polinomial De 2 GrauFuncao Polinomial De 2 Grau
Funcao Polinomial De 2 GrauAntonio Carneiro
 
07 logaritmo funçao
07 logaritmo funçao07 logaritmo funçao
07 logaritmo funçaoHelen Milene
 
matematica e midias
matematica e midiasmatematica e midias
matematica e midiasiraciva
 
Funçao quadratica-revisao 10º Ano
Funçao quadratica-revisao 10º AnoFunçao quadratica-revisao 10º Ano
Funçao quadratica-revisao 10º AnoAna Tapadinhas
 
Funções de duas variáveis reais e curvas de nível
Funções de duas variáveis reais e curvas de nívelFunções de duas variáveis reais e curvas de nível
Funções de duas variáveis reais e curvas de nívelFran Cristina
 

What's hot (20)

As funcionalidades do winplot no ensino de funções
As funcionalidades do winplot no ensino de funçõesAs funcionalidades do winplot no ensino de funções
As funcionalidades do winplot no ensino de funções
 
Utilizando o Winplot como recurso ao ensino da matemática
Utilizando o Winplot como recurso ao ensino da matemáticaUtilizando o Winplot como recurso ao ensino da matemática
Utilizando o Winplot como recurso ao ensino da matemática
 
Funções
FunçõesFunções
Funções
 
Função quadrática - Exercícios II
Função quadrática - Exercícios IIFunção quadrática - Exercícios II
Função quadrática - Exercícios II
 
Estudo das Funções
Estudo das FunçõesEstudo das Funções
Estudo das Funções
 
Funções de varias variáveis calculo 2
Funções de varias variáveis calculo 2Funções de varias variáveis calculo 2
Funções de varias variáveis calculo 2
 
Função polinomial do 1º grau
Função polinomial do 1º grauFunção polinomial do 1º grau
Função polinomial do 1º grau
 
FunçãO Do 1º E 2º Grau Autor Antonio Carlos Carneiro Barroso
FunçãO Do 1º  E 2º Grau Autor Antonio Carlos Carneiro BarrosoFunçãO Do 1º  E 2º Grau Autor Antonio Carlos Carneiro Barroso
FunçãO Do 1º E 2º Grau Autor Antonio Carlos Carneiro Barroso
 
Projeto final Informática educativa I - Michele Zacharias
Projeto final Informática educativa I - Michele ZachariasProjeto final Informática educativa I - Michele Zacharias
Projeto final Informática educativa I - Michele Zacharias
 
AULÃO DE MATEMÁTICA Spaece 2° dia
AULÃO DE MATEMÁTICA Spaece 2° diaAULÃO DE MATEMÁTICA Spaece 2° dia
AULÃO DE MATEMÁTICA Spaece 2° dia
 
Funcoes varias variaveis
Funcoes varias variaveisFuncoes varias variaveis
Funcoes varias variaveis
 
Funções de 1º e 2º grau
Funções de 1º e 2º grauFunções de 1º e 2º grau
Funções de 1º e 2º grau
 
06 variavel-aleatoria
06 variavel-aleatoria06 variavel-aleatoria
06 variavel-aleatoria
 
Funcao Polinomial Do 1 Grau
Funcao Polinomial Do 1 GrauFuncao Polinomial Do 1 Grau
Funcao Polinomial Do 1 Grau
 
Funcao Polinomial De 2 Grau
Funcao Polinomial De 2 GrauFuncao Polinomial De 2 Grau
Funcao Polinomial De 2 Grau
 
Funções
FunçõesFunções
Funções
 
07 logaritmo funçao
07 logaritmo funçao07 logaritmo funçao
07 logaritmo funçao
 
matematica e midias
matematica e midiasmatematica e midias
matematica e midias
 
Funçao quadratica-revisao 10º Ano
Funçao quadratica-revisao 10º AnoFunçao quadratica-revisao 10º Ano
Funçao quadratica-revisao 10º Ano
 
Funções de duas variáveis reais e curvas de nível
Funções de duas variáveis reais e curvas de nívelFunções de duas variáveis reais e curvas de nível
Funções de duas variáveis reais e curvas de nível
 

Similar to Computacao cientifica

[PRJ32][Christopher] Aula 14 – controle
[PRJ32][Christopher] Aula 14 – controle[PRJ32][Christopher] Aula 14 – controle
[PRJ32][Christopher] Aula 14 – controleChristopher Cerqueira
 
Algoritmos e Estruturas de Dados, edição de 2013/2014
Algoritmos e Estruturas de Dados, edição de 2013/2014Algoritmos e Estruturas de Dados, edição de 2013/2014
Algoritmos e Estruturas de Dados, edição de 2013/2014Pedro Guerreiro
 
Lógica de programação em ppt
Lógica de programação em pptLógica de programação em ppt
Lógica de programação em pptAndrei Bastos
 
Controle con matlab - material adicional 1.pdf
Controle con matlab - material adicional 1.pdfControle con matlab - material adicional 1.pdf
Controle con matlab - material adicional 1.pdfCarlosAlexisAlvarado4
 
[TDC2016] Apache SparkMLlib: Machine Learning na Prática
[TDC2016] Apache SparkMLlib:  Machine Learning na Prática[TDC2016] Apache SparkMLlib:  Machine Learning na Prática
[TDC2016] Apache SparkMLlib: Machine Learning na PráticaEiti Kimura
 
Apresentação Prof. Luis Fernando Martha e Rafael Rangel
Apresentação Prof. Luis Fernando Martha e Rafael Rangel Apresentação Prof. Luis Fernando Martha e Rafael Rangel
Apresentação Prof. Luis Fernando Martha e Rafael Rangel Opencadd Advanced Technology
 
Aula rotulação automática - Automatic tagging
Aula rotulação automática - Automatic taggingAula rotulação automática - Automatic tagging
Aula rotulação automática - Automatic taggingFelipe
 
Gestão de Projectos de SW OO Métricas Estimações e Planificações
Gestão de Projectos de SW OO Métricas Estimações e PlanificaçõesGestão de Projectos de SW OO Métricas Estimações e Planificações
Gestão de Projectos de SW OO Métricas Estimações e PlanificaçõesRogerio P C do Nascimento
 
Regressão Múltipla
Regressão MúltiplaRegressão Múltipla
Regressão MúltiplaFelipe Pontes
 
Notas de aula 1 cinematica mecanismos
Notas de aula 1 cinematica mecanismosNotas de aula 1 cinematica mecanismos
Notas de aula 1 cinematica mecanismosVanessa Santos
 
Elementary Circuits Enumeration in Graphs
Elementary Circuits Enumeration in GraphsElementary Circuits Enumeration in Graphs
Elementary Circuits Enumeration in GraphsLuiz Kill
 
Aula 13 - Matrizes
Aula 13 - MatrizesAula 13 - Matrizes
Aula 13 - MatrizesPacc UAB
 
Laboratório de Algoritmos Avançados: Busca Ternária
Laboratório de Algoritmos Avançados: Busca TernáriaLaboratório de Algoritmos Avançados: Busca Ternária
Laboratório de Algoritmos Avançados: Busca TernáriaNathan Hartmann
 

Similar to Computacao cientifica (20)

0001
00010001
0001
 
000003 complexidade
000003 complexidade000003 complexidade
000003 complexidade
 
[PRJ32][Christopher] Aula 14 – controle
[PRJ32][Christopher] Aula 14 – controle[PRJ32][Christopher] Aula 14 – controle
[PRJ32][Christopher] Aula 14 – controle
 
Algoritmos e Estruturas de Dados, edição de 2013/2014
Algoritmos e Estruturas de Dados, edição de 2013/2014Algoritmos e Estruturas de Dados, edição de 2013/2014
Algoritmos e Estruturas de Dados, edição de 2013/2014
 
Lógica de programação em ppt
Lógica de programação em pptLógica de programação em ppt
Lógica de programação em ppt
 
Controle con matlab - material adicional 1.pdf
Controle con matlab - material adicional 1.pdfControle con matlab - material adicional 1.pdf
Controle con matlab - material adicional 1.pdf
 
[TDC2016] Apache SparkMLlib: Machine Learning na Prática
[TDC2016] Apache SparkMLlib:  Machine Learning na Prática[TDC2016] Apache SparkMLlib:  Machine Learning na Prática
[TDC2016] Apache SparkMLlib: Machine Learning na Prática
 
Apresentação Prof. Luis Fernando Martha e Rafael Rangel
Apresentação Prof. Luis Fernando Martha e Rafael Rangel Apresentação Prof. Luis Fernando Martha e Rafael Rangel
Apresentação Prof. Luis Fernando Martha e Rafael Rangel
 
Elementos de Matemática Básica - Funções
Elementos de Matemática Básica - FunçõesElementos de Matemática Básica - Funções
Elementos de Matemática Básica - Funções
 
Aula rotulação automática - Automatic tagging
Aula rotulação automática - Automatic taggingAula rotulação automática - Automatic tagging
Aula rotulação automática - Automatic tagging
 
Gestão de Projectos de SW OO Métricas Estimações e Planificações
Gestão de Projectos de SW OO Métricas Estimações e PlanificaçõesGestão de Projectos de SW OO Métricas Estimações e Planificações
Gestão de Projectos de SW OO Métricas Estimações e Planificações
 
Mini curso-prof-peternelli
Mini curso-prof-peternelliMini curso-prof-peternelli
Mini curso-prof-peternelli
 
CubeSats e Software Embarcado
CubeSats e Software EmbarcadoCubeSats e Software Embarcado
CubeSats e Software Embarcado
 
Analise Algoritmos
Analise AlgoritmosAnalise Algoritmos
Analise Algoritmos
 
Aula 3-lógica.pptx
Aula 3-lógica.pptxAula 3-lógica.pptx
Aula 3-lógica.pptx
 
Regressão Múltipla
Regressão MúltiplaRegressão Múltipla
Regressão Múltipla
 
Notas de aula 1 cinematica mecanismos
Notas de aula 1 cinematica mecanismosNotas de aula 1 cinematica mecanismos
Notas de aula 1 cinematica mecanismos
 
Elementary Circuits Enumeration in Graphs
Elementary Circuits Enumeration in GraphsElementary Circuits Enumeration in Graphs
Elementary Circuits Enumeration in Graphs
 
Aula 13 - Matrizes
Aula 13 - MatrizesAula 13 - Matrizes
Aula 13 - Matrizes
 
Laboratório de Algoritmos Avançados: Busca Ternária
Laboratório de Algoritmos Avançados: Busca TernáriaLaboratório de Algoritmos Avançados: Busca Ternária
Laboratório de Algoritmos Avançados: Busca Ternária
 

More from Rigo Rodrigues

More from Rigo Rodrigues (20)

Excerto livro-ca-excel2013
Excerto livro-ca-excel2013Excerto livro-ca-excel2013
Excerto livro-ca-excel2013
 
Curso de office
Curso de officeCurso de office
Curso de office
 
Módulo 3-estrutura-da-terra
Módulo 3-estrutura-da-terraMódulo 3-estrutura-da-terra
Módulo 3-estrutura-da-terra
 
Ed78 suplemento economia
Ed78 suplemento economiaEd78 suplemento economia
Ed78 suplemento economia
 
Estrutura celulas
Estrutura celulasEstrutura celulas
Estrutura celulas
 
06 plantas tecidos definitivos - sinteses
06   plantas tecidos definitivos - sinteses06   plantas tecidos definitivos - sinteses
06 plantas tecidos definitivos - sinteses
 
Intro infor
Intro inforIntro infor
Intro infor
 
Informatica na-educacao-ferramenta-de-apoio-ao-ensino-e-de-estruturacao-do-pr...
Informatica na-educacao-ferramenta-de-apoio-ao-ensino-e-de-estruturacao-do-pr...Informatica na-educacao-ferramenta-de-apoio-ao-ensino-e-de-estruturacao-do-pr...
Informatica na-educacao-ferramenta-de-apoio-ao-ensino-e-de-estruturacao-do-pr...
 
Comun65
Comun65Comun65
Comun65
 
Artigo1
Artigo1Artigo1
Artigo1
 
18 10 o-uso_da_informatica_na_educacao
18 10 o-uso_da_informatica_na_educacao18 10 o-uso_da_informatica_na_educacao
18 10 o-uso_da_informatica_na_educacao
 
4 c
4 c4 c
4 c
 
Tcc
TccTcc
Tcc
 
Si
SiSi
Si
 
Introduoinformtica mdulo6
Introduoinformtica mdulo6Introduoinformtica mdulo6
Introduoinformtica mdulo6
 
Constituio bsica-de-um-sistema-informtico-1208985196396520-8
Constituio bsica-de-um-sistema-informtico-1208985196396520-8Constituio bsica-de-um-sistema-informtico-1208985196396520-8
Constituio bsica-de-um-sistema-informtico-1208985196396520-8
 
Comun65
Comun65Comun65
Comun65
 
Anpuh.s23.0077
Anpuh.s23.0077Anpuh.s23.0077
Anpuh.s23.0077
 
1223038698 g8jrf9au8nl18mp8
1223038698 g8jrf9au8nl18mp81223038698 g8jrf9au8nl18mp8
1223038698 g8jrf9au8nl18mp8
 
3180
31803180
3180
 

Computacao cientifica

  • 1. 1 POO para Computação Científica MAC-5715: Tópicos de Programação Orientada a Objetos Paulo Machado Wellington Pinheiro
  • 2. 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. 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. 4 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 Motivação
  • 5. 5 Aplicações • Simulação computacional • Reconhecimento de Padrões • Otimização • Predições Situações que necessitam de Análise Numérica como:
  • 6. 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. 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. 8 Ferramentas & Bibliotecas • CAS – Computer Algebra System (Mapple, Mathematica, Derive, etc) • Biblioteca de Funções e Classes (CLN, GiNaC, JCalculus, JScience, Jakarta Commons Math) • Desenvolvimento proprietário O que há disponível para Computação Científica? 8
  • 9. 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. 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. 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. 12 CLN – Class Library for Numbers 12
  • 13. 13 CLN – Class Library for Numbers cl_I a = 5; cl_I b = 2; cl_I c = -3; cl_F r = (a+b)+c; r = (a+c*b)/a; r = abs(c); r = sqrt(c); r = sin(r); r = gcd(a, 25); r = pi((float_format_t)10000); 13
  • 14. 14 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. GiNaC – GiNaC is Not CAS 14
  • 15. 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. 16 GiNaC – Funções e Símbolos 16
  • 17. 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 << e.degree(x) << endl; }
  • 18. 18 GiNaC – Exemplo Derivada int main() { symbol x("x"), y("y"); ex P = pow(x, 5) + pow(x, 2) + y; cout << P.diff(x,1) << endl; // 5*x^4 + 2*x cout << P.diff(x, 2) << endl; // 20*x^3 + 2 cout << P.diff(y) << endl; // 1 // -> 1 }
  • 19. 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. 20 JCM – Representação de Funções 20
  • 22. 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. 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. 24 /* 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()); JCM – Exemplo Estatística
  • 25. 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 < values.length; i++) { stat.increment(values[i]); System.out.println("current mean = " + stat.getResult()); } stat.clear(); System.out.println("mean after clear is NaN = " + stat.getResult());
  • 26. 26 POO para Computação Científica JScience
  • 27. 27 • 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. JScience - Visão
  • 28. 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. 29 • 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. JScience - Módulos
  • 32. 32 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 JScience - Exemplos
  • 33. 33 // 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()); JScience - Exemplos
  • 34. 34 • 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 JScience - Módulos Previstos (2006)
  • 35. 35 • 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. Resumo
  • 36. 36 • 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. Conclusão
  • 37. 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/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