#Vektoren:
x<-c(3,1) x
y<-c(2,3) y
#Addition:
x+y
# Multiplikation mit Skalar:
(-3)*x
# Skalarprodukt:
x%*%y
# oder so:
t(x)%*%y
# Das Ergebnis ist jeweils eine 1*1 Matrix
# so wird es eine Zahl:
as.numeric(t(x)%*%y)
#Dyadisches Produkt:
x%*%t(y)
# Länge der Vektoren:
sqrt(sum(x^2)) sqrt(sum(y^2))
# Berechnung des Winkels zwischen den Vektoren:
acos(as.numeric(t(x)%*%y)/(sqrt(sum(x^2))*sqrt(sum(y^2))))/pi*180
# Matrizen:
A<-matrix(c(1,2,2,5),ncol=2) A
B<-matrix(c(2,1,3,4,-1,2),ncol=3) B
# Jetzt wird die Matrix Zeilenweise gefüllt B<-matrix(c(2,1,3,4,-1,2),ncol=3,byrow=T) B
# Transponierte Matrix:
t(B)
# Addition:
A+B
B<-matrix(c(2,1,4,-1),ncol=2,byrow=T) B
A+B
# Multiplikation mit Skalar:
(-3)*A
1/4
# Matrizenmultiplikation:
B<-matrix(c(2,1,3,4,-1,2),ncol=3,byrow=T) A%*%B
# mit "leicht geänderter Matrix B":
B<-matrix(c(1,2,3,4,-1,2),ncol=3,byrow=T) A%*%B
# Rechenregel für transponierte Matrizen:
t(A%*%B) t(B)%*%t(A)
# Determinate:
det(A) B
det(B)
B<-matrix(c(2,1,4,-1),ncol=2,byrow=T) B
det(B)
# Inverse Matrix:
A
solve(A) B
solve(B)
B%*%solve(B) solve(B)%*%B
round(B%*%solve(B),4) round(solve(B)%*%B,4)
# Mit solve wird ein lineares Gleichungsystem gelöst:
# z.B.: Ax=b b=c(3,4)
solve(A,b)
# die Lösung ist der Vektor x
# Man kann x auch durch x=(A^-1)b bestimmen:
solve(A)%*%b
# im ersten Fall erhält man einen Vektor:
is.vector(solve(A,b)) is.matrix(solve(A,b))
# im zweiten Fall eine Matrix mit zwei Zeilen
# und einer Spalte, als praktisch einen Spaltenvektor:
is.vector(solve(A)%*%b) is.matrix(solve(A)%*%b)
2/4
# Rechenregeln für inverse Matrizen:
# (A*B)^(-1)=B^(-1)*A^(-1):
solve(A%*%B)
solve(B)%*%solve(A)
# (B*A)^(-1)=A^(-1)*B^(-1):
solve(B%*%A)
solve(A)%*%solve(B)
# Spur einer Matrix:
A
sum(diag(A)) B
sum(diag(B))
# Eigenwerte und Eigenvektoren:
eigen(A)
# Die Determinate ist das Produkt der Eigenwerte:
eigen(A)$value
prod(eigen(A)$value) det(A)
eigen(B)$value
prod(eigen(B)$value) det(B)
# Die Spur ist die Summe der Eigenwerte:
eigen(A)$value
sum(eigen(A)$value) sum(diag(A))
eigen(B)$value
sum(eigen(B)$value) sum(diag(B))
# Die Eigenvektoren sind die Spaltenvektoren
# der folgenden Matrix, erste Spalte = erste EV:
eigen(A)$vector eigen(B)$vector
# Die Eigenvektoren zu verschiedenen Eigenwerten
# einer symmetrischen Matrix sind zu orthogonal:
# Die Matrix A ist symmetrisch:
A
eigen(A)$vector[,1]%*%eigen(A)$vector[,2]
# Die Matrix B hingegen ist nicht symmetrisch:
B
eigen(B)$vector[,1]%*%eigen(B)$vector[,2]
3/4
# Die in R ausgegebenen Eigenvektoren haben die Länge 1:
eigen(A)$vector[,1]
sum(eigen(A)$vector[,1]^2) eigen(A)$vector[,2]
sum(eigen(A)$vector[,2]^2) eigen(B)$vector[,1]
sum(eigen(B)$vector[,1]^2) eigen(B)$vector[,2]
sum(eigen(B)$vector[,2]^2)
# Grafische Darstellung der Eigenvektoren von A:
plot(eigen(A)$vector[1,],eigen(A)$vector[2,],
xlim=c(-1,1),ylim=c(-1,1),xlab=" ",ylab=" ",main="Eigenvektoren von A", col="blue",lwd=2)
arrows(0,0,eigen(A)$vector[1,1],eigen(A)$vector[2,1],col="red",lwd=2) arrows(0,0,eigen(A)$vector[1,2],eigen(A)$vector[2,2],col="red",lwd=2) abline(c(0,0))
abline(c(0,10^10))
# Grafische Darstellung der Eigenvektoren von B:
plot(eigen(B)$vector[1,],eigen(B)$vector[2,],
xlim=c(-1,1),ylim=c(-1,1),xlab=" ",ylab=" ",main="Eigenvektoren von B", col="blue",lwd=2)
arrows(0,0,eigen(B)$vector[1,1],eigen(B)$vector[2,1],col="red",lwd=2) arrows(0,0,eigen(B)$vector[1,2],eigen(B)$vector[2,2],col="red",lwd=2) abline(c(0,0))
abline(c(0,10^10))
# Drehungen durch orthogonale Matrizen:
# Drehungswinkel:
alpha<-pi/2
#Drehungsmatrix
D<-matrix(c(cos(alpha), -sin(alpha),sin(alpha),cos(alpha)),ncol=2,byrow=T) round(D,5)
# Vektor x:
x
# Vektor Dx:
d<-as.vector(D%*%x)
#Grafische Darstellung der Vektoren:
plot(c(x[1],d[1]),c(x[2],d[2]),
xlim=c(-5,5),ylim=c(-5,5),xlab=" ",ylab=" ",main="Drehung", col="blue",lwd=2)
arrows(0,0,x[1],x[2],col="black",lwd=2) arrows(0,0,d[1],d[2],col="red",lwd=2) abline(c(0,0))
abline(c(0,10^10))
4/4