knitr::opts_chunk$set(echo = FALSE, results = 'asis')
r6obj_docstat <- rmddochelper::R6ClassDocuStatus$new() r6obj_docstat$set_current_status(psVersion = "0.0.901", psStatus = "Initialisation", psProject = "[REPLACE_WITH_PROJECT]") r6obj_docstat$include_doc_stat(psTitle = "## Document Status")
r6ob_abbrtable <- rmddochelper::R6ClassTableAbbrev$new() ### # include table of abbreviations only, if there are any if (!r6ob_abbrtable$is_empty_abbr()) r6ob_abbrtable$include_abbr_table(psAbbrTitle = "## Abbreviations")
In R werden Matrizen mit der Funktion matrix
erstellt. In der Vorlesung hatten wir gesehen, dass die Funktion matrix()
verschiedene Optionen aktzeptiert. Wir wollen uns hier anschauen, wie sich die Parameter auswirken.
Ihre Aufgabe wird es sein die Matrizen mit den verschiedenen Optionen zu erstellen und so besser zu verstehen, was die Optionen für eine Bedeutung haben.
data
data
: Angabe der Matrix-ElementematA <- matrix(data = c(1:9), nrow = 3, ncol = 3)
data
: Ohne Angabe der Matrix-ElementematB <- matrix(nrow = 3, ncol = 3)
data
: Spezifikation nicht aller ElementematC <- matrix(data = c(1,2,3), nrow = 3, ncol = 3)
matC2 <- matrix(data = c(1,2,3,4), nrow = 3, ncol = 3)
nrow
und ncol
matD <- matrix(data = c(1:9), nrow = 3)
matE <- matrix(data = c(1:9), ncol = 3)
byrow
matF <- matrix(data = c(1:9), nrow = 3, ncol = 3, byrow = TRUE)
matG <- matrix(data = c(1:9), nrow = 3, ncol = 3, byrow = FALSE)
Matrixmultiplikationen können in R mit dem Operator %*%
oder mit den Funktionen crossprod()
oder tcrossprod()
ausgeführt werden. Der Vorteil von crossprod()
und tcrossprod()
gegenüber von %*%
ist, dass wir mit crossprod()
und tcrossprod()
direkt Matrizen und Vektoren multiplizieren können. Das funktioniert mit %*%
nicht. Bei der Matrix-Vektor-Multiplikation mit %*%
muss der Vektor zuerst in eine Matrix verwandelt werden.
In einem ersten Teil der Aufgabe geht es um einen Vergleich zwischen crossprod()
, tcrossprod()
und %*%
für die Matrix-Matrix-Multiplikation.
a) Gegeben sind die folgenden Matrizen
(matA <- matrix(data = c(1:9), ncol = 3)) (matB <- matrix(data = c(2:10), ncol = 3))
Finden Sie heraus welcher Multiplikationen mit %*%
entspricht die folgende Anweisung?
crossprod(matA,matB)
Alternativ dazu gibt es die Funktion tcrossprod()
. Finden Sie, welche Matrixmultiplikation mit %*%
tcrossprod(matA, matB)
ausführt.
\pagebreak
b) Gegeben ist zusätzlich der Vektor vecB
als
vecB <- c(-3,16,1)
Multiplizieren Sie die Matrix matA
mit dem Vektor vecB
einmal mit %*%
und einmal mit crossprod()
.
Hinweise: Ein Vektor kann mit der Funktion as.matrix()
in eine Matrix verwandelt werden.
Gegeben ist das folgende Gleichungssystem.
\begin{IEEEeqnarray}{rCl} 2x_2 + 2x_3 &=& 1 \nonumber\ 2x_1 + 4x_2 + 5x_3 &=& 9 \nonumber\ x_1 - x_2 + 2x_3 &=& 3 \label{eq:GlsA1} \end{IEEEeqnarray}
a) Bestimmen Sie die Lösungsmenge des Gleichungssystems (\ref{eq:GlsA1}) mit dem Gaussverfahren
b) Verwandeln Sie das Gleichungssystem (\ref{eq:GlsA1}) in Matrix-Vektor-Schreibweise
c) Wie lautet die Lösung des Gleichungssystem (\ref{eq:GlsA1}) in Matrix-Vektor-Schreibweise
d) Berechnen Sie die Lösung aus c) mit R
Hinweis: Für die Multiplikation der Matrix $A^{-1}$ mit dem Vektor $b$ muss der Vektor $b$ in eine Matrix verwandelt werden. Dies kann mit der Funktion as.matrix()
gemacht werden.
In einer Population wurden für einen Genort folgende Häufigkeiten bei Genotypen gezählt
dfGenotypeFreq <- data.frame(Genotypen = c("$A_1A_1$", "$A_1A_2$", "$A_2A_2$"), Anzahl = c(24, 53, 23), stringsAsFactors = FALSE) knitr::kable(dfGenotypeFreq)
a) Bestimmen Sie die Genotypfrequenzen
b) Bestimmen Sie die Allelfrequenzen
c) Berechnen Sie das Populationsmittel $\mu$ unter der Annahme, dass die genotypischen Werte zwischen den homozygoten Genotypen $20$ Einheiten auseinanderliegen und dass der heterozygote Genotyp einen genotypischen Wert von $2$ hat.
r6ob_abbrtable$writeToTsvFile()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.