Navigation

Tag 1: Einführung in Programmierung und Benutzung von Matlab

A)  Die Matlab-Oberfläche und Matlab als Taschenrechner

B) Vektoren und Matrizen

C) Der Doppelpunkt-Operator

H) Hausaufgabe 

A) Die Matlab-Oberfläche und Matlab als Taschenrechner:

T1_A1) Starten Sie Matlab und überlegen Sie, wofür die verschiedenen Fenster gut sind.

T1_A2) Benutzen Sie das Matlab Command Window als Taschenrechner. Probieren Sie die Grundrechenarten aus z.B. 7.32*674.986  oder 100086+654.965-83.7 (jeweils mit Return abgeschlossen)
Wie unterscheidet sich die Antwort auf die Eingabe von 5*10+2 von 5*(10+2) und (5*10)+2?
Achtung: in der amerikanischen Schreibweise wird ein Punkt verwendet, um die Stellen "hinter dem Komma" abzutrennen!

T1_A3) Wenn Sie einige Rechnungen durchgefuehrt haben, tippen Sie ans ein - wie reagiert Matlab? Warum? Wie reagiert Matlab auf ans*2? Was passiert, wenn Sie mehrfach hintereinander ans*2 wiederholen? (Dazu koennen Sie die Pfeil-nach-oben-Taste verwenden.)

T1_A4) Fuehren Sie mit a=4 eine Variable a ein. Beobachten Sie die Reaktionen in den verschiedenen Fenstern. Jetzt tippen Sie b=10; ein. Wie unterscheiden sich die Ausgaben?  Wie reagiert Matlab auf die Eingabe a+b? Wie unterscheiden sich davon die Reaktionen auf c=a+b;?

T1_A5) Variablen koennen vom Benutzer beliebig eingefuehrt und mit Werten belegt werden. Es gibt aber auch Konstanten, die in Matlab vordefiniert sind, beispielsweise pi. Lassen Sie sich den Wert ausgeben. 

T1_A6) Ausser den Grundrechenarten kennt Matlab natuerlich auch komplexere mathematische Operationen. Testen Sie 2^3 und b^4. Was bedeutet dieser Haken?

T1_A7) Ein weiteres Beispiel ist die Quadratwurzel - da es fuer diese aber kein Symbol auf der Tastatur gibt, ruft man sie in Form der Funktion sqrt auf. Dabei muss das Argument, die Zahl auf die die Funktion angewandt werden soll, in Klammern hinter den Funktionsnamen geschrieben werden: sqrt(16) oder d=sqrt(a). Weitere Funktionen sind z.B. sin, cos, exp, log, abs. Was koennten diese Namen bedeuten? Probieren Sie Ihre Vermutung mit Beispielen aus.

T1_A8) Um nachzusehen, ob Sie richtig getippt haben, schauen Sie die Funktionsnamen in der Hilfe nach. Eine ganz kurze Beschreibung bekommen Sie, wenn Sie z.B. help sin eintippen. Sehr viel mehr Information gibt es im Hilfefenster: Machen Sie das Hilfefenster auf, indem Sie auf das Fragezeichen in der Symbolleiste klicken und suchen Sie nach sin und den anderen Funktionsnamen.

T1_A9) Manche mathematischen Operationen brauchen mehrere Argumente. Z.B. bei b/a kommt uns das ganz natuerlich vor. Wenn es nicht wie bei den Grundrechenarten eine abkuerzende Schreibweise gibt, werden Matlab-Funktionen alle Argumente durch Komma getrennt in der Klammer uebergeben, die dem Funktionsnamen folgt. Z.B. wird der bei der ganzzahligen Division uebrigbleibende Rest von der Funktion rem (remainder) berechnet, die zwei Argumente uebergeben bekommt, z.B. rem(104, 10). Dabei ist die Reihenfolge der Argumente wichtig: was passiert, wenn man rem(10, 104) eingibt? Was tut wohl die Funktion mod? Sehen Sie in der Hilfe nach und probieren Sie die Funktion aus.

T1_A10) Vielleicht haben Sie sich waehrend der Uebung bereits irgendwann vertippt. Was ist dann passiert? Falls Ihnen noch nichts dergleichen passiert ist, tippen Sie einmal ein e1=sin(2*pi), dann e2=sine(2*pi) und schliesslich e3=sin(2pi). Wie reagiert Matlab darauf jeweils? Wie unterscheidet sich die Reaktion, wenn Sie f=10/0 eintippen?

B) Vektoren und Matrizen:

T1_B1) Definieren Sie sich folgende Vektoren: a=[1 2 3], b=[0.1 0.2 0.3], c=[10; 20; 30] d=[100; 200], e=[-1; -2] und f=7.5. Welche Vektoren sind Spalten- und welche Zeilenvektoren?
Ueberlegen Sie und probieren Sie aus: Welche der Vektoren kann man addieren? Subtrahieren? Multiplizieren? Punktweise multiplizieren?
In welchen Faellen ist die Reihenfolge der Vektoren wichtig, in welchen nicht?

T1_B2) Wenn Sie sich in den Kopf setzen, dass Sie gerne einen Vektor g definieren wollen, dessen Werte die Summe aus den Elementen von a und c sind, muessen Sie etwas tricksen: Einer der Vektoren muss transponiert werden. Probieren Sie aus: g1=a+c'  und g2=a'+c. Was ist der Unterschied?

T1_B3) Fuer den Umgang mit Vektoren werden von Matlab ein paar sehr praktische Funktionen bereitgehalten. Probieren Sie an ein paar Beispielen die Arbeitsweise folgender Befehle aus und sehen Sie im Zweifelsfall in der Hilfe nach:
sum(vektor), mean(vektor), std(vektor)
Probieren Sie aus, welche der in A7) eingefuehrten Funktionen auch fuer Vektoren funktionieren.

T1_B4) Definieren Sie sich zwei Matrizen: M1=[1 1 1; 5 6 7] und M2=[0 -1; -2 0.5; 0.1 1] und schauen Sie im Array Editor an. Welche Indizes hat der Eintrag 6 in M1? Greifen Sie ein Element aus M2 heraus, z.B. M(1,2)

T1_B5) Achtung! Matlab kennt zwei Arten, ein Matrixelement zu indizieren: entweder, man benutzt die Schreibweise M1(1,2) mit (zeile, spalte) in der Klammer, oder man zaehlt die Matrix als einen langen Vektor durch, wobei die Spalten zu einem langen Spaltenvektor aneinandergehaengt werden, z.B. M1(2). Welcher Einzelindex entspricht M1(1,2)

T1_B6) Berechnen Sie von Hand M1*M2 und M2*M1. Ueberpruefen Sie Ihre Ergebnisse mit Matlab. Transponieren Sie M2 und berechnen Sie die Summe mit M1.

T1_7) Welche der Vektoren aus Aufgabe B1 kann man mit M1 oder M2 multiplizieren? Kann man sie auch addieren?

T1_B8) Zum Glueck braucht man in Matlab grosse Matrizen nicht komplett einzutippen. Probieren Sie aus, was passiert, wenn man o=ones(1,8) und z=zeros(3,3) eingibt.

T1_B9) Manchmal ist es praktisch, die Groesse einer Matrix nicht nur aus dem Workspace-Fenster ablesen zu koennen, sondern gezielt zu erfragen. Dafuer gibt es den Befehl size, der eine Matrix als Eingabe bekommt und die Anzahl der Zeilen und der Spalten der Matrix zurueckgibt: [zeilen,spalten]=size(M1). Probieren Sie aus, was size zurueckliefert, wenn man es auf einen Vektor oder einen Skalar anwendet.
Fuer Vektoren gibt es den Befehle length(a). Was liefert length(M1)?

T1_B10) Eckige Klammern umschliessen jeweils alle Elemente einer Matrix oder eines Vektors. Man kann sie deshalb auch nutzen, um Vektoren oder Matrizen zu kombinieren. Ueberlegen Sie, was folgende Ausdruecke basierend auf den oben definierten Vektoren und Matrizen liefern sollten und probieren sie Ihre Hypothesen aus:
t1=[a b],  t2=[a;b], t3=[a b f], t4=[d e], t5=[d;e],  t6=[a c],
t7=[M1; a], t8=[M1; M2'], t9=[M1' M2]; t10=[[pi pi/2];[1 2];e']

 

C) Der Doppelpunktoperator:

Der Doppelpunkt dient in Matlab dazu, Zahlenreihen zu erzeugen. Das ist in mehreren Zusammenhaengen von grosser Bedeutung:

T1_C1)  In seiner einfachsten Form, dient der Doppelpunktoperator zum zaehlen: zahlen=1:10 erzeugt einen Vektor mit den Zahlen von 1 bis 10.

T1_C2) "Zaehlen" kann man nicht nur in Schritten der Laenge 1. Die Schrittweite wird zwischen Anfangs und Endwert in Doppelpunkte eingeschlossen angegeben. Probieren Sie aus: zahlen2= 10:10:100, zahlen3=0:0.1:0.5. Erzeugen Sie einen Vektor, der vom Startwert 5 mit Schrittlaenge von 2.5 bis zum Endwert 20 laeuft.

T1_C3) Besonders wichtig ist der Doppelpunktoperator, um auf definierte Elemente von Vektoren oder Matrizen zuzugreifen. Welche Werte ergibt zahlen(2:4)? Was koennte man alternativ schreiben, um an diese Werte heranzukommen? Greifen sie das 4. bis 7. Element aus dem Vektor zahlen2 heraus.

T1_C4) Wenn der Doppelpunktoperator beim Indizieren alleine steht, z.B. zahlen(:) bedeutet es, dass der ganze Vektor genommen werden soll. Fuer Vektoren ist das recht langweilig, denn in diesem Fall koennte man auch einfach zahlen schreiben.
Anders ist das bei Matrizen. Definieren sie sich M3=[1 1 1 1; 5 6 7 8; 10 20 30 40]. Probieren Sie aus: M3(1,:), M3(:,3). Was bedeutet M3(:) im Gegensatz zu M3 und zu M3(:,:)?

T1_C5) Und jetzt kombinieren wir das Gelernte: Greifen Sie aus M3 das dritte und vierte Element der zweiten Zeile heraus.


H) Hausaufgaben:

T1_H1) Der Mathematiker Karl Friedrich Gauss sollte als Grundschueler damit beschaeftigt werden, alle Zahlen von 1 bis 100 zusammenzuzaehlen. Er war innerhalb weniger Minuten damit fertig, da der das Prinzip erkannte, dass jede Summe einer Zahl aus der oberen Haelfe der Reihe mit einer passenden Zahl aus der unteren Haelfte den Wert 101 ergab (z.B. 1+100=101, 2+99=101 etc). Da es 50 solcher Paare gibt, ist die Loesung 5050=101*50. 

Die allgemeine Formel fuer die Summe einer Reihe natuerlicher Zahlen von a bis b lautet
s=1/2*(a+b)*(b-a+1).

Testen Sie diese Formel, indem sie verschiedene Reihen mit dem Befehl r=a:b erzeugen und deren Summe mit sum(r), sowie mit der obigen Formel berechnen. 

T1_H2) Erzeugen Sie eine Matrix mit einer Einmaleins-Tabelle durch untereinander Anordnen von Zeilenvektoren, die jeweils mit impliziten Schleifen der Art k:k:10*k fuer verschiedene Werte von k erzeugt werden. 

T1_H3) Verwenden Sie das Prinzip, Matrizen als Bestandteile von Matrizen zu definieren, um  ein 8*8 Schachbrett aus 0 und 1 zu erzeugen.
Sehen Sie sich Ihr Resultat im Array Editor an.
Man kann sich den Inhalt einer Matrix auch grafisch anzeigen lassen. Wenn Ihre Matrix-Variable "schach" heisst, tippen Sie einfach ein imagesc(schach).

[schachbrett.m]
[schachbrett_einzeiler.m]
 

T1_H4) Durch welche Abfolge von Matlab-Befehlen erzeugt man den Inhalt der folgenden Distanztabelle:

 

 km  Duforspitze  Matterhorn  Gornergrat  Zermatt  Brig
 Duforspitze  0  -156  -814  -3014  -3956
 Matterhorn  156  0  -658  -2858  -3800
 Gornergrat  814  658  0  -2200  -3142
 Zermatt  3014  2858  2200  0  -942
 Brig  3956  3800  3142  942  0

aus dem Vektor der Hoehenwerte v=[4634; 4478; 3820; 1620; 678] 

[hoehentabelle.m]

 T1_H5) Pisa-Testaufgabe:

Ein Auto-Magazin verwendet ein Bewertungssystem, um neue Autos zu beurteilen, und vergibt den Preis für das "Auto des Jahres" an das Auto mit der höchsten Gesamtpunktzahl.
Auto

Sicherheitsmerkmale

(S)

Sparsamkeit beim Benzinverbrauch

(B)

Äußere Erscheinung

(Ä)

Innenausstattung

(I)

Ca 3 Punkte 1 Punkte 2 Punkte 3 Punkte
M2 2 2 2 2
Sp 3 1 3 2
N1 1 3 3 3
KK 3 2 3 2
Um die Gesamtpunktzahl für ein Auto zu berechnen, wird folgende Formel verwendet, die eine gewichtete Summe der einzelnen Bewertungspunkte ist:
Gesamtpunktzahl=(3*S)+B+Ä+I
Pisa: Berechne die Gesamtpunktzahl für das Auto "Ca"!
Matlab V: Berechne die Gesamtpunktzahl für die Autos vektoriell!
Matlab M: Berechne die Gesamtpunktzahl für die Autos matrixig!

 [autobewertung.m]


Webmavumltst0rker: Jutta Kretz7j3bergs3/ni (judltt8xa.kretzi1maxberubv1g@uol.94brdekscd) (Stand: 07.11.2019)