
# 2026 Exam Exercise 3

The mechanism in the figure is used to lift objects. The driving link (O2A) rotates at a constant speed of 60 rpm counterclockwise. The following page provides the partially solved acceleration polygon. A velocity and acceleration analysis must be carried out, as well as the identification of the inertia forces, at a position given by $\theta_2 =36.5^{\circ }$, for which you are asked to:


![image_0.png](./figs/example2_6_media/image_0.png)

1.  Determine which kinematic chain it corresponds to, the number of degrees of freedom, and whether link 2 can act as a crank, justifying your answers.
2. Calculate the velocity of point E.
3. Draw the complete velocity polygon of the mechanism.
4. From the acceleration polygon, determine the angular accelerations of all the bodies.
5. Calculate the accelerations of the links' centers of gravity and the inertia forces they give rise to.
6. Calculate the distance P when the value of $\theta_2$ becomes 90°.
## Data:
```matlab
clear, clc
% Angles (deg):
theta2=36.5; phi=95.6; eta=118.6; alpha=10.6; beta=19.7; delta=252.6; 
% Distances (cm):
p=121.5; h=37.7; r1=55.7; r2=26.3; r3=41.6; r4=44.5; rO4D=59; r5=44.8;
% masses (kg):
m2=2; m3=6; m4=15; m5=7.5; m6=10;
```
## Part 1: Kinematic chain

This is a Watt-II chain, since one of the ternary links is ground (1) and is connected to the other ternary link (4). As is known, this type of mechanism has one degree of freedom, which can be easily verified with Grübler's criterion: N=6; P1=7; P2=0 => G=3\*(6\-1)\-2\*7\-0=1. Finally, to determine whether link 2 can complete full revolutions, we apply Grashof's law to the sub-chain 1, 2, 3, and 4. This gives us r2+r1 =26.3+55.7=82, which is less than r3+r4=41.6+44.5=86.1, which guarantees that it can indeed complete full revolutions, acting as a crank.

## Part 2: Velocity calculation

For the velocity problem we first identify a four-bar sub-chain, and set up the relative velocity equation between points A and B:

 $ {\vec{v} }_B ={\vec{v} }_A +{\vec{v} }_{A/B} $ 

we look at which terms are missing and work them out.


\- For ${\vec{v} }_B$:

 $ {\vec{v} }_B ={\vec{\omega} }_4 \times {\vec{r} }_{O4B} $ 
```matlab
% define the unknown w4k, the vector w4, rO4B, and finally express vB
syms w4k real
w4=[0 0 w4k];
rO4B=r4*[cosd(alpha) sind(alpha) 0];
vB=cross(w4,rO4B);
```

\- For ${\vec{v} }_A$:

 $ {\vec{v} }_A ={\vec{\omega} }_2 \times {\vec{r} }_{O2A} $ 
```matlab
% define the vector w2, rO2A, and finally express vA
w2=[0 0 60*2*pi/60];
rO2A=r2*[cosd(theta2) sind(theta2) 0];
vA=cross(w2,rO2A);
```

\- For ${\vec{v} }_{B/A}$:

 $ {\vec{v} }_{B/A} ={\vec{\omega} }_3 \times {\vec{r} }_{AB} $ 
```matlab
% define the unknown w3k, the vector w3, rAB, and finally express vB/A
syms w3k real
w3=[0 0 w3k];
rAB=r3*[cosd(95.6) sind(95.6) 0];
vB_A=cross(w3,rAB);
```

Now we solve the equation:

```matlab
sol_v1 = solve(vB==vA+vB_A,w3k, w4k);
w3k = subs(sol_v1.w3k);
w4k = subs(sol_v1.w4k);
```

Now we move on to analyze link 5 and set up the relative velocity equation between points D and E:

 $ {\vec{v} }_E ={\vec{v} }_D +{\vec{v} }_{E/D} $ 

we look at which terms are missing and work them out.


\- For ${\vec{v} }_E$:

 $ {\vec{v} }_E =v_E \hat{j} $ 
```matlab
% define the unknown vEj, the vector vE
syms vEj real
vE=[0 vEj 0];
```

\- For ${\vec{v} }_D$:

 $ {\vec{v} }_D ={\vec{\omega} }_4 \times {\vec{r} }_{O4D} $ 
```matlab
% The vector w4 is already known, and rO4D is a given: 
rO4D=rO4D*[cosd(alpha+beta) sind(alpha+beta) 0];
vD=cross(w4,rO4D);
```

\- For ${\vec{v} }_{E/D}$:

 $ {\vec{v} }_{E/D} ={\vec{\omega} }_5 \times {\vec{r} }_{DE} $ 
```matlab
% define the unknown w5k, the vector w5, rDE, and finally express vE/D
syms w5k real
w5=[0 0 w5k];
rDE=r5*[cosd(72.6) sind(72.6) 0];
vE_D=cross(w5,rDE);
```

Now we solve the equation:

```matlab
sol_v2 = solve(vE==vD+vE_D,w5k, vEj);
w5k = subs(sol_v2.w5k);
vEj = subs(sol_v2.vEj);
```
## Showing the results:
```matlab
fprintf('vAi=%3.2f vAj=%3.2f (m/s)\n', vA(1)/100,vA(2)/100)
```

```matlabTextOutput
vAi=-0.98 vAj=1.33 (m/s)
```

```matlab
vB=double(subs(vB));
fprintf('vBi=%3.2f vBj=%3.2f (m/s)\n', vB(1)/100,vB(2)/100)
```

```matlabTextOutput
vBi=-0.26 vBj=1.40 (m/s)
```

```matlab
fprintf('vEj=%3.2f (m/s)\n', vEj/100)
```

```matlabTextOutput
vEj=1.33 (m/s)
```

```matlab
fprintf('w3k=%3.2f (rad/s)\n', double(subs(w3k)))
```

```matlabTextOutput
w3k=-1.74 (rad/s)
```

```matlab
fprintf('w4k=%3.2f (rad/s)\n', double(subs(w4k)))
```

```matlabTextOutput
w4k=3.20 (rad/s)
```

```matlab
fprintf('w5k=%3.2f (rad/s)\n', double(subs(w5k)))
```

```matlabTextOutput
w5k=-2.23 (rad/s)
```

## Part 3: Velocity polygon

We graphically solve the relative velocity equations:

 $ {\vec{v} }_B ={\vec{v} }_A +{\vec{v} }_{A/B} $ 

 $ {\vec{v} }_{E/D} ={\vec{\omega} }_5 \times {\vec{r} }_{DE} $ 

starting from the known value $|v_A |=|\omega_2 |\cdot \bar{O_2 A}$, which is perpendicular to $\bar{O_2 A}$ and points in the direction consistent with ${\vec{\omega} }_2$, and knowing that we can obtain ${\vec{\omega} }_4$ from ${\vec{v} }_B$ so as to proceed to calculate ${\vec{v} }_D$:


![image_1.png](./figs/example2_6_media/image_1.png)

## Part 4: Acceleration calculation

This part can be solved easily in a graphical way, correctly applying the given scale. Furthermore, the results are verified to match those obtained by applying the following equations.

### Accelerations of points A, B, C, and D

For the acceleration problem we proceed in the same way, first between points A and B:

 $ {\vec{a} }_B ={\vec{a} }_A +{\vec{a} }_{A/B} $ 

which, decomposing, gives us:

 $ {\vec{a} }_B^n +{\vec{a} }_B^t ={\vec{a} }_A +{\vec{a} }_{A/B}^n +{\vec{a} }_{A/B}^t $ 

we look at which terms are missing and work them out.


\- For ${\vec{a} }_B^n$:

 $ {\vec{a} }_B^n ={\vec{\omega} }_4 \times ({\vec{\omega} }_4 \times {\vec{r} }_{O4B} ) $ 
```matlab
% Express aBn
aBn=cross(w4,cross(w4,rO4B));
```

\- For ${\vec{a} }_B^t$:

 $ {\vec{a} }_B^t ={\vec{\alpha} }_4 \times {\vec{r} }_{O4B} $ 
```matlab
% define the unknown af4k, the vector af4, express aBt
syms af4k real
af4=[0 0 af4k];
aBt=cross(af4,rO4B);
```

\- For ${\vec{a} }_A$:

 $ {\vec{a} }_A ={\vec{a} }_A^n ={\vec{\omega} }_2 \times ({\vec{\omega} }_2 \times {\vec{r} }_{O2A} ) $ 
```matlab
% Express aA
aA=cross(w2,cross(w2,rO2A));
```

\- For ${\vec{a} }_{B/A}^n$:

 $ {\vec{a} }_{B/A}^n ={\vec{\omega} }_3 \times ({\vec{\omega} }_3 \times {\vec{r} }_{AB} ) $ 
```matlab
% Express aB_An
aB_An=cross(w3,cross(w3,rAB));
```

\- For ${\vec{a} }_{B/A}^t$:

 $ {\vec{a} }_{B/A}^t ={\vec{\alpha} }_3 \times {\vec{r} }_{AB} $ 
```matlab
% define the unknown af3k, the vector af3, express aB_At
syms af3k real
af3=[0 0 af3k];
aB_At=cross(af3,rAB);
```

Now we solve the equation:

```matlab
sol_ac1 = solve(aBn+aBt==aA+aB_An+aB_At,af3k, af4k);
% Display the solutions:
af3k = subs(sol_ac1.af3k);
af4k = subs(sol_ac1.af4k);
```

Now we move on to analyze link 5 and set up the relative acceleration equation between points D and E:

 $ {\vec{a} }_E ={\vec{a} }_D +{\vec{a} }_{E/D} $ 

decomposing:

 $ {\vec{a} }_E ={\vec{a} }_D^n +{\vec{a} }_D^t +{\vec{a} }_{E/D}^n +{\vec{a} }_{E/D}^t $ 

we look at which terms are missing and work them out.


\- For ${\vec{a} }_E$:

 $ {\vec{a} }_E =a_E \hat{j} $ 
```matlab
syms aEj real
aE=[0 aEj 0];
```

\- For ${\vec{a} }_D^n$:

 $ {\vec{a} }_D^n ={\vec{\omega} }_4 \times ({\vec{\omega} }_4 \times {\vec{r} }_{O4D} ) $ 
```matlab
aDn=cross(w4,cross(w4,rO4D));
```

\- For ${\vec{a} }_D^t$:

 $ {\vec{a} }_D^t ={\vec{\alpha} }_4 \times {\vec{r} }_{O4D} $ 
```matlab
aDt=cross(af4,rO4D);
```

\- For ${\vec{a} }_{E/D}^n$:

 $ {\vec{a} }_{E/D}^n ={\vec{\omega} }_5 \times ({\vec{\omega} }_5 \times {\vec{r} }_{DE} ) $ 
```matlab
aE_Dn=cross(w5,cross(w5,rDE));
```

\- For ${\vec{a} }_{E/D}^t$:

 $ {\vec{a} }_{E/D}^t ={\vec{\alpha} }_5 \times {\vec{r} }_{DE} $ 
```matlab
syms af5k real
af5=[0 0 af5k];
aE_Dt=cross(af5,rDE);
```

Now we solve the equation:

```matlab
sol_ac2 = solve(aE==aDn+aDt+aE_Dn+aE_Dt,aEj, af5k);
aEj = subs(sol_ac2.aEj);
af5k = subs(sol_ac2.af5k);
```
### Solutions:
```matlab
fprintf('aEj=%3.2f (m/s2)\n', aEj/100)
```

```matlabTextOutput
aEj=-12.82 (m/s2)
```


![image_2.png](./figs/example2_6_media/image_2.png)


For the graphical method:

```matlab
% Print results:
fprintf('aA=%3.4f\n', norm(aA)/100)
```

```matlabTextOutput
aA=10.3828
```

```matlab
fprintf('aBAn=%3.4f\n', norm(double(subs(aB_An)))/100)
```

```matlabTextOutput
aBAn=1.2620
```

```matlab
fprintf('aBAn=%3.4f\n', norm(double(subs(aB_An)))/100)
```

```matlabTextOutput
aBAn=1.2620
```

```matlab
fprintf('aBn=%3.4f\n', norm(double(subs(aBn)))/100)
```

```matlabTextOutput
aBn=4.5526
```

```matlab
fprintf('aDn=%3.4f\n', norm(double(subs(aDn)))/100)
```

```matlabTextOutput
aDn=6.0361
```

```matlab
fprintf('aDt=%3.4f\n', norm(double(subs(aDt)))/100)
```

```matlabTextOutput
aDt=8.2479
```

```matlab
fprintf('aBt=%3.4f\n', norm(double(subs(aBt)))/100)
```

```matlabTextOutput
aBt=6.2209
```

```matlab
fprintf('aEDn=%3.4f\n', norm(double(subs(aE_Dn)))/100)
```

```matlabTextOutput
aEDn=2.2222
```

```matlab
fprintf('aEDt=%3.4f\n', norm(double(subs(aE_Dt)))/100)
```

```matlabTextOutput
aEDt=1.7970
```

```matlab
fprintf('a3=%3.4f\n', double(af3k))
```

```matlabTextOutput
a3=-11.8173
```

```matlab
fprintf('a4=%3.4f\n', double(af4k))
```

```matlabTextOutput
a4=-13.9795
```

```matlab
fprintf('a5=%3.4f\n', double(af5k))
```

```matlabTextOutput
a5=-4.0111
```

## Part 5: Inertia forces calculation

From D'Alembert's principle, we can calculate the inertia forces as ${\vec{F} }_{in} =m\cdot (-{\vec{a} }_G )$ . So, first of all, we need to calculate the accelerations of the centers of gravity, which we can do either graphically from the acceleration polygon in the previous part, or using the following expressions:

### Accelerations of the centers of gravity

\- For ${\vec{a} }_{G2} ={\vec{a} }_{G2}^n$ we need ${\vec{r} }_{O2G2}$:

```matlab
rO2G2=rO2A/2;
aG2=cross(w2,cross(w2,rO2G2))/100;
```

\- For ${\vec{a} }_{G3} ={\vec{a} }_A +{\vec{a} }_{G3/A}^n +{\vec{a} }_{G3/A}^t$ we need ${\vec{r} }_{AG3}$:

```matlab
rAG3=rAB/2;
aG3=double(subs(aA+cross(w3,cross(w3,rAG3))+cross(af3,rAG3)))/100;
```

\- For ${\vec{a} }_{G4} ={\vec{a} }_{G4}^n +{\vec{a} }_{G4}^t$ we need ${\vec{r} }_{O4G4}$:

```matlab
rO4G4=[31.58 12.67 0]; % Graphically (cm)
aG4=double(subs(cross(w4,cross(w4,rO4G4))+cross(af4,rO4G4)))/100;
```

\- For ${\vec{a} }_{G5} ={\vec{a} }_C^n +{\vec{a} }_C^t +{\vec{a} }_{G5/C}^n +{\vec{a} }_{G5/C}^t$ we need ${\vec{r} }_{CG5}$:

```matlab
rCG5=rDE/2;
aG5=double(subs(aDn+aDt+cross(w5,cross(w5,rCG5))+cross(af5,rCG5)))/100;
```

\- For ${\vec{a} }_{G6} ={\vec{a} }_E$ it is enough to evaluate ${\vec{a} }_E$:

```matlab
aG6=double(subs(aE))/100;
```
## Inertia forces:

We apply the previous equation to each body:

```matlab
Fin2=-aG2*m2;
Fin3=-aG3*m3;
Fin4=-aG4*m4;
Fin5=-aG5*m5;
Fin6=-aG6*m6;
```

And we show the results:

```matlab
fprintf('Fin2i=%3.2f Fin2j=%3.2f (N)\n', Fin2(1), Fin2(2))
```

```matlabTextOutput
Fin2i=8.35 Fin2j=6.18 (N)
```

```matlab
fprintf('Fin3i=%3.2f Fin3j=%3.2f (N)\n', Fin3(1), Fin3(2))
```

```matlabTextOutput
Fin3i=35.03 Fin3j=39.38 (N)
```

```matlab
fprintf('Fin4i=%3.2f Fin4j=%3.2f (N)\n', Fin4(1), Fin4(2))
```

```matlabTextOutput
Fin4i=21.89 Fin4j=85.66 (N)
```

```matlab
fprintf('Fin5i=%3.2f Fin5j=%3.2f (N)\n', Fin5(1), Fin5(2))
```

```matlabTextOutput
Fin5i=3.94 Fin5j=86.22 (N)
```

```matlab
fprintf('Fin6i=%3.2f Fin6j=%3.2f (N)\n', Fin6(1), Fin6(2))
```

```matlabTextOutput
Fin6i=-0.00 Fin6j=128.24 (N)
```

## Part 6: New position of the mechanism

This part is easily solved graphically:

![image_3.png](./figs/example2_6_media/image_3.png)

