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

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste ÜberarbeitungBeide Seiten, nächste Überarbeitung
pruefungen:bachelor:algoks:loesungws09 [25.07.2012 22:19] – *Link zum FSI-Thread konsti4upruefungen:bachelor:algoks:loesungws09 [29.01.2014 20:51] Dawodo
Zeile 21: Zeile 21:
  
 === b) === === b) ===
- n n n j n+n n n j n
  
 === c) === === c) ===
- n n n n j+n n n n j
  
 === d) === === d) ===
- j j n j j+j j n j j
  
  
Zeile 68: Zeile 68:
  
 === d) === === d) ===
-...+Punkt P teilt Dreieck in drei Teil-DreieckeDas Verhältnis jedes Teil-Dreiecks (Punkt P und je zwei der anderen ursprünglichen Punkte) zum ganzen Dreieck ergibt jeweils eine baryzentrische Koordinate.
  
 === e) === === e) ===
-[[http://img6.imagebanana.com/img/jyltkz6k/5e.jpg]]+Bild 1Gerade durch T und die Mittelsenkrechte der Strecke RS 
 +Bild 2: Gerade durch T und S
  
  
Zeile 118: Zeile 119:
  
 === c) === === c) ===
-Für dünnbesetzte matrizen besonders gut geeignet+Für dünnbesetzte Matrizen besonders gut geeignet.
  
  
Zeile 132: Zeile 133:
  
 === b) === === b) ===
-x = (3/2, 1, -4, 2)^T +x = (3/2, 1, -4, 2)^T
  
  
Zeile 138: Zeile 139:
 === a) === === a) ===
 <code> <code>
-NewtonPolynom :: NewtonPolynom(const float *_x , const float *_y, const int _n )+NewtonPolynom :: NewtonPolynom(const float *_x, const float *_y, const int _n)
 { {
-    n = _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]; +
-    }+
  
 + 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];
 + }
 } }
 </code> </code>
Zeile 172: Zeile 170:
 === b) === === b) ===
 <code> <code>
-float NewtonPolynom::operator()( const float x0 ) const+float NewtonPolynom::operator()(const float x0) const
 { {
-    float result = a[n-1]; + float result = a[n-1]; 
-    + 
-    for (int i = n-2; i > 0; i--) + for (int i = n-2; i >0; i--) 
-    +
-        result = a[i] + (- x[i])*result; + result = a[i] + (x0 - x[i]) * result; 
-    +
-    + 
-    return result;+ return result;
 } }
 </code> </code>