Computação científica

área de estudo relacionada à construção de modelos matemáticos e técnicas de análise quantitativa e usando computadores para analisar e resolver problemas científicos

A ciência computacional, também conhecida como computação científica, é um campo de rápido crescimento que usa recursos de computação avançados para entender e resolver problemas complexos. É uma área da ciência que abrange muitas disciplinas, mas em sua essência, envolve o desenvolvimento de modelos e simulações para entender os sistemas naturais.

No uso prático, é tipicamente a aplicação de simulação de computador e outras formas de computação a partir de análise numérica e ciência da computação teórica para resolver problemas em várias disciplinas científicas. O campo é diferente da teoria e da experiência de laboratório, que são as formas tradicionais de ciência e engenharia. A abordagem da computação científica é obter entendimento, principalmente por meio da análise de modelos matemáticos implementados em computadores. Cientistas e engenheiros desenvolvem programas de computador, softwares aplicativos, que modelam os sistemas em estudo e executam esses programas com vários conjuntos de parâmetros de entrada. A essência da computação científica é a aplicação de algoritmos numéricos[1] e/ou matemática computacional. Em alguns casos, esses modelos requerem uma grande quantidade de cálculos (geralmente de ponto flutuante) e geralmente são executados em supercomputadores ou plataformas de computação distribuída.

O cientista computacional editar

 
Maneiras de estudar um sistema

O termo cientista computacional é usado para descrever alguém hábil em computação científica. Essa pessoa geralmente é um cientista, um engenheiro ou um matemático aplicado que aplica a computação de alto desempenho de maneiras diferentes para fazer avançar o estado da arte em suas respectivas disciplinas aplicadas em física, química ou engenharia.

A computação científica é agora comumente considerada um terceiro modo de ciência, complementando e adicionando à experimentação/observação e teoria (veja a imagem à direita).[2] Aqui, definimos um sistema como uma fonte potencial de dados,[3] um experimento como um processo de extração de dados de um sistema exercendo-o por meio de suas entradas[4] e um modelo (M) para um sistema (S) e um experimento (E) como qualquer coisa ao qual E pode ser aplicado a fim de responder a perguntas sobre S.[5] Um cientista computacional deve ser capaz de:

  • reconhecer problemas complexos
  • conceitualizar adequadamente o sistema que contém esses problemas
  • projetar uma estrutura de algoritmos adequados para estudar este sistema: a simulação
  • escolher uma infraestrutura de computação adequada (computação paralela/computação em grade/supercomputadores)
  • deste modo, maximizar o poder computacional da simulação
  • avaliar em que nível o resultado da simulação se assemelha aos sistemas: o modelo é validado
  • ajustar a conceituação do sistema em conformidade
  • repetir o ciclo até que um nível adequado de validação seja obtido: os cientistas computacionais confiam que a simulação gere resultados adequadamente realistas para o sistema, nas condições estudadas

Na verdade, um esforço substancial em ciências computacionais tem sido dedicado ao desenvolvimento de algoritmos, à implementação eficiente em linguagens de programação e à validação de resultados computacionais. Uma coleção de problemas e soluções em computação científica pode ser encontrada em Steeb, Hardy, Hardy e Stoop (2004).[6]

Filósofos da ciência abordaram a questão de em que grau a computação científica se qualifica como ciência, entre eles Humphreys[7] e Gelfert.[8] Eles abordam a questão geral da epistemologia: como podemos obter um insight a partir dessas abordagens da computação científica. Tolk[9] usa esses insights para mostrar as restrições epistemológicas da pesquisa de simulação baseada em computador. Como a computação científica usa modelos matemáticos que representam a teoria subjacente de forma executável, em essência, eles aplicam modelagem (construção de teoria) e simulação (implementação e execução). Embora a simulação e a computação científica sejam nossas maneiras mais sofisticadas de expressar nosso conhecimento e compreensão, elas também vêm com todas as restrições e limites já conhecidos para soluções computacionais.

Aplicações da computação científica editar

Os domínios de problema para ciência computacional/computação científica incluem:

Computação científica preditiva editar

A computação científica preditiva é uma disciplina científica que visa a formulação, calibração, solução numérica e validação de modelos matemáticos projetados para prever aspectos específicos de eventos físicos, dadas as condições iniciais e de contorno e um conjunto de parâmetros de caracterização e incertezas associadas.[10] Em casos típicos, a declaração preditiva é formulada em termos de probabilidades. Por exemplo, dado um componente mecânico e uma condição de carregamento periódico, “a probabilidade é de (por exemplo) 90% de que o número de ciclos na falha (Nf) estará no intervalo N1<Nf<N2”.[11]

Sistemas complexos urbanos editar

Em 2015, mais da metade da população mundial vivia em cidades. Em meados do século 21, estima-se que 75% da população mundial será urbana. Esse crescimento urbano está focado nas populações urbanas de países em desenvolvimento, onde os moradores das cidades mais que dobrarão, passando de 2,5 bilhões em 2009 para quase 5,2 bilhões em 2050. Cidades são sistemas enormes e complexos criados por humanos, feitos de humanos e governados por humanos. Tentar prever, compreender e de alguma forma moldar o desenvolvimento das cidades no futuro requer pensamento complexo e requer modelos computacionais e simulações para ajudar a mitigar desafios e possíveis desastres. O foco da pesquisa em sistemas complexos urbanos é, por meio de modelagem e simulação, construir uma maior compreensão da dinâmica das cidades e ajudar na preparação para a urbanização que se aproxima.

Finanças computacionais editar

 Ver artigo principal: Finanças computacionais

Nos mercados financeiros de hoje, grandes volumes de ativos interdependentes são negociados por um grande número de participantes do mercado que interagem em diferentes locais e fusos horários. Seu comportamento é de complexidade sem precedentes e a caracterização e medição do risco inerente a este conjunto altamente diversificado de instrumentos é tipicamente baseada em modelos matemáticos e computacionais complicados. A resolução desses modelos exatamente e de forma fechada, mesmo no nível de um único instrumento, normalmente não é possível e, portanto, temos que procurar algoritmos numéricos eficientes. Isso se tornou ainda mais urgente e complexo recentemente, já que a crise de crédito demonstrou claramente o papel dos efeitos em cascata que vão de instrumentos únicos a carteiras de instituições únicas, e até mesmo à rede de negociação interconectada. Compreender isso requer uma abordagem multiescala e holística, em que fatores de risco interdependentes, como risco de mercado, crédito e liquidez, são modelados simultaneamente e em diferentes escalas interconectadas.

Biologia computacional editar

 Ver artigo principal: Biologia computacional

Novos desenvolvimentos em biotecnologia estão revolucionando a biologia e a pesquisa biomédica. Exemplos dessas técnicas são sequenciamento de alto rendimento, PCR quantitativo de alto rendimento, imageamento intracelular, hibridização in situ da expressão gênica, técnicas de imageamento tridimensional como microscopia de fluorescência de folha de luz e projeção óptica, tomografia (micro)-computadorizada. Dada a enorme quantidade de dados complicados gerados por essas técnicas, sua interpretação significativa e até mesmo seu armazenamento constituem grandes desafios que exigem novas abordagens. Indo além das abordagens atuais de bioinformática, a biologia computacional precisa desenvolver novos métodos para descobrir padrões significativos nesses grandes conjuntos de dados. A reconstrução de redes de genes baseada em modelos pode ser usada para organizar os dados de expressão de genes de uma forma sistemática e para orientar a coleta de dados futuros. Um grande desafio aqui é entender como a regulação gênica controla processos biológicos fundamentais, como a biomineralização e embriogênese. Os subprocessos como a regulação gênica, moléculas orgânicas interagindo com o processo de deposição de minerais, processos celulares, fisiologia e outros processos nos níveis dos tecidos e do ambiente estão ligados. Em vez de serem dirigidas por um mecanismo de controle central, a biomineralização e a embriogênese podem ser vistas como um comportamento emergente resultante de um sistema complexo no qual vários subprocessos em escalas temporais e espaciais muito diferentes (variando de nanômetro e nanossegundos a metros e anos) estão conectado em um sistema multiescala. Uma das poucas opções disponíveis para entender tais sistemas é desenvolver um modelo multiescala do sistema.

Teoria de sistemas complexos editar

 Ver artigo principal: Sistemas complexos

Usando a teoria da informação, dinâmica de não equilíbrio e simulações explícitas, a teoria dos sistemas computacionais tenta descobrir a verdadeira natureza dos sistemas adaptativos complexos.

Computação científica em engenharia editar

 Ver artigo principal: Engenharia computacional

A engenharia e ciência computacional (CSE) é uma disciplina relativamente nova que lida com o desenvolvimento e aplicação de modelos computacionais e simulações, muitas vezes juntamente com computação de alto desempenho, para resolver problemas físicos complexos que surgem na análise de engenharia e design (engenharia computacional) bem como fenômenos naturais (ciência computacional). A CSE foi descrita como a "terceiro forma de descoberta" (depois da teoria e da experimentação).[12] Em muitos campos, a simulação por computador é parte integrante e, portanto, essencial para os negócios e a pesquisa. A simulação por computador possibilita a entrada em campos que são inacessíveis para a experimentação tradicional ou onde a realização de pesquisas empíricas tradicionais é proibitivamente cara. A CSE não deve ser confundida com ciência da computação pura, nem com engenharia da computação, embora um amplo domínio na primeira seja usado na CSE (por exemplo, certos algoritmos, estruturas de dados, programação paralela, computação de alto desempenho) e alguns problemas da última possam ser modelados e resolvidos com métodos da CSE (como área de aplicação).

Métodos e algoritmos editar

Os algoritmos e métodos matemáticos usados em computação científica são variados. Os métodos comumente aplicados incluem:

Tanto historicamente como na atualidade, o Fortran continua popular para a maioria das aplicações de computação científica.[32][33] Entre as linguagens de programação e sistemas algébricos computacionais comumente usados para os aspectos mais matemáticos de aplicações de computação científica estão: GNU Octave, Haskell,[32] Julia,[32] Maple,[33] Mathematica,[34][35][36][37][38] MATLAB,[39][40][41] Python (com biblioteca SciPy de terceiros[42][43][44]), Perl (com biblioteca PDL de terceiros),[carece de fontes?]  R,[45] Scilab,[46][47] e TK Solver. Os aspectos computacionalmente mais intensivos da computação científica costumam usar alguma variação de C ou Fortran e bibliotecas de álgebra otimizadas, como BLAS ou LAPACK. Além disso, a computação paralela é amplamente utilizada na computação científica para obter soluções de grandes problemas em um período de tempo razoável. Nesta estrutura, o problema é abordado de uma das seguintes formas: dividindo-o em muitos núcleos de um único nó de CPU (como com OpenMP), dividindo-o em muitos nós de CPU interligados em rede (como com MPI) ou é executando-o em uma ou mais GPUs (normalmente usando um CUDA ou OpenCL ).

Os programas de aplicação de computação científica frequentemente modelam condições do mundo real que mudam com o tempo, tais como clima, fluxo de ar ao redor de um avião, distorções do corpo de automóveis em um acidente, o movimento das estrelas em uma galáxia, um dispositivo explosivo, etc. Esses programas podem criar uma 'malha lógica' na memória do computador em que cada item corresponde a uma área no espaço e contém informações sobre esse espaço relevantes para o modelo. Por exemplo, em modelos meteorológicos, cada item pode ter um quilômetro quadrado; com a elevação do solo, direção do vento atual, umidade, temperatura, pressão, etc. O programa calcularia o próximo estado provável com base no estado atual, em passos de tempo simulados, resolvendo equações diferenciais que descrevem como o sistema opera; e repetiria o processo para calcular o próximo estado.

Conferências e periódicos editar

No ano de 2001, foi organizada pela primeira vez a Conferência Internacional em Computação Científica (ICCS). Desde então, ela é organizada anualmente. A ICCS é uma conferência de nível A na classificação CORE.

O periódico internacional Journal of Computational Science publicou sua primeira edição em maio de 2010.[48][49][50] Uma nova iniciativa foi lançada em 2012, o Journal of Open Research Software.[51] Em 2015, o ReScience C[52] dedicado à replicação de resultados computacionais foi iniciado no GitHub.

Educação editar

Em algumas instituições, uma especialização em computação científica pode ser obtida como um "menor" em outro programa (que pode estar em níveis variados). No entanto, existem cada vez mais programas de bacharelado, mestrado e doutorado em computação científica. O programa de mestrado conjunto em ciência da computação da Universidade de Amsterdã e da Vrije Universiteit em computação científica foi oferecido pela primeira vez em 2004. Neste programa, os alunos:

  • aprendem a construir modelos computacionais a partir de observações da vida real;
  • desenvolvem habilidades para transformar esses modelos em estruturas computacionais e realizar simulações em grande escala;
  • aprendem a teoria que dará uma base sólida para a análise de sistemas complexos;
  • aprendem a analisar os resultados de simulações em um laboratório virtual usando algoritmos numéricos avançados.

George Mason University foi um dos pioneiros a oferecer um programa de doutorado multidisciplinar em Ciências da Computação e Informática em 1992, que se concentrou em uma série de áreas de especialidade, incluindo bioinformática, química computacional, sistemas terrestres e mudanças globais, matemática computacional, física computacional, ciências espaciais e estatísticas computacionais

A escola de ciências computacionais e integrativas da Universidade de Jawaharlal Nehru (antiga Escola de Tecnologia da Informação[53]) também oferece um programa de mestrado para computação científica com duas especialidades, a saber - Biologia Computacional e Sistemas Complexos.[54]

Áreas relacionadas editar

Ver também editar

Referências editar

  1. Nonweiler T. R., 1986. Computational Mathematics: An Introduction to Numerical Approximation, John Wiley and Sons
  2. Graduate Education for Computational Science and Engineering.Siam.org, Society for Industrial and Applied Mathematics (SIAM) website; accessed Feb 2013.
  3. Siegler, Bernard (1976). Theory of Modeling and Simulation. [S.l.: s.n.] 
  4. Cellier, François (1990). Continuous System Modelling. [S.l.: s.n.] 
  5. Minski, Marvin (1965). Models,Minds, Machines. [S.l.: s.n.] 
  6. Steeb W.-H., Hardy Y., Hardy A. and Stoop R., 2004. Problems and Solutions in Scientific Computing with C++ and Java Simulations, World Scientific Publishing. ISBN 981-256-112-9
  7. Humphreys, Paul. Extending ourselves: Computational science, empiricism, and scientific method. Oxford University Press, 2004.
  8. Gelfert, Axel. 2016. How to do science with models: A philosophical primer. Cham: Springer.
  9. Tolk, Andreas. "Learning Something Right from Models That Are Wrong: Epistemology of Simulation." In Concepts and Methodologies for Modeling and Simulation, edited by L. Yilmaz, pp. 87-106, Cham: Springer International Publishing, 2015.
  10. Oden, J.T., Babuška, I. and Faghihi, D., 2017. Predictive computational science: Computer predictions in the presence of uncertainty. Encyclopedia of Computational Mechanics. Second Edition, pp. 1-26.
  11. Szabó B, Actis R and Rusk D. Validation of notch sensitivity factors. Journal of Verification, Validation and Uncertainty Quantification. 4 011004, 2019
  12. «Computational Science and Engineering Program: Graduate Student Handbook» (PDF). cseprograms.gatech.edu. Setembro de 2009. Consultado em 26 de agosto de 2017. Cópia arquivada (PDF) em 14 de outubro de 2014 
  13. Von Zur Gathen, J., & Gerhard, J. (2013). Modern computer algebra. Cambridge University Press.
  14. Geddes, K. O., Czapor, S. R., & Labahn, G. (1992). Algorithms for computer algebra. Springer Science & Business Media.
  15. Albrecht, R. (2012). Computer algebra: symbolic and algebraic computation (Vol. 4). Springer Science & Business Media.
  16. Mignotte, M. (2012). Mathematics for computer algebra. Springer Science & Business Media.
  17. Stoer, J., & Bulirsch, R. (2013). Introduction to numerical analysis. Springer Science & Business Media.
  18. Conte, S. D., & De Boor, C. (2017). Elementary numerical analysis: an algorithmic approach. Society for Industrial and Applied Mathematics.
  19. Greenspan, D. (2018). Numerical Analysis. CRC Press.
  20. Linz, P. (2019). Theoretical numerical analysis. Courier Dover Publications.
  21. Brenner, S., & Scott, R. (2007). The mathematical theory of finite element methods (Vol. 15). Springer Science & Business Media.
  22. Oden, J. T., & Reddy, J. N. (2012). An introduction to the mathematical theory of finite elements. Courier Corporation.
  23. Davis, P. J., & Rabinowitz, P. (2007). Methods of numerical integration. Courier Corporation.
  24. Peter Deuflhard, Newton Methods for Nonlinear Problems. Affine Invariance and Adaptive Algorithms, Second printed edition. Series Computational Mathematics 35, Springer (2006)
  25. Hammersley, J. (2013). Monte carlo methods. Springer Science & Business Media.
  26. Kalos, M. H., & Whitlock, P. A. (2009). Monte carlo methods. John Wiley & Sons.
  27. Demmel, J. W. (1997). Applied numerical linear algebra. SIAM.
  28. Ciarlet, P. G., Miara, B., & Thomas, J. M. (1989). Introduction to numerical linear algebra and optimization. Cambridge University Press.
  29. Trefethen, Lloyd; Bau III, David (1997). Numerical Linear Algebra (1st ed.). Philadelphia: SIAM.
  30. Vanderbei, R. J. (2015). Linear programming. Heidelberg: Springer.
  31. Gass, S. I. (2003). Linear programming: methods and applications. Courier Corporation.
  32. a b c Phillips, Lee (7 de maio de 2014). «Scientific computing's future: Can any coding language top a 1950s behemoth?». Ars Technica. Consultado em 8 de março de 2016 
  33. a b Landau, Rubin (7 de maio de 2014). «A First Course in Scientific Computing» (PDF). Princeton University. Consultado em 8 de março de 2016 
  34. Mathematica 6 Scientific Computing World, May 2007
  35. Maeder, R. E. (1991). Programming in mathematica. Addison-Wesley Longman Publishing Co., Inc..
  36. Stephen Wolfram. (1999). The MATHEMATICA® book, version 4. Cambridge University Press.
  37. Shaw, W. T., & Tigg, J. (1993). Applied Mathematica: getting started, getting it done. Addison-Wesley Longman Publishing Co., Inc..
  38. Marasco, A., & Romano, A. (2001). Scientific Computing with Mathematica: Mathematical Problems for Ordinary Differential Equations; with a CD-ROM. Springer Science & Business Media.
  39. Quarteroni, A., Saleri, F., & Gervasio, P. (2006). Scientific computing with MATLAB and Octave. Berlin: Springer.
  40. Gander, W., & Hrebicek, J. (Eds.). (2011). Solving problems in scientific computing using Maple and Matlab®. Springer Science & Business Media.
  41. Barnes, B., & Fulford, G. R. (2011). Mathematical modelling with case studies: a differential equations approach using Maple and MATLAB. Chapman and Hall/CRC.
  42. Jones, E., Oliphant, T., & Peterson, P. (2001). SciPy: Open source scientific tools for Python.
  43. Bressert, E. (2012). SciPy and NumPy: an overview for developers. " O'Reilly Media, Inc.".
  44. Blanco-Silva, F. J. (2013). Learning SciPy for numerical and scientific computing. Packt Publishing Ltd.
  45. Ihaka, R., & Gentleman, R. (1996). R: a language for data analysis and graphics. Journal of computational and graphical statistics, 5(3), 299-314.
  46. Bunks, C., Chancelier, J. P., Delebecque, F., Goursat, M., Nikoukhah, R., & Steer, S. (2012). Engineering and scientific computing with Scilab. Springer Science & Business Media.
  47. Thanki, R. M., & Kothari, A. M. (2019). Digital image processing using SCILAB. Springer International Publishing.
  48. Sloot, Peter; Coveney, Peter; Dongarra, Jack (2010). «Redirecting». Journal of Computational Science. 1: 3–4. doi:10.1016/j.jocs.2010.04.003 
  49. Seidel, Edward; Wing, Jeannette M. (2010). «Redirecting». Journal of Computational Science. 1: 1–2. doi:10.1016/j.jocs.2010.04.004 
  50. Sloot, Peter M.A. (2010). «Computational science: A kaleidoscopic view into science». Journal of Computational Science. 1. 189 páginas. doi:10.1016/j.jocs.2010.11.001 
  51. The Journal of Open Research Software ; announced at software.ac.uk/blog/2012-03-23-announcing-journal-open-research-software-software-metajournal
  52. Rougier, Nicolas P.; Hinsen, Konrad; Alexandre, Frédéric; Arildsen, Thomas; Barba, Lorena A.; Benureau, Fabien C.Y.; Brown, C. Titus; Buyl, Pierre de; Caglayan, Ozan (dezembro de 2017). «Sustainable computational science: the ReScience initiative». PeerJ Comput Sci. 3. Bibcode:2017arXiv170704393R. arXiv:1707.04393 . doi:10.7717/peerj-cs.142 
  53. «SCIS | Welcome to Jawaharlal Nehru University» 
  54. «SCIS: Program of Study | Welcome to Jawaharlal Nehru University» 

Fontes adicionais editar

Ligações externas editar