In [5]:

```
#importing modules
from __future__ import division
import math
#Variable declaration
mew_g = 1.72; #Refractive index of glass
mew_w = 4/3; #Refractive index of water
#Calculation
#For polarization to occur on flint glass, tan(i) = mew_g/mew_w
#Solving for i
i_g = math.atan(mew_g/mew_w); #angle of incidence for complete polarization for flint glass(rad)
a = 180/math.pi; #conversion factor from radians to degrees
i_g = i_g*a; #angle of incidence(degrees)
i_g = math.ceil(i_g*10**2)/10**2; #rounding off the value of i_g to 2 decimals
#For polarization to occur on water, tan(i) = mew_w/mew_g
#Solving for i
i_w = math.atan(mew_w/mew_g); #angle of incidence for complete polarization for water(rad)
i_w = i_w*a; #angle of incidence(degrees)
i_w = math.ceil(i_w*10**3)/10**3; #rounding off the value of i_w to 3 decimals
#Result
print "The angle of incidence for complete polarization to occur on flint glass is",i_g, "degrees"
print "The angle of incidence for complete polarization to occur on water is",i_w, "degrees"
```

In [6]:

```
#importing modules
from __future__ import division
import math
#Variable declaration
I0 = 1; #For simplicity, we assume the intensity of light falling on the second Nicol prism to be unity(W/m**2)
theta = 30; #Angle through which the crossed Nicol is rotated(degrees)
#Calculation
theeta = 90-theta; #angle between the planes of transmission after rotating through 30 degrees
a = math.pi/180; #conversion factor from degrees to radians
theeta = theeta*a; ##angle between the planes of transmission(rad)
I = I0*math.cos(theeta)**2; #Intensity of the emerging light from second Nicol(W/m**2)
T = (I/(2*I0))*100; #Percentage transmission of incident light
T = math.ceil(T*100)/100; #rounding off the value of T to 2 decimals
#Result
print "The percentage transmission of incident light after emerging through the Nicol prism is",T, "%"
```

In [7]:

```
#importing modules
from __future__ import division
import math
#Variable declaration
lamda = 6000; #Wavelength of incident light(A)
mew_e = 1.55; #Refractive index of extraordinary ray
mew_o = 1.54; #Refractive index of ordinary ray
#Calculation
lamda = lamda*10**-8; #Wavelength of incident light(cm)
t = lamda/(4*(mew_e-mew_o)); #Thickness of Quarter Wave plate of positive crystal(cm)
#Result
print "The thickness of Quarter Wave plate is",t, "cm"
```

In [8]:

```
#Calculation
#the thickness of a half wave plate of calcite for wavelength lamda is
#t = lamda/(2*(mew_e - mew_o)) = (2*lamda)/(4*(mew_e - mew_o))
#Result
print "The half wave plate for lamda will behave as a quarter wave plate for 2*lamda for negligible variation of refractive index with wavelength"
```

In [9]:

```
#importing modules
from __future__ import division
import math
#Variable declaration
lamda = 500; #Wavelength of incident light(nm)
mew_e = 1.5508; #Refractive index of extraordinary ray
mew_o = 1.5418; #Refractive index of ordinary ray
t = 0.032; #Thickness of quartz plate(mm)
#Calculation
lamda = lamda*10**-9; #Wavelength of incident light(m)
t = t*10**-3; #Thickness of quartz plate(m)
dx = (mew_e - mew_o)*t; #Path difference between E-ray and O-ray(m)
dphi = (2*math.pi)/lamda*dx; #Phase retardation for quartz for given wavelength(rad)
dphi = dphi/math.pi;
#Result
print "The phase retardation for quartz for given wavelength is",dphi, "pi rad"
```

In [13]:

```
#importing modules
import math
#Variable declaration
C = 52; #Critical angle for total internal reflection(degrees)
#Calculation
a = math.pi/180; #conversion factor from degrees to radians
C = C*a; #Critical angle for total internal reflection(rad)
#From Brewster's law, math.tan(i_B) = 1_mew_2
#Also math.sin(C) = 1_mew_2, so that math.tan(i_B) = math.sin(C), solving for i_B
i_B = math.atan(math.sin(C)); #Brewster angle at the boundary(rad)
b = 180/math.pi; #conversion factor from radians to degrees
i_B = i_B*b; #Brewster angle at the boundary(degrees)
#Result
print "The Brewster angle at the boundary between two materials is",int(i_B), "degrees"
```

In [10]:

```
```