Vous êtes sur la page 1sur 205

Modeling and Simulation in Python

Version 1.0.2

Modeling and Simulation in Python

Version 1.0.2

Allen B. Downey

Green Tea Press

Needham, Massachusetts

Copyright 2017 Allen B. Downey.

Green Tea Press 9 Washburn Ave Needham MA 02492

Permission is granted to copy, distribute, transmit and adapt this work under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License: http://modsimpy.com/license.

If you are interested in distributing a commercial version of this work, please contact the author.

The L A T E X source and code for this book is available from

https://github.com/AllenDowney/ModSimPy

iv

Contents

Preface

 

xi

 

0.1 Can modeling be taught? .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

xiii

0.2 How much programming do I need?

.

.

.

.

.

.

.

.

.

.

.

.

.

.

xiv

0.3 How much math and science do I need?

.

.

.

.

.

.

.

.

.

.

xv

0.4 Getting started

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

xvi

0.5 Installing Python and the libraries .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

xvi

0.6 Copying my files .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

xvii

0.7 Running Jupyter

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

xviii

1

Modeling

1

1.1 The falling penny myth .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

1

1.2 Computation

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

3

1.3 Modeling a bike share system

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

4

1.4 Plotting

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

6

1.5 Defining functions .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

7

1.6 Parameters .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

8

1.7 Print statements .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

10

1.8 If statements

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

11

1.9 Optional parameters

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

14

1.10 For loops .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

15

vi

CONTENTS

1.11

Debugging

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

15

2 Simulation

17

2.1 Iterative modeling .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

17

2.2 More than one System object

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

18

2.3 Documentation

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

20

2.4 Negative bikes .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

21

2.5 Comparison operators .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

23

2.6 Metrics .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

24

2.7 Functions that return values

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

26

2.8 Two kinds of parameters

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

27

2.9 Loops and arrays

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

28

2.10 Sweeping parameters

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

29

2.11 Debugging

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

30

3 Explanation

31

3.1 World population data

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

31

3.2 Series .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

33

3.3 Constant growth model .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

34

3.4 Simulation

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

36

3.5 Now with System objects .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

38

3.6 Proportional growth model .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

39

3.7 Factoring out the update function

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

41

3.8 Combining birth and death .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

42

3.9 Quadratic growth

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

43

3.10 Equilibrium

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

45

3.11 Disfunctions

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

47

CONTENTS

vii

4 Prediction

51

4.1 Generating projections

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

51

4.2 Comparing projections

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

54

4.3 Recurrence relations

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

55

4.4 Differential equations

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

57

4.5 Analysis and simulation

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

59

4.6 Analysis with WolframAlpha .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

60

4.7 Analysis with SymPy

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

61

4.8 Differential equations in SymPy

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

62

4.9 Solving the quadratic growth model

.

.

.

.

.

.

.

.

.

.

.

.

.

.

63

4.10 Summary

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

64

5 Design

65

5.1 The Freshman Plague .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

65

5.2 The SIR model

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

66

5.3 The SIR equations

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

67

5.4 Implementation

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

68

5.5 The update function

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

69

5.6 Running the simulation .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

71

5.7 Collecting the results

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

71

5.8 Now with a TimeFrame .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

73

5.9 Metrics .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

75

5.10 Immunization

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

76

5.11 Hand washing

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

79

5.12 Optimization

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

82

viii

CONTENTS

6.1 Unpack

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

85

6.2 Sweeping beta

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

86

6.3 Sweeping gamma

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

88

6.4 Nondimensionalization

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

90

6.5 Contact number .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

92

6.6 Analysis and simulation

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

94

7 Thermal systems

 

97

7.1 The coffee cooling problem

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

97

7.2 Temperature and heat

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

98

7.3 Heat transfer

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

99

7.4 Newton’s law of cooling .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

100

7.5 Implementation

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

101

7.6 Using fsolve

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

103

7.7 Mixing liquids

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

106

7.8 Mix first or last?

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

107

7.9 Optimization

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

108

7.10 Analysis

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

110

8 Pharmacokinetics

 

113

8.1 The glucose-insulin system

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

113

8.2 The glucose minimal model .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

114

8.3 Data

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.