Fundamentals of Scientific Computing


Book Description

The book of nature is written in the language of mathematics -- Galileo Galilei How is it possible to predict weather patterns for tomorrow, with access solely to today’s weather data? And how is it possible to predict the aerodynamic behavior of an aircraft that has yet to be built? The answer is computer simulations based on mathematical models – sets of equations – that describe the underlying physical properties. However, these equations are usually much too complicated to solve, either by the smartest mathematician or the largest supercomputer. This problem is overcome by constructing an approximation: a numerical model with a simpler structure can be translated into a program that tells the computer how to carry out the simulation. This book conveys the fundamentals of mathematical models, numerical methods and algorithms. Opening with a tutorial on mathematical models and analysis, it proceeds to introduce the most important classes of numerical methods, with finite element, finite difference and spectral methods as central tools. The concluding section describes applications in physics and engineering, including wave propagation, heat conduction and fluid dynamics. Also covered are the principles of computers and programming, including MATLAB®.




Introduction to the Tools of Scientific Computing


Book Description

The book provides an introduction to common programming tools and methods in numerical mathematics and scientific computing. Unlike widely used standard approaches, it does not focus on any particular language but aims to explain the key underlying concepts. In general, new concepts are first introduced in the particularly user-friendly Python language and then transferred and expanded in various scientific programming environments from C / C ++, Julia and MATLAB to Maple. This includes different approaches to distributed computing. The fact that different languages are studied and compared also makes the book useful for mathematicians and practitioners trying to decide which programming language to use for which purposes.




Fundamentals of Numerical Computation


Book Description

Fundamentals of Numerical Computation?is an advanced undergraduate-level introduction to the mathematics and use of algorithms for the fundamental problems of numerical computation: linear algebra, finding roots, approximating data and functions, and solving differential equations. The book is organized with simpler methods in the first half and more advanced methods in the second half, allowing use for either a single course or a sequence of two courses. The authors take readers from basic to advanced methods, illustrating them with over 200 self-contained MATLAB functions and examples designed for those with no prior MATLAB experience. Although the text provides many examples, exercises, and illustrations, the aim of the authors is not to provide a cookbook per se, but rather an exploration of the principles of cooking. The authors have developed an online resource that includes well-tested materials related to every chapter. Among these materials are lecture-related slides and videos, ideas for student projects, laboratory exercises, computational examples and scripts, and all the functions presented in the book. The book is intended for advanced undergraduates in math, applied math, engineering, or science disciplines, as well as for researchers and professionals looking for an introduction to a subject they missed or overlooked in their education.?




Scientific Computing


Book Description

This is the first of three volumes providing a comprehensive presentation of the fundamentals of scientific computing. This volume discusses basic principles of computation, and fundamental numerical algorithms that will serve as basic tools for the subsequent two volumes. This book and its companions show how to determine the quality of computational results, and how to measure the relative efficiency of competing methods. Readers learn how to determine the maximum attainable accuracy of algorithms, and how to select the best method for computing problems. This book also discusses programming in several languages, including C++, Fortran and MATLAB. There are 80 examples, 324 exercises, 77 algorithms, 35 interactive JavaScript programs, 391 references to software programs and 4 case studies. Topics are introduced with goals, literature references and links to public software. There are descriptions of the current algorithms in LAPACK, GSLIB and MATLAB. This book could be used for an introductory course in numerical methods, for either upper level undergraduates or first year graduate students. Parts of the text could be used for specialized courses, such as principles of computer languages or numerical linear algebra.




Introduction to Scientific Programming with Python


Book Description

This open access book offers an initial introduction to programming for scientific and computational applications using the Python programming language. The presentation style is compact and example-based, making it suitable for students and researchers with little or no prior experience in programming. The book uses relevant examples from mathematics and the natural sciences to present programming as a practical toolbox that can quickly enable readers to write their own programs for data processing and mathematical modeling. These tools include file reading, plotting, simple text analysis, and using NumPy for numerical computations, which are fundamental building blocks of all programs in data science and computational science. At the same time, readers are introduced to the fundamental concepts of programming, including variables, functions, loops, classes, and object-oriented programming. Accordingly, the book provides a sound basis for further computer science and programming studies.




Introduction to Scientific Computing and Data Analysis


Book Description

This textbook provides an introduction to numerical computing and its applications in science and engineering. The topics covered include those usually found in an introductory course, as well as those that arise in data analysis. This includes optimization and regression-based methods using a singular value decomposition. The emphasis is on problem solving, and there are numerous exercises throughout the text concerning applications in engineering and science. The essential role of the mathematical theory underlying the methods is also considered, both for understanding how the method works, as well as how the error in the computation depends on the method being used. The codes used for most of the computational examples in the text are available on GitHub. This new edition includes material necessary for an upper division course in computational linear algebra.




Scientific Computing


Book Description

This book explores the most significant computational methods and the history of their development. It begins with the earliest mathematical / numerical achievements made by the Babylonians and the Greeks, followed by the period beginning in the 16th century. For several centuries the main scientific challenge concerned the mechanics of planetary dynamics, and the book describes the basic numerical methods of that time. In turn, at the end of the Second World War scientific computing took a giant step forward with the advent of electronic computers, which greatly accelerated the development of numerical methods. As a result, scientific computing became established as a third scientific method in addition to the two traditional branches: theory and experimentation. The book traces numerical methods’ journey back to their origins and to the people who invented them, while also briefly examining the development of electronic computers over the years. Featuring 163 references and more than 100 figures, many of them portraits or photos of key historical figures, the book provides a unique historical perspective on the general field of scientific computing – making it a valuable resource for all students and professionals interested in the history of numerical analysis and computing, and for a broader readership alike.




Fundamentals of Natural Computing


Book Description

Natural computing brings together nature and computing to develop new computational tools for problem solving; to synthesize natural patterns and behaviors in computers; and to potentially design novel types of computers. Fundamentals of Natural Computing: Basic Concepts, Algorithms, and Applications presents a wide-ranging survey of novel techniqu




MATLAB for Neuroscientists


Book Description

MATLAB for Neuroscientists serves as the only complete study manual and teaching resource for MATLAB, the globally accepted standard for scientific computing, in the neurosciences and psychology. This unique introduction can be used to learn the entire empirical and experimental process (including stimulus generation, experimental control, data collection, data analysis, modeling, and more), and the 2nd Edition continues to ensure that a wide variety of computational problems can be addressed in a single programming environment. This updated edition features additional material on the creation of visual stimuli, advanced psychophysics, analysis of LFP data, choice probabilities, synchrony, and advanced spectral analysis. Users at a variety of levels—advanced undergraduates, beginning graduate students, and researchers looking to modernize their skills—will learn to design and implement their own analytical tools, and gain the fluency required to meet the computational needs of neuroscience practitioners. - The first complete volume on MATLAB focusing on neuroscience and psychology applications - Problem-based approach with many examples from neuroscience and cognitive psychology using real data - Illustrated in full color throughout - Careful tutorial approach, by authors who are award-winning educators with strong teaching experience




An Introduction to Parallel and Vector Scientific Computation


Book Description

In this text, students of applied mathematics, science and engineering are introduced to fundamental ways of thinking about the broad context of parallelism. The authors begin by giving the reader a deeper understanding of the issues through a general examination of timing, data dependencies, and communication. These ideas are implemented with respect to shared memory, parallel and vector processing, and distributed memory cluster computing. Threads, OpenMP, and MPI are covered, along with code examples in Fortran, C, and Java. The principles of parallel computation are applied throughout as the authors cover traditional topics in a first course in scientific computing. Building on the fundamentals of floating point representation and numerical error, a thorough treatment of numerical linear algebra and eigenvector/eigenvalue problems is provided. By studying how these algorithms parallelize, the reader is able to explore parallelism inherent in other computations, such as Monte Carlo methods.