## 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 4×3 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))