Elastic Collision

Elastic collision between two particles. $\vec{v}_{1,i}=<v_1,0,0>$ and $\vec{v}_{2,i}=0$. Show that the final velocity vectors after the collision must be perpendicular to each other.

After applying conservation of momentum and conservation of energy, we get

$$\tan{\theta_1}\tan{\theta_2}=1$$

We can write a program that substitutes values of $\theta_1$ from 0 to 89$^\circ$ and solve for $\theta_2$.


In [1]:
from math import *

In [13]:
theta1=1*pi/180
theta2=0

dtheta=1*pi/180

theta1f=89*pi/180

theta1list=[]
theta2list=[]
thetasum=[]

while theta1<theta1f:
    theta2=atan(1/tan(theta1))
    theta1list.append(theta1*180/pi)
    theta2list.append(theta2*180/pi)
    thetasum.append(theta1*180/pi+theta2*180/pi)
    print(theta1*180/pi,theta2*180/pi)
    
    theta1=theta1+dtheta


(1.0, 89.0)
(2.0, 87.99999999999999)
(3.0, 87.00000000000001)
(4.0, 86.00000000000001)
(5.0, 85.0)
(6.0, 84.0)
(7.0, 83.00000000000001)
(8.0, 82.0)
(9.0, 81.0)
(10.0, 80.0)
(10.999999999999998, 79.0)
(12.0, 78.0)
(12.999999999999998, 77.00000000000001)
(14.0, 76.0)
(14.999999999999998, 75.00000000000001)
(16.0, 74.0)
(17.0, 73.0)
(18.000000000000004, 72.0)
(19.000000000000007, 71.0)
(20.000000000000007, 70.0)
(21.000000000000007, 68.99999999999999)
(22.000000000000007, 68.0)
(23.000000000000014, 66.99999999999999)
(24.000000000000014, 66.0)
(25.000000000000014, 64.99999999999999)
(26.000000000000014, 63.99999999999999)
(27.000000000000018, 62.999999999999986)
(28.000000000000018, 61.999999999999986)
(29.000000000000014, 61.0)
(30.000000000000014, 59.999999999999986)
(31.000000000000018, 58.99999999999998)
(32.00000000000002, 57.999999999999986)
(33.00000000000002, 56.99999999999998)
(34.00000000000002, 55.99999999999997)
(35.00000000000003, 54.999999999999986)
(36.00000000000003, 53.99999999999998)
(37.00000000000003, 52.999999999999986)
(38.00000000000003, 51.99999999999998)
(39.00000000000003, 50.99999999999998)
(40.00000000000003, 49.999999999999964)
(41.000000000000036, 48.99999999999997)
(42.000000000000036, 47.999999999999964)
(43.000000000000036, 46.999999999999964)
(44.00000000000004, 45.99999999999997)
(45.000000000000036, 44.999999999999964)
(46.00000000000004, 43.99999999999997)
(47.00000000000004, 42.999999999999964)
(48.00000000000004, 41.999999999999964)
(49.00000000000004, 40.99999999999997)
(50.00000000000005, 39.99999999999997)
(51.00000000000004, 38.99999999999996)
(52.00000000000005, 37.99999999999996)
(53.00000000000005, 36.99999999999996)
(54.00000000000005, 35.99999999999996)
(55.00000000000005, 34.99999999999995)
(56.00000000000006, 33.99999999999995)
(57.00000000000005, 32.99999999999995)
(58.00000000000006, 31.99999999999995)
(59.000000000000064, 30.99999999999994)
(60.00000000000006, 29.999999999999947)
(61.000000000000064, 28.999999999999936)
(62.000000000000064, 27.999999999999947)
(63.000000000000064, 26.99999999999994)
(64.00000000000006, 25.999999999999936)
(65.00000000000007, 24.999999999999936)
(66.00000000000007, 23.999999999999936)
(67.00000000000007, 22.999999999999932)
(68.00000000000007, 21.999999999999936)
(69.00000000000007, 20.999999999999932)
(70.00000000000007, 19.99999999999993)
(71.00000000000007, 18.99999999999993)
(72.00000000000007, 17.999999999999922)
(73.00000000000007, 16.999999999999925)
(74.00000000000007, 15.999999999999924)
(75.00000000000009, 14.999999999999922)
(76.00000000000009, 13.99999999999992)
(77.00000000000009, 12.999999999999918)
(78.00000000000009, 11.999999999999918)
(79.00000000000009, 10.999999999999918)
(80.00000000000009, 9.999999999999915)
(81.00000000000009, 8.999999999999915)
(82.00000000000009, 7.999999999999913)
(83.0000000000001, 6.999999999999912)
(84.0000000000001, 5.999999999999909)
(85.00000000000009, 4.9999999999999085)
(86.00000000000009, 3.999999999999907)
(87.0000000000001, 2.9999999999999054)
(88.0000000000001, 1.9999999999999047)

In [14]:
%matplotlib inline

In [15]:
import matplotlib.pyplot as plt

In [16]:
plt.title('theta_2 vs. theta_1')
plt.xlabel('theta 1 (deg)')
plt.ylabel('theta 2 (deg)')
plt.plot(theta1list,theta2list,'b.')
plt.show()



In [18]:
plt.title('sum')
plt.xlabel('theta 1 (deg)')
plt.ylabel('sum')
plt.plot(theta1list,thetasum,'b.')
plt.show()



In [ ]: