Physical Modeling in MATLAB

by Allen B. Downey

Physical Modeling in MATLAB is an introduction to programming in MATLAB and simulation of physical systems.

Read this book online.

Download the book in PDF now, or buy the paperback edition from or


Most books that use MATLAB are aimed at readers who know how to program. This book is for people who have never programmed before.

As a result, the order of presentation is unusual. The book starts with scalar values and works up to vectors and matrices very gradually. This approach is good for beginning programmers, because it is hard to understand composite objects until you understand basic programming semantics. But there are problems:

  • The MATLAB documentation is written in terms of matrices, and so are the error messages. To mitigate this problem, the book explains the necessary vocabulary early and deciphers some of the messages that beginners find confusing.

  • Many of the examples in the first half of the book are non-standard MATLAB. I address this problem in the second half by translating the examples into a more idiomatic style.
The book puts a lot of emphasis on functions, in part because they are an important tool for controlling program complexity, and also because they are useful for working with MATLAB tools like fzero and ode45.

I assume that readers know calculus, differential equations, and physics, but not linear algebra. I explain the math as I go along, but the descriptions might not be enough for someone who hasn't seen the material before.

There are small exercises within each chapter, and a few larger exercises at the end of some chapters.

This is version 1.1 of the book. It is a work in progress, so I welcome suggestions and corrections. Please send them to downey at greenteapress dot com.

Physical Modeling in MATLAB is a free book available under the GNU Free Documentation License. Readers are free to copy and distribute the text; they are also free to modify it, which allows them to adapt the book to different needs, and to help develop new material.

A printable version of the book is available in PDF.

The LaTeX source code (with figures and a Makefile) is in this zip file.

The cat pictures from the cover are here and here.

Donate towards my web hosting bill!

Are you using one of our books in a class?

We'd like to know about it. Please consider filling out this short survey.

Think DSP

Think Java

Think Bayes

Think Python 2e

Think Stats 2e

Think Complexity