Introduction to Scientific Computing and Data Analysis
by Mark H. Holmes

Preface and table of contents


MATLAB and data files used to construct the figures and tables in the text.

General purpose MATLAB commands based on algorithms discussed in the text.

Answers and Extras



Sample Course Syllabi

Tutorials and help files for MATLAB

Springer web page for book

Contact Information
Mark H. Holmes
Department of Mathematical Sciences
Rensselaer Polytechnic Institute, Troy, NY 12180 USA
holmes (

Author web page

Book Cover

Back to Book Page

Page Last Updated: 7/30/2018

MATLAB and Data Files
The following contain the MATLAB and data files used in the textbook. They are compressed (zip) files, that should download automatically when you click on them. If this doesn't work, the most likely reason is that your browser doesn't support the download attribute in html. In this case, try the newest version of Chrome or Firefox. Here are some comments related to certain MATLAB commands I use.

Chapter 1
Chapter 2
Chapter 3
Chapter 4
Chapter 5
Chapter 6
Chapter 7
Chapter 8
Chapter 9
Chapter 10 Supplemental Topics
Appendix D Introduction to MATLAB Programming
m-files used in Appendix D: m-files
Appendix E Matrix Algebra: Summary

Sample Course Syllabi

Below are links to web-pages I created for courses I have taught using this text. The first course listed (MATH-4800) is an introduction to scientific computing, and the second (MATH-4840) is a junior/senior level course on numerical linear algebra and data analysis. What is provided is only meant to be an illustration on how the text can be used. Also, I often modify the topics in the last part of MATH-4800, and MATH-4840 was only been taught once (it was created in 2017).

MATH-4800 Numerical Computing

MATH-4840 Numerical Linear Algebra with Applications

Tutorials and Help Files for MATLAB

There are many tutorials and quick reference guides for MATLAB on the web. The following is a short list of those that should be the most helpful.

MathWorks Tutorials and learning resources maintained by MathWorks.

MATLAB Quick Reference A list by Jialong He

MATLAB Commands and Functions A list by Brian Vick, Mechanical Engineering Department, Virginia Tech

General Purpose MATLAB Commands

The following are general purpose MATLAB functions based on algorithms discussed in the text. An explanation of how to use the command, along with examples, are provided in each file. These files are also available from Mathworks' File Exchange. Note that they should download automatically when you click on them (if you are using Chrome or Safari). I have no idea what happens using IE.

solve.m (updated: 4/20/18) This finds a solution of f(x)=0. It is capable of solving equations where MATLAB's fzero command fails, it does not require (or use) MATLAB's vectorization notation, and it is comparable with fzero in terms of speed and accuracy.

tridiag.m This is an implementation of the Thomas algorithm (for solving a nxn tridiagonal matrix equation).

splineA.m (updated: 5/6/18) Cubic spline interpolation. It works for nonuniformly spaced nodes, and it can also handle any combination of first or second derivative end conditions (so, it includes both natural and clamped cubic splines).

splineB.m (updated: 5/6/18) Cubic spline interpolation. The difference from splineA.m is that this program finds the coefficients of the cubics making up the spline.

int.m This computes the integral of f(x) from x=a to x=b using an adaptive Simpson's rule. MATLAB vectorization is not used when defining the function. Even so, in terms of speed and accuracy, it is comparable to MATLAB's integrate command.

cgm.m (updated: 4/15/18) This solves Ax=b using the conjugate gradient method.

cgmS.m This solves Ax=b using the conjugate gradient method, when A is a large sparse matrix that is stored in a row-compressed format. This format is explained in Section 10.2.2.