In [31]:

```
import math,numpy
# Initilization of variables
m=5 #kg # mass of the bock
g=9.81 # m/s**2 # acceleration due to gravity
theta=15 # degree # angle made by the forces (P1 & P2) with the horizontal of the block
de=theta*math.pi/180
mu=0.4 #coefficient of static friction
#Calculations
# Case 1. Where P1 is the force required to just pull the bock
# Solving eqn's 1 & 2 using matrix
A=numpy.matrix([[math.cos(de),-mu],[math.sin(de),1]])
B=numpy.matrix([[0],[m*g]])
C=numpy.linalg.inv(A)*B
# Calculations
# Case 2. Where P2 is the force required to push the block
# Solving eqn's 1 & 2 using matrix
P=numpy.matrix([[-math.cos(de),mu],[-math.sin(de),1]])
Q=numpy.matrix([[0],[m*g]])
R=numpy.linalg.inv(P)*Q
# Results
print('The required pull force P1 is %f N '%C[0])
print('The required push force P2 is %f N '%R[0])
```

In [2]:

```
import math
# Initilization of variables
W1=50 # N # weight of the first block
W2=50 # N # weight of the second block
mu_1=0.3 # coefficient of friction between the inclined plane and W1
mu_2=0.2 # coefficient of friction between the inclined plane and W2
# Calculations
# On adding eq'ns 1&3 and substuting the values of N1 & N2 from eqn's 2&4 in this and on solving for alpha we get,
alpha=math.atan((((mu_1*W1)+(mu_2*W2))/(W1+W2))) # degrees
a=math.degrees(alpha)
# Results
print('The inclination of the plane is %f degree'%a)
```

In [40]:

```
from __future__ import division
import math
# Initilization of variables
M=2000 # kg # mass of the car
mu=0.3 # coefficient of static friction between the tyre and the road
g=9.81 # m/s**2 # acc. due to gravity
# Calculations
# Divide eqn 1 by eqn 2, We get
theta=math.atan(mu) #degree
t=math.degrees(theta)
# Results
print('The angle of inclination is %f degree \n'%t)
```

In [3]:

```
import numpy as np
import math
# Initilization of variabes
Wa=1000 #N # weight of block A
Wb=500 #N # weight of block B
theta=15 # degree # angle of the wedge
mu=0.2 # coefficient of friction between the surfaces in contact
phi=7.5 # degrees # used in case 2
# Caculations
# CASE (a)
# consider the equilibrium of upper block A
# rearranging eq'ns 1 &2 and solving them using matrix for N1 & N2
A=np.matrix('1 -0.4522;-0.2 0.914')
B=np.matrix('0;1000')
C=np.linalg.inv(A)*B
# Now consider the equilibrium of lower block B
# From eq'n 4
N3=Wb+(C[1]*math.cos(theta*math.pi/180))-(mu*C[1]*math.sin(theta*math.pi/180)) #N
# Now from eq'n 3
P=(mu*N3)+(mu*C[1]*math.cos(theta*math.pi/180))+(C[1]*math.sin(theta*math.pi/180)) # N
# CASE (b)
# The eq'n for required coefficient for the wedge to be self locking is,
mu_req=(theta*math.pi)/(360) # multiplying with (pie/180) to convert it into radians
# Results
print('The minimum horizontal force (P) which should be applied to raise the block is %f N \n'%P)
print('The required coefficient for the wedge to be self locking is %f \n'%mu_req)
```

In [4]:

```
import numpy as np
import math
# Initilization of variables
P=100 #N # force acting at 0.2 m from A
Q=200 #N # force acting at any distance x from B
l=1 #m # length of the bar
theta=45 #degree #angle made by the normal reaction at A&B with horizontal
# Calculations
# solving eqn's 1 & 2 using matrix for Ra & Rb,
A=np.matrix([[1,-1],[math.sin(theta*math.pi/180),math.sin(theta*math.pi/180)]])
B=np.matrix([[0],[P+Q]])
C=np.linalg.inv(A)*B
# Now take moment about B
x=((C[0]*l*math.sin(theta*math.pi/180))-(P*(l-0.2)))/200 #m # here 0.2 is the distance where 100 N load lies from A
# Results
print('The minimum value of x at which the load Q=200 N may be applied before slipping impends is %f m'%x)
```