The ability to use computers to solve mathematical relationships is a fundamental skill for anyone planning for a career in science or engineering. For this reason, numerical analysis is part of the core curriculum for just about every undergraduate physics and engineering department. But for most physics and engineering students, practical programming is a self-taught process.
This book introduces the reader not only to the mathematical foundation but also to the programming paradigms encountered in modern hybrid software-hardware scientific computing. After completing the text, the reader will be well-versed in the use of different numerical techniques, programming languages, and hardware architectures, and will be able to select the appropriate software and hardware tool for their analysis.
It can serve as a textbook for undergraduate courses on numerical analysis and scientific computing courses within engineering and physical sciences departments. It will also be a valuable guidebook for researchers with experimental backgrounds interested in working with numerical simulations, or to any new personnel working in scientific computing or data analysis.
Key Features:
- Includes examples of solving numerical problems in multiple programming languages, including MATLAB, Python, Fortran, C++, Arduino, Javascript, and Verilog
- Provides an introduction to modern high-performance computing technologies including multithreading, distributed computing, GPUs, microcontrollers, FPGAs, and web "cloud computing"
- Contains an overview of numerical techniques not found in other introductory texts including particle methods, finite volume and finite element methods, Vlasov solvers, and molecular dynamics