Python for Classical Mechanics

by Christensen, Tjossem

ISBN: | Copyright 2025

Click here to preview

Instructor Requests

Ancillaries
Tabs
Expand/Collapse All
Front Cover (pg. i)
Title Page (pg. iv)
Contents (pg. vi)
Preface (pg. xvi)
Acknowledgments (pg. xviii)
1 Introduction (pg. 1)
1.1 Why Classical Mechanics? Why Python? (pg. 1)
1.2 Who Is This Book For? (pg. 2)
1.3 A Word of Encouragement to the Student (pg. 2)
2 How to Use This Book (pg. 3)
2.1 Course Structure (pg. 3)
2.2 Scheduling (pg. 4)
2.3 Working through the Units (pg. 5)
2.4 Relationship among Units (pg. 6)
3 Description of Units (pg. 11)
4 Preparing to Use Jupyter Notebook with Python (pg. 19)
4.1 Installation on a Personal Computer (pg. 19)
4.2 Using a Web Server to Run Jupyter Notebook (pg. 21)
5 Introduction to Python (pg. 23)
5.1 Objectives (pg. 23)
5.2 Working with Jupyter Notebook (pg. 23)
5.3 Introduction to Python Programming (pg. 25)
5.4 Lists and Arrays (pg. 31)
5.5 Plotting (pg. 37)
5.6 Check-out (pg. 40)
6 Taylor Series with Loops and Functions (pg. 41)
6.1 Objectives (pg. 41)
6.2 Taylor Series (pg. 42)
6.3 New Programming Tools (pg. 45)
6.4 Taylor Series Using Loops, Functions, and Conditional Statements (pg. 59)
6.5 Check-out (pg. 62)
7 Numerical Integration Applied to Projectile Motion (pg. 63)
7.1 Objectives (pg. 63)
7.2 Simple Euler Integration of 2-D Projectile Motion (pg. 64)
7.3 Improving the Simple Euler Integration Method: Euler Half-Step Integration (pg. 70)
7.4 Check-out (pg. 75)
7.5 Challenge Problem (pg. 75)
8 Projectile Motion with Drag (pg. 77)
8.1 Objectives (pg. 77)
8.2 Improved Euler Numerical Integration (pg. 78)
8.3 Projectile Motion with Linear Drag (pg. 79)
8.4 Quadratic Drag (pg. 80)
8.5 Linear and Quadratic Drag (pg. 83)
8.6 Check-out (pg. 84)
8.7 Challenge Problem (pg. 84)
9 Launching a Rocket (pg. 85)
9.1 Objectives (pg. 85)
9.2 Motion of Rocket without Gravity (pg. 86)
9.3 Introducing solve_ivp() for a Rocket (pg. 87)
9.4 Motion of a Rocket in a Constant Gravitational Field (pg. 93)
9.5 Launching to the International Space Station (pg. 95)
9.6 Check-out (pg. 97)
9.7 Challenge Problem (pg. 97)
10 Simple Pendulum with Large-Angle Release (pg. 99)
10.1 Objectives (pg. 99)
10.2 Simple Pendulum, Theory (pg. 99)
10.3 Numerical Solution for θ(t) (pg. 100)
10.4 Comparing Solutions for Simple Pendulum at Different Initial Angles (pg. 103)
10.5 Period of Simple Pendulum as a Function of Release Angle (pg. 105)
10.6 Check-out (pg. 109)
10.7 Challenge Problems (pg. 109)
11 Comparing Data and Theory for Simple Pendulum (pg. 113)
11.1 Objectives (pg. 113)
11.2 Computational Solution (pg. 113)
11.3 Analytical Solution (pg. 114)
11.4 Experimental Solution (pg. 117)
11.5 Check-out (pg. 124)
12 Oscillations in a Potential Well (pg. 125)
12.1 Objectives (pg. 125)
12.2 Potential Energy Function for an Oscillating Wheel (pg. 126)
12.3 Analytical Approximation Using Taylor Series (pg. 130)
12.4 Computational Solution for φ(t) (pg. 132)
12.5 Check-out (pg. 138)
12.6 Challenge Problems (pg. 138)
13 Damped and Undamped Harmonic Oscillators (pg. 141)
13.1 Objectives (pg. 141)
13.2 Harmonic Motion without Damping (pg. 141)
13.3 Damped Harmonic Oscillator (pg. 145)
13.4 Check-out (pg. 150)
13.5 Challenge Problems (pg. 150)
14 Driven Damped Harmonic Oscillator and Resonance (pg. 151)
14.1 Objectives (pg. 151)
14.2 Motion of a Driven Damped Harmonic Oscillator (pg. 151)
14.3 Amplitude of Driven Damped Oscillations at Resonance (pg. 153)
14.4 Phase of Driven Damped Oscillations (pg. 155)
14.5 The Phase Dependence (pg. 155)
14.6 Amplitude as a Function of Driver Frequency (pg. 157)
14.7 Creating a Numerical Resonance Curve by Plotting the Maximum Amplitude vs. Frequency (pg. 158)
14.8 Check-out (pg. 161)
14.9 Challenge Problems (pg. 161)
14.10 Contents of resonance_for_multi_processing_solvers.py (pg. 166)
15 Brachistochrone Problem (pg. 169)
15.1 Objectives (pg. 169)
15.2 Introducing the Cycloid (pg. 170)
15.3 Cycloidal Path Length (pg. 172)
15.4 Travel Time (pg. 173)
15.5 An Animation (pg. 177)
15.6 Check-out (pg. 181)
15.7 Challenge Problem (pg. 181)
16 Spherical Pendulum (pg. 183)
16.1 Objectives (pg. 183)
16.2 Equations of Motion for a Spherical Pendulum (pg. 183)
16.3 Validating Your Code with Special Cases (pg. 184)
16.4 Varying Initial Velocity (pg. 187)
16.5 Conservation of Generalized Momentum (pg. 188)
16.6 Near-Conical Motion (pg. 188)
16.7 Check-out (pg. 188)
16.8 Challenge Problems (pg. 189)
17 The Three-Body Problem (pg. 191)
17.1 Objectives (pg. 191)
17.2 Solving the Two-Body Problem Numerically for a Circular Orbit (pg. 192)
17.3 Numerical Integration of the Three-Body Problem (pg. 194)
17.4 Making a Movie (pg. 198)
17.5 Three Dimensions (pg. 201)
17.6 Check-out (pg. 202)
17.7 Challenge Problem (pg. 203)
18 Orbits, Keplerian and Not (pg. 205)
18.1 Objectives (pg. 205)
18.2 Circular Keplerian Orbit (ϵ = 0) (pg. 206)
18.3 Numerical Solution (pg. 206)
18.4 An Elliptical Orbit (pg. 208)
18.5 Hyperbolic Orbits (pg. 212)
18.6 Comparing with Pluto Ephemeris (pg. 213)
18.7 Non-Keplerian Orbits (pg. 215)
18.8 Check-out (pg. 216)
18.9 Challenge Problems (pg. 217)
19 Motion on a Turntable (pg. 219)
19.1 Objectives (pg. 219)
19.2 Preliminary Questions (pg. 220)
19.3 Framing the Problem (pg. 220)
19.4 Animating the Trajectory (pg. 226)
19.5 Check-out (pg. 230)
19.6 Challenge Problems (pg. 230)
20 Coriolis Force on Earth (pg. 231)
20.1 Objectives (pg. 231)
20.2 Equations of Motion (pg. 231)
20.3 Solving the Equations of Motion (pg. 232)
20.4 Verifying Your Code (pg. 236)
20.5 Exploring Different Initial Conditions (pg. 236)
20.6 Integrating with Realistic Parameters (pg. 237)
20.7 Check-out (pg. 238)
20.8 Challenge Problems (pg. 238)
21 Principal Axes of a Cuboid (pg. 239)
21.1 Objectives (pg. 239)
21.2 Coding Techniques Preamble (pg. 239)
21.3 Moment of Inertia Tensor and Angular Momentum (pg. 244)
21.4 Finding the Principal Axes (pg. 248)
21.5 Check-out (pg. 252)
21.6 Challenge Problem (pg. 252)
22 Precession of a Cuboid (pg. 253)
22.1 Objectives (pg. 253)
22.2 Creating and Importing Modules (pg. 253)
22.3 Euler’s Equations (pg. 255)
22.4 Check-out (pg. 259)
22.5 Template Code for principal_axes.py (pg. 260)
23 Masses Connected with Springs (pg. 261)
23.1 Objectives (pg. 261)
23.2 Two Carts Connected and Attached between Two Walls by Three Springs (pg. 262)
23.3 Identical Masses and Springs (pg. 263)
23.4 Weak Coupling, an Illustration of Beats (pg. 269)
23.5 Fourier Analysis (pg. 272)
23.6 Check-out (pg. 276)
23.7 Challenge Problems (pg. 276)
24 Damped Driven Pendulum (pg. 279)
24.1 Objectives (pg. 279)
24.2 Equation of Motion (pg. 280)
24.3 Numerical Solution (pg. 281)
24.4 Behavior with Increasing Values of Driving (pg. 282)
24.5 Sensitivity to Initial Conditions (pg. 284)
24.6 Check-out (pg. 288)
24.7 Challenge Problem (pg. 288)
25 Bifurcation Diagram (pg. 293)
25.1 Objectives (pg. 293)
25.2 Setup (pg. 294)
25.3 One-Point Bifurcation Diagram (pg. 295)
25.4 Creating the Full Bifurcation Diagram (pg. 298)
25.5 Features of the Bifurcation Diagram (pg. 299)
25.6 Class Parallel Programming Project (pg. 300)
25.7 Check-out (pg. 303)
25.8 Challenge Problem (pg. 303)
25.9 Template Code for damped_driven_pendulum.py (pg. 304)
26 State-Space Orbits and Poincaré Sections (pg. 305)
26.1 Objectives (pg. 305)
26.2 Setup (pg. 306)
26.3 State-Space (pg. 306)
26.4 Poincaré Sections (pg. 309)
26.5 Strange Attractors (pg. 311)
26.6 Check-out (pg. 313)
Appendix A: Using solve_ivp() for Numerical Integration (pg. 315)
A.1 Using solve_ivp() (pg. 315)
Appendix B: Basic Input/Output of Files in Python (pg. 327)
B.1 Read/Write to a File Handle (pg. 327)
B.2 Using NumPy for Reading and Writing Data Arrays (pg. 331)
B.3 Pandas (pg. 333)
B.4 Binary Data (pg. 340)
Appendix C: Creating Animations with FuncAnimation (pg. 347)
C.1 Overview (pg. 348)
C.2 Walk-through Example (pg. 348)
C.3 Call the Animator (pg. 352)
Index (pg. 357)
Back Cover (pg. 361)