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
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
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
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
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