Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Computational science
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Methods and algorithms== Algorithms and mathematical methods used in computational science are varied. Commonly applied methods include: {{div col|colwidth=20em}} * [[Computer algebra]],<ref>Von Zur Gathen, J., & Gerhard, J. (2013). Modern computer algebra. Cambridge University Press.</ref><ref>Geddes, K. O., Czapor, S. R., & Labahn, G. (1992). Algorithms for computer algebra. Springer Science & Business Media.</ref><ref>Albrecht, R. (2012). Computer algebra: symbolic and algebraic computation (Vol. 4). Springer Science & Business Media.</ref><ref>Mignotte, M. (2012). Mathematics for computer algebra. Springer Science & Business Media.</ref> including symbolic computation in fields such as statistics, equation solving, algebra, calculus, geometry, linear algebra, tensor analysis (multilinear algebra), optimization * [[Numerical analysis]],<ref name="stoer">Stoer, J., & Bulirsch, R. (2013). Introduction to numerical analysis. Springer Science & Business Media.</ref><ref name="conte">Conte, S. D., & De Boor, C. (2017). Elementary numerical analysis: an algorithmic approach. [[Society for Industrial and Applied Mathematics]].</ref><ref name="green">Greenspan, D. (2018). Numerical Analysis. CRC Press.</ref><ref name="linz">Linz, P. (2019). Theoretical numerical analysis. Courier Dover Publications.</ref> including [[Computing]] derivatives by [[finite difference]]s ** Application of [[Taylor series]] as convergent and asymptotic series ** [[Computing]] derivatives by [[Automatic differentiation]] (AD) ** [[Finite element method]] for solving PDEs<ref name="bs">Brenner, S., & Scott, R. (2007). The mathematical theory of finite element methods (Vol. 15). Springer Science & Business Media.</ref><ref name="or">Oden, J. T., & Reddy, J. N. (2012). An introduction to the mathematical theory of finite elements. Courier Corporation.</ref> ** High order difference approximations via [[Taylor series]] and [[Richardson extrapolation]] ** [[Methods of integration]]<ref>Davis, P. J., & Rabinowitz, P. (2007). Methods of numerical integration. Courier Corporation.</ref> on a uniform [[Mesh (mathematics)|mesh]]: [[rectangle rule]] (also called ''midpoint rule''), [[trapezoid rule]], [[Simpson's rule]] ** [[Runge–Kutta methods]] for solving ordinary differential equations ** [[Newton's method]]<ref>Peter Deuflhard, Newton Methods for Nonlinear Problems. Affine Invariance and Adaptive Algorithms, Second printed edition. Series Computational Mathematics 35, Springer (2006)</ref> * [[Discrete Fourier transform]] * [[Monte Carlo method]]s<ref>Hammersley, J. (2013). Monte carlo methods. Springer Science & Business Media.</ref><ref>Kalos, M. H., & Whitlock, P. A. (2009). Monte carlo methods. John Wiley & Sons.</ref> * [[Numerical linear algebra]],<ref>Demmel, J. W. (1997). Applied numerical linear algebra. [[Society for Industrial and Applied Mathematics|SIAM]].</ref><ref>Ciarlet, P. G., Miara, B., & Thomas, J. M. (1989). Introduction to numerical linear algebra and optimization. Cambridge University Press.</ref><ref>Trefethen, Lloyd; Bau III, David (1997). Numerical Linear Algebra (1st ed.). Philadelphia: [[Society for Industrial and Applied Mathematics|SIAM]].</ref> including decompositions and [[eigenvalue algorithm]]s * [[Linear programming]]<ref>Vanderbei, R. J. (2015). Linear programming. Heidelberg: Springer.</ref><ref>Gass, S. I. (2003). Linear programming: methods and applications. Courier Corporation.</ref> * [[Branch and cut]] * [[Branch and bound]] * [[Molecular dynamics]], [[Car–Parrinello molecular dynamics]] * [[Space mapping]] * [[Time stepping]] methods for dynamical systems {{div col end}} Historically and today, Fortran remains popular for most applications of scientific computing.<ref name="ars">{{cite web |url=https://arstechnica.com/science/2014/05/scientific-computings-future-can-any-coding-language-top-a-1950s-behemoth/ |title=Scientific computing's future: Can any coding language top a 1950s behemoth? |last=Phillips |first=Lee |work=[[Ars Technica]] |date=2014-05-07 |access-date=2016-03-08 }}</ref><ref name="princeton">{{cite web |url=http://press.princeton.edu/landau_firstCourse/FortranCD/AllFort.pdf |title=A First Course in Scientific Computing |last=Landau |first=Rubin |publisher=Princeton University |date=2014-05-07 |access-date=2016-03-08 }}</ref> Other [[programming language]]s and [[computer algebra systems]] commonly used for the more mathematical aspects of scientific computing applications include [[GNU Octave]], [[Haskell (programming language)|Haskell]],<ref name="ars" /> [[Julia (programming language)|Julia]],<ref name="ars" /> [[Maple (software)|Maple]],<ref name="princeton" /> [[Mathematica]],<ref>[http://www.scientific-computing.com/products/review_details.php?review_id=17 Mathematica 6] {{Webarchive|url=https://web.archive.org/web/20110113024403/http://www.scientific-computing.com/products/review_details.php?review_id=17 |date=2011-01-13 }} Scientific Computing World, May 2007</ref><ref>Maeder, R. E. (1991). Programming in mathematica. Addison-Wesley Longman Publishing Co., Inc.</ref><ref>Stephen Wolfram. (1999). The MATHEMATICA® book, version 4. [[Cambridge University Press]].</ref><ref>Shaw, W. T., & Tigg, J. (1993). Applied Mathematica: getting started, getting it done. Addison-Wesley Longman Publishing Co., Inc.</ref><ref>Marasco, A., & Romano, A. (2001). Scientific Computing with Mathematica: Mathematical Problems for Ordinary Differential Equations; with a CD-ROM. [[Springer Science & Business Media]].</ref> [[MATLAB]],<ref>Quarteroni, A., Saleri, F., & Gervasio, P. (2006). Scientific computing with MATLAB and Octave. Berlin: Springer.</ref><ref name="gh">Gander, W., & Hrebicek, J. (Eds.). (2011). Solving problems in scientific computing using Maple and Matlab®. [[Springer Science & Business Media]].</ref><ref name="bf">Barnes, B., & Fulford, G. R. (2011). Mathematical modelling with case studies: a differential equations approach using Maple and MATLAB. Chapman and Hall/CRC.</ref> [[Python (programming language)|Python]] (with third-party [[SciPy]] library<ref>Jones, E., Oliphant, T., & Peterson, P. (2001). SciPy: Open source scientific tools for Python.</ref><ref>Bressert, E. (2012). SciPy and NumPy: an overview for developers. " O'Reilly Media, Inc.".</ref><ref>Blanco-Silva, F. J. (2013). Learning SciPy for numerical and scientific computing. Packt Publishing Ltd.</ref>), [[Perl]] (with third-party [[Perl Data Language|PDL]] library),{{Citation needed|date=December 2008}} [[R (programming language)|R]],<ref>Ihaka, R., & Gentleman, R. (1996). R: a language for data analysis and graphics. Journal of computational and graphical statistics, 5(3), 299-314.</ref> [[Scilab]],<ref>Bunks, C., Chancelier, J. P., Delebecque, F., Goursat, M., Nikoukhah, R., & Steer, S. (2012). Engineering and scientific computing with Scilab. [[Springer Science & Business Media]].</ref><ref>Thanki, R. M., & Kothari, A. M. (2019). Digital image processing using SCILAB. Springer International Publishing.</ref> and [[TK Solver]]. The more computationally intensive aspects of scientific computing will often use some variation of [[C (programming language)|C]] or [[Fortran]] and optimized algebra libraries such as [[BLAS]] or [[LAPACK]]. In addition, [[parallel computing]] is heavily used in scientific computing to find solutions of large problems in a reasonable amount of time. In this framework, the problem is either divided over many cores on a single CPU node (such as with [[OpenMP]]), divided over many CPU nodes networked together (such as with [[Message Passing Interface|MPI]]), or is run on one or more [[Graphics processing unit|GPUs]] (typically using either [[CUDA]] or [[OpenCL]]). Computational science application programs often model real-world changing conditions, such as weather, airflow around a plane, automobile body distortions in a crash, the motion of stars in a galaxy, an explosive device, etc. Such programs might create a 'logical mesh' in computer memory where each item corresponds to an area in space and contains information about that space relevant to the model. For example, in [[Numerical weather prediction|weather models]], each item might be a square kilometer; with land elevation, current wind direction, humidity, temperature, pressure, etc. The program would calculate the likely next state based on the current state, in simulated time steps, solving differential equations that describe how the system operates, and then repeat the process to calculate the next state.{{Citation needed|date=December 2021}}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)