Physics Simulations in Python

Physics Simulations in Python

A Lab Manual

Daniel V. Schroeder

Physics Department

Weber State University

August 2022

Copyright ?2018¨C2022, Daniel V. Schroeder.

Adapted from Physics Simulations in Java, copyright ?2005¨C2011.

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