% Course 18.06: Linear Algebra *** MATLAB Demonstration
%
% This is a transcript of a simple MATLAB session.
% It was originally saved as the file called rundemo -- and now
% I have edited the original file with these comments.
%
>> diary rundemo
% Here is some information on the command called diary.
>> help diary
DIARY Save the text of a MATLAB session.
DIARY file_name causes a copy of all subsequent terminal input
and most of the resulting output to be written on the named
file. DIARY OFF suspends it. DIARY ON turns it back on.
DIARY, by itself, toggles the diary state.
% Each row of a vector (or matrix) ends with a semicolon.
% MATLAB is case sensitive, so b and B are different variables.
>> b = [4; 8; 14]
b =
4
8
14
>> A = [1 1 1; 1 2 4; 1 3 9]
A =
1 1 1
1 2 4
1 3 9
% slu computes the LU factorization of a square matrix.
>> help slu
SLU Simple, square, LU factorization.
[L,U] = SLU(A) for a square matrix A, illustrates the use of
Gaussian elimination to compute a lower triangular matrix L
and an upper triangular matrix U so that L*U = A.
The algorithm does no pivoting and so will fail if a small
pivot is encountered.
See also SLV, PLU, LU.
>> [L, U] = slu(A)
L =
1 0 0
1 1 0
1 2 1
U =
1 1 1
0 1 3
0 0 2
% Let's verify that the product L * U is the same as A.
>> L * U
ans =
1 1 1
1 2 4
1 3 9
>> A
A =
1 1 1
1 2 4
1 3 9
% whos shows your variables and other information.
>> whos
Name Size Elements Bytes Density Complex
A 3 by 3 9 72 Full No
L 3 by 3 9 72 Full No
U 3 by 3 9 72 Full No
ans 3 by 3 9 72 Full No
b 3 by 1 3 24 Full No
Grand total is 39 elements using 312 bytes
% Let's use slv to solve A x = b.
>> help slv
SLV Simple linear equation solver.
x = SLV(A,b) tries to use the LU factorization computed by SLU(A)
to solve the linear equation A*x = b.
Since SLU does no pivoting, SLV may fail if a small pivot is
encountered.
See also SLU, SOLVE, \ .
>> x = slv(A,b)
x =
2
1
1
% Let's verify that A * x is the same as b.
>> A * x
ans =
4
8
14
>> b
b =
4
8
14
% We can also find the solution x by computing Ainv * b.
>> help inv
INV Matrix inverse.
INV(X) is the inverse of the square matrix X.
A warning message is printed if X is badly scaled or
nearly singular.
>> Ainv = inv(A)
Ainv =
3.0000 -3.0000 1.0000
-2.5000 4.0000 -1.5000
0.5000 -1.0000 0.5000
% The solution is the same as x.
>> soln = Ainv * b
soln =
2
1
1
% eye is the command for creating the identity matrix.
>> I = eye(3,3)
I =
1 0 0
0 1 0
0 0 1
% Notice how we create the augmented matrix Aaug.
>> Aaug = [ A I ]
Aaug =
1 1 1 1 0 0
1 2 4 0 1 0
1 3 9 0 0 1
% This is an example of Gauss-Jordan elimination for computing Ainv.
>> help ref
REF Reduced Row Echelon Form.
R = ref(A) uses the pivoting LU factorization computed by PLU
to find the reduced row echelon form of a rectangular matrix A.
>> R = ref(Aaug)
R =
1.0000 0 0 3.0000 -3.0000 1.0000
0 1.0000 0 -2.5000 4.0000 -1.5000
0 0 1.0000 0.5000 -1.0000 0.5000
% The row operations give the augmented matrix R = [ I Ainv ].
% Let's display Ainv, again.
>> Ainv
Ainv =
3.0000 -3.0000 1.0000
-2.5000 4.0000 -1.5000
0.5000 -1.0000 0.5000
% size gives the number of rows and number of columns.
>> size(A)
ans =
3 3
>> size(Aaug)
ans =
3 6
% A matrix can be tranposed using the command '
>> R
R =
1.0000 0 0 3.0000 -3.0000 1.0000
0 1.0000 0 -2.5000 4.0000 -1.5000
0 0 1.0000 0.5000 -1.0000 0.5000
>> R'
ans =
1.0000 0 0
0 1.0000 0
0 0 1.0000
3.0000 -2.5000 0.5000
-3.0000 4.0000 -1.0000
1.0000 -1.5000 0.5000
>> diary off