% 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