Data-Driven Modeling & Scientific Computation


Book Description

Combining scientific computing methods and algorithms with modern data analysis techniques, including basic applications of compressive sensing and machine learning, this book develops techniques that allow for the integration of the dynamics of complex systems and big data. MATLAB is used throughout for mathematical solution strategies.




Projects in Scientific Computation


Book Description

This interdisciplinary book provides a compendium of projects, plus numerous example programs for readers to study and explore. Designed for advanced undergraduates or graduates of science, mathematics and engineering who will deal with scientific computation in their future studies and research, it also contains new and useful reference materials for researchers. The problem sets range from the tutorial to exploratory and, at times, to "the impossible". The projects were collected from research results and computational dilemmas during the authors tenure as Chief Scientist at NeXT Computer, and from his lectures at Reed College. The content assumes familiarity with such college topics as calculus, differential equations, and at least elementary programming. Each project focuses on computation, theory, graphics, or a combination of these, and is designed with an estimated level of difficulty. The support code for each takes the form of either C or Mathematica, and is included in the appendix and on the bundled diskette. The algorithms are clearly laid out within the projects, such that the book may be used with other symbolic numerical and algebraic manipulation products




Scientific Computation


Book Description

Using real-life applications, this graduate-level textbook introduces different mathematical methods of scientific computation to solve minimization problems using examples ranging from locating an aircraft, finding the best time to replace a computer, analyzing developments on the stock market, and constructing phylogenetic trees. The textbook focuses on several methods, including nonlinear least squares with confidence analysis, singular value decomposition, best basis, dynamic programming, linear programming, and various optimization procedures. Each chapter solves several realistic problems, introducing the modeling optimization techniques and simulation as required. This allows readers to see how the methods are put to use, making it easier to grasp the basic ideas. There are also worked examples, practical notes, and background materials to help the reader understand the topics covered. Interactive exercises are available at www.cambridge.org/9780521849890.




An Introduction to High-performance Scientific Computing


Book Description

Designed for undergraduates, An Introduction to High-Performance Scientific Computing assumes a basic knowledge of numerical computation and proficiency in Fortran or C programming and can be used in any science, computer science, applied mathematics, or engineering department or by practicing scientists and engineers, especially those associated with one of the national laboratories or supercomputer centers. This text evolved from a new curriculum in scientific computing that was developed to teach undergraduate science and engineering majors how to use high-performance computing systems (supercomputers) in scientific and engineering applications. Designed for undergraduates, An Introduction to High-Performance Scientific Computing assumes a basic knowledge of numerical computation and proficiency in Fortran or C programming and can be used in any science, computer science, applied mathematics, or engineering department or by practicing scientists and engineers, especially those associated with one of the national laboratories or supercomputer centers. The authors begin with a survey of scientific computing and then provide a review of background (numerical analysis, IEEE arithmetic, Unix, Fortran) and tools (elements of MATLAB, IDL, AVS). Next, full coverage is given to scientific visualization and to the architectures (scientific workstations and vector and parallel supercomputers) and performance evaluation needed to solve large-scale problems. The concluding section on applications includes three problems (molecular dynamics, advection, and computerized tomography) that illustrate the challenge of solving problems on a variety of computer architectures as well as the suitability of a particular architecture to solving a particular problem. Finally, since this can only be a hands-on course with extensive programming and experimentation with a variety of architectures and programming paradigms, the authors have provided a laboratory manual and supporting software via anonymous ftp. Scientific and Engineering Computation series




Programming Models for Parallel Computing


Book Description

An overview of the most prominent contemporary parallel processing programming models, written in a unique tutorial style. With the coming of the parallel computing era, computer scientists have turned their attention to designing programming models that are suited for high-performance parallel computing and supercomputing systems. Programming parallel systems is complicated by the fact that multiple processing units are simultaneously computing and moving data. This book offers an overview of some of the most prominent parallel programming models used in high-performance computing and supercomputing systems today. The chapters describe the programming models in a unique tutorial style rather than using the formal approach taken in the research literature. The aim is to cover a wide range of parallel programming models, enabling the reader to understand what each has to offer. The book begins with a description of the Message Passing Interface (MPI), the most common parallel programming model for distributed memory computing. It goes on to cover one-sided communication models, ranging from low-level runtime libraries (GASNet, OpenSHMEM) to high-level programming models (UPC, GA, Chapel); task-oriented programming models (Charm++, ADLB, Scioto, Swift, CnC) that allow users to describe their computation and data units as tasks so that the runtime system can manage computation and data movement as necessary; and parallel programming models intended for on-node parallelism in the context of multicore architecture or attached accelerators (OpenMP, Cilk Plus, TBB, CUDA, OpenCL). The book will be a valuable resource for graduate students, researchers, and any scientist who works with data sets and large computations. Contributors Timothy Armstrong, Michael G. Burke, Ralph Butler, Bradford L. Chamberlain, Sunita Chandrasekaran, Barbara Chapman, Jeff Daily, James Dinan, Deepak Eachempati, Ian T. Foster, William D. Gropp, Paul Hargrove, Wen-mei Hwu, Nikhil Jain, Laxmikant Kale, David Kirk, Kath Knobe, Ariram Krishnamoorthy, Jeffery A. Kuehn, Alexey Kukanov, Charles E. Leiserson, Jonathan Lifflander, Ewing Lusk, Tim Mattson, Bruce Palmer, Steven C. Pieper, Stephen W. Poole, Arch D. Robison, Frank Schlimbach, Rajeev Thakur, Abhinav Vishnu, Justin M. Wozniak, Michael Wilde, Kathy Yelick, Yili Zheng




Topics in Advanced Scientific Computation


Book Description

The major differences between this book and richard's previous title published with TELOS in Jan. '94, are that a) in "Projects" theory was stated, then projects listed as exercises. In "Topics" there will be a set of problems. while the author will refer to some of the more useful algotithms in the "Prjects" text, most algorithms in the "Topics" vilume will be distincly new. Also, b) while "Prjects" in a course book (in context and design) with assigned Problems, "Topics" is inteded as a research reference with stated solutions. The author feels this is an extention of "Projects". "Topics" has a 40-page appendix and no diskette. Finally, the overall style and level of presentation are directed towars the research professional in "Topics", rather than a textbook approach.




Scientific Programming and Computer Architecture


Book Description

A variety of programming models relevant to scientists explained, with an emphasis on how programming constructs map to parts of the computer. What makes computer programs fast or slow? To answer this question, we have to get behind the abstractions of programming languages and look at how a computer really works. This book examines and explains a variety of scientific programming models (programming models relevant to scientists) with an emphasis on how programming constructs map to different parts of the computer's architecture. Two themes emerge: program speed and program modularity. Throughout this book, the premise is to "get under the hood," and the discussion is tied to specific programs. The book digs into linkers, compilers, operating systems, and computer architecture to understand how the different parts of the computer interact with programs. It begins with a review of C/C++ and explanations of how libraries, linkers, and Makefiles work. Programming models covered include Pthreads, OpenMP, MPI, TCP/IP, and CUDA.The emphasis on how computers work leads the reader into computer architecture and occasionally into the operating system kernel. The operating system studied is Linux, the preferred platform for scientific computing. Linux is also open source, which allows users to peer into its inner workings. A brief appendix provides a useful table of machines used to time programs. The book's website (https://github.com/divakarvi/bk-spca) has all the programs described in the book as well as a link to the html text.




Scientific Computing


Book Description

This book differs from traditional numerical analysis texts in that it focuses on the motivation and ideas behind the algorithms presented rather than on detailed analyses of them. It presents a broad overview of methods and software for solving mathematical problems arising in computational modeling and data analysis, including proper problem formulation, selection of effective solution algorithms, and interpretation of results.? In the 20 years since its original publication, the modern, fundamental perspective of this book has aged well, and it continues to be used in the classroom. This Classics edition has been updated to include pointers to Python software and the Chebfun package, expansions on barycentric formulation for Lagrange polynomial interpretation and stochastic methods, and the availability of about 100 interactive educational modules that dynamically illustrate the concepts and algorithms in the book. Scientific Computing: An Introductory Survey, Second Edition is intended as both a textbook and a reference for computationally oriented disciplines that need to solve mathematical problems.




Numerical Analysis and Scientific Computation


Book Description

This text is intended for a first course in Numerical Analysis taken by students majoring in mathematics, engineering, computer science, and the sciences. This text emphasizes the mathematical ideas behind the methods and the idea of mixing methods for robustness. The optional use of MATLAB is incorporated throughout the text.




Parallel Scientific Computing in C++ and MPI


Book Description

Numerical algorithms, modern programming techniques, and parallel computing are often taught serially across different courses and different textbooks. The need to integrate concepts and tools usually comes only in employment or in research - after the courses are concluded - forcing the student to synthesise what is perceived to be three independent subfields into one. This book provides a seamless approach to stimulate the student simultaneously through the eyes of multiple disciplines, leading to enhanced understanding of scientific computing as a whole. The book includes both basic as well as advanced topics and places equal emphasis on the discretization of partial differential equations and on solvers. Some of the advanced topics include wavelets, high-order methods, non-symmetric systems, and parallelization of sparse systems. The material covered is suited to students from engineering, computer science, physics and mathematics.