#MATRIX ALGEBRA: DEFINITIONS AND BASIC FUNCTIONS #SCALAR: a=5;b=8;c=3.14 a b c #VECTOR: x1=c(3,-1,4) x1 x2=c(1,2,-2) x2 #MATRIX: A=matrix(c(0,3,1,1,-1,1),nrow=2,ncol=3,byrow=T) A B=matrix(c(1,2,-2,5,-3,1),nrow=2,ncol=3,byrow=F, dimnames=list(c("row1","row2"),c("C.1","C.2","C.3"))) B #VECTOR ADDITION AND SCALAR MULTIPLICATION: x1+x2 c*x2 #VECTOR YRANSPOSE & MULTIPLICATION: t(x1) #transpose x1*x2 #product by row t(x1)%*%x2 #dot product x1%*%t(x2) #cross product outer(x1,x2) #Equivalent to line above #VECTOR LENGTH: length(x1) #number of elements in a vector sqrt(t(x1)%*%x1) #Euclidean length #ANGLE BETWEEN VECTORS: cos.theta=(t(x1)%*%x2)/((sqrt(t(x1)%*%x1))*(sqrt(t(x2)%*%x2))) cos.theta theta.rad=acos(cos.theta) theta.rad theta=(180/pi)*theta.rad theta pi #PROJECTION OF VECTORS: proj12=((t(x1)%*%x2)/(t(x2)%*%x2))*x2 proj12 proj21=((t(x2)%*%x1)/(t(x1)%*%x1))*x1 proj21 #HANDY PROJECTION FUNCTION: #Projects x onto y proj <- function(x,y){ res=((t(x)%*%y)/(t(y)%*%y))*y return(res) } proj(x1,x2) proj(x2,x1) #MATRIX SUMMARY INFORMATION: nrow(A) ncol(B) qr(A)$rank #MATRIX MULTIPLICATION: A%*%B t(A)%*%t(B) A%*%t(B) t(A)%*%B t(B)%*%A t(x1)%*%A A%*%x1 t(x2)%*%t(B) #IDENTITY MATRIX: I4=diag(4) I4 #MATRIX TRACE: is.square <- function(M) { return (is.matrix(M) && (nrow(M) == ncol(M))); } trace <- function(M) { return (ifelse(is.square(M),sum(diag(M)),NA)); } trace(S) #MATRIX INVERSE: S=matrix(c(4,7,6,5,1,1,3,2,1),nrow=3,ncol=3,byrow=T) Sinv=solve(S) Sinv #QUADRATIC FORM: M=matrix(c(1,-5,7,-5,2,4,7,4,3),nrow=3,ncol=3,byrow=T) t(x1)%*%M%*%x1