Voraussetzungen

  • Matlab Grundkenntnisse

  • Unit Tests

Lerninhalte

  • Überprüfung Ihrer Kenntnisse

Rechnen mit Matlab

Aufgabe 1: Machen Sie sich vertraut mit Matlab

Lesen Sie sich die Kapitel Verwendung dieses Buches und Matlab einrichten durch. Können Sie die folgenden Fragen beantworten?

  1. Beschreiben Sie die Funktionalität des Command Window, Editor und Workspace in Matlab.

  2. Was ist der Unterschied zwischen einer Funktion und einem Skript?

  3. Was verbirgt sich hinter dem Wort Scope?

  4. Was ist ein Function Handle?

  5. Aus welchen Gründen sollte ich for-Schleifen vermeiden?

  6. Was ist das Grundprinzip hinter dem Bisektionsverfahren?

  7. Wie kann ich die Operationen * bzw. ^ elementweise ausführen?

  8. Warum sollte ich reelle Zahlen nie mit == auf Gleichheit prüfen?

  9. Was bedeutet logische Indizierung?

  10. Wie kann ich eine Matrix transponieren?

  11. Warum sollte ich Strings nie mit == auf Gleichheit prüfen?

  12. Nennen Sie ein Tool zur Versionskontrolle.

  13. Was bewirkt der Befehl hold on?

Aufgabe 2: Binomialkoeffizienten

Erstellen Sie ein Programm für die Berechnung der Binomialkoeffizienten

\[\begin{split} \left( \begin{array}{c} n \\ k \end{array} \right) = \frac{n!}{k! \cdot (n-k)!}, \end{split}\]

wobei \(n\) und \(k\) ganze Zahlen mit \(n \geq k \geq 0\) sind.

Hinweise:

  • Schreiben Sie eine Funktion, die die Fakultät berechnet:

%%file fac.m
% calculate the factorial of an integer n
function z = fac(n)
    
end
  • Testen Sie die Funktionalität mit der bereitgestellten Test Suite test_fac.m, siehe unten. Es reicht zunächst, dass die ersten drei der Unit Tests erfolgreich sind. Challenge: Schaffen Sie es, alle sechs Unit Tests zu erfüllen?

% test the fac function
moxunit_runtests ../test_fac.m
  • Schreiben Sie nun die Funktion, die den Binominialkoeffizienten berechnet. Verwenden Sie Ihre neue Funktion zur Berechnung der Fakultät.

%%file binomial_coefficient.m
function c = binomial_coefficient(n,k)
    % ADD CODE HERE
end
  • Testen Sie die Funktionsweise Ihrer neuen Funktion, diesmal ohne explizit einen Unit Test zu verwenden:

% run some quick tests without explicitly using a unit test
binomial_coefficient( 5, 3) % expected value: 10
binomial_coefficient(49, 6) % expected value: 13983816
binomial_coefficient(10,10) % expected value: 1
  • Haben Sie Ideen, wie Sie die Anzahl nötiger Rechenoperationen verringern können?