Intermediate Mathematics for Economists ECON3272

Intermediate Mathematics for Economists ECON3272 Computer Assignment 1. Matrix Algebra In this course the open-source software R is used for numerical exercises. R includes a line editor but it is more convenient to use R with RStudio. R is available in the computer labs and you may download it freely from the web onto your PC (http://www.r-project.org/). For the installation of R and RStudio see: Torfs, P. and Brauer, C. “A (very) short introduction to R”, 3 March 2014. (http://cran.r-project.org/doc/contrib/Torfs+Brauer-Short-R-Intro.pdf) RStudio splits the computer screen into four windows: Editor window •    This window provides a text editor. •    Click Run or press CTRL+ENTER to send a line to the consol window where it is executed. •    You may edit and save the programs that you write in this window.     Workspace/history window •    The workspace window shows the objects R has in its memory. You can edit their values by clicking on them. •    The history window provides a protocol of what has been typed. Consol (command) window •    Commands are executed in this window. •    You may write directly into this window using the line editor.     Plots/help/files/packages window •    R sends plots to this window. •    You may also use the help function, view files and install packages in this window. A more detailed introduction to R can be found in: Venables W.N. and Smith D.M. “An Introduction to R”, 16 April 2015. (http://cran.r-project.org/doc/manuals/R-intro.pdf) Data Input Lines that start with # are comments that are ignored by R. Only copy the command lines without the comments.  R is case sensitive; that is, x and X or gdp and Gdp indicate different objects. # Start R. # Input the vectors x and h. x <- c(4, 3, 2, 7) h <- c(5, -3, 1, 7, -6, 8, 1, 9, -6, -4, 0, 2) # The assignment operator <-, which looks like an arrow, assigns # the value to the right of it to the name on the left. The two # vectors are now objects in the workspace of R. # Rearrange the vector h into the 4x3 matrix A. A <- array(h, dim=c(4,3)) # There are now three objects in the workspace. The following # command shows the names of those objects. objects() # The output is #    [1] "A" "h" "x" # Remove the vector h from the workspace. rm(h) objects() # The output is #     [1] "A" "x" # Show the two objects. x; A # The ouput is #    [1] 4 3 2 7 #         [,1] [,2] [,3] #    [1,]    5   -6   -6 #    [2,]   -3    8   -4 #    [3,]    1    1    0 #    [4,]    7    9    2 # Note that matrix A is filled with numbers column by column. The # elements of a vector are always listed in a row. # Similarly, input the matrices B, C, D, E, F. h <- c(3, 5, 5, -7, 4, -9, 8, 4, 0, 1, -7, 9) B <- array(h, dim=c(3,4)) rm(h) h <- c(1, 2, 4, -5, -7, 3, 8, 1, -6, 1, 1, 3) C <- array(h, dim=c(3,4)) rm(h) h <- c(7, -4, 2, 1, 9, -5, 0, 3, 6, 1, 4, 7, 0, 2, 1, -2) D <- array(h, dim=c(4,4)) rm(h) h <- c(3, 2, -1, 4, 5, -2, 7, -9, 6, 4, -2, 8, 0, 1, 9, 3) E <- array(h, dim=c(4,4)) rm(h) h <- c(-4, 6, -1, 3, 6, 2, 4, -8, -1, 4, 3, 0, 3, -8, 0, 7) F <- array(h, dim=c(4,4)) rm(h) # There are now six matrices and one vector in the workspace. objects() # Show all objects. x; A; B; C; D; E; F # Exercise 1 # Compute K=AB, L=BA, M=CD, N=DC, P=A(B+C), R=AB+AC. Display the # results and provide comments where appropriate. # For example, the R code for K and P is: K <- A%*%B K P <- A%*%(B+C) P # Exercise 2 # Compute S=(AB)'-B'A'. The R function t produces the transpose of # a matrix. Comment. S <- t(A%*%B)-t(B)%*%t(A) S # Exercise 3 # Find the determinants of matrices A, D and E. Call the # determinants a, b, c. Comment where appropriate. # Hint: One of these determinants does not exist. Also inspect the # columns of matrix E. # Example: a <- det(A) a # Exercise 4 # Compute the inverses of matrices A, D and E. Call them U, V, W. # Comment where appropriate. # Hint: See the preceding question. Example: U <- solve(A) U # Exercise 5 # a) Compute the quadratic form x'Fx. d <- t(x)%*%F%*%x d # The following code also works because R uses vectors in whatever # way is multiplicatively coherent. Therefore, there is no need to # transpose x; R does it automatically. e <- x%*%F%*%x e # b) Compute the eigenvalues and eigenvectors of the symmetric # matrix F. ev <- eigen(F) ev # The eigenvalues are the row vector and the eigenvectors are the # columns of the matrix. # c) Retrieve the matrix of eigenvectors. Q <- ev$vec # Compute J = Q’Q. Comment. J = t(Q)%*%Q J # Hint: See the matrix whose columns are eigenvectors in the # course handbook. # d) What is the definiteness of the quadratic form x'Fx and # matrix F? # Exercise 6 objects() # Remove all objects from the workspace. rm(list=ls(all=TRUE)) # Check whether the workspace is now empty. objects() # a) Consider the linear equation system given in Bretscher # (2009), Exercises 1.2, 17. # # Using matrix notations, the equation system is: # Input the vector b and matrix A and display them. How to do this # is shown at the beginning of this assignment. # b) Does the system have a unique solution? # Hint: Compute the determinant of A. Is A invertible? For the R # code see Exercise 3. # c) Solve the system of equations. # The following R code uses the inverse of A: x <- solve(A)%*%b # This code is, however, numerically inefficient and potentially # unstable. A safer and more efficient code is: solve(A,b) # Note: In numerical linear algebra matrix inversion is avoided. # There are other, more efficient ways to solve a linear equation # system. # Finally, do some housekeeping and remove all objects. rm(list=ls(all=TRUE))