Python for learning Science and Maths

   In the high school classes, we learn about the various branches of mathematics, like geometry, algebra, trigonometry, calculus etc. , without bothering much about their interconnections. Plotting the graphs of different algebraic and trigonometric functions helps understanding them better. Simple numerical methods can demonstrate the connection between algebra and calculus. This knowledge is useful for for exploring the problems in physics in a different manner.

    This document explains the implementation of this concept using the Python programming language and the Python modules like numpy, matplotlib and scipy. It attempts to introduce Python as an an extension to your existing knowledge of algebra and logic.

    On the computer front, you only need to know how to use a text editor and how to run the Python interpreter from a text terminal. We are using the editor called gedit and a command terminal under Ubuntu GNU/Linux distribution. The software requirement is Python Interpreter along with Numpy, Scipy and Matplotlib packages.

Several videos made during writing these examples also have been uploaded to the Youtube. (Keeping the RecordmyDesktop program running and mumbling while writing code can generate the drag and audio comparable to that of a 19th century steam locomotive)

Youtube Videos

plot-equation.py : Plotting Graphs using numpy and matplotlib. The example demonstrates sine(x), you may also try other functions. screenshot


sum-of-sines.py : Sum of two sine waves result in beats.  screenshot.

product-of-sines.py
: Amplitude modulation by multiplying two sine waves.  screenshot

3phase-ac.py : Amplitude modulation by multiplying two sine waves.  screenshot

mass-spring-euler.py : Solve the mass on a spring system using Euler method of integration. screenshot

mass-spring-visual.py
: Mass Spring system animation using python-visual, computation using Euler method of integration

accn-vel-from-pos.py
: Calculate acceleration and velocity from position data. screenshot

integrate-trapez.py : Calculate the area under an arc of unit radius from x=0 to 1, using trapezoid rule . Compare the result with pi/4. screenshot

integrate-scipy-quad.py : Calculate the area under an arc of unit radius from x=0 to 1, using scipy.integrate.quad() function

pos-time-plot-euler.py :  One dimensional motion. Velocity and initial position given. Use Euler integration to plot x(t) . screenshot

rdecay-euler.py
: Plot the radioactive decay curve calculated using Euler method of solving differential equation. screenshot

rdecay-scipy.py
: Radioactive decay curve. dN/dt = L * N, solved using scipy.integrate.odeint() . screenshot

rdecay2-scipy.py : Radioactive decay curve. dN/dt = L * N. Two of them solved at a time using scipy.integrate.odeint() . screenshot

second-order-de-scipy.py : Solving second order equation by splitting into two first order ones. solve d2y/dx2 = -y  gives  y=sin(x).  screenshot

projectile-2d-euler.py : Projectile motion, trajectory in x-y plane calculated using Euler's method. screenshot

projectile-2d-scipy.py : Projectile motion, trajectory in x-y plane calculated using scipy.integrate.odeint(). screenshot

mass-spring-scipy.py : Solve the mass on a spring system using scipy.integrate.odeint(). screenshot

Lorentz-force-scipy.py : Trajectory of a charged particle in electric and magnetic fields. screenshot

Lorentz-force-scipy-vector.py : Trajectory of a charged particle in electric and magnetic fields, using vector equations. screenshot

Lorentz-force-euler.py : Trajectory of a charged particle in electric and magnetic fields. screenshot , circle is becoming spiral due to computational error.

plot-data-3d.py : #Reads multi-column text data from files and plots the first 3 columns, screenshot shows the data from file.

plot-data-2d.py : #Reads multi-column text data from files and plots the first 2 columns, screenshot shows the data from file.


Python book and Code Browser

Download Python for Education is PDF format.  The Code Browser can be installed on Debian and Ubuntu (>14.04).