Sie befinden sich hier: Termine » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » algoks » Aufgabe 1 - Komplexität   (Übersicht)

Link zum FSI-Thread: https://fsi.informatik.uni-erlangen.de/forum/thread/7529-Klausur-vom-Februar-2010-Loesungsversuch

Aufgabe 1 - Komplexität

  • O(n³)
  • O(n)
  • O(n²)
  • O(n³)
  • O(n²)
  • O(n²)
  • O(n)
  • O(n³)

Aufgabe 2 - Multiple Choice

  • j= Ja
  • n = Nein

a)

n n j n j

b)

n n n j n

c)

n n n n j

d)

j j n j j

Aufgabe 3 - Dünnbesetzte Matrizen

a)

0 0 1 0 3
4 0 0 2 1
0 0 0 0 0
1 3 2 0 0

b)

  • Werte: 3 -1 2 4 -5
  • Zeile: 1 2 3 1 3
  • ColPtr: 1 2 2 4 6

Aufgabe 4 - Lineares Ausgleichsproblem

a)

A^T * A * x = A^T * b

b)

  • m = 5/14
  • t = 3/14

Aufgabe 5 - 2D Interpolation

a)

  • P1 = (9,12)^T
  • P2 = (10,0)^T

b)

  • h1 = rho1*hR + sigma1*hS + tau1*hT = 120
  • h2 = rho2*hR + sigma2*hS + tau2*hT = 80

c)

ρ = 1/3
σ= 1/3
τ= 1/3

d)

Punkt P teilt Dreieck in drei Teil-Dreiecke. Das Verhältnis jedes Teil-Dreiecks (Punkt P und je zwei der anderen ursprünglichen Punkte) zum ganzen Dreieck ergibt jeweils eine baryzentrische Koordinate.

e)

Bild 1: Gerade durch T und die Mittelsenkrechte der Strecke RS
Bild 2: Gerade durch T und S

f)

f(P4) = 39 f(P5) = 57

Aufgabe 6 - Coons-Patches

                 s
F(s,t) =         t
          s^2*t + s*t^2 - s*t

7. Filtern

a)

  • F1: 1/2 (1, 0, 1)^T und 1/2 (1, 0, 1)
  • F2: geht nicht
  • F3: 1/4 (1, 1, 1)^T und 1/3 (1, 1, 1, 1)

b)

Geringerer Aufwand

c)

x x x x x
x 0 5 2 x
x 0 4 2 x
x 0 5 2 x
x x x x x

Aufgabe 8 - Iterative Lösungsverfahren

a)

  • x1 = 4
  • x2 = -5
  • x3 = 2

b)

  • x1 = 4
  • x2 = -5
  • x3 = 9/4

c)

Für dünnbesetzte Matrizen besonders gut geeignet.

Aufgabe 9 - LR- Zerlegung

a)

1  0  0  0       2 -1  0  0
2  1  0  0       0  2  1  0
0 -2  1  0       0  0  1  1
0  0 -2  1       0  0  0 -1
L                R

b) x = (3/2, 1, -4, 2)^T

Aufgabe 10 - Aitken-Neville

a)

NewtonPolynom :: NewtonPolynom(const float *_x, const float *_y, const int _n)
{
	n = _n;
 
	x = new float[n];
	y = new float[n];
	a = new float[n];
 
	for (int i = 0; i < n; i++) {
		x[i] = _x[i] ;
		y[i] = _y[i] ;
	}
 
	// Erster Koeffizient
	a[0] = y[0];
 
	for (int row = 1; row < n; row++)
	{
		for (int col = 0; col < n-col; col++)
		{
			y[col] = (y[col+1] - y[col]) / (x[row+col] - x[col]);         
		}
 
		// Übernehme Koeffizienten (der immer im höchsten Element ist)
		a[row] = y[0];
	}
}

b)

float NewtonPolynom::operator()(const float x0) const
{
	float result = a[n-1];
 
	for (int i = n-2; i >= 0; i--)
	{
		result = a[i] * (x0 - x[i]) + result;
	}
 
	return result;
}