3.7.4 Operations on Scalars, Vectors and MatricesMost mathematical functions in Mathematica are set up to apply themselves separately to each element in a list. This is true in particular of all functions that carry the attribute Listable. A consequence is that most mathematical functions are applied element by element to matrices and vectors. | The Log applies itself separately to each element in the vector. | |
Out[1]=
|
|
| The same is true for a matrix, or, for that matter, for any nested list. | |
In[2]:=
Log[ {{a, b}, {c, d}} ]
|
Out[2]=
|
|
| The differentiation function D also applies separately to each element in a list. | |
In[3]:=
D[ {x, x^2, x^3}, x ]
|
Out[3]=
|
|
| The sum of two vectors is carried out element by element. | |
In[4]:=
{a, b} + {ap, bp}
|
Out[4]=
|
|
| If you try to add two vectors with different lengths, you get an error. | |
In[5]:=
{a, b, c} + {ap, bp}
|
Out[5]=
|
|
| This adds the scalar 1 to each element of the vector. | |
Out[6]=
|
|
| Any object that is not manifestly a list is treated as a scalar. Here c is treated as a scalar, and added separately to each element in the vector. | |
Out[7]=
|
|
| This multiplies each element in the vector by the scalar k. | |
Out[8]=
|
|
It is important to realize that Mathematica treats an object as a vector in a particular operation only if the object is explicitly a list at the time when the operation is done. If the object is not explicitly a list, Mathematica always treats it as a scalar. This means that you can get different results, depending on whether you assign a particular object to be a list before or after you do a particular operation. | The object p is treated as a scalar, and added separately to each element in the vector. | |
Out[9]=
|
|
| This is what happens if you now replace p by the list {c, d}. | |
In[10]:=
% /. p -> {c, d}
|
Out[10]=
|
|
| You would have got a different result if you had replaced p by {c, d} before you did the first operation. | |
Out[11]=
|
|
|