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

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
pruefungen:bachelor:algoks:loesungws12 [07.02.2014 18:18] Dawodopruefungen:bachelor:algoks:loesungws12 [11.02.2017 11:26] (aktuell) soeren563
Zeile 82: Zeile 82:
 **a)** **a)**
  
-x = (-1, 2, -1, 2)^T+x = (1, 2, -1, 2)^T
  
 **b)** **b)**
Zeile 116: Zeile 116:
 **c)** **c)**
  
-s_0 = (-4, 2)^T \\+s_0 = (-4, -2)^T \\
 t_0 = 1/2 \\ t_0 = 1/2 \\
 x_1 = (-1, 0)^T x_1 = (-1, 0)^T
Zeile 123: Zeile 123:
  
 <code> <code>
-|x_i+1 - x*| <= c * |x_i - x*|+|x_i+1 - x*| <= c * |x_i - x*| , wobei 0<c<1
 </code> </code>
  
Zeile 188: Zeile 188:
 n_2(x) = (x + 1) * (x - 1) n_2(x) = (x + 1) * (x - 1)
  
-a_0 = 3/2 \\ +a_0 = -1 \\ 
-a_1 = 1/6+a_1 = 3/2 \\ 
 +a_2 = 1/6
  
 ==== Aufgabe 9 - Programmierung: Coons Patches ==== ==== Aufgabe 9 - Programmierung: Coons Patches ====
Zeile 199: Zeile 200:
  float f_t = (1-s) * m_t0.f(t) + s * m_t1.f(t);  float f_t = (1-s) * m_t0.f(t) + s * m_t1.f(t);
  float f_s = (1-t) * m_s0.f(s) + t * m_s1.f(s);  float f_s = (1-t) * m_s0.f(s) + t * m_s1.f(s);
- float f_st = (1-t) * (1-s) * m_t0.f(0) + (1-s) * t * m_s1.f(0) ++ float f_st = (1-t) * (1-s) * m_t0.f(0) + (1-s) * t * m_t0.f(1) +
  (1-t) * s * m_t1.f(0) + t * s * m_t1.f(1);  (1-t) * s * m_t1.f(0) + t * s * m_t1.f(1);
   
Zeile 212: Zeile 213:
  float f_t = (-1) * m_t0.f(t) + m_t1.f(t);  float f_t = (-1) * m_t0.f(t) + m_t1.f(t);
  float f_s = (1-t) * m_s0.d(s) + t * m_s1.d(s);  float f_s = (1-t) * m_s0.d(s) + t * m_s1.d(s);
- float f_st = (1-t) * (-1) * m_t0.f(0) + (-1) * t * m_s1.f(0) ++ float f_st = (1-t) * (-1) * m_t0.f(0) + (-1) * t * m_t0.f(1) +
  (1-t) * m_t1.f(0) + t * m_t1.f(1);  (1-t) * m_t1.f(0) + t * m_t1.f(1);
   
Zeile 238: Zeile 239:
 <code cpp> <code cpp>
 float CCSMatrix::getEntry(unsigned int i, unsigned int j) { float CCSMatrix::getEntry(unsigned int i, unsigned int j) {
- for(int rowP = _colPtr[j]; rowP < _colPtr[j+1]; rowP++) { + for(int colP = _colPtr[j]; colP < _colPtr[j+1]; colP++) { 
- if(_rowIndices[rowP] == i) + if(_rowIndices[colP] == i) 
- return _values[rowP];+ return _values[colP];
  }  }
   
Zeile 247: Zeile 248:
 </code> </code>
  
-**b)**+**c)**
  
 <code cpp> <code cpp>
Zeile 256: Zeile 257:
  _values = new float[_nonZeroElements];  _values = new float[_nonZeroElements];
  _rowIndices = new int[_nonZeroElements];  _rowIndices = new int[_nonZeroElements];
- _colPtr = new int[width + 1];+ _colPtr = new int[_width + 1];
   
  int t = 0;  int t = 0;
Zeile 266: Zeile 267:
  if(el != 0) {  if(el != 0) {
  _values[t] = elem;  _values[t] = elem;
- _rowIndives[t] = r;+ _rowIndices[t] = r;
  t++;  t++;
  }  }
  }  }
- _colPtr[c] = t;+ _colPtr[c+1] = t;
  }  }
 } }
 </code> </code>
  
-**b)**+**d)**
  
 <code cpp> <code cpp>
Zeile 285: Zeile 286:
   
  float sum = 0.0f;  float sum = 0.0f;
- for(int rowP = other._colPtr[c]; rowP < other._colPtr[c+1]; rowP++) { + for(int colP = other._colPtr[c]; colP < other._colPtr[c+1]; colP++) { 
- float v = other._values[rowP]; + float v = other._values[colP]; 
- sum += v * getEntry(r, other._rowIndices[rowP]);+ sum += v * getEntry(r, other._rowIndices[colP]);
  }  }
  result.setEntry(r, c, sum);  result.setEntry(r, c, sum);
- if(sum != 0) { +
- result._nonZeroElements++; +
- +
  }  }
  }  }
 } }
 </code> </code>