Matrix Arithmetic

If necessary, re-enter the matrices
	>> a = [1 2 3 ; 4 5 6 ; 7 8 10], b = [1 1 1]'
Scalars multiply matrices as expected, and matrices may be added in the usual way; both are done "element by element."
	>> 2*a, a/4
	>> a + [b,b,b]
Scalars added to matrices produce a "strange" result, but one that is sometimes useful; the scalar is added to every element.
	>> a+1, b+2
Matrix multiplication requires that the sizes match. If they don't, an error message is generated.
	>> a*b, b*a
	>> b'*a
	>> a*a', a'*a
	>> b'*b, b*b'
To perform an operation on a matrix element-by-element, precede it by a period.
	>> a^2, a.^2
	>> a.*a, b.*b
	>> 1 ./ a
	>> 1./a.^2
One of the main uses of matrices is in representing systems of linear equations. If a is a matrix containing the coefficients of a system of linear equations, x is a column vector containing the "unknowns," and b is the column vector of "right-hand sides," the constant terms, then the matrix equation
a x =b
represents the system of equations. Matlab provides a very efficient mechanism for solving linear equations:
	>> x = a \ b
This can be read "x equals a-inverse times b." To verify this assertion, look at
	>> a*x, a*x - b
Change b, and do the problem again.
	>> b = [1 1 0]'
	>> x = a\b
	>> a*x, a*x - b
If there is no solution, a "least-squares" solution is provided [a*x - b is as small as possible]. Enter
	>> a(3,3) = 9
[which makes the matrix singular] and do those again. [Use the up-arrow, to recall the commands without retyping them].

There is a related problem, to solve x a = b (given a and b), which is done with

	>> x = b / a
This can be read "B times A-inverse." Again, if there is no solution, a least-squares solution is found.


MATRIX FUNCTIONS

There are a number of builtin matrix functions, for example the determinant, rank, nullspace, and condition number.

	>> det(a)
	>> rank(a)
	>> norm(a)
	>> null(a)
Enter
	>> a(3,3) = 10
[which makes the matrix nonsingular] and do those again.

Other valuable functions find the inverse, eigenvalues and eigenvectors of a matrix.

	>> h=hilb(5)
	>> cond(a)
	>> inv(h)
	>> eig(h)
The "eig" function has two forms of output. The last command produced a vector of eigenvalues. The next command produces two matrices, the first containing the eigenvectors as its columns, and the second containing the eigenvalues, along its diagonal.
	>> [v,d]=eig(h)
The matrix, h, times the first eigenvector, v(:,1), should equal the first eigenvalue, d(1,1), times that same eigenvector.
	>> h*v(:,1)
	>> d(1,1)*v(:,1)
"Round-off error" is a primary concern in numerical computing. Matlab does numerical computation, which is to say, it works with limited precision; all decimal expansions are truncated at the sixteenth place [roughly speaking]. Even if this is acceptable for any single calculation, its effects may accumulate with unacceptable consequences. The machine's round-off, the smallest distinguishable difference between two numbers as represented in Matlab, is denoted "eps".
	>> help eps
	>> eps
We can check the assertion just made about eigenvectors and eigenvalues, as follows.
	>> h*v(:,1) - d(1,1)*v(:,1)
This is "the zero vector, modulo round-off error."