[MUSIC]
We're going to look at array addition.
There are special rules for arithmetic on arrays.
Let's look at an example to illustrate it.
X and Y are two arrays that we want to add together.
X is a 3 by 2 matrix, 1, 4, 7, 0, 5, 5.
And Y is also a 3 by 2 matrix, 2, -4, 6, 2, 0, and 3.
In order to add two matrices together,
we have to make sure that they have the same dimensions.
So suppose we give MATLAB the command Z equals X plus Y.
What's Z look like?
Well here's what X plus Y equals to Z means.
On the right side, we see the two matrices X and Y added together,
and on the left side, we see what happens.
Let's look at the first element on the first row.
The first element on the first row of X and Y is 1 and 2.
We add those together: 1 plus 2.
That's what we put at the first element on the first row of Z.
Let's look at the next element on that row.
X and Y are 4 and -4.
If we add those together, we get 4 plus -4, which will be 0.
And we do this for every position in the matrices.
If we carry out these individual additions, we get 3, 0, 13, 2, 5 and
8 on the left side, and so Z is equal to 3, 0, 13, 2, 5, and 8.
Let’s take a look at this in MATLAB.
We'll give MATLAB something to work with.
So let X equal 1, 5, -2 on the first row,
and then 3, 0, 7 on the second row.
And we'll be lazy with Y.
We'll use the colon operator.
So X is 2 by 3. That's six elements.
Y is 1 by 6, also six elements.
So let's add them and assign them to Z.
[CLICKING] Ah! MATLAB doesn't like this.
It says, “Matrix dimensions must agree.”
Well we've tried to add a 2 by 3 matrix and a 1 by 6 matrix,
and as we pointed out, that doesn't work.
So what I meant to do was make Y a 2 by 3 matrix
by putting a semicolon here instead of a comma, and
now I'm going to use the up-arrow to repeat that command.
Z equals X plus Y, and things work just fine now.
Subtraction works great too. Let's try that.
Let's let Z equal X minus Y.
And there's no problem there either.
Let's look at some of these numbers and see if they came out right.
With addition, well let's look at this second element on the first row.
We ended up with a 7. Where'd that come from?
Well, there was a 5 at that position in X and a 2 in Y.
5 plus 2 is 7.
And what about this -5 on the second row of Z here when we did subtraction?
Well, we had a 0 there for X, and we had a 5 for a Y.
0 minus 5 gives us -5.
And we can do a similar thing with array multiplication.
Array multiplication is very similar to array addition.
We use the same example, X and Y, that we used to illustrate addition, for
multiplication.
If we want to do array multiplication, we use the dot asterisk operator.
So we say Z equals X dot asterisk Y.
You may wonder why we don't just use the regular asterisk,
which is the traditional symbol for times.
That's because the asterisk alone is reserved for matrix multiplication,
which is different from array multiplication.
So what does Z look like?
Well, on the right side, you see the same numbers you saw for array addition, but
this time the operator is the dot star operator, and on the left the only
difference is instead of plus everywhere you see the asterisk, the times symbol.
So we have 1 times 2, 4 times -4, and so on.
So you carry out all these multiplications, and
you can see the result for Z right here.
Well, array multiplication has the same rule that addition and subtraction has,
that is that the matrices that are operands have to have the same dimensions.
So we'll use the same examples, X and
Y, that we used for addition and subtraction, and
here we go. Z is equal to X dot star Y.
That's array multiplication.
Really simple, and we can check an example.
Here's a 5 and a 2 on the first row second element, and 5 times 2 is 10.
And if we look at the last element on the second row,
we see a 7 and a 6, and 7 times 6 is 42.
So when might you use array multiplication?
Well, let's clear the screen and do an example.
Let's suppose you had an array of temperature sensors, outdoors
somewhere, laid out in a rectangular grid, covering a few square miles and
reporting back to a central facility.
And today, let's suppose they measured these high temperatures, which I've already
put into an array called Highs_measured.
Let's take a look at these. [CLICKING]
There.
So it's a 2 by 3 array.
You'd probably have a larger array in a real application, but
this is just an example.
And furthermore, suppose that each sensor's measured temperature must be
corrected by multiplying it by the sensor's calibration factor.
And that would be kept in a permanent array of the same shape. I've set up
that array too and called it Calibration_factors.
Let's look at that one.
[CLICKING]
There. And you can see both of these over in
the workspace over here on the right.
They were sitting there.
I don't know if you’d noticed them.
Well, to get the true temperatures, we now need to multiply each element
in Highs_measured by the corresponding element in Calibration_factors.
And that's exactly what array multiplication does for us, so
let's do that.
Let's call the result Highs_true.
And we'll set that to
Highs_measured dot star
…There's that array multiplication operator…
Calibration_factors, and there's the result.
If you look back at the original temperatures up here, 71, 52,
78, and 83 and so on,
these are more reasonable down here, 78, 78, 77, and
just varying by a smaller amount.
They're more reasonable because you wouldn't expect a wide
variation over just a few square miles.
The need for calibration like this is fairly common, and
array multiplication makes it easy to do.
So now we know how array multiplication works, and
we know that matrix multiplication is very different from array multiplication.
In fact it differs in three ways.
First there's obviously no dot.
Second, the shapes of X and Y must be “compatible”,
which is different from having the same shape.
And third, the calculation of each element of Z uses both multiplication
and addition.
But first let's look at the compatibility requirement.
Here we show Z, X, and Y schematically.
And we've been careful to give them all different shapes.
So X is clearly not the same shape as Y, but it is, as we'll see, compatible with Y.
X and Y are compatible because the width of X is the same as the height of Y.
We've highlighted that with the blue arrows.
To be specific, the width of the left operand of the matrix
multiplication operator must be equal to the height of the right operand.
Put another way, the number of columns of the left operand X
must equal the number of rows of the right operand Y.
Let's move our schematic up a little bit to make room to write their
dimensions, and there are X's dimensions.
And we've color-coded them to make it easy to see that the number of rows, L,
is the height of X,
and the number of columns, M, is its width.
Similarly, we show the dimensions of Y and color-code them, so
it's obvious that the number of rows, M, of Y is its height,
and the number of columns, N, is its width.
If we drop the schematics and put the dimensions under X and
Y in the matrix multiplication operation, we notice that there are two
dimensions next to each other that are equal, the two blue Ms.
Because of the way that these Ms are situated between the L and the N,
they're called the “inner” dimensions of X and Y.
And that provides a simple way to state the compatibility rule for
matrix multiplication.
We simply say that the inner dimensions of X and Y must be equal.
So, what about the L and the N?
Well, they're called the “outer” dimensions, and there's
no restriction on them whatever, but they do have an affect on the calculation.
They determine the shape of the result.
Z will be an L by N matrix.
So to review, the width of X, blue, must equal the height of Y,
the height of Z, red, equals the height of X,
and the width of Z, green, equals the width of Y.
So, we know the shape of Z,
but we still don't know how its elements are calculated.
Let's use MATLAB to see how that's done.
I've already prepared a couple of matrices that we can multiply: A and B.
The dimensions are 4 by 3 for A and 3 by 2 for B.
Since the width of A is equal to the height of B,
we can do matrix multiplication of A times B.
But before we do, let's put the sizes into a row vector, like this.
Arranging their dimensions like this shows that the inner dimensions are equal.
Here are the inner dimensions right here, 3, 3.
Which is another way to say that the dimensions satisfy the rule for
matrix multiplication.
So let's multiple them and assign the result to C.
So C is 4 by 2, and those are the outer dimensions,
4 and 2, of the matrices A and B, as expected.
Okay, so let's see how matrix multiplication produced an element of C,
say the 0 on the third row.
That element is C(3,2), this one.
There, zero.
Since C(3,2) is on row 3 and column 2, its calculation
involves only the elements on row 3 of A and column 2 of B.
It’s calculated like this. Now I'm going to write it out in detail.
There it is, and indeed it equals 0.
Now let's look at that expression.
Note that the row index stays the same for A, so, 3, 3, 3.
And the column index stays the same for B.
So it's 2, 2, and 2.
But the inner index, this one here, this 1 and
this 1, the inner index means it's the inner index of these four,
and it's the same for the A and the B.
It ranges from 1 to 2 to 3.
It ranges across the entire width of A and height of B.
The products of these pairs of elements are then summed to get element 3, 2 of C.
This same sort of calculation is performed for every row of A with every column of B.
And, and since there are four rows of A and two columns of B,
we get a 4 by 2 matrix.
And what happens if the inner dimensions do not match?
Well we can get an example of that by just multiplying B and A in the other order.
MATLAB complains.
It says “Inner matrix dimensions must agree.”
And to show that it's right to complain, let's put the dimensions for
B times A into a row vector, just as we did for A times B.
So, size B this time, size A.
Sure enough, the inner dimensions, 2 and 4, are not equal.
So MATLAB's right.
But then MATLAB's always right.
So that's how matrix multiplication is carried out.
But when might you want to use matrix multiplication?
Well, let's clear the screen, ...
There! Nice and tidy. ... and look at an application.
We'll use the same two matrices, A and B, and here they are again, A, B.
Suppose a given a row of A represents numbers of shares of each of three stocks.
And each row gives the shares owned by one of four persons.
So person number 1 owns one share of the first stock,
two shares of the second stock, and three shares of the third stock.
Person 2 owns four, five, and six shares respectively, and so on.
Suppose also
that each column of B represents the gain in dollars of three stocks.
Column one gives the gains for the stocks on one day, and
column two gives the gains on the second day.
So looking at column one, we see that on the first day the first stock gained $2,
the second stock gained $3 and the third one gained $7.
Looking at column two, we see that on the second day the first stock lost $2 and
the other two gained 8 and $4 respectively.
Well to calculate the profit that one person would have made on a given day,
we need to multiply the number of shares times the gain for
each stock on that day and then add the three products together.
So for example to calculate the profit for the first person on the first day,
we would multiply one share times $2, to get $2
and two shares times $3, to get $6
and three shares times $7 to get $21 and
then add these three products together to get $29.
Then we'd repeat that process for each person ...
that's each row of A ...
and each day ... that's each column B.
Well that's exactly what matrix multiplication does for us.
So let's do it.
[CLICKING].
There are four people and two days, so there are eight distinct profits to
calculate, and the results are all laid out neatly in matrix C.
Hm, let's see.
The first person profited about the same on each day, $29 and $26.
The third person did much better on the first day,
didn't make anything on the second day, and by comparing the columns we can see
that everybody did better on the first day than they did on the second day.
Matrix multiplication made this calculation easy, but
this operator has applications far beyond the stock market and far beyond finance.
The applications fall under the heading of “linear algebra”, and
you can find many examples in books on this subject.
[MUSIC]
[APPLAUSE]