![Page 1: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/1.jpg)
Einführung in die Programmierung (MA8003)Theorie 1.1: Einführung, Grundlagen, Vektoren & Matrizen I
Dr. Laura Scarabosio
Technische Universität MünchenFakultät Mathematik, Lehrstuhl für Numerische Mathematik M2
07.10.2019
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 2: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/2.jpg)
AblaufTheorie 1.1+1.2 Mo (07.10.2019) 08:30 - 10:00 Uhr HS BC2 0.01.17Praxis 1.1 Mo (07.10.2019) 10:30 - 12:00 Uhr HS BC2 0.01.17/16Praxis 1.2 Mo (07.10.2019) 12:30 - 14:00 Uhr HS BC2 0.01.17/16Theorie 2.1+2.2 Mi (09.10.2019) 13:00 - 14:30 Uhr HS BC2 0.01.17Praxis 2.1 Mi (09.10.2019) 15:00 - 16:30 Uhr HS BC2 0.01.17/16Praxis 2.2 Mi (09.10.2019) 16:30 - 18:00 Uhr HS BC2 0.01.17/16Theorie 3.1+3.2 Do (10.10.2019) 08:30 - 10:00 Uhr HS BC2 0.01.17Praxis 3.1 Do (10.10.2019) 10:30 - 12:00 Uhr HS BC2 0.01.17/16Praxis 3.2 Do (10.10.2019) 12:30 - 14:00 Uhr HS BC2 0.01.17/16Theorie 4.1+4.2 Fr (11.10.2019) 08:30 - 10:00 Uhr HS BC2 0.01.17Praxis 4.1 Fr (11.10.2019) 10:30 - 12:00 Uhr HS BC2 0.01.17/16Praxis 4.2 Fr (11.10.2019) 12:30 - 14:00 Uhr HS BC2 0.01.17/16Klausur Fr (25.10.2019) xxx Uhr xxxNachholklausur Fr (22.11.2019) xxx Uhr xxx
Kurswebseite mit Infos, Folien und Übungsblättern:https://www-m2.ma.tum.de/bin/view/Allgemeines/......MA8003WS19
Bitte melden Sie sich über TUM-Online für die Klausur an!
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 3: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/3.jpg)
Was werden wir lernen?
Ziele sind...
Vermittlung elementarer Programmierkenntnisse am Beispiel einermatrixbasierten Hochsprache (MATLAB).Fähigkeit, einfache Programmieraufgaben zu lösen.Grundlagen für die effiziente Bearbeitung von Problemstellungen mitBezug zur Numerischen Mathematik.Graphische Aufbereitung von Ergebnissen.
Ziele sind NICHT
Programmierung komplexer Anwendungen (z.B. Datenbanken,Handy-Apps, Social-Media-Websites, Betriebssysteme usw.)Behandlung weiterer Sprachen wie z.B. C, C++, C#, Objective C,Java, Fortran, Python, Ruby, . . .
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 4: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/4.jpg)
Inhalte
Die folgenden Theorieblöcke werden paarweise und im Tutorium vertieft.
1.1 Einführung, Grundlagen, Vektoren & Matrizen I1.2 Vektoren & Matrizen II, Funktionen, Indizierung, Matrizen manipulieren2.1 Relationale und logische Operatoren, Funktionen definieren2.2 Schleifen, Vektorisierung, bedingte Ausführung, Debug3.1 2D Plots, 3D Plots, Plots erstellen mit der GUI3.2 Effiziente Behandlung dünnbesetzter Systeme4.1 Datenorganisation (Strukturen, Cell-Arrays), Profiler, nützliche Funktionen4.2 Einführung in die Objektorientierung mit MATLAB
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 5: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/5.jpg)
Was ist Matlab?
Matlab ist...ein Softwaresystem für technische Berechnungen:
Numerische BerechnungenEntwicklung von Algorithmen (Rapid Prototyping)Visualisierung von ErgebnissenAnwendungen mit grafischer BenutzeroberflächeToolboxen zur Modellierung und Simulation technischer ProblemeViele Numerikbibliotheken bieten Matlab-Schnittstelle(z.B. PETSc, IPOpt, . . . )Quasi-Standard in Wissenschaft und Industrie→ Eigene Codes nutzbar für Anwender und Kooperationspartner
Matlab ist NICHT...
Matlab ist kein Computer Algebra System wie z.B. Mathematicaoder Maple (es gibt aber eine symbolic Toolbox).
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 6: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/6.jpg)
Bezugsmöglichkeit und Alternativen
Installiert auf den Rechnern in der Rechnerhalle(Login notwendig → Helpdesk in der kleinen Rechnerhalle)
Matlab Campus Lizenz (mit persönlicher Registrierung)https://matlab.rbg.tum.de/
Studentenversion bei MathWorks bestellbar (ca. 70 Euro?)www.mathworks.de/academia/student_version/
Freie Alternativen (z.B.):Octave (weitgehend codekompatibel; www.octave.org)Scilab (http://www.scilab.org)Python mit Numpy/Scipy/Matplotlib (www.python.org)
? ohne Gewähr
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 7: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/7.jpg)
Theorie 1.1: Inhalt
1 EinführungMotivationGrundlagen
2 Vektoren und MatrizenErzeugen von MatrizenDoppelpunkt OperatorOperatorenBeispiel: Auswerten von Polynomen
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 8: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/8.jpg)
Inhalt
1 EinführungMotivationGrundlagen
2 Vektoren und MatrizenErzeugen von MatrizenDoppelpunkt OperatorOperatorenBeispiel: Auswerten von Polynomen
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 9: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/9.jpg)
Beispiel: Numerische Berechnungen
Lösen eines Gleichungssystems.
>> A = gallery(’poisson’,4);>> f = ones(16,1);>> x = A \ f
x =0.83331.16671.1667...1.16670.8333
>> full(A)ans =
4 -1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0-1 4 -1 0 0 -1 0 0 0 0 0 0 0 0 0 00 -1 4 -1 0 0 -1 0 0 0 0 0 0 0 0 00 0 -1 4 0 0 0 -1 0 0 0 0 0 0 0 0
-1 0 0 0 4 -1 0 0 -1 0 0 0 0 0 0 00 -1 0 0 -1 4 -1 0 0 -1 0 0 0 0 0 00 0 -1 0 0 -1 4 -1 0 0 -1 0 0 0 0 00 0 0 -1 0 0 -1 4 0 0 0 -1 0 0 0 00 0 0 0 -1 0 0 0 4 -1 0 0 -1 0 0 00 0 0 0 0 -1 0 0 -1 4 -1 0 0 -1 0 00 0 0 0 0 0 -1 0 0 -1 4 -1 0 0 -1 00 0 0 0 0 0 0 -1 0 0 -1 4 0 0 0 -10 0 0 0 0 0 0 0 -1 0 0 0 4 -1 0 00 0 0 0 0 0 0 0 0 -1 0 0 -1 4 -1 00 0 0 0 0 0 0 0 0 0 -1 0 0 -1 4 -10 0 0 0 0 0 0 0 0 0 0 -1 0 0 -1 4
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 10: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/10.jpg)
Beispiel: Entwicklung von Algorithmen
Iteratives Lösungsverfahren (PCG).function [u,m] = solvePCG(A, f, u_s, C1, C2, tol, m_max)
u = u_s; m = 0;r = f - A * u;p = C2 \ (C1\ r);norm_f = norm(f);while( (norm(r)/norm_f > tol) & (m < m_max))
a = A * p;a_dot_p = a’ * p;lambda = (r’ * p) / a_dot_p;u = u + lambda * p;r = r - lambda * a;inv_C_times_r = C2 \ (C1 \ r);p = inv_C_times_r - ((inv_C_times_r’ * a) / a_dot_p) * p;m=m+1;
end
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 11: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/11.jpg)
Beispiel: Visualisierung
3D-Plot der Funktion 1x2+y2 .
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 12: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/12.jpg)
Beispiel: Modellierung und Simulation
Berechnen und Darstellen der Verschiebungsfigur eines Querschnittsunter einer Flächenlast.
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 13: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/13.jpg)
Beispiel: GUI-AnwendungenPartial Differential Equations Toolbox pdetool von Matlab.
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 14: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/14.jpg)
Beispiel: PrototypingTemperaturverteilung in einer Erdmantelkonvektions-Simulation:
Anmerkung: Die 3D-Simulation links mit 1010 Freiheitsgraden erfordertoptimierte Codes, die auf Maschinen wie z.B. SuperMUC ausgeführt werden.Prototyping mit MATLAB o.ä. (2D, rechts) erlaubt es wichtige Fragen mit weitweniger Aufwand (bzgl. Implementierung und Ressourcen) zu beantworten.
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 15: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/15.jpg)
Beispiel: SimulationBlutströmungs-Simulation in Arterien:
Anmerkung: 3D-Simulation, Stromlinien (links) und Wandkräfte (rechts).Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 16: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/16.jpg)
Stärken von Matlab
Algorithmen lassen sich in einer an die Mathematik angelehntenForm implementierenNative Unterstützung von Vektoren und Matrizen (auchdünnbesetzt!)Große Bibliothek mit numerischen Funktionen, z.B. spline zurBerechnung kubischer SplinesUmfangreiche VisualisierungsmöglichkeitenMatlab wählt automatisch effizienten Algorithmus für bestimmteAufgabe, z.B. beim Lösen von linearen Gleichungssystemen mit \Weite Verbreitung in der CommunityLeicht zu lernende, umfangreiche ProgrammierumgebungNicht so langsam wie sein Ruf bei Beachtung gewisser Regeln
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 17: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/17.jpg)
Matlab IDE
Verzeichnis-Fenster, Befehls-Fenster, Befehls-Historie, Variablenspeicher,Hilfe (help und doc)
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 18: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/18.jpg)
Befehlseingabe
Eingaben können direkt in das Befehlsfenster gemacht werdenMit help <Funktionsname> und doc <Funktionsname> findetman HilfeStichwortsuche in den Hilfetexten aller Funktionen mit lookfor<Stichwort>
Tabulator-Taste verwenden um Befehle automatisch zuvervollständigenMit den Hoch/Runter-Tasten können die zuletzt verwendetenBefehle durchgegangen werdenLaufende Operationen können mit Ctrl+C abgebrochen werdenKeine Ausgabe bei Abschluss mit ;
Mehrere Befehle in einer Zeile mit , oder ; trennen
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 19: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/19.jpg)
Rechnen in Matlab
Variablenzuweisung durch =Punkt-vor-Strich-RechnungIn ans steht das Ergebnis der letzten RechnungEingabe im DezimalsystemFormat: [Vorzeichen] Zahl [Exponent]
Vorzeichen: + oder −Zahl: mind. 1 Ziffer, ggf. DezimalpunktExponent: e oder E gefolgt von + oder − und ganzer Zahl
>> a=5;>> 5*a+2
ans =27
>> b=sqrt(a), b^2
b =2.2361
ans =5.0000
>> 1+2/3*4-5
ans =-1.3333
>> ans
ans =-1.3333
>> 1+2/3*4-5;>>
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 20: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/20.jpg)
Komplexe Zahlen
Matlab unterstützt das Rechnen mit komplexen Zahlen.Eingabeformat: a+bi oder a+bj
Alternativ: complex(a,b)
Achtung: Automatischer Wechsel kann zu Problemen führen
>> z=5+3.5i
z =5.0000 + 3.5000i
>> a=2;>> b=3;>> z2 = a+bi??? Undefined function or variable ’bi’.
>> z2 = a+b*j
z2 =2.0000 + 3.0000i
>> j=2;>> z3 = a+b*j
z3 =8
>> z3=complex(a,b)
z3 =2.0000 + 3.0000i
>> sqrt(-5.2)
ans =0 + 2.2804i
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 21: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/21.jpg)
Inhalt
1 EinführungMotivationGrundlagen
2 Vektoren und MatrizenErzeugen von MatrizenDoppelpunkt OperatorOperatorenBeispiel: Auswerten von Polynomen
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 22: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/22.jpg)
Alles ist Matrix!
Matlab unterstützt das Rechnen mit mehrdimensionalen Datenstrukturen(bei uns Vektoren und Matrizen). Jede Variable wird als Matrixgespeichert, z.B. wird eine Zahl als 1× 1-Matrix interpretiert.
Um Matlab effizient zu nutzen muss vektorisiert gearbeitetwerden!
Dies führt in der Regel auch zu (zumindest für Mathematiker) gutlesbarem Code.
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 23: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/23.jpg)
Erzeugen von Matrizen I
Spezielle häufig benötigte Matrizen können mit Hilfe von Befehlenerzeugt werden:
eye: Einheitsmatrixones: Einsmatrixzeros: Nullmatrixrand: Matrix mit gleichverteilten Zufallswerten in (0, 1)
Syntax (bei allen identisch)rand(n,m): Matrix mit n Zeilen und m Spaltenrand(n): Quadratische Matrix mit n Zeilen und n Spalten
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 24: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/24.jpg)
Erzeugen von Matrizen II
>> R = rand(2,4)
R =
0.8913 0.4565 0.8214 0.61540.7621 0.0185 0.4447 0.7919
>> eye(4,3)
ans =1 0 00 1 00 0 10 0 0
>> ones(4,1)
ans =1111
>> zeros(1,3)
ans =0 0 0
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 25: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/25.jpg)
Erzeugen von Matrizen III
Matrizen und Vektoren können auch direkt mit Hilfe von [...] erzeugtwerden
Zeileneinträge mit Leerzeichen oder Komma trennenZeilenumbruch oder Semikolon für eine neue ZeileAnzahl der Einträge muss in jeder Zeile gleich sein
>> x = [3,4 5 -6]x =
3 4 5 -6
>> x = [2,3;4,5]x =
2 34 5
>> x = [2,3,45 6 7]
x =2 3 45 6 7
>> x = [1,2,3;4,5]??? Error using ==> vertcatCAT arguments dimensions are not consistent.
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 26: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/26.jpg)
Erzeugen von Matrizen IV
Statt Zahlen können auch Vektoren oder Matrizen innerhalb von [...]verwendet werden (Blockmatrizen).Achtung: Auf Dimensionen achten
>> A=[eye(2); ones(2)]
A =
1 00 11 11 1
>> A=[eye(2), [1;2]; rand(1,2), 5]
A =
1.0000 0 1.00000 1.0000 2.0000
0.9218 0.7382 5.0000
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 27: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/27.jpg)
Doppelpunkt Operator, Linspace I
Mit Hilfe der Doppelpunkt Operators können spezielle Vektoren erzeugtwerden. Diese finden häufig in Schleifen oder beim Indizieren Anwendung.
Syntaxv = <Start>:<Abstand>:<Ende>Erzeugt einen Vektor v mit Elementen von <start> bis <Ende>, wobei jezwei benachbarte Elemente den Abstand <Abstand> haben.Hinweis: <Start>:<Ende> == <Start>:1:<Ende>
Auch der verwandte Befehl linspace erzeugt Vektoren.
Syntaxv = linspace(<Start>, <Ende>, n)Erzeugt einen Vektor v der Länge n mit Elementen von <Start> bis<Ende>, wobei je zwei benachbarte Elemente denselben Abstand haben.
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 28: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/28.jpg)
Doppelpunkt Operator, Linspace II
>> x = 1:2.5:7
x =1.0000 3.5000 6.0000
>> x = -1:-2:-6
x =-1 -3 -5
>> x = -1:2
x =-1 0 1 2
>> 2:-1
ans =Empty matrix: 1-by-0
>> x = linspace(1,2,4)
x =1.0000 1.3333 1.6667 2.0000
>> linspace(4,-1,3)
ans =4.0000 1.5000 -1.0000
>> linspace(1,2,1)
ans =2
>> linspace(1,2,0)
ans =Empty matrix: 1-by-0
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 29: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/29.jpg)
Weitere Möglichkeiten: Einlesen aus Datei
Matrizen können aus Textdateien, die z.B. durchTabellenkalkulationsprogramme erzeugt wurden oder numerischeEregbnisse enthalten, eingelesen werden.
SyntaxA = csvread(’eingabe.csv’) erwartet per Kommata getrennteSpalten.A = dlmread(’eingabe.txt’,’\t’) erlaubt die Angabe desTrennungszeichens zwischen den Spalten (hier Tabulator).
Analog zu csvread,dlmread gibt es Befehle um Matrizen inTextdateien abzuspeichern: csvwrite,dlmwrite
In der Matlab-Hilfe finden Sie zahlreiche Lese- und Schreibbefehlefür andere Dateiformate (z.B. Bild-, Audio- und Videodateien)
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 30: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/30.jpg)
Weitere Möglichkeiten
repmat erzeugt Matrizen durch mehrfaches Kopieren.
Syntaxrepmat(A, n, m)Matrix A wird insgesamt m-mal nach rechts kopiert und die entstehendeMatrix n-mal unten angehängt.
>> B=[1,2;3,4]
B =
1 23 4
>> repmat(B, 2, 3)
ans =1 2 1 2 1 23 4 3 4 3 41 2 1 2 1 23 4 3 4 3 4
>> [B,B,B; B,B,B]
ans =1 2 1 2 1 23 4 3 4 3 41 2 1 2 1 23 4 3 4 3 4
>> repmat(1:3, 3, 1)
ans =1 2 31 2 31 2 3
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 31: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/31.jpg)
Operatoren I+, -, .*, ./, .^: Elementweise OperationenAchtung: Auf den Punkt bei .*, ./ und . achten.Syntax
C = s + A mit s Skalar, A Matrix/Vektor: cij = aij + s.C = A .* B mit A und B Matrizen: cij = aij · bij .Achtung: A und B müssen die gleiche Anzahl Zeilen und Spaltenhaben
>> A = eye(2)+2
A =3 22 3
>> R = rand(2,3);>> 3.*ones(2,3) + R
ans =3.8147 3.1270 3.63243.9058 3.9134 3.0975
>> (1:5).^2
ans =1 4 9 16 25
>> 2.^(1:5)
ans =2 4 8 16 32
>> ones(2) + [1,2]??? Error using ==> plusMatrix dimensions must agree.
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 32: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/32.jpg)
Operatoren II
*: Multiplikation im Matrizenprodukt Sinn oder elementweiseMultiplikation mit Skalar
Syntax
C = A*B mit Matrizen A und B: cij =∑
k aikbkj .Achtung: Anzahl der Spalten von A muss gleich der Anzahl Zeilenvon B seins*A == s.*A, wenn s Skalar.
Hinweis: A*x mit x Spaltenvektor ist das normale Matrix-Vektor Produktvon A mit x .
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 33: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/33.jpg)
Operatoren III
>> x = [1; 2; 3];>> A = ones(3)+eye(3)
A =2 1 11 2 11 1 2
>> A*x
ans =789
>> y = [2; 3; 4];>> x*y??? Error using ==> mtimesInner matrix dimensions must agree.
>> y = [2, 3, 4];>> y*x
ans =20
>> B = [2,2;-3,1; 0,1]
B =2 2
-3 10 1
>> A*B
ans =
1 6-4 5-1 5
>> B*A??? Error using ==> mtimesInner matrix dimensions must agree.
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 34: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/34.jpg)
Operatoren IV
A’: Adjungierte Matrix A∗ == AT (alternativ: ctranspose(A)))A.’: Transponierte Matrix AT (alternativ: transpose(A))Wird häufig verwendet um aus Zeilenvektoren (z.B. x = 1:n;)Spaltenvektoren zu machen (x = (1:n)’;)
Hinweis: A’ und A.’ unterscheiden sich nur bei Matrizen mit komplexenEinträgen.
>> A=[1, 1+i;2,3]
A =1.0000 1.0000 + 1.0000i2.0000 3.0000
>> A’
ans =1.0000 2.00001.0000 - 1.0000i 3.0000
>> A.’
ans =1.0000 2.00001.0000 + 1.0000i 3.0000
>> transpose(A)
ans =1.0000 2.00001.0000 + 1.0000i 3.0000
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 35: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/35.jpg)
Beispiel: Auswerten von Polynomen
Beispiel: Auswerten des Polynoms p(x) := 3.5x3 + 2x2 − 2 an denPunkten xi = 0 + i/2, i = 0, . . . , 4. In der Regel speichert man denKoeffizientenvektor, also p = [-2; 0; 2; 3.5].
>> p = [-2; 0; 2; 3.5]
p =-2.0000
02.00003.5000
>> x=(0:0.5:2)’
x =0
0.50001.00001.50002.0000
>> X=[x.^0, x, x.^2, x.^3]
X =1.0000 0 0 01.0000 0.5000 0.2500 0.12501.0000 1.0000 1.0000 1.00001.0000 1.5000 2.2500 3.37501.0000 2.0000 4.0000 8.0000
>> y = X * p
y =-2.0000-1.06253.5000
14.312534.0000
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)
![Page 36: Einführung in die Programmierung (MA8003) · Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003) Weitere Möglichkeiten: Einlesen aus](https://reader033.vdokument.com/reader033/viewer/2022041417/5e1c6be34c24647fac5d4895/html5/thumbnails/36.jpg)
Fragen?
Ende Theorie 1.1
Fragen?
Fachbereich Numerik z.T. basierend auf Boris von Loesch Einführung in die Programmierung (MA8003)