Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » algoks » Forendiskussionen

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Letzte ÜberarbeitungBeide Seiten, nächste Überarbeitung
pruefungen:bachelor:algoks:loesungws10 [31.01.2014 17:58] Dawodopruefungen:bachelor:algoks:loesungws10 [22.07.2015 12:42] ellyria
Zeile 27: Zeile 27:
  
 <code> <code>
-l(x) = { 0 für 0 <= x < 1 +l(x) = { 0            für 0 <= x < 1 
- { 12x - 12 für 1 <= x < 2 +        { 12x - 12     für 1 <= x < 2 
- { 60x - 108 für 2 <= x < 3+        { 60x - 108    für 2 <= x < 3
 </code> </code>
  
 **b)** **b)**
  
-Koeffizienten+Koeffizienten \\
 c0 = 0, c1 = 0, c2 = 6, c3 = 6 c0 = 0, c1 = 0, c2 = 6, c3 = 6
  
-Polynom:+Polynom: \\
 a(x) = 6x³ - 12x² + 6x a(x) = 6x³ - 12x² + 6x
  
 **c)** **c)**
 +
 <code> <code>
 |1  0  0  0 | |1  0  0  0 |
Zeile 49: Zeile 50:
  
 **d)** **d)**
 +
 Die Systemmatrix A ist eine untere Dreiecksmatrix und lässt sich einfach durch Vorwärtseinsetzen lösen. Die Systemmatrix A ist eine untere Dreiecksmatrix und lässt sich einfach durch Vorwärtseinsetzen lösen.
  
Zeile 54: Zeile 56:
  
 **a)** **a)**
 +
 <code> <code>
- |1 0 0 0|+    |1 0 0 0|
 L = |2 1 0 0| L = |2 1 0 0|
- |0 3 1 0| +    |0 3 1 0| 
- |0 0 2 1|+    |0 0 2 1|
   
- |2 1 4 1|+    |2 1 4 1|
 U = |0 1 1 1| U = |0 1 1 1|
- |0 0 2 1| +    |0 0 2 1| 
- |0 0 0 3|+    |0 0 0 3|
 </code> </code>
  
Zeile 73: Zeile 76:
  
 **a)** **a)**
 +
   * Affine Invarianz   * Affine Invarianz
   * Bézier-Kurven liegt in der konvexen Hülle   * Bézier-Kurven liegt in der konvexen Hülle
Zeile 87: Zeile 91:
  
 **a)** **a)**
 +
 Fläche im spitzen Winkel bei T Fläche im spitzen Winkel bei T
  
 **b)** **b)**
 +
 Halbgerade RS links von R (exklusiv) Halbgerade RS links von R (exklusiv)
  
 **c)** **c)**
 +
 Punkt T Punkt T
  
 **d)** **d)**
-...+ 
 +P0: Auf 2/3 der Strecke von R nach S \\ 
 +P1: Relativ mittig im Dreieck, leicht in Richtung T bzwder Strecke TS versetzt \\ 
 +P2: Existiert nicht (Summe ergibt 0 statt 1)
  
 **e)** **e)**
-ρ = -2 + 
-σ = 1 +ρ = -2 \\ 
-τ = 2+σ = 1 \\ 
 +τ = 2 
  
 ==== Aufgabe 6 - Singulärwertzerlegung ==== ==== Aufgabe 6 - Singulärwertzerlegung ====
  
 **a)** **a)**
-Singulärwerte: 3/2, 3/4, 1/2 + 
-Rang: r = 3 +Singulärwerte: 3/2, 3/4, 1/2 \\ 
-Bild: span{(-1/3 -2/3 -2/3)^T, (-2/3 2/3 -1/3)^T, (-2/3 -1/3 2/3)^T} +Rang: r = 3 \\ 
-Kern: span{(1/2 -1/2 -1/2 1/2)^T}+Bild: span{(-1/3 -2/3 -2/3)^T, (-2/3 2/3 -1/3)^T, (-2/3 -1/3 2/3)^T} \\ 
 +Kern: span{(1/2 -1/2 -1/2 1/2)^T} \\
 Konditionszahl: 6/4 * 4/2 = 3 Konditionszahl: 6/4 * 4/2 = 3
  
 **b)** **b)**
 +
 (-14 -4 4 14)^T (-14 -4 4 14)^T
  
 **c)** **c)**
 +
 <code> <code>
- |1  1  1  1| +        |1  1  1  1| 
--1/4 x |2  2  2  2| +-1/4 x  |2  2  2  2| 
- |2  2  2  2|+        |2  2  2  2|
 </code> </code>
  
 ==== Aufgabe 7 - Programmierung ==== ==== Aufgabe 7 - Programmierung ====
-... 
- 
-==== Aufgabe 8 - Numerische Integration ==== 
  
 **a)** **a)**
-20+ 
 +<code cpp> 
 +BezierCurve::BezierCurve(const Point* CPs, int numCPs) { 
 + this-numCPs = numCPs; 
 + this->CPs = new Point[numCPs]; 
 +  
 + for(int i = 0; i < numCPs; i++) { 
 + this->CPs[i] = CPs[i]; 
 +
 +
 + 
 +BezierCurve::~BezierCurve() { 
 + delete[] CPs; 
 +
 +</code>
  
 **b)** **b)**
-17+ 
 +<code cpp> 
 +void BezierCurve::removeControlPoint(int idx) { 
 + Points* newCPs = new Point[numCPs - 1]; 
 +  
 + for(int i = 0; i < numCPs; i++) { 
 + if(i < idx) 
 + newCPs[i] = CPs[i]; 
 +  
 + if(i > idx) { 
 + newCP[i - 1] = CPs[i]; 
 +
 +  
 + delete[] CPs; 
 + CPs = newCPs; 
 +  
 + this-numCPs = numCPs - 1; 
 +
 +</code>
  
 **c)** **c)**
-16+ 
 +<code cpp> 
 +Point BezierCurve::desCastlejau(float t) const { 
 + Point tmpCPs[numCPs]; 
 +  
 + for(int i = 0; i < numCPs; i++) 
 + tmpCPs[i] = CPs[i]; 
 +  
 + for(int c = 1; c < numCPs; c++) { 
 + for(int r = 0; r < numCPs, numCPs - c; r++) { 
 + tmpCPs[r] = (1-t) * tmpCPs[r] + t * tmpCPs[r + 1]; 
 +
 +
 +  
 + return tmpCPs[0]; 
 +
 +</code>
  
 **d)** **d)**
-16+ 
 +<code cpp> 
 +void BezierCurve::degreeElevation() { 
 + Point* newCPs = new Point[numCPs + 1]; 
 + newArr[0] = CPs[0]; 
 + newArr[numCPs] = CPs[numCPs - 1]; 
 +  
 + for(int i = 1; i < numCPs; i++) { 
 + float t = i / (numCPs + 1); 
 + float z = (numCPs + 1 - i) / (numCPs + 1); 
 + newArr[i] = t * CPs[i - 1] + z * CPs[i]; 
 +
 +  
 + delete[] CPs; 
 + CPs = newArr; 
 + numCPs++; 
 +
 +</code>
  
 **e)** **e)**
-16 
  
-**f)** +<code cpp> 
-O()+void BezierCurve::reflectCurve(const Point& p{ 
 + for(int i = 0; i < numCPs; i++) 
 + CPs[i] = 2 * p - CPs[i]; 
 +
 +</code>
  
-**g)** + 
-O(h^4)+**c)** 
 + 
 +==== Aufgabe 8 - Numerische Integration ==== 
 + 
 +**a)** 20 
 + 
 +**b)** 17 
 + 
 +**c)** 16 
 + 
 +**d)** 16 
 + 
 +**e)** 16 
 + 
 +**f)** O(h²) 
 + 
 +**g)** O(h^4)
  
 ==== Aufgabe 9 - Matrix-Norm und Kondition ==== ==== Aufgabe 9 - Matrix-Norm und Kondition ====
  
 **a)** **a)**
-Das Problem ist für Funktion g(x) besser konditioniert, da die Tangente bei x = 1 eine geringere Steigung aufweist: + 
-K(f) = π +Das Problem ist für Funktion g(x) besser konditioniert, da die Tangente bei x = 1 eine geringere Steigung aufweist: \\ 
-K(g) = 1/π+K(f) = π \\ 
 +K(g) = 1/π \\
 g hat die kleinere Konditionszahl. g hat die kleinere Konditionszahl.
  
 **b)** **b)**
-7, 5, 19, 24, 6, 6+ 
 +7, 5, 19, 24, 6, 6
  
 **c)** **c)**
-mit 1-Norm: + 
-K(A_1) = 49/25+mit 1-Norm: \\ 
 +K(A_1) = 49/25 \\
 K(A_3) = 24 K(A_3) = 24
  
 **d)** **d)**
-Die Geraden von SP_1 stehen fast senkrecht aufeinander. + 
-Die Geraden von SP_2 verlaufen relativ parallel.+Die Geraden von SP_1 stehen fast senkrecht aufeinander. \\ 
 +Die Geraden von SP_2 verlaufen relativ parallel. \\
 Damit ist SP_1 besser konditioniert. Damit ist SP_1 besser konditioniert.
  
Zeile 172: Zeile 271:
  
 **a)** **a)**
 +
 ... ...
  
 **b)** **b)**
-x_2 = 1/2+ 
 +x_2 = 1/2 \\
 x_3 = -7 x_3 = -7
  
 **c)** **c)**
 +
 (-4, 3)^T (-4, 3)^T