SlideShare uma empresa Scribd logo
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….

Mais conteúdo relacionado

PPT
PPT
Função do 2º grau em execução
PPTX
Função polinomial do 2°grau
PPTX
Matemática no winplot - sandra de souza
PPTX
Função quadrática no Geogebra
PDF
Aula1 funcaoquadrática
PPTX
Projeto Final Meireluce
PDF
Estudo de Funções com o Software Winplot
Função do 2º grau em execução
Função polinomial do 2°grau
Matemática no winplot - sandra de souza
Função quadrática no Geogebra
Aula1 funcaoquadrática
Projeto Final Meireluce
Estudo de Funções com o Software Winplot

Mais procurados (20)

PPTX
As funcionalidades do winplot no ensino de funções
DOC
Utilizando o Winplot como recurso ao ensino da matemática
PDF
Funções
DOC
Função quadrática - Exercícios II
PPTX
Estudo das Funções
PPT
Funções de varias variáveis calculo 2
PPT
Função polinomial do 1º grau
PPT
FunçãO Do 1º E 2º Grau Autor Antonio Carlos Carneiro Barroso
PPTX
Projeto final Informática educativa I - Michele Zacharias
PPTX
AULÃO DE MATEMÁTICA Spaece 2° dia
PDF
Funcoes varias variaveis
PPTX
Funções de 1º e 2º grau
PDF
06 variavel-aleatoria
PDF
Funcao Polinomial Do 1 Grau
PDF
Funcao Polinomial De 2 Grau
PPT
Funções
PPT
07 logaritmo funçao
PPT
matematica e midias
DOCX
Funçao quadratica-revisao 10º Ano
PPTX
Funções de duas variáveis reais e curvas de nível
As funcionalidades do winplot no ensino de funções
Utilizando o Winplot como recurso ao ensino da matemática
Funções
Função quadrática - Exercícios II
Estudo das Funções
Funções de varias variáveis calculo 2
Função polinomial do 1º grau
FunçãO Do 1º E 2º Grau Autor Antonio Carlos Carneiro Barroso
Projeto final Informática educativa I - Michele Zacharias
AULÃO DE MATEMÁTICA Spaece 2° dia
Funcoes varias variaveis
Funções de 1º e 2º grau
06 variavel-aleatoria
Funcao Polinomial Do 1 Grau
Funcao Polinomial De 2 Grau
Funções
07 logaritmo funçao
matematica e midias
Funçao quadratica-revisao 10º Ano
Funções de duas variáveis reais e curvas de nível
Anúncio

Semelhante a Computacao cientifica (20)

PDF
Redes neurais com matlab
PPTX
Algoritmos - Aula 07 A - Vetores
PDF
47612195 apostila-de-scilab
PDF
Capitulo 1scilab
PPT
Matemática e Data Science
PDF
apostila Algoritmos.pdf
PPT
Standard ML / CPN ML
PDF
Caminhos Mínimos: Dijkstra e Floyd-Warshall
PPTX
AulaProgramacao6LingC_MatrizesExemplosERE.pptx
PDF
Scilab estatistica
DOCX
Programação Estruturada 2 - Aula 02 - Código Fonte
PDF
Curs omatlab52
PDF
Golang e data science oficial v1
PPTX
Cálculo Numérico - Aula 02: Introdução ao SCILAB
PDF
Curso basico matlab
PDF
Curso basico matlab
PDF
Apostila curso matlab
PDF
Alg aula 06 - vetores tp1
PDF
Curso estatistica descritiva no r
PDF
Conceitos básicos de Software R
Redes neurais com matlab
Algoritmos - Aula 07 A - Vetores
47612195 apostila-de-scilab
Capitulo 1scilab
Matemática e Data Science
apostila Algoritmos.pdf
Standard ML / CPN ML
Caminhos Mínimos: Dijkstra e Floyd-Warshall
AulaProgramacao6LingC_MatrizesExemplosERE.pptx
Scilab estatistica
Programação Estruturada 2 - Aula 02 - Código Fonte
Curs omatlab52
Golang e data science oficial v1
Cálculo Numérico - Aula 02: Introdução ao SCILAB
Curso basico matlab
Curso basico matlab
Apostila curso matlab
Alg aula 06 - vetores tp1
Curso estatistica descritiva no r
Conceitos básicos de Software R
Anúncio

Mais de Rigo Rodrigues (20)

PDF
Excerto livro-ca-excel2013
PDF
Curso de office
PDF
Módulo 3-estrutura-da-terra
PDF
Ed78 suplemento economia
PDF
Estrutura celulas
PDF
06 plantas tecidos definitivos - sinteses
PDF
Intro infor
PDF
Informatica na-educacao-ferramenta-de-apoio-ao-ensino-e-de-estruturacao-do-pr...
PDF
PDF
PDF
18 10 o-uso_da_informatica_na_educacao
PPTX
Introduoinformtica mdulo6
PPS
Constituio bsica-de-um-sistema-informtico-1208985196396520-8
PDF
PDF
Anpuh.s23.0077
PDF
1223038698 g8jrf9au8nl18mp8
Excerto livro-ca-excel2013
Curso de office
Módulo 3-estrutura-da-terra
Ed78 suplemento economia
Estrutura celulas
06 plantas tecidos definitivos - sinteses
Intro infor
Informatica na-educacao-ferramenta-de-apoio-ao-ensino-e-de-estruturacao-do-pr...
18 10 o-uso_da_informatica_na_educacao
Introduoinformtica mdulo6
Constituio bsica-de-um-sistema-informtico-1208985196396520-8
Anpuh.s23.0077
1223038698 g8jrf9au8nl18mp8

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