MATLAB – Aufgabenblatt

Themen: Skripte, if-else, for-Schleifen, while-Schleifen und Funktionen

Lernziele:

1. MATLAB-Skripte

Ein Skript ist eine MATLAB-Datei mit der Endung .m. Die Befehle werden normalerweise von oben nach unten ausgeführt.

% Beispiel: grundlagen.m
a = 5;
b = 3;
summe = a + b;
disp(summe);

Aufgabe 1: Grundrechenarten

Erstelle ein Skript namens grundlagen.m.
  1. Speichere die Zahlen 12 und 7 in den Variablen a und b.
  2. Berechne Summe, Differenz, Produkt und Quotient.
  3. Gib die Ergebnisse mit disp oder fprintf aus.
  4. Berechne den Mittelwert der beiden Zahlen.

Aufgabe 2: Vektoren

Erstelle den Vektor x = [2 4 6 8 10].
  1. Berechne die Summe aller Elemente.
  2. Bestimme Minimum und Maximum.
  3. Berechne den Mittelwert.
  4. Erstelle einen Vektor mit doppelt so großen Elementen.

2. Bedingungen: if, elseif und else

temperatur = 18;

if temperatur < 0
    disp('Frost');
elseif temperatur < 20
    disp('Kuehl');
else
    disp('Warm');
end

Wichtige Operatoren:

Aufgabe 3: Positive und negative Zahlen

Schreibe ein Programm, das eine Zahl x überprüft. Teste das Programm mit 5, -3 und 0.

Aufgabe 4: Notenbewertung

Eine Punktzahl zwischen 0 und 100 soll bewertet werden. Verwende if, elseif und else. Gib eine Fehlermeldung aus, wenn die Punktzahl außerhalb von 0 bis 100 liegt. Teste die Werte 49, 50, 60, 75, 90 und 100.

Aufgabe 5: Schaltjahr

Schreibe ein Programm, das erkennt, ob ein Jahr ein Schaltjahr ist. Ein Jahr ist ein Schaltjahr, wenn es durch 400 teilbar ist oder wenn es durch 4, aber nicht durch 100 teilbar ist. Verwende mod und teste die Jahre 2000, 1900, 2024 und 2025.

3. For-Schleifen

for i = 1:5
    disp(i);
end

Aufgabe 6: Zahlen ausgeben

  1. Gib die Zahlen von 1 bis 20 aus.
  2. Gib nur die geraden Zahlen von 2 bis 20 aus.
  3. Gib die Zahlen von 20 bis 1 rückwärts aus.
Verwende jeweils eine for-Schleife.

Aufgabe 7: Summe und Fakultät

  1. Berechne mit einer for-Schleife die Summe von 1 bis 100.
  2. Berechne die Fakultät von 6: 6! = 1·2·3·4·5·6.
  3. Vergleiche die Ergebnisse mit sum(1:100) und factorial(6).
Initialisiere die Summenvariable mit 0 und die Produktvariable mit 1.

Aufgabe 8: Multiplikationstabelle

Erzeuge mit zwei verschachtelten for-Schleifen eine Multiplikationstabelle für die Zahlen 1 bis 10. Gib die Ergebnisse mit fprintf aus. Versuche, die Ausgabe als Tabelle zu formatieren.

4. While-Schleifen

i = 1;
while i <= 5
    disp(i);
    i = i + 1;
end

Aufgabe 9: Zählen mit while

Schreibe eine while-Schleife, die die Zahlen von 1 bis 10 ausgibt. Initialisiere eine Zählvariable und erhöhe sie in jedem Durchlauf. Erkläre, was passiert, wenn die Erhöhung fehlt.

Aufgabe 10: Bis 1000 summieren

Addiere die natürlichen Zahlen 1, 2, 3 usw., bis die Summe erstmals größer als 1000 ist.
  1. Verwende eine while-Schleife.
  2. Speichere die Summe und die Anzahl der addierten Zahlen.
  3. Gib beide Werte aus.
Zusatz: Gib die letzte hinzuaddierte Zahl aus.

Aufgabe 11: Newton-Verfahren

Berechne die Quadratwurzel einer positiven Zahl a näherungsweise. Verwende die Iteration:
x_neu = 0.5 * (x_alt + a/x_alt)
  1. Setze a = 25 und den Startwert x = a.
  2. Wiederhole die Berechnung mit einer while-Schleife.
  3. Beende die Schleife, wenn die Änderung kleiner als 1e-6 ist.
  4. Begrenze die Iterationen auf 100.
  5. Vergleiche mit sqrt(a).

5. MATLAB-Funktionen

Funktionen können Eingaben entgegennehmen und Ergebnisse zurückgeben. Üblicherweise werden sie in einer eigenen .m-Datei gespeichert.

% Datei: quadrat.m
function y = quadrat(x)
    y = x^2;
end

Aufruf:

ergebnis = quadrat(5);
disp(ergebnis);

Aufgabe 12: Quadratfunktion

Schreibe die Funktion quadrat.m, die eine Zahl x erhält und ihr Quadrat zurückgibt. Teste sie mit 3, -4 und 0.

Aufgabe 13: Mittelwertfunktion

Schreibe eine Funktion mittelwert2.m, die zwei Zahlen a und b erhält und ihren Mittelwert zurückgibt. Zusatz: Erstelle eine Funktion für den Mittelwert eines Vektors.

Aufgabe 14: Fakultät als Funktion

Schreibe fakultaet.m. Die Funktion erhält eine nichtnegative ganze Zahl n und gibt n! zurück.
  1. Verwende eine for-Schleife.
  2. Berücksichtige den Sonderfall n = 0.
  3. Prüfe, ob n eine nichtnegative ganze Zahl ist.
  4. Teste n = 0, 1, 5 und 10.

Aufgabe 15: Primzahlprüfung

Schreibe eine Funktion istPrimzahl.m, die einen logischen Wert zurückgibt.
  1. Primzahlen sind ganze Zahlen größer als 1.
  2. Prüfe die Teilbarkeit durch Zahlen von 2 bis sqrt(n).
  3. Gib true für Primzahlen und false für andere Zahlen zurück.
  4. Teste 1, 2, 9, 17 und 25.
Zusatz: Gib mit dieser Funktion alle Primzahlen von 1 bis 100 aus.

6. Abschlussprojekt: Zahlenanalysator

Aufgabe 16: Gemischtes Projekt

Erstelle einen Vektor mit mindestens zehn Zahlen und analysiere ihn.
  1. Berechne Minimum, Maximum und Mittelwert.
  2. Zähle mit einer Schleife positive, negative und nullwertige Zahlen.
  3. Prüfe für ganze Zahlen, ob sie gerade oder ungerade sind.
  4. Schreibe eine eigene Funktion, die prüft, ob eine Zahl positiv ist.
  5. Speichere Hauptskript und Funktion in getrennten Dateien.
  6. Teste dein Programm mit verschiedenen Vektoren.
Abgabe: Hauptskript, Funktionsdatei und eine kurze Erklärung.

7. Verständnisfragen

  1. Was ist der Unterschied zwischen einem Skript und einer Funktion?
  2. Wann eignet sich eine for-Schleife, wann eine while-Schleife?
  3. Welche Aufgabe hat end in MATLAB?
  4. Was passiert, wenn eine while-Bedingung nie falsch wird?
  5. Was ist der Unterschied zwischen = und ==?
  6. Warum sollte der Dateiname einer Funktion ihrem Namen entsprechen?
  7. Was berechnet mod(a,b)?

8. Selbstkontrolle

Viel Erfolg beim Lernen!