% matrix_alg_demo.m by Andy Ruina 10/2/96
% This is a demo of some of MATLABS abilities with
% matrices: Multiplying, solving equations, creating
% identity, finding inverse, finding eigen-values
% and vectors, etc.
% What is here should mostly get you by in 293 for
% matrix skills. Understanding what these commands do
% (not necessarily how they do it) is most of what you need to know
% about matrices.
% If you execute this file it will create a bunch of output in the
% command window. Look at it to help you understand the commands.
% See Pratap pgs 41-58 and 64-67.
% Try online help with any of the command names you
% see below (eg. type >help eye),
% or >help punct for help with , ; ' etc.
%
A = [ 1 2; % CREATING A MATRIX
pi 4 ]
B = [4 5; 6 7] % CREATE ANOTHER MATRIX
C = A' % TRANSPOSE A MATRIX
b = [ 1 3 ]' % CREATE A COLUMN VECTOR
C = A * B % MULTIPLY ONE MATRIX BY ANOTHER
% (by the rules of matrix multiplication,
% ie, c(1,2) = a(1,1)*b(1,2) + a(1,2)*b(2,2)
y = A * b % MULTIPLY A MATRIX AND A COLUMN VECTOR
D = A .* B % MULTIPLY CORRESPONDING COMPONENTS
% (ie, d(1,2) = a(1,2) * b(1,2) )
comp = D(2,1) % GET A COMPONENT OF A MATRIX
col = D(:,2) % GET A COLUMN OF A MATRIX (2nd col in this case)
row = D(1,:) % GET A ROW (1st row in this case)
gee = diag(D) % GET DIAGONAL, make a column vector out of
% the diagonal elements of a square matrix
whiz = diag(gee) % MAKE DIAGONAL, make a diagonal matrix (all
% zeros off the diagonal) out of a column vector
identity = eye(4) % MAKE AN IDENTITY MATRIX
% (one on the diagonals, zero elsewhere).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Here are some really powerfull cool commands...
% ... the commands that put the MAT in MATLAB.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% (By the way, all of these work fine even if compex numbers are involved.)
Adet = det(A) % DETERMINANT calculation, less useful than some claim
Ainv = inv (A) % Finds the INVERSE of A (if it exists)
Ainv = A^(-1) % Also finds the INVERSE of A.
A_times_inverse = A*Ainv % CHECK. Should give identity matrix.
x = Ainv*b % SOLVES A*x=b for a given A and b (find Ainv first)
x = A\b % SOLVES A*x=b for a given A and b more efficiently
% It the columns of A are not 'independent' the
% command tells you that your matrix is 'singular'
% and doesn't give you the solution (even if there
% is one).
A*x - b % CHECKs the answer above. Since A*x is b this
% gives zero.
[VECT, VAL] = eig(A) % EIGENVECTORS and EIGENVALUES. VECT is a matrix
% where each column is an eigenvector of A. VAL
% is a diagonal matrix where each element is the
% corresponding eigenvalue.
% (An 'eigenvector' of a matrix A is a vector v so that
% A*v is proportional to v. The proportionality
% constant is the 'eigenvalue' for that eigenvector.)
values = eig(A) % EIGENVALUES of a matrix listed in a column vector
% So, for example, VAL (above) is the same as diag(eig(A)).
A * VECT(:,1) - VAL(1,1)*VECT(:,1) % This checks the first eigenvector and value.
% If you have followed up to here you should be able
% to follow why this command gives two zeros (or very
% nearly so --- note the 1e-15).
A*VECT - VECT*VAL % Check all eigenvectors and values at once. (Should
% get very close to 4 zeros for a 2x2 matrix.)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% If this all makes sense to you than you are doing great.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%