360 likes | 481 Views
Métodos e Software Numéricos. Software Matemático. Prof.: José Eustáquio Rangel de Queiroz rangel@dsc.ufcg.edu.br rangeldequeiroz@gmail.com. Carga Horária: 60 horas. Considerações Iniciais I. Ciência Computacional ( Computational Science )
E N D
Métodos e Software Numéricos Software Matemático Prof.:José Eustáquio Rangel de Queiroz rangel@dsc.ufcg.edu.br rangeldequeiroz@gmail.com Carga Horária:60 horas
Considerações Iniciais I • Ciência Computacional (Computational Science) • Busca pelo entendimento de processos científicos mediante o uso de métodos matemáticos em computadores
Considerações Iniciais II • Problemas simulados • Experimentos perigosos para ser investigados em um laboratórios • Fenômenos que ocorrem muito rápida ou lentamente • Experimentos de alto custo • Eventos que só podem ser solucionados a partir de abordagens computacionais • Visualização de fenômenos temporais • Experimentos do tipo ‘o que-se’ • Mineração de dados em bases de dados muito extensas
Considerações Iniciais III Arquitetura (Ambiente Computacional) Computação Experimentação Modelo Teoria Aplicação Algoritmo (Ciência) (Modelo Matemático) • Investigação no âmbito da Ciência Computacional
Considerações Iniciais IV • Investigação no âmbito da Ciência Computacional • Aplicação • Problema científico de interesse e componentes de tal problema que se deseje estudar.
Considerações Iniciais V • Investigação no âmbito da Ciência Computacional • Algoritmo • Representação numérica/matemática do problema, incluindo quaisquer métodos ou receitas numéricas empregadas para solucionar o algoritmo.
Considerações Iniciais VI • Investigação no âmbito da Ciência Computacional • Arquitetura • Plataforma computacional e ferramenta(s) de software usadas para computar um conjunto de soluções para o algoritmo.
Tecnologia a Serviço do Usuário I • Similaridade usual da estruturação matemática de problemas • Física e Engenharias • Formulações matemáticas • Conjuntos lineares de equações • Conjuntos de equações não lineares • Sistemas de equações diferenciais • Utilização dos mesmos métodos matemáticos para a resolução dos problemas numéricos de interesse, independentemente da área de aplicação
Tecnologia a Serviço do Usuário II • Extensa aplicação dos métodos analíticos e numéricos em nível computacional • Software matemático e de modelagem/ simulação • Numérico e/ou simbólico
Tecnologia a Serviço do Usuário III • Uso cada vez mais efetivo de sistemas computacionais em todos os níveis do conhecimento humano. • Necessidade de aplicações de software que apóiem o usuário na resolução de problemas das mais diferentes naturezas. • Diversidade de perfis de usuários • Faixa etária • Propósito de uso • Experiência profissional • Frequência de uso
Tecnologia a Serviço do Usuário IV • Uso de sistemas computacionais ou conhecimento de aplicações de interesse não é, per si, suficiente. • Propósito-chave Suporte • Processos de ensino-aprendizagem; • Processos de resolução de problemas reais. • Geração de agentes facilitadores da aprendizagem, dentro dos objetivos estabelecidos pelo usuário
Tecnologia a Serviço do Usuário III • Premissas • Eficiência • Eficácia • Satisfação • Competitividade de um mercado globalizado • Padrões internacionais para a construção de software • International Organization for Standardization (ISO)
Objetivos do Software Matemático Obtenção de soluções aproximadas para formulações matemáticas associadas a problemas do mundo real; Obtenção de soluções para problemas científicos mediante o emprego de métodos numéricos fundamentados em modelos matemáticos; Suporte ao usuário no processamento numérico associado a diversas aplicações, e.g., processamento digital de imagens, automação industrial, bioinformática, geoprocessamento.
Software Matemático Genérico • Aplicações standalone • Planilhas eletrônicas • Software para computação simbólica • Software numérico • Pacotes estatísticos • Existência de diversas “caixas de ferramentas” para as 3 primeiras categorias de programas • Existência de diversas bibliotecas de subrotinas para diversos propósitos
Planilhas Eletrônicas I • Lotus 1-2-3 • Primeiro programa disponível publicamente para combinar gráficos, funções de planilha e gerência de dados (http://www-1.ibm.com/software/lotus/) • Grande utilização no final dos anos 1980 e início dos anos 1990 • Quattro Pro • Programa desenvolvido originalmente pela Borland, atualmente vendido pela Corel (pacote WordPerfectOffice) http://www.corel.com/)
Planilhas Eletrônicas II • Excel (pacote MS-Office) • Inclusão de um programa para a otimização do ambiente para problemas de pequeno porte (solver) • Instalação não automática (Tools Add-ins Solver Add-in) • Possibilidade de inclusão de solvers de problemas de otimização de grande porte • Funcionamento superior ao do Solver do Excel (http://www.solver.com/) • Erros específicos associados à acurácia, problemas com datas e visualização (Excel 2007) (http://office.microsoft.com/)
Planilhas Eletrônicas III • Calc (pacote OpenOffice) • Comparável ao MS-Excel em vários aspectos e compatível do ponto de vista de leitura de arquivos .xls • Vantagem: Softwarelivre (http://www.openoffice.org/) • Existência de um otimizador (solver), porém ainda em fase de desenvolvimento (não funciona corretamente para problemas não lineares)
Planilhas Eletrônicas IV • Excel e Calc • Utilidade e rapidez em aplicações simples • Execução lenta de macros, visto que o código é interpretado a cada chamada • Necessidade de edição (forçada) de macros para cada versão do Excel (problemas residuais com VBA e/ou configurações internacionais)
Software para Computação Simbólica I • Computação Algébrica • Domínio da Computação que trata da manipulação de expressões matemáticas em forma simbólica • Fatoração de polinômios, simplificação de funções racionais, resolução de equações, integração e diferenciação em forma simbólica, e cálculo matricial, dentre outras • Grande utilidade no ensino, na pesquisa e em projetos em diferentes áreas da engenharia
Software para Computação Simbólica II • Sistema para Computação Algébrica (CAS) I • Software que permite manipular expressões matemáticas simbólicas • Precisão aritmética arbitrária (bignum) • Motor de manipulação simbólica (simplificação de expressões algébricas, diferenciação e integração de funções e resolução de equações) • Facilidades gráficas (geração de gráficos de funções, em geral 2D e 3D)
Software para Computação Simbólica III • Sistema para Computação Algébrica (CAS) II • Software que permite manipular expressões matemáticas simbólicas • Subsistema de álgebra linear (cálculo matricial e resolução de sistemas de equações lineares) • Linguagem de programação de alto nível (implementação de algoritmos) • Subsistema de composição (formulação de expressões matemáticas)
Software para Computação Simbólica IV • Sistema para Computação Algébrica (CAS) III • Início da pesquisa em computação simbólica Desenvolvimento e comercialização do Macsyma (1968 a 1982) no MIT, como parte do Projeto MAC • Macsyma (Mac’s symbolic manipulator)
Software para Computação Simbólica V • Sistema para Computação Algébrica (CAS) IV • Macsyma (Mac’s symbolic manipulator) • Escrito em Maclisp (dialeto de Lisp) para computadores PDP-6 e PDP-10 (também trabalhava nos sistemas operacionais Multics e nas Máquinas Lisp) • Um dos primeiros sistemas especialistas baseado em conhecimento e um dos maiores programas (talvez o maior) escrito em Lisp de todos os tempos
Software para Computação Simbólica VI • Sistema para Computação Algébrica (CAS) V • Muitas das idéias concebidas para o Macsyma são atualmente usadas em pacotes atuais • Maxima (baseado na versão de 1982 do DOE) • Reduce • Maple • Mathematica • MuMATH • SAGE http://en.wikipedia.org/wiki/Comparison_of_computer_algebra_systems http://en.wikipedia.org/wiki/Comparison_of_computer_algebra_systems
Software Numérico I • Grande parte dos pacotes de software numérico também executa computação simbólica e possui funcionalidades gráficas (pelo menos em algum nível) • Programas incluem uma extensa coleção de funções • Resolução de equações • Processamento matricial numérico • Integração e diferenciação numérica • Interpolação e ajuste de curvas http://en.wikipedia.org/wiki/List_of_numerical_analysis_software http://en.wikipedia.org/wiki/List_of_numerical_analysis_software
Software Numérico II • Programas integrados em coleções de arquivos denominadas caixas de ferramentas (toolboxes) • Rotinas e funções destinadas a propósitos específicos • Processamento de Sinais • Mecânica Estrutural • Processamento de Imagens • Matemática Fuzzy • Transformadas Wavelet • Redes Neurais • …
Software Numérico III • Ambientes proprietários para simulação/análise numérica • Comsol Multiphysics (incluindo a versão especial Comsol Reaction Engineering Lab para a modelagem de reações cinéticas) • Maple • Mathematica (incluindo webMathematica e gridMathematica) • Mathcad • MATLAB (incluindo Simulink e Model-Based Design)
Software Numérico IV • Ambientes abertos para simulação/análise numérica • GNU Octave (incluindo GNU Plot) • Maxima (incluindo wxMaxima ou XMaxima e GNU Plot) • Scilab (incluindo Scicos) http://www.modelica.org/libraries http://www.modelica.org/libraries http://www.ann.jussieu.fr/~lehyaric/freesoft/free.htm http://www.ann.jussieu.fr/~lehyaric/freesoft/free.htm
Bibliotecas de Rotinas e Funções I • Disponibilidade de um número considerável de bibliotecas de rotinas/funções matemáticas proprietárias e livres • Facilidade de chamada de rotinas/funções a partir da aplicação principal se esta compartilhar a linguagem de programação (LP) com a biblioteca • Possibilidade de hibridação de LP • Exigência de maior atenção na estruturação da aplicação • Necessidade de tarefas adicionais para o interfaceamento das diferentes partes do programa
Bibliotecas de Rotinas e Funções II • Repositórios e Portais Informativos • Netlib • NHSE • Fortran 90 Software Repository • NIST • Mathtools.net http://www.sai.msu.su/sal/B/1/ http://www.sai.msu.su/sal/B/1/
Bibliotecas de Rotinas e Funções III • Disponibilidade do código fonte da maioria das bibliotecas Netlib • Portabilidade relativamente fácil da aplicação para outros SO e/ou compiladores • Maioria da bibliotecas de subrotinas em Fortran, com algumas (re)escritas nas linguagens C/C++ • Maioria da bibliotecas mais recentes de funções em C++
Qualidade do Software Numérico I http://math.nist.gov/stssf/ http://math.nist.gov/stssf/ Mensuração da qualidade do software numérico • Métricas de Qualidade • Confiabilidade • O software produz resultados confiáveis? • Desempenho • O tempo de processamento é aceitável? • Tolerância a falhas • O software é suficientemente robusto para resistir ao uso por um usuário inexperiente?
Qualidade do Software Numérico II Interface com o Usuário (UI) • Gráfica, orientada a comandos, orientada a menus ou via chamadas a subrotinas • Exigência do delineamento preciso da percepção do usuário da capacidade do software numérico • Usabilidade • Eficiência Recursos despendidos em relação à acurácia e completude com que usuários atingem metas específicas • Eficácia Acurácia e completude com que usuários atingem metas específicas • Grau de Satisfação (Subjetiva) Conforto e aceitação de uso do produto pelos usuários
Qualidade do Software Numérico III “Gargalos” comuns • Interfaces com o usuário para software numérico tipicamente baseiam-se na compreensão do processo de funcionamento do software pelo projetista • Não envolvimento do usuário no processo de desenvolvimento • UCD requer organização e esforço extras do projetista • Graus de usabilidade mais elevados • Redução dos custos de software com reprojetos e refatorações que possam ser evitadas
Leitura Adicional Bussieck, M. R.; Dirkse, S. P., Meeraus A.; Pruessner, A. (2004) Software Quality Assurance for Mathematical Modeling Systems Pancake, C. M. (1996) Improving the Usability of Numerical Software through User-Centered Design Houstis, E. N., & Rice, J. R. (2000) On the Future of Problem Solving Environments
José Eustáquio Rangel de Queiroz rangel@dsc.ufcg.edu.br rangeldequeiroz@gmail.com UNIVERSIDADE FEDERAL DE CAMPINA GRANDE CENTRO DE ENGENHARIA ELÉTRICA E INFORMÁTICA DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO