Problem set 1

Task 1

dot product of u and v

dotproduct<-function (u,v,c) {
    e=0
  for (i in 1:c)        {
    d<-u[i,]*v[i,]
    e<-(e+d)            }
    u[1,]<-e                 }
first<-matrix(c(.5,.5),nrow=2)
second<-matrix(c(3,-4),nrow=2)
DotProductAnswer<-dotproduct(first,second,2)
DotProductAnswer
## [1] -0.5

Task 2

lengths of u and v

#DualLength finds the individual lengths of 2 vectors u and v
DualLength<-function (u,v,c) {
e=0
  for (i in 1:c)      {
    d<-u[i,]*u[i,]
  e<-(e+d)            }
  e<-sqrt(e)
  length1<-e
g=0
  for (i in 1:c)      {
   f<-v[i,]*v[i,]
  g<-(g+f)            }
  g<-sqrt(g)
 length2<-g
  l1<-list(length1,length2)
  print(l1)}
first<-matrix(c(.5,.5),nrow=2)
second<-matrix(c(3,-4),nrow=2)
first<-DualLength(first,second,2)
## [[1]]
## [1] 0.7071068
## 
## [[2]]
## [1] 5

Task 3

linear combination 3u-2v

LinearCombination<-function(u,v) {

  for (i in 1:2)      {
    u[i,]<-((u[i,]*3) - (v[i,]*2))  }
    print(u)
                      
}

matrixu<-matrix(c(.5,.5),nrow=2)
matrixv<-matrix(c(3,-4),nrow=2)
LinearCombination(matrixu,matrixv)
##      [,1]
## [1,] -4.5
## [2,]  9.5

Task 4

angle between u and v (given in degrees)

Angle<-function (u,v,c)        {
     e=0
  for (i in 1:c)       {
    d<-u[i,]*v[i,]
    e<-(e+d)           }
                 
q=0
  for (i in 1:c)      {
    r<-u[i,]*u[i,]
  q<-(q+r)            }
  q<-sqrt(q)
s=0
  for (i in 1:c)      {
   t<-v[i,]*v[i,]
  s<-(s+t)            }
  s<-sqrt(s)
 length2<-s
angleIs<-(acos(e/(q*s))/pi*180)

angleIs                       }
first<-matrix(c(.5,.5),nrow=2)
second<-matrix(c(3,-4),nrow=2)
MatrixAngle<-Angle(first,second,2)
MatrixAngle
## [1] 98.1301

Problem set 2

givenMatrix<-matrix(c(1,2,-1,1,-1,-2,3,5,4),nrow=3)
solutionSet<-matrix(c(1,2,6),nrow=3)

GaussJordan<-function(a,b)   {
  #Step 1 Our function creates an augmented matrix from the matrix and vector
  ourMatrix<-matrix(nrow=3,ncol=4)
for(i in 1:3)            {
for (j in 1:3)      {
  
  ourMatrix[[i,j]]<-a[[i,j]]
                    }
 ourMatrix[[i,4]]<-b[[i]] 
                          }
  
#Step 2  Our function eliminates problems with zero pivots by moving rows where it will come up
Mover<-matrix(nrow=1,ncol=4)
for(i in 1:2){
if (ourMatrix[[1,1]]==0)             {
if (ourMatrix[[2,1]]==0)     {
  for (i in 1:4)   {
  Mover[[1,i]]<-ourMatrix[[1,i]]
   ourMatrix[[1,i]]<-ourMatrix[[3,i]]
   ourMatrix[[3,i]]<-Mover[[1,i]]
                  }
                              }
else{
  for (i in 1:4)   {
  Mover[[1,i]]<-ourMatrix[[1,i]]
   ourMatrix[[1,i]]<-ourMatrix[[3,i]]
   ourMatrix[[2,i]]<-Mover[[1,i]]
                  }
   }                                   }

if (ourMatrix[[2,2]]==0|ourMatrix[[2,1]]==ourMatrix[[2,2]])   {
for (i in 1:4)   {
  Mover[[1,i]]<-ourMatrix[[2,i]]
   ourMatrix[[2,i]]<-ourMatrix[[3,i]]
   ourMatrix[[3,i]]<-Mover[[1,i]]
                  }
                                                               }
if (ourMatrix[[3,3]]==0|ourMatrix[[3,1]]==ourMatrix[[3,3]]|ourMatrix[[3,2]]==ourMatrix[[3,3]])   {
for (i in 1:4)   {
  Mover[[1,i]]<-ourMatrix[[3,i]]
   ourMatrix[[3,i]]<-ourMatrix[[2,i]]
   ourMatrix[[2,i]]<-Mover[[1,i]]
                  }
                                                                                                  }
} 

#Step 3: Solve the matrix using Gauss/Jordan Elimination
for(j in 2:3)               {
for(i in 4:1)      {
  if(ourMatrix[j,1]!=0)                                                          {
ourMatrix[j,i]<-((ourMatrix[j,i]*ourMatrix[1,1]/ourMatrix[j,1]*-1)+ourMatrix[1,i])
                                                                                }
                   }
                            }

for(j in c(1,3))                    {
for(i in c(1,3,4,2))          {
 if(ourMatrix[j,2]!=0)                                                          {
ourMatrix[j,i]<-((ourMatrix[j,i]*ourMatrix[2,2]/ourMatrix[j,2]*-1)+ourMatrix[2,i])
                                                                                }
                              }
                                    }

for(j in c(1,2))                               {
for(i in c(1,2,4,3))                    {
if(ourMatrix[j,3]!=0)                                                          {
ourMatrix[j,i]<-((ourMatrix[j,i]*ourMatrix[3,3]/ourMatrix[j,3]*-1)+ourMatrix[3,i])
                                                                               }
                                        }
                                                }

for(i in 1:3)    {
ourMatrix[i,4]<-ourMatrix[i,4]/ourMatrix[i,i]
ourMatrix[i,j]<-0
ourMatrix[i,i]<-1
}
ourMatrix[[1,4]]<-round(ourMatrix[[1,4]],digits=2)
ourMatrix[[2,4]]<-round(ourMatrix[[2,4]],digits=2)
ourMatrix[[3,4]]<-round(ourMatrix[[3,4]],digits=2)
print("x=")
print(ourMatrix[[1,4]])
print("y=")
print(ourMatrix[[2,4]])
print("z=")
print(ourMatrix[[3,4]])
  ourMatrix}

GaussJordan(givenMatrix,solutionSet)
## [1] "x="
## [1] -1.55
## [1] "y="
## [1] -0.32
## [1] "z="
## [1] 0.95
##      [,1] [,2] [,3]  [,4]
## [1,]    1    0    0 -1.55
## [2,]    0    1    0 -0.32
## [3,]    0    0    1  0.95