Modeling and Simulation in Python by Allen Downey