====== Lösungsvorschlag ====== ==== Aufgabe 1 (Theorieaufgaben) ==== **a)** n^2, n, n^2, n, n^2, n^2, h^2, h^4 Die Komplexität der Multiplikation zweier k-Bandmatrizen ist O(k*n) bzw. nur O(n) **b)** * Richtig * Falsch (Ausloeschungen usw) ==== Aufgabe 2 (Duennbesetzte Matrizen) ==== **a)** val = [2, 3, -4, 7, 3, 2, 8, 1, -3] row_ind = [3, 4, 5, 2, 3, 4, 2, 4, 5] col_ptr = [1,1,4,7,10,10] **b)** Es wird CRS verwendet col_ind (CRS) = row_ind (CCS) row_ptr (CRS) = col_ptr (CCS) **c)** [4, 0, 5, 7,0]^T ==== Aufgabe 3 (Direkte Verfahren fur lineare Gleichungssysteme) ==== **a)** \\ http://www.numerik.mathematik.uni-mainz.de/didaktikseminar/Gruppe6/ | 1 0 0 0 | | 2 1 0 0 | L = |-1 0 1 0 | | 2 -2 -1 1 | | 2 0 -2 1 | | 0 2 -1 0 | R = | 0 0 1 2 | | 0 0 0 1 | **b)**\\ http://www.math.uni-frankfurt.de/~numerik/lehre/Seminare/ProSem_MA_SS11/qrzerlegung.pdf | -0.6 -0.8 | Q = | -0.8 0.6 | | -5 -2 | R = | 0 -1 | **c)** \\ * Um die Lösung x∈ℝn eines linearen Gleichungssystems Ax=b zu bestimmen, sind folgende drei Schritte durchzuführen: - Bestimme eine QR-Zerlegung der Matrix A. - Berechne z=Q^Tb. - Löse Rx=z durch Rückwärtseinsetzen. z = [0, 0, 6, 2]^T x = [1, 1, 2, 2]^T ==== Aufgabe 4 (Singulaerwertzerlegung (SVD)) ==== **a)** \\ Diagonaleintraege von Sigma 2; 1 **b)** \\ Anzahl der Singulaerwerte rang(A) = 2 ||| A |||_F = sqrt(2²+1²) = sqrt(5) **c)** \\ Nur den ersten Singulaerwert erhalten, andere Singulaerwerte durch 0 ersetzen A1 = 2 * 1/5 * [3, 0, -4, 0]^T * 1/5 * [4, -2, -1, -2] | 24 -12 -6 -12 | | 0 0 0 0 | = 1/25 |-32 16 8 16 | | 0 0 0 0 | **d)** [0, 0, 2/5, 4/5]^T **e)** Minimiert das Residuum, und x hat die kleinste Euklidische Norm. ==== Aufgabe 5 (Programmierung: Bilder, Filtern) ==== **a)** const float &Image::operator() (unsigned int i, unsigned int j) const { return data[i*width+j]; } **b)** const float &Image::operator() (unsigned int i, unsigned int j) const { return data[i*width+j]; } **c)** Image Filter::derivateX(const Image &input) { Image output(input.height, input.width-2); for(int y=0;y **d)** Image Filter::laplace(const Image &input) { Image output(input.height-2,input.width-2); float laplaceFilter[3][3]={{0,1,0}, {1,-4,1}, {0,1,0}}; for(int y=1;y **e)** Image Filter::mean3(const Image &input) { Image output(input.height-2,input.width-2); Image tmp(input.height,input.width-2); float filterX[3]={1.0f/3,1.0f/3,1.0f/3}; float filterY[3]={1.0f/3,1.0f/3,1.0f/3}; for(int y=0;y ==== Aufgabe 6 (Iterative Loesungsverfahren) ==== **a)** x1 = [1, 2, 5/2, 2, 1]^T **b)** x1 = [1, 2, 3, 3, 2]^T **c)** Schwaches Zeilen-SummenKriterium (somit schwach diagonaldominant) + unzerlegbare Matrix => Konvergiert ==== Aufgabe 7 (Programmierung: Nichtlineare Optimierung) ==== **a)** vec2 Optimizer::gradientDescent(const Function &f, const vec2 &x0, int maxIter) { vec2 currX=x0; for(int i=0;i **b)** vec2 Optimizer::newton(const Function &f, const vec2 &x0, int maxIter) { vec2 currX=x0; for(int i=0;i **c)** Falls die Hesse-Matrix nicht positiv definit ist, kann sie im jeweiligen Iterationsdurchlauf durch die EInheitsmatrix ersetzt werden. In diesem Falle geht das Newton-Verfahren in das Gradientenabstiegsverfahren ueber. Gradientenabstiegsverfahren ==== Aufgabe 8 (Bezier-Kurven) ==== **a)** Siehe Script **b)** [-2 0] [2 4] [6 4] [6 0] [0 2] [4 4] [6 2] [2 3] [5 3] [3½ 3] => c0..c3=[-2 0] [0 2] [2 3] [3½ 3] d0..d3=[3½ 3] [5 3] [6 2] [6 0] ==== Aufgabe 9 (Faltung) ==== **a)** [ r ] Distributivitaet\\ [ r ] Kommutativitaet\\ [ f ] Denn: Neutrales Element der Faltung zu einer Funktion f ist nicht die Funktion f selbst - es gibt kein neutrales Element im kommutativen Ring mit Faltungsoperation (siehe Wikipedia)\\ [ r ] Assoziativitaet **b)** Angabe der Lösung zerlegt in Strecken, wobei P1 (x,y) immer den Startpunkt meint und P2 (x,y) den Endpunkt einer Strecke.\\ P1 = (0,0) und P2 = (1,0) würde also die Strecke auf der x-Achse meinen von x = 0 bis x = 1 (hoffe das ist verständlich, weil ASCII Bild hier rein is doof) Lösung:\\ Strecke0: P1 = (-unendlich, 0) bis P2 = (-1/2, 0)\\ Strecke1: P1 = (-1/2, 0) bis P2 = (0, 1/2)\\ Strecke2: P1 = (0, 1/2) bis P2 = (1, -1/2)\\ Strecke3: P1 = (1, -1/2) bis P2 = (3/2, 0)\\ Strecke4: P1 = (3/2, 0) bis P2 = (unendlich, 0) Alternativlösung: (-0.5, 0), (0, 0.5), (0.5, 0.5), (1, 0) Alternativlösung (Wolfram Language): https://i.imgur.com/7fJeOC4.png **c)** \\ Erklaert an einem Beispiel: http://nt.eit.uni-kl.de/fileadmin/lehre/guet/uebung/faltung.pdf - (keine Überlappung) t < -1: h(x)*h(x)= 0 - (Eintrittsphase) -1 <= t <1: h(x)*h(x) = Integral form -2 to t-1 of 1/2 dx = t/2+0.5 - (Vollständige Überlappung) 1 <= t < 3: h(x)*h(x) = Integral form t-3 to t-1 of 1/2 dx = 1 - (Austrittsphase) 3 <= t < 5: h(x)*h(x) = Integral form t-3 to 2 of 1/2 dx = -t/2 + 5/2 - (keine Überlappung) 5 <=t: h(x)*h(x) = 0 Alternativlösung:\\ x < -1: h3(x)*h4(x)= 0\\ -1 <= x < 1: h3(x)*h4(x)= 0.5 x - 1 (Integrieren von 1 bis x-1)\\ 1 <= x < 3: h3(x)*h4(x)= 1\\ 3 <= x < 5: h3(x)*h4(x)= -0.5 x + 3 (Integrieren von x-3 bis 3)\\ 5 <= x: h3(x)*h4(x)= 0\\ ==== Aufgabe 10 ( ) ==== **1a)** Baryzentrische Koordinaten: (1/4, 1/2, 1/4) **1b)** sigma < 0, rho < 0 --> spitze Flaeche rechts ueber Punkt T tau = 1 --> Gerade durch den Punkt T, sodass die Gerade parallel zur Strecke [RS] liegt **1c)** a:b = beta/alpha c:d = (beta+gamma)/alpha = (1 - alpha)/alpha e:f = gamma/alpha **2)** P: fP = 4 Mittelpunkt: fM = 1/4*(fA+fB+fC+fD) = 7/2