24
MATLAB ist eine numerische Berechnungsumgebung wurde vorrangig zum Rechnen mit Vektoren und Matrizen entworfen ist interaktiv benutzbar, vergleichbar mit einem Rechenblatt dient als Ingenieur-Tool Skripte und Prozeduren erlauben eine Programmierung Nicht (primär) für symbolische Berechnungen geeignet (MAPLE oder Mathematica können das) grafische Ausgabe mit dem Plot-Kommando Peter Sobe 1 2. Einführung in das Ingenieurtool MATLAB

2. Einführung in das Ingenieurtool MATLABsobe/InfoMB_Jg13/Vo/2_MATLAB_Teil… · MATLAB ist eine numerische Berechnungsumgebung wurde vorrangig zum Rechnen mit Vektoren und Matrizen

  • Upload
    vudiep

  • View
    220

  • Download
    1

Embed Size (px)

Citation preview

MATLAB ist eine numerische Berechnungsumgebung wurde vorrangig zum Rechnen mit Vektoren und Matrizen

entworfen ist interaktiv benutzbar, vergleichbar mit einem Rechenblatt dient als Ingenieur-Tool Skripte und Prozeduren erlauben eine Programmierung Nicht (primär) für symbolische Berechnungen geeignet

(MAPLE oder Mathematica können das) grafische Ausgabe mit dem Plot-Kommando

Peter Sobe 1

2. Einführung in das Ingenieurtool MATLAB

MATLAB rechnet rein numerisch

MATLAB – der Name kommt von MATrix LABoratory

MATLAB wird zur interaktiven Arbeit, aber auch zur Ausführung vorbereiteter Prozeduren und Funktionen benutzt

Zur interaktiven Arbeit stehen z.B. ein Übersichtsfenster für benutzte Variablen und deren Werte (Workspace-Fenster) bereit, und ein Matrix-Editor

Peter Sobe 2

MATLAB

MATLAB hält im interaktiven Betrieb Variablen, die standardmäßig Matrizen sind, Typ double wenn nicht anders angegeben

Elementare MATLAB-Operationen Arithmetische Operationen Logische Operationen Mathematische Funktionen Grafikfunktionen Funktionen zum Datenaustausch

Peter Sobe 3

MATLAB

Eingabe nach dem Prompt in der interaktiven Sitzung:X=47.11MATLAB antwortet X = 47.11 und nimmt die Variable X und deren Wert in den s.g. Workspace auf. Eingabe:meinvektor=[1 2 3 4 5]MATLAB antwortet mit meinvektor =

1 2 3 4 5… und nimmt die Variable meinvektor inkl. der gespeicherten Werte in den Workspace auf

Peter Sobe 4

MATLAB – interaktive Definition von Variablen

m=[1 2 3; 4 5 6; 7 8 9 ]MATLAB antwortet mit m =

1 2 3 4 5 6 7 8 9

Zugriff auf Elemente:m(2,3) ergibt: 6m(2,:) ergibt: [4 5 6]m(:,1) ergibt 1

47

… Beachte: die Indizierung beginnend mit 1

Peter Sobe 5

MATLAB – interaktive Definition von Variablen

m=[1 2 3; 4 5 6; 7 8 9 ]

m = [ m; 10 11 12 ] … fügt Zeile 10 11 12 unten zu

v = [0 0 0 0]v = v‘m = [m,v] … fügt Spalte mit Nullen rechts an

ergibt letztendlich1 2 3 04 5 6 07 8 9 010 11 12 0

Peter Sobe 6

MATLAB – interaktive Definition von Variablen

Operationen +,-*,/ beziehen sich auf Vektoren und Matrizen

Addition und Subtraktion wirken komponentenweise setzen voraus, dass Dimensionen der Operanden passen

Beispiel:A = [1 2 3]B = [0.1 0.2 0.3]C = A+B ergibt [1.1 2.2 3.3]D = A-C ergibt [0.9 1.8 2.7]

Peter Sobe 7

Arithmetische Operationen

Multiplikation

A = [1 2 3 ; 4 5 6 ; 6 7 8 ]B = [2 0 0 ; 0 2 0 ; 0 0 2 ]S = 2

C = A * B Ergibt eine MatrixmultiplikationC = A.* S ergibt eine Multiplikation von Matrix A mit Skalar S

Die Matrixmultiplikation erfordert, dass die Spaltenanzahl der linken Matrix mit der Zeilenanzahl der rechten Matrix übereinstimmt.

Peter Sobe 8

Arithmetische Operationen

Multiplikation zwischen Vektoren und Matrizen

V = [1 2 3 4 ]M = [2 1 1 ; 1 2 1 ; 1 1 2 ; 2 1 2]

C = V * M ergibt eine 1x3-Matrix, d.h. einen Zeilenvektor C = M * V ergibt einen Fehler

Vektor- und Matrixtransposition:V1 = V‘ wandelt Zeilenvektor V in einen Spaltenvektor umMtrans = M‘ transponiert die Matrix M

Peter Sobe 9

Arithmetische Operationen

Division

C =A / B entspricht X = A * B -1, rechte Division C =A \ B entspricht X = A -1 * B, linke Division

Peter Sobe 10

Arithmetische Operationen

Potenzieren: ^-Operatorwirkt primär auf Matrizen, kann durch .^ auf Komponenten angewendet werden.

X = 5Y = X^2 ergibt 25 (Anwendung auf skalaren Wert)Y = X^-1 ergibt 0.2V=[10 5 1]V1 = V.^2 komponentenweise Potenzierung ergibt [100 25 1]

A = [1 2 3; 4 5 6; 7 8 9]B = A^2 ergibt das Matrixprodukt A * A Ainv = A^-1 ergibt die invertierte Matrix AA1 = A.^2 ergibt die Matrix [1 4 9; 16 25 36; 49 64 81]Peter Sobe 11

Arithmetische Operationen

A*x = bA … nxn-Koeffizientenmatrix (bekannt)x … Lösungsvektor mit n Elementen (gesucht)b … rechte Seite, Vektor mit n Elementen (bekannt)

Lösung in MATHLAB/Octave: Eingabe der A-Matrix und des b-Vektors b = b‘ Transponieren zu einem Spaltenvektor x = A^-1 * b Ausgabe des x-Vektors, bzw. Weiterverarbeitung

Zum Vergleich: In C musste man das Lösungsverfahren ausprogrammieren, oder eine vorgefertigte Funktions-sammlung benutzen (z.B. Lapack)

Peter Sobe 12

Lösen eines linearen Gleichungssystems

Beispiel:

Peter Sobe 13

Lösen eines linearen Gleichungssystems

octave:1> lingls_initA =

76.3268 50.9873 73.0979 -84.8689 -57.8539 85.4854 -79.4366 6.1647 -41.7646 -97.5463 -38.5296 44.673044.6730 76.3268 50.9873 73.0979 -84.8689 -57.8539 85.4854 -79.4366 6.1647 -41.7646 -97.5463 -38.5296-38.5296 44.6730 76.3268 50.9873 73.0979 -84.8689 -57.8539 -85.4854 -79.4366 6.1647 -41.7646 -97.5463-97.5463 -38.5296 44.6730 76.3268 50.9873 73.0979 -84.8689 -57.8539 85.4854 -79.4366 6.1647 -41.7646-41.7646 -97.5463 -38.5296 44.6730 76.3268 50.9873 73.0979 -84.8689 -57.8539 85.4854 -79.4366 6.16476.1647 -41.7646 -97.5463 -38.5296 44.6730 76.3268 50.9873 73.0979 -84.8689 -57.8539 85.4854 -79.4366

-79.4366 6.1647 -41.7646 -97.5463 -38.5296 44.6730 76.3268 -50.9873 73.0979 -84.8689 -57.8539 85.485485.4854 -79.4366 6.1647 -41.7646 -97.5463 -38.5296 44.6730 76.3268 50.9873 73.0979 -84.8689 -57.8539-57.8539 85.4854 -79.4366 6.1647 -41.7646 -97.5463 -38.5296 -44.6730 76.3268 50.9873 73.0979 -84.8689-84.8689 -57.8539 85.4854 -79.4366 6.1647 -41.7646 -97.5463 -38.5296 44.6730 76.3268 50.9873 73.097973.0979 -84.8689 -57.8539 85.4854 -79.4366 6.1647 -41.7646 -97.5463 -38.5296 44.6730 76.3268 50.987350.9873 73.0979 -84.8689 -57.8539 85.4854 -79.4366 6.1647 -41.7646 -97.5463 -38.5296 44.6730 76.3268

b =Columns 1 through 11:

-1.3924e+04 8.0344e+03 1.0483e+04 -2.4469e+03 7.4594e+03--1.6952e+04 -8.9095e+03 4.8354e+03 2.4811e+04 1.3750e+04---7.5490e+03

Column 12:

2.1317e+03

octave:2> b=b'b =

-1.3924e+048.0344e+031.0483e+04-2.4469e+037.4594e+03-1.6952e+04-8.9095e+034.8354e+032.4811e+041.3750e+04-7.5490e+032.1317e+03

octave:3> x = A^-1*bx =

-63.560956.2456-34.5836-60.9058-3.8514-74.8375-44.5631-86.190414.606296.9420-60.3900-82.2840

2-D Funktionsplotter: plotDie eingebaute Funktion Plot arbeitet ausgehend von zwei Feldern, die die gleiche Dimension aufweisen müssenAllgemeine Form:

plot(x-vector, y-vector)

x = [0:0.1:2*pi]y = sin(x)plot(x,y)

Peter Sobe 14

Funktionen und Plot

Eingebaute Programmiersprache mit typischen Steuerflußkonstrukten (if, else, while, for, usw.)

Anweisungen werden in MATLAB interpretiert, statt kompiliert wie in einigen andern Programmiersprachen

Programmierung erfolgt durch … Skripte für wiederholt auszuführenden Schritte mit Auswirkung

auf die Variablen im Workspace Funktionen für abgeschlossene Berechnungsschritte, die bei

einem Aufruf mit Parameter versehen werden und ein Ergebnis zurückgeben

Peter Sobe 15

MATLAB - Programmierung

Ein Skript wird in einer m-Datei gespeichert und über den Dateinamen (ohne Endung ‘m‘) aufgerufen. Das Skript wirkt so, als wäre der Inhalt in der interaktiven Sitzung eingegeben worden.

Beispiel meinskript.m % Nur ein Beispiel% plottet eine Sinusfunktionx = (-100:0.5:100);y = sin(x)plot (x,y)

Aufruf:meinskript help meinskriptDie Variablen des Skripts bleiben nach dessen Ausführung weiter im Workspace bestehenPeter Sobe 16

MATLAB – Skripte

Funktionen werden wie Skripte in einer .m-Datei gespeichert und über ihren Namen aufgerufen. Funktionen nehmen Parameter entgegen und erzeugen Ausgaben aus Rückgabe.Der Kopf der Funktion hat den Aufbau:function[Ausgabeparameter]= funktionsname(Eingabeparameter)

Beispiel:function [mw] = Mittel(a,b,c)% Mittel: berechnet das arithmetische Mittel aus 3 Wertenmw = a+b+cmw=mw./3

Aufrufmöglichkeiten:a=4b=2c=1m=Mittel(a,b,c) … ergibt 2.33

Peter Sobe 17

MATLAB – Funktionen

a=[1 3 5 4]b=[3 2 2 3]c= [2 1 2 2]m = Mittel(a,b,c) … ergibt [2 2 3 3]

Dynamische Typisierung: Variablen müssen nicht explizit vereinbart werden, sondern

werden durch eine Zuweisung eingeführt

der Typ einer Variablen ergibt sich durch dem zugewiesenen Ausdruck

Variablen können auch mit Ausdrücken eines andern Typs überschrieben werden (Typ ändert sich)

Bei Bedarf kann man Variable mit clear aus dem Workspace entfernen

Dynamische Typisierung ist bequemer für interaktive Arbeit, für schnelleres Programmieren, aber fehleranfälliger

Peter Sobe 18

MATLAB - Programmierung

MATLAB ist auch eine Programmiersprache und beinhaltet Sprachkonstrukte zur Beeinflussung des Steuerflusses

Sequenz: entsteht durch Abfolge der Anweisungen, Skripte und Funktionen

Selektion:if else elseif end switch case

Zyklen: for, while, break, continue

Weitere:Skript-Aufruf, Funktionen, return, try catch

Peter Sobe 19

MATLAB-Sprachkonstrukte

function [F] = Fibo(n)% Fibo(n) ... berechnet die Fibonacci-Zahlen von f(1) bis f(n)F = zeros(1,n+1);F(1,1)=0;F(1,2)=1;for k=1:n-1F(1,k+2) = F(1,k)+F(1,k+1);end;

Aufruf:octave:1> Fibo(10)ans =

0 1 1 2 3 5 8 13 21 34 55Peter Sobe 20

Algorithmenbeispiel

if BedingungAnw;

end;

Beispiel:if a<b

t=a;a=b;b=t;

end

Peter Sobe 21

Steuerfluss: Einseitige Selektion

Anw /ja nein

Bedingung

if BedingungAnw1;

elseAnw2;

end;

Beispiel:if a>b

diff = a-b;else

diff =b-a;end

Peter Sobe 22

Steuerfluss: zweiseitige Selektion

Anw1 Anw2ja nein

Bedingung

while BedingungAnweisung;

end

Beispiel:a=0;b=5;m=(a+b)/2;while abs(fun(m))>0.000001if (fun(m) > 0)

a = m;else

b=m;endm=(a+b)/2;

endPeter Sobe 23

Steuerfluss: while-Schleife

Bedingung

Anweisung

Variante: Kopfgesteuerter Zyklus,

Fußgesteuerter Zyklus in Matlab nicht vorhanden

for awert:s:ewertAnw;

end

Beispiel:a = [1 2 3 4 5 6];n = length(a);s=0;for i=1:1:n

s= s + a(i);end;mw=s/n;

Peter Sobe 24

Steuerfluss: for-Schleife

Lv = awert (s) ewert

Anw