- ML
- SL

**ML** and **SL** are powerful and programmable calculators.

You can use both of them to learn coding and also to solve basic problems in linear algebra. You can define variables to create expressions and evaluate them; you can use flow control and iteration statements to perform conditional and repeating computations. You can use output statements to display the results of computations. You can even compute expressions involving row, column, and matrix vectors.

Furthermore, you can use **SL** to operate on discrete-time signals also. You can easily define signals, convolve them and plot their value-time graphs.

Both **ML** and **SL** can be used to transform objects in vector spaces by using affine transforms. For example, to translate (or move) a point in space, you define a point vector (a row or column vector) to represent the point, and then define a translation matrix, and then simply multiply them. To change the way a direction vector points in space, you define a direction vector and a rotation matrix, and then simply multiply them.

They can also be used to render mathematical expressions, especially those involving mathematical objects such as row, column, and matrix vectors.

**ML** and **SL** are powerful, programmable calculators with full trigonometric and logarithmic functions. You can write programs, save them, and use them later; this enables you to save time and also to avoid making mistakes. Two examples of how you would use them to solve problems in physics are provided below.

In our first example, let's say you are solving problems involving objects in uniform motion, motion under constant acceleration. You want to calculate the force required to stop an object in a given distance. The mass of the object and its speed are given. To do this, you would use the equation of kinematics giving the velocity as a function of displacement, and you would solve that equation for the acceleration required to stop the object in the specified distance. Then you would use Newton's second law to calculate the force required.

v2 - v2

0 = 2a(x - x0) ∴ a = (v2 - v2

0) / 2(x - x0) F = Ma

You would then write code for expressions to compute the last two equations above. Finally, you would save the program so that you can use it later.

Here is the **SL** code for it.

M := 2000.0 // kg - mass of the object v0 := 100.0 // m/s - inital speed of the object v := 0.0 // m/s - final speed of the object x0 := 0.0 // m - inital position x := 80.0 // m - final position, the stopping distance // Acceleration a := (v - v0) * (v + v0) / (2.0 * (x - x0)) // Force required F := M * a // Print $T << F << " N"

In our second example, let's assume you are solving heat-transfer problems. You want to compute how much energy (in joules or Calories) is required to boil 1.6 liters of water in an electric kettle. You would first write an expression for the specific heat equation and then compute it with given parameters.

Q = McΔT

Here is the **SL** code for it.

M := 1.6 // kg - mass of water T1 := 15.0 // degrees celcius - initial temperature of water T2 := 100.0 // degrees celcius - final temperature c := 4186.0 // joules / (kg degrees celcius) - specific heat of water // Temperature increase DT := T2 - T1 // Energy required - in joules Q := M * c * DT // Print $T << Q << " joules"