Klausur vom Februar 2010 : Lösungsversuch

unser versuch…

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Klausur vom Februar 2010 : Lösungsversuch
hier der link

http://www.castleunion.de/KlausurAlgoKS.pdf


Nochmal hochladen wär cool

Meine Lösung…

  1. n³,n,n²,n³,n²,n³,n,n³

a) n n j n j
b) n n n j n
c) n n n n j
d) n j j j j

a)
0 0 1 0 3
4 0 0 2 1
1 3 2 0 0
0 0 0 0 0

b)
val: 3 -1 2 4 -5
rowInd: 1 2 3 1 3
colPtr: 1 1 3 4 6

4a) A^t * A * x = A * b
b)
m = 5/14
t = 3/14

5a)
P1 = (9,12)
P2 = (9,0)

b) ?

c) rho=1/3 sigma = 1/3 tau = 1/3

d) ???

e) p = sigma : Winkelhalbierende von T aus
p = 0: gerade durch T und S

f) f_P1 = 39 (alpha =1/3) f0’ = 51 f1’ = 33 beta =2/3
f_P2 = 57

8a)

x1 = 4
x2 = -5
x3 = 2

b)
x1 = 4
x2 = -5
x3 = 9

c) zum lösen von nichtlinearen gleichungssystemen

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 5

b)

x = (-1,8,-4,-10)T


Bei der CRS/CCS Aufgabe komme ich auf anderes:

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

und:

3 -1 2 4 -5
1 2 3 1 3
1 2 2 4 6

1 „Gefällt mir“

Und bei der 8b) Gauss-Seidel Verfahren:
4
x = -5
2.25

Hab’s mit Matlab nachgerechnet, ka wieso da so ein komischwer wert bei x_3 dasteht, aber die anderen beiden identisch zu der Lösung des Jacobi-verfahrens sind!

EDIT:
Achja 2.25 = 9/4
vielleicht hast du ja nur einen tippfehler bzw. leichtsinnsfehler hier im forum gemacht

1 „Gefällt mir“

Ab ins Wiki damit!


7
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

Ist das richtig so?

1 „Gefällt mir“

Müsste es bei 2 d) nicht: j j n j j sein?

Absolute Homogenität gilt doch; aber bei der Submultiplikativität ist der Vergleichsoperator verkehrt herum?

1 „Gefällt mir“

so habe mal versucht Aufgabe 6 zu lösen (Coons-Patch). Bin mir allerdings nicht sicher, ob ich das auch verstanden habe:

Also das Coons-Patch setzt sich ja wie folgt zusammen: F_t (s,t) + F_s (s, t) - F_st (s, t)
Ich erhalte:
s s s
F_t = t F_s = t F_st = t
st^2 st^2 s*t

Somit ergibt das Coons-Patch:

          s

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

ist das richtig so? würde mich über Feedback freuen


Habs mal in Matlab zeichnen lassen, das stimmt.

Edit: Es muss natürlich s^2t + st^2 - s*t heissen, aber das meintest du bestimmt.

1 „Gefällt mir“

Bei der Aufgabe 5b):

kann man nicht einfach die Gleichung [m]h1 = rhohR + sigmahS + tau*hT[/m] ausnutzen?
Bei mir kommt für [m]h1 = 120[/m] und [m]h2 = 80[/m] raus.

btw. ich habe angenommen dass rho, sigma, tau die gleiche Werte haben wie beim a)

und beim e), muss es nicht Seitenhalbierende von T aus sein?

1 „Gefällt mir“

fehler auch bei der 9:
die l-matrix stimmt, aber bei der r habt ihr euch bei der letzten zeile noch schnell verrechnet: die matrix sollte lauten:
2 -1 0 0
0 2 1 0
0 0 1 1
0 0 0 -1

x-vector: 1.5, 1, -4, 2

1 „Gefällt mir“

cg – Verfahren für dünnbesetzte Matrizen gibt es laut Skript auch in O(n²)
=> 1) n³,n,n²,n³,n²,,n,n³

5a)
P1 = (9,12)
P2 = (10,0)

5e)
http://img6.imagebanana.com/img/jyltkz6k/5e.jpg

8c) Für dünnbesetzte matrizen

Beim Rest das gleiche, wie die anderen


Ungetestet 10.

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 k = 1; k < n; i++) 
	{		
		for (int i = 0; i < n-k+1; i++)
		{
			y[i] = (y[i] - y[i+1]) / (x[i]  - x[i+k])			
		}			
		
		//Übernehme Koeffizienten (der immer im höchsten Element ist)
		a[k] = y[0];
	}

}



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

Hey,

Hab mal ne Frage zur 3a)
Da steht doch im zeilenzeiger als letzte Zahl eine 9 heißt das nicht, das ich 8 Zeilen hab und ab der 5. Zeile ( wenn man bei 1 zu zählen anfängt) nullzeilen?
Danke.


Also erstmal, ja man fängt bei 1 zu zählen an, das sieht man daran, dass der Zeilen-Zeiger bei 1 anfängt und nicht bei 0.

Nein, hier sind keine acht Zeilen, es gibt einen Zusammenhang, der lautet so:
Anzahl der RowPointer - 1 = Anzahl Zeilen
=> 5-1 = 4 Zeilen hat die Matrix (steht bereits in der Angabe 4x5 Matrix)

Und die RowPointer sagen dir wie viele Elemente in dieser Zeile liegen, also für die 3a:

1 3
das 1. und 2. Element liegen in der ersten Zeile

3 6
das 3., 4., 5. Element liegen in der zweiten Zeile

6 6
die dritte Zeile ist leer

6 9
das 6., 7., 8. Element liegen in der vierten Zeile

mmuuuuhh hat hier die richtige Lösung gepostet:

Gruß


Danke!
das hatte ich doch glatt überlesen und mich beim letzten Wert im RowPointer array geirrt, das ist Anzahl der Werte ungleich Null +1.


Zusammengefasste Lösung:
https://fsi.informatik.uni-erlangen.de/dw/pruefungen/bachelor/algoks/loesungws09

1 „Gefällt mir“

Laut dieser Lösung würde man bei jedem Schritt der Filterung wieder von der Originalmatrix ausgehen, und es wär auch egal, in welcher Reihenfolge man die Zeilen oder Spalten filtert. Ist das wirklich richtig so? Muss man nicht von bereits gefilterten Pixeln die neu berechneten Werte nehmen? Wozu sind da sonst drei leere Matrizen für Zwischenergebnisse?


Vlt. weil du immer 9 Produkte miteinander addieren musst. Ein Filter verwendet als „Eingabe“ immer nur die Werte der alten Matrix. Sonst ginge ja auch die Sache mit der Separierbarkeit kaputt.