Hey Brilliant!In this note I will try to introduce the basic techniques of computer simulations and give a few elementary examples to illustrate the power of computation.
\[\huge{\text{Introduction}}\]
Scientists of many disciplines are often fond of saying that mathematics is a 'tool' they use for solving problems.While 'tool' is not a name most mathematicians are comfortable with,I would like to introduce an equally powerful but lesser known 'tool',computation.
Computation is now an integral part of contemporary science and it is having a profound effect on the way we do science. We are starting to advance from traditional 'wet labs' where physical objects are used for performing experiments,towards 'dry labs' where equivalent experiments are crunched using a computer model.
We are now at a time where scientists have managed to simulate complete organisms,portions of the universe and even brains!While traditional tools such as numerical analysis and symbolic manipulation are important in computation,the key difference is that simulations are done with a minimum of analysis,they focus on explanatory modes of learning
\[\huge{\text{Choosing a language}}\]
There is no single best programming language like there is no single best natural language. However I will be using python in this note series.Sure, it might be a relatively slow language,but it is also very readable.
Python enthusiasts like to say that languages like C and C++ were made to make life easier for the computer but python was made to make life easier for the programmer.We will also be using external python libraries like pygame and matplotlib for creating animations and visuals to go along with the simulations.Now that we are done with the prerequisites,let's get cracking.
\[\huge{\text{2D Motion}}\]
Consider a particle near the surface of the Earth exhibiting projectile motion and subject to a single force,the force of gravity.If we assume that air resistance is negligible,from Newton's second law,we can get the particle's position as a function of time.
\[g=\frac{d^{2}x}{dt^{2}} \]
This is a statement of a model of the motion of the ball.You are probably familiar with it and know the analytical solutions:
\[x(t) = v_{x}(0)t \]
\[v_x(t) = v_x(0) \]
\[y(t)=y(0) + u_{y}t  \frac{1}{2}gt^{2} \]
\[v_y(t) = v_y(0)  gt\]
Where \(x,y,v_x,v_y\) are the horizontal position,vertical position,horizontal velocity and vertical velocity respectively.Also \(v_x(t)=v_x(t)cos(\theta)\) and \(v_y(t)=v_y(t)sin(\theta)\).
You are probably familiar with the model above but nevertheless,we will determine the motion of the particle numerically in order to introduce the tools that we will need in a familiar context. We begin by expressing the equations as first order differential equations:
\[\frac{dx}{dt}=u_x\]
\[\frac{dy}{dt}=v_y\]
\[\frac{dv_y}{dt}=g\]
\[\frac{dv_x}{dt}=0\]
We next approximate the derivatives by small finite differences.
\[ \frac{y(t+\Delta t)  y(t)}{\Delta t} = v(t) \]
\[ \frac{v(t+\Delta t)  v(t)}{\Delta t} = g \]
Note that in the limit \( \Delta t\) approaches \(0\). We can rewrite the above as. \[y(t+\Delta t)=y(t) + v(t)\Delta t\]
\[v(t+\Delta t)=v(t)  g \Delta t\] We can write our equations in this form \[y(t+\Delta t)=y(t) + v_y(t)\Delta t\]
\[v_y(t+\Delta t)=v_y(t)  g \Delta t\]
\[x(t+\Delta t)=x(t) + v_x(t)\Delta t\]
\[v_x(t+\Delta t)=v_x(t)\] The finite difference approximation we used to obtain these equations is an example of the Euler algorithm.
In general, for the first order differential: \[\frac{dy}{dx}=f(x)\] Where \(f(x)\) is a function of \(x\) \[y_{n+1}=y_{n}+f(x_n)\Delta x\]
In computation we can only deal with a countable number of input(as continuous input would require infinite computing power),thus such types of numerical algorithms,where we can obtain a desired value from previous values,are essential when running simulations.
\[\huge{\text{Coding it all up}}\]
Our equations above are examples of finite difference equations and \(\Delta t\) is the time step.We can now follow \(y(t),x(t),v_x(t)\) and \(v_y(t)\) in time. We begin with initial values and then iterate.If \(\Delta t\) is sufficiently small we will obtain numerical answers close to the solutions of the original differential equations.
The image above demonstrates the discrepancy between the curve and its polygonal approximation.
I shall describe the syntax used in each line of the program using comments.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 

In the code above a projectile is launched at an angle \(\theta\). The while loop iterates through each time interval \(dt\) and computes the position and velocity of the ball at that time.It stops when the ball returns to the ground(\(y<0\)).I used \(\Delta t=0.0001\) which gave results accurate to three decimal places.
Just by tracking the ball's position and velocity we have found information such as the total flight time,the range of the projectile,its mean height throughout the motion and its maximum height without involving ourselves too much in the mathematics.
Though doing the math itself is very easy here,such simulations are really helpful for more realistic situations where there are too many factors(drag,altitude,even the gravitational attraction of the moon) that affect the system.In those cases we can easily extend our simulation to get acceptable approximations in an easy way.
Using external libraries we can obtain plots of the \((x,y)\) coordinates as well as animations of the simulation.
\[\huge{\text{Summary}}\]
The goal of our investigation here was to show how simulations can be used to simplify problems.Computer simulations,like laboratory experiments are not substitutes for thinking but are tools we can use to understand natural phenomena.
Hopefully I will soon write notes on simulations of more realistic physical systems(Motion with drag,Damped oscillatory motion,chaotic systems..etc). Thank you for bearing with me through out this long note and I hope I managed to give you a glimpse of how cool computation can be.
Comments
Sort by:
Top NewestCombining Physics and Computers ... That makes already cool Physics cooler !!! – Soutrik Bandyopadhyay · 2 years, 10 months ago
Log in to reply
Very nice! – Michael Mendrin · 2 years, 10 months ago
Log in to reply
HI, try visiting www.sciencefront.webs.com for cool ideas and interesting news and facts of science – Kshitij Khandelwal · 2 years, 10 months ago
Log in to reply
very good work my son is 17 and use simulations in physics – Aliki Patsalidou · 2 years, 10 months ago
Log in to reply
Please keep writing. This was really nice and interesting. – Himanshu Arora · 2 years, 10 months ago
Log in to reply
This was info of great value. Thanx – Shekhar Lolage · 2 years, 9 months ago
Log in to reply
Physics with computer, world is getting digital now. Oh yeah! – Nirupam Singh · 2 years, 10 months ago
Log in to reply
I'mso damn cconfused – Äräháàñ Shâh · 2 years, 10 months ago
Log in to reply
I am trying to find a new language for programming, as you didn't mention java in your note, what do you think would best if I want to pursue programming for making apps. – Hardipinder Singh · 2 years, 10 months ago
Log in to reply
– Thaddeus Abiy · 2 years, 10 months ago
It depends on what platform you are coding for.Android or IOS?Log in to reply
– Hardipinder Singh · 2 years, 10 months ago
I am more interested in android but if time comes I would like to go for ios alsoLog in to reply
– Thaddeus Abiy · 2 years, 10 months ago
I'm no expert on this but I have heard that Java is Definitely the way to go for Android development and ObjectiveC is absolutely necessary for IOS development. Ofcourse there are other options..Log in to reply
– Hardipinder Singh · 2 years, 10 months ago
Thank you sir, and if you may please elaborate these other options.Log in to reply
ASE platform,it was made possible to code for Android in Python,Perl,Lua,Beanshell...etc.. – Thaddeus Abiy · 2 years, 10 months ago
Following the release of theLog in to reply
– Hardipinder Singh · 2 years, 10 months ago
Thank you again :)Log in to reply
Good – Platinum Grieger · 2 years, 10 months ago
Log in to reply
Great post! Awaiting part 2. – Anthony Georgilas · 2 years, 10 months ago
Log in to reply
Very nice! Congrats! – Bruna Torman · 2 years, 10 months ago
Log in to reply
Great Note! – Ameya Salankar · 2 years, 10 months ago
Log in to reply
Awesome noteKeep up the good work!!
Can you please tell me how to add the block of code in the note?? – Eddie The Head · 2 years, 10 months ago
Log in to reply
this for clarification – Thaddeus Abiy · 2 years, 10 months ago
You can add code by placing your code in between two lines of ```. Look atLog in to reply
Really helpful thanks – Mardokay Mosazghi · 2 years, 10 months ago
Log in to reply
– Thaddeus Abiy · 2 years, 10 months ago
Glad you think so. :)Log in to reply
(y) – Dhanush Wali · 2 years, 10 months ago
Log in to reply