Python for Classical Mechanics
by Christensen, Tjossem
ISBN: | Copyright 2025
Instructor Requests
| 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) | |