Improve math skills of your kids - Learn step-by-step arithmetic from Math games

Math: Unknown - Step-by-step math calculation game for iOS.

Math: Unknown is much more than a math game. It is a step-by-step math calculation game which will teach users how to calculate in the correct order rather than just asking only the final calculated results.

The app consists of four basic arithmetic operations which are addition, subtraction, multiplication and division. In order to get started, users who are new to arithmetic can learn from animated calculation guides showing step-by-step procedures of solving each type of operation. It is also helpful for experienced users as a quick reference.

Generally, addition and subtraction may be difficult for users who just start learning math especially when questions require carrying or borrowing (also called regrouping). The app helps users to visualize the process of carrying and borrowing in the way it will be done on paper. Once users understand how these operations work, they are ready to learn multiplication and division.

For most students, division is considered as the most difficult arithmetic operation to solve. It is a common area of struggle since it requires prior knowledge of both multiplication and subtraction. To help users understand division, the app uses long division to teach all calculation procedures. Relevant multiplication table will be shown beside the question. Users will have to pick a number from the table which go into the dividend. Multiplication of selected number and divisor is automatically calculated, but the users have to do subtraction and drop down the next digit themselves. Learning whole calculation processes will make them master it in no time.

Math: Unknown is a helpful app for students who seriously want to improve arithmetic calculation skills.

Polynomial Cam Function (Derivation of Fifth-degree function) - Part 2

In [Polynomial Cam Function (Introduction) - Part 1], we discussed about fundamental of cam design and introduction of polynomial cam function. In this post, we’re going to derive the equation of fifth-degree polynomial cam function. We start from the general term of fifth-degree polynomial function as follows.

s = c0 + c1(b/bm) + c2(b/bm)2 + c3(b/bm)3 + c4(b/bm)4 + c5(b/bm)5  ….. (eq.1)

where:
s = displacement (mm)
b = cam angle in that sector (rad)
bm = total angle in that sector (rad)

We can find the velocity in mm/rad by derivative of displacement. Later we can change it to the time domain.

v = ds/db
v = c1/bm + 2c2/bm(b/bm) + 3c3/bm(b/bm)2 + 4c4/bm(b/bm)3 + 5c5/bm(b/bm)4

Rearrange to get,
v = 1/bm[c1 + 2c2(b/bm) + 3c3(b/bm)2 + 4c4(b/bm)3 + 5c5(b/bm)4]  ….. (eq.2)

Acceleration in mm/rad2 can be calculated by a = dv/db
a = 1/bm[2c2/bm + 6c3/bm(b/bm) + 12c4/bm(b/bm)2 + 20c5/bm(b/bm)3]

Rearrange to get,
a = 1/bm2[2c2 + 6c3(b/bm) + 12c4(b/bm)2 + 20c5(b/bm)3]  ….. (eq.3)

Then we set the boundary conditions for the function. Let us introduce another parameter, hm.

where:
hm = total displacement in that sector (mm)

Applying boundary conditions:

(BC.1) At the beginning of movement, the displacement must start from 0 and has acceleration of 0. This is for connecting to another cam curves in other sectors. But we will leave the velocity at this point not equal to zero. Then we have more freedom to select the starting velocity. Of course, if the starting velocity is not zero, then we can’t connect it with dwell or cycloid functions because it will create discontinuity in velocity. But we will use it to connect with linear cam function or another fifth-degree polynomial curves.

At b = 0: s = 0, v = v0, and a = 0.

(BC.2) Then we set the boundary conditions at the end of the movement. The same approach applied here.

At b = bm: s = hm, v = v1, and a = 0

where:
v0 = starting velocity in that sector (mm/rad)
v1 = ending velocity in that sector (mm/rad)

Apply BC.1 into (eq.1)

0 = c0 + 0 + 0 + 0 + 0 + 0
So, c0 = 0

Apply BC.1 into (eq.3)
0 = 1/bm2[2c2 + 0 + 0 + 0]
Also, c2 = 0

Apply BC.1 into (eq.2)
v0 = 1/bm[c1 + 0 + 0 + 0 + 0]
Then c1 = bmv0

Apply BC.2 into (eq.1)
hm = 0 + c1 + 0 + c3 + c4 + c5

Substitute c1 = bmv0 and rearrange to get,
c3 + c4 + c5 = hm – bmv0  ….. (eq.4)

Apply BC.2 into (eq.3)
0 = 1/bm2[0 + 6c3 + 12c4 + 20c5]

Rearrange to get,
6c3 + 12c4 + 20c5 = 0
Or
3c3 + 6c4 + 10c5 = 0  ….. (eq.5)

Apply BC.2 into (eq.2)
v1= 1/bm[bmv0 + 0 + 3c3 + 4c4 + 5c5]

Rearrange to get,
3c3 + 4c4 + 5c5 = bmv1 – bmv0  ….. (eq.6)

Solve the simultaneous equations (eq.4, eq.5 and eq.6) for the values of constants c3, c4 and c5

(eq.6) – 3x(eq.4);
3c3 + 4c4 + 5c5 – 3c3 – 3c4 – 3c5 = bmv1 – bmv0 – 3hm + 3bmv0
c4 + 2c5 = -3hm + bmv1 + 2bmv0  ….. (eq.7)

(eq.5) – 3x(eq.4);
3c3 + 6c4 + 10c5 – 3c3 – 3c4 – 3c5 = 0 – 3hm + 3bmv0
3c4 + 7c5 = -3hm + 3bmv0  ….. (eq.8)

(eq.8) – 3x(eq.7);
3c4 + 7c5 – 3c4 – 6c5 = -3hm + 3bmv0 + 9hm – 3bmv1 – 6bmv0
c5 = 6hm – 3bmv1 – 3bmv0
c5 = 6hm – bm(3v0 + 3v1)

Substitute value of c5 into (eq.7)
c4 = -3hm + bmv1 + 2bmv0 – 2[6hm – 3bmv0 – 3bmv1]
c4 = -3hm + bmv1 + 2bmv0 – 12hm + 6bmv0 + 6bmv1
c4 = -15hm + 8bmv0 + 7bmv1
c4 = -15hm + bm(8v0 + 7v1)

Substitute values of c4 and c5 into (eq.4),
c3 = hm – bmv0 + 15hm – bm(8v0 + 7v1) – 6hm + bm(3v0 + 3v1)
c3 = 10hm – bm(6v0 + 4v1)

Therefore, the fifth-degree polynomial cam function becomes,
s = c1(b/bm) + c3(b/bm)3 + c4(b/bm)4 + c5(b/bm)5
It has velocity (v) and acceleration (a) as follows,
v = 1/bm[c1 + 3c3(b/bm)2 + 4c4(b/bm)3 + 5c5(b/bm)4]
a = 1/bm2[6c3(b/bm) + 12c4(b/bm)2 + 20c5(b/bm)3
where:
c1 = bmv0
c3 = 10hm – bm(6v0 + 4v1)
c4 = -15hm + bm(8v0 + 7v1)
c5 = 6hm – bm(3v0 + 3v1

We've derived the fifth-degree polynomial cam function with velocity and acceleration profiles that satisfies all boundary conditions as described earlier. Then we can use this cam function to design the timing diagram. Let's see how to use it in the next post.