MATLAB Repetitorium - Einführung: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
Zeile 148: | Zeile 148: | ||
---- | ---- | ||
= Symbolisches Rechnen = | = Symbolisches Rechnen = | ||
'''Hinweis:''' Statt <code>* / ^</code> verwenden Sie <code>.* ./ .^< | '''Hinweis:''' Statt <code>* / ^</code> verwenden Sie <code>.* ./ .^</code> (Punktoperator vor Operation anwenden): | ||
== Aufgabe 2.1 == | == Aufgabe 2.1 == | ||
Definieren Sie folgende Funktionen mit Matlab (Befehle: <code>syms< | Definieren Sie folgende Funktionen mit Matlab (Befehle: <code>syms</code>) | ||
<!-- <math></math><br> --> | <!-- <math></math><br> --> |
Version vom 26. April 2024, 10:11 Uhr
Autor: | Prof. Dr.-Ing. Schneider |
Termin: | 26.04.2024 |
Einstieg
Aufgabe 1.1
Quadrieren Sie die Zahlen 3, pi, −1 und i mithilfe des Operators „^“ und ziehen Sie aus den Ergebnissen jeweils die Wurzel.
Musterlösung |
% Aufgabe 1.1:
% zi : Variable für die Zahl
% qi : das Quadrat der Zahl
% wi : die Wurzel aus dem Quadrat
z1 = 3
q1 = z1^2
w1 = sqrt( q1 )
z2 = pi
q2 = z2^2
w2 = sqrt( q2 )
z3 = -1
q3 = z3^2
w3 = sqrt( q3 )
z4 = i
q4 = z4^2
w4 = sqrt( q4 )
|
Aufgabe 1.2
Wählen Sie unterschiedliche Winkel w zwischen 0 und π. Berechnen Sie für jeden
Winkel die Summe der Quadrate von sin(w)
und cos(w)
.
Musterlösung |
% Aufgabe 1.2:
% wi : verschiedene Winkel zwischen 0 und pi
% ei : Summe von sin- und cos-Quadrat zu wi
w1 = 0
e1 = sin(w1)^2 + cos(w1)^2
w2 = pi
e2 = sin(w2)^2 + cos(w2)^2
w3 = pi/2
e3 = sin(w3)^2 + cos(w3)^2
w4 = pi/4
e4 = sin(w4)^2 + cos(w4)^2
w5 = pi/6
e5 = sin(w5)^2 + cos(w5)^2
|
Aufgabe 1.3
Erzeugen Sie das 1x5-Array sval, das die fünf Sinus-Werte für die Bogenmaß-Winkel 0, π/6, π/4, π/2 und π enthält. Führen Sie die gleichen Rechnungen für die Grad-Winkel 0, 30°, 45°, 90° und 180° durch. Hierzu müssen Sie die Winkel ins Bogenmaß umrechnen, da die MATLAB-Funktionen sin und cos ihre Argumente im Bogenmaß erwarten – zur Erinnerung: π entspricht 180°.
Versuchen Sie es auch einmal mit den Funktionen sind
und cosd
.
Musterlösung |
% Aufgabe 1.3:
% rval : Array mit verschiedenen Winkeln
rval = [ 0, pi/6, pi/4, pi/2, pi ]
sval = [ sin(0), sin(pi/6), sin(pi/4), sin(pi/2), sin(pi) ]
frsin = sin( rval )
frcos = cos( rval )
c = pi/180
wval = [ 0, 30, 45, 90, 180 ]
cval = [ sin(0*c), sin(30*c), sin(45*c), sin(90*c), sin(180*c) ]
fwsin = sin( wval * c )
dval = [ sind(0), sind(30), sind(45), sind(90), sind(180) ]
fsind = sind( wval )
fcosd = cosd( wval )
|
Aufgabe 1.4
Was erhalten Sie, wenn Sie den Spaltenvektor v = [2;3]
mit der Matrix A = [1 0;0 −1]
multiplizieren? Was ist das Ergebnis von A * A
?
Musterlösung |
% Aufgabe 1.4:
v = [2;3]
A = [1 0; 0 -1]
A_v = A * v
A_A = A * A
|
Aufgabe 1.5
Erzeugen Sie einen Zeilenvektor, der als Komponenten nicht Zahlen, sondern Buchstaben enthält. Überprüfen Sie den Typ des Vektors mit der Funktion whos
.
Tipp |
Artikel zum thema String und Char |
Musterlösung |
% Aufgabe 1.5:
s = [ 'H', 'e', 'l', 'l', 'o' ]
whos s
|
Aufgabe 1.6
- Versuchen Sie, durch bewusst falsche Anweisungen Fehlermeldungen zu erzeugen, um ein Gefühl dafür zu bekommen, wie MATLAB auf Fehler reagiert.
- Verwenden Sie die Cursor-Tasten, um aus der Command History vorher bereits benutzte Befehle zu wiederholen und zu verändern.
- Schauen Sie sich auch einmal den Workspace-Editor an, mit dem Sie zum Beispiel die Inhalte von Variablen mittels Copy & Paste nach MS-Excel übernehmen können.
Musterlösung |
% Aufgabe 1.6:
% Beispiele für fehlerhafte Anweisungen
e0 = 3,4 * 3
e1 = 'Hello,
world'
e2 = [5 2] * [3 3]
|
Symbolisches Rechnen
Hinweis: Statt * / ^
verwenden Sie .* ./ .^
(Punktoperator vor Operation anwenden):
Aufgabe 2.1
Definieren Sie folgende Funktionen mit Matlab (Befehle: syms
)
Musterlösung |
% Aufgabe 2.1:
syms x y
y = 2.*x.^3 + 12.*x.^2 + 19.*x + 9;
y = (-1./58)*(x.^2 - 100.*x -416);
y = ((x-1).*(x+5))./((x+1).^2 .* (x-3));
clear x y
|
Aufgabe 2.2
Multiplizieren Sie folgende Ausdrücke aus (Befehle: expand()
)
Musterlösung |
% Aufgabe 2.2:
syms x y
expand((3.*x - 2.*y)^3);
expand((4.*x - y)^4);
clear x y
|
Aufgabe 2.3
Vereinfachen Sie folgende Ausdrücke (Befehle: exp(), log(), simplify()
)
Musterlösung |
% Aufgabe 2.3:
syms x y
simplify(sin(x).^2 + cos(x).^2);
simplify(exp(log(x)));
simplify((x.^2 - y.^2)./(x-y));
clear x y
|
Aufgabe 2.4
Verwenden Sie simplify
zur Ausführung der Polynomdivision P3/P1.
Musterlösung |
% Aufgabe 2.4:
syms x P1 P3
P1 = x - 1;
P3 = x.^3 - 6.*x.^2 - x + 6;
simplify(P3/P1);
clear x P1 P3
|
Aufgabe 2.5
Lösen Sie folgende Gleichungen (Befehl: sqrt(), log10(), solve()
).
Hinweis: Benutzen Sie „==“ statt „=“
Musterlösung |
% Aufgabe 2.5:
syms x
solve(11-sqrt(x+3) == 6, x);
solve(3.^x == 4.^(x-2) .* 2.^x, x);
solve(log10(6.*x + 10) - log10(x - 3) == 1, x);
clear x
|
Aufgabe 2.6
Berechnen Sie folgende Grenzwerte (Befehle: limit(), inf
).
Musterlösung |
% Aufgabe 2.6:
syms x
limit((2.*x^2 + 5.*x)./(3.*x),x,1);
limit(1./x,x,inf);
clear x
|
Aufgabe 2.7
Berechnen Sie die erste und zweite Ableitung folgender Funktionen (Befehle: diff()
).
Musterlösung |
% Aufgabe 2.7:
syms y x
y = x.^5 + log(x);
ydiff = diff(y);
ydiffdiff = diff(ydiff);
subplot(121)
fplot(y);
subplot(122);
fplot(ydiff);
y = 4.*sin(x).*tan(x);
ydiff = diff(y);
ydiffdiff = diff(ydiff);
clear x y
|
Aufgabe 2.8
Berechnen Sie das unbestimmte Integral folgender Funktionen (Befehle: int()
).
Musterlösung |
% Aufgabe 2.8:
syms x
int((3.*x.^8)./(x.^3 +1),x);
int(exp(2.*x)./(1+exp(x)),x);
clear x
|
Aufgabe 2.9
Berechnen Sie das bestimmte Integral folgender Funktion (Befehle: int()
).
Musterlösung |
% Aufgabe 2.9:
syms x y
int(x./((1 + x.^2).^2),x,0,1)
clear x y
|
Aufgabe 2.10
Für die Schnellen: Erkundigen Sie sich über folgende Berechnungen zur Funktionsanalyse bzw. Kurvendiskussion in Matlab (Befehle: diff(), subs(), solve(), vpa()
):
- Berechnen von lokalen Extremstellen
- Berechnen von Wendestellen
- Berechnen des y-Achsenabschnittes
Wenden Sie die Berechnungen auf die Aufgaben aus Teil 2.1 an.
Musterlösung |
% Aufgabe 2.10:
syms x y1 y2 y3
y1 = 2.*x.^3 + 12.*x.^2 + 19.*x + 9;
y2 = (-1./58)*(x.^2 - 100.*x -416);
y3 = ((x-1).*(x+5))./((x+1).^2 .* (x-3));
%% y1
y1diff1 = diff(y1);
y1diff2 = diff(y1diff1);
ycrossY1 = subs(y1,0);
ycrossX1 = 0;
max = solve(y1diff1 == 0,x);
extremaX1 = vpa(max);
extremaY1 = subs(y1,extremaX1);
inflection = solve(y1diff2 == 0,x);
inflectionX1 = vpa(inflection);
inflectionY1 = subs(y1,inflectionX1);
subplot(131);
fplot(y1);
hold on;
plot(ycrossX1,ycrossY1,'b*');
hold on;
plot(extremaX1,extremaY1,'r*');
hold on;
plot(inflectionX1,inflectionY1,'g*');
%% y2
y2diff1 = diff(y2);
y2diff2 = diff(y2diff1);
ycrossY2 = subs(y2,0);
ycrossX2 = 0;
max = solve(y2diff1 == 0,x);
extremaX2 = vpa(max);
extremaY2 = subs(y2,extremaX2);
inflection = solve(y2diff2 == 0,x);
inflectionX2 = vpa(inflection);
inflectionY2 = subs(y2,inflectionX2);
subplot(132);
fplot(y2);
hold on;
plot(ycrossX2,ycrossY2,'b*');
hold on;
plot(extremaX2,extremaY2,'r*');
hold on;
plot(inflectionX2,inflectionY2,'g*');
%% y3
y3diff1 = diff(y3);
y3diff2 = diff(y3diff1);
ycrossY3 = subs(y1,0);
ycrossX3 = 0;
max = solve(y3diff1 == 0,x);
extremaX3 = vpa(max);
extremaY3 = subs(y3,extremaX3);
inflection = solve(y3diff2 == 0,x);
inflectionX3 = vpa(inflection);
inflectionY3 = subs(y3,inflectionX3);
subplot(133);
fplot(y3);
hold on;
plot(ycrossX3,ycrossY3,'b*');
hold on;
plot(extremaX3,extremaY3,'r*');
hold on;
plot(inflectionX3,inflectionY3,'g*');
|
→ zurück zum Hauptartikel: MATLAB Repetitorium