#----------------------------------------------# # # # Numerisches Ueberpruefen der Resultate aus # # Aufgabe 1, 2 und 3: # # # #----------------------------------------------# # R-Code: # Aufgabe 1: # Wir legen die Matrix A an: a1 = c(0,1) # 'c()' fuer 'concatenate', a2 = c(1,0) # Zeilenvektoren A = rbind(a1,a2) # 'rbind' fuer 'row-bind' A # Eigenwerte und Eigenvektoren kann man in R # mit dem eigen()-Befehl berechnen: Der gibt # 2 Sachen zurueck (Datentyp 'Liste'): # 1) einen Vektor mit den Eigenwerten und # 2) eine Matrix mit allen normierten Eigenvektoren: res = eigen(A) # res fuer result res # EWs 1 und -1, # EVs (1,1)/sqrt(2) und (1,-1)/sqrt(2) # passt alles # nur zur Info: mode(res) # Datentyp 'Liste' str(res) # Aufgabe 2: # Wir legen die Matrix A an: a1 = c(0,1) a2 = c(-1,0) A = rbind(a1,a2) A res = eigen(A) # res fuer result res # offensichtlich kann das R mit komplexen # Zahlen rechnen, tolle Sache.. # nur zur Info: mode(res) str(res) # ok, complex # Aufgabe 3a: a1 = c(0,1) a2 = c(1,0) A = rbind(a1,a2) # das V und das D koennen wir direkt mit der eigen()-Funktion # upsetten: V = eigen(A)$vectors D = diag( eigen(A)$values ) V D # jetzt das Matrix-Produkt V D V^(-1): # zunaechst: V^(-1) mit dem solve()-Befehl: Vinv = solve(V) Vinv # dann: R-Syntax fuer das Matrix-Produkt ist %*% (ein einfaches * wird # fuer das element-weise Multiplizieren von Matrizen verwendet): # Also: test = V %*% D %*% Vinv test A # das passt.. # Aufgabe 3b: a1 = c(0,1) a2 = c(-1,0) A = rbind(a1,a2) # das V und das D koennen wir direkt mit der eigen()-Funktion # upsetten: V = eigen(A)$vectors D = diag( eigen(A)$values ) V D # jetzt das Matrix-Produkt V D V^(-1): Vinv = solve(V) Vinv test = V %*% D %*% Vinv test zapsmall(test) # eliminiert numerical noise.. A # ..das passt