Physics Simulations in Python

Physics Simulations in Python

A Lab Manual

Daniel V. Schroeder Physics Department Weber State University

August 2022

Copyright ?2018?2022, Daniel V. Schroeder.

Adapted from Physics Simulations in Java, copyright ?2005?2011.

This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this license, visit . org/licenses/by/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.

You can obtain the latest version of this manual at . edu/schroeder/scicomp/. There you can also find the LATEX source and illustration files, to facilitate adapting this manual to different needs.

Contents

Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iv Project 1: Making Shapes . . . . . . . . . . . . . . . . . . . . . 1 Project 2: Projectile Motion . . . . . . . . . . . . . . . . . . . 11 Project 3: Pendulum . . . . . . . . . . . . . . . . . . . . . . . 25 Project 4: Orbits . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Project 5: Molecular Dynamics . . . . . . . . . . . . . . . . . . 47 Project 6: Random Processes . . . . . . . . . . . . . . . . . . . 61 Project 7: Final Project . . . . . . . . . . . . . . . . . . . . . . 73

iii

Preface

Introductory physics courses are full of simplifications: projectiles fly without air resistance, pendulums swing only at small angles, orbits are always circular, and no more than two particles move at any time. These kinds of simplifications are necessary and appropriate when you're first trying to understand the basic laws of nature. But the real world is far more complex, and far more interesting. Because the ultimate goal of physics is to understand the real world, students deserve a course that applies the laws of physics to more complex situations.

Fortunately, modern electronic computers make it possible to perform extremely lengthy calculations in a negligible amount of time. These days, therefore, computers offer the best avenue toward applying the basic laws of nature to complex and realistic physical systems. A computer program that models the behavior of a physical system is called a computer simulation. Creating and using computer simulations is an integral part of modern science and engineering.

This manual is intended for a hands-on introductory course in computer simulations of physical systems, using the Python programming language. The goals of the course are as follows:

? Learn enough of the Python language and the VPython and matplotlib graphics packages to write programs that do numerical calculations with graphical output;

? Learn some step-by-step procedures for doing mathematical calculations (such as solving differential equations) on a computer;

? Gain a better understanding of Newton's laws and other physical principles;

? Study a variety of physical systems that are too complex for simple penciland-paper calculations, and see what sorts of behavior emerge in such systems.

Prerequisites

Before working through the projects in this manual you should have completed a semester of introductory physics, covering Newton's laws of motion, conservation principles, and a bit of thermodynamics. You should also have taken at least one semester of calculus. Prior expertise in writing computer programs is not required, but you should be fairly comfortable using a web browser, word processor, and spreadsheet, and you should have some experience at being careful with computer syntax (in any programming language).

iv

Preface

v

Required materials

Naturally, you'll need a computer. The first five projects use a cloud-based version of Python called Web VPython, so for those you can use any computer with an internet connection and a modern web browser. (A tablet device without a physical keyboard is not adequate.) For Project 6, you may need to install a free version of the Python language and environment (if you're not using a computer on which it is installed already).

Your Web VPython programs will be automatically saved on Google's servers, but for any other files you'll need to use either some other type of cloud storage or a USB memory stick for backup.

A pocket calculator (perhaps on your mobile phone) will sometimes come in handy.

Finally, you'll need a few low-tech materials such as scratch paper, pencils, a ruler, and a small three-ring binder to hold this manual.

How to use this manual

This manual is divided into six main chapters, corresponding to six separate projects. In each project you will write a computer program or (more often) a small number of closely related computer programs. Rather than giving you complete programs to run, the project instructions will provide only code fragments and general guidelines on how to write your programs. This way, once you have completed each program, it will be yours.

As you create your computer programs, you will inevitably have questions and encounter difficulties. While you should try to think things through for yourself whenever possible, don't spend too much time being stuck and getting frustrated. Ask your instructor or your lab partner or your other classmates for help. This is not a test.

Exercises and questions will be sprinkled among the instructions in this manual, with space for you to write your answers. Please make every effort to work each exercise and answer each question immediately, before you read on.

The general premise of this manual is that you'll learn more by trying something than by reading a comprehensive explanation of it. Computer languages are like ordinary languages in this respect: We normally learn new words by hearing, reading, and using them in context, not by studying a dictionary. But if you want to see a term clearly defined, feel free to ask your instructor or look it up online.

Computer programming is fun because it's so open-ended. You'll constantly think of things to try that go beyond the explicit instructions. By all means, try anything you want! If you're not sure how to add a certain feature to one of your simulations, or if you're not sure whether it's practical to do so within a limited amount of time, be sure to ask your instructor.

When you finish a project, gather the instruction pages and staple them together with any printed output from your programs. This stapled packet, together with

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download