Octave/Matlab-Übungen Aufgabe 1a: Lösungsvorschlag (i) abs(2+3*(5-11)) (ii) sin(pi/3) (iii) sqrt(2ˆ2+3ˆ2) (iv) cos(sqrt(2*exp(1))) (v) log(pi)/log10(3.5) Aufgabe 1b: Lösungsvorschlag Es fällt auf, dass a b 0 in Matlab, obwohl klar ist dass a = b gilt. Dies liegt an der Rechengenauigkeit von Matlab. Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 1 / 31
Aufgabe 2: Lösungsvorschlag (i) (1+i)*(2-i) (ii) abs(1+2i) oder abs(1+2*i) (iii) exp(pi*i/2) (iv) (3+conj(1-i))/(iˆ3) (v) angle(2-i) (Matlab) bzw. arg(2-i) (Octave) Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 2 / 31
Aufgabe 3: Lösungsvorschlag (i) x=[1 5 0-3.5] oder x=[1,5,0,-3.5] (ii) y=[4;0;1] oder y=[4 0 1] (iii) z=zeros(1,8) (iv) d=3*ones(1,6) Dann: z(3)=4 sqrt(x()) Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 3 / 31
Aufgabe 4a: Lösungsvorschlag Zunächst Vektoren eingeben: x=[1 0 3] ; y=[-1 1/2 4] ; z=[0 2 5] ; (i) Ausgabe der Normen: norm(x) norm(y) norm(z) (ii) Winkel α zwischen x und y: entweder acosd(dot(x,y)/(norm(x)*norm(y))) oder selbst vom Bogenmaß auf Grad umrechnen mit acos(dot(x,y)/(norm(x)*norm(y)))*180/pi (iii) Volumen des Spats: abs(dot(cross(x,y),z)) Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 4 / 31
Aufgabe 5: Lösungsvorschlag (i) x=1:6; plot(x,sqrt(x), k ) (ii) figure x=0:0.01:2*pi; plot(x,sin(x)) oder plot(x,sin(x), b ) (iii) figure x=linspace(-3,3,100) plot(x,x.ˆ2+2*x-2, r ) Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 5 / 31
Aufgabe 6: Lösungsvorschlag (i) x=-2:0.05:2; plot(x,2.ˆx, r: ) title( Zwei hoch x )... die Punkt-Operation beachten! (ii) figure x=1:5; plot(x,x.ˆ2, c-.ˆ ) xlabel( n ); ylabel( nˆ2 ) title( Quadrate )... dito, Punkt-Operation beachten! (iii) figure a=0:0.01:2*pi; plot(a,sin(a), r,a,cos(a), k ) leg( sin, cos ) title( Sinus und Kosinus ) xlabel( \alpha ) ylabel( sin(\alpha), cos(\alpha) ) Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 6 / 31
Aufgabe 7: Lösungsvorschlag (i) x=0:0.01:2; plot(x,x, k,x,sqrt(x), k ) hold on scatter([0 1],[0 1], rp ) hold off leg( f, g, Location, SouthEast ) (ii) figure quiver([0,0],[0,0],[1,2],[2,1],0) hold on x=[1,2]+[2,1]; quiver([0],[0],x(1),x(2),0, r ) quiver([1,2],[2,1],[2,1],[1,2],0, k ) Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 7 / 31
Aufgabe 8: Lösungsvorschlag (i) p=poly([1 2.5]); x=0:0.01:4; plot(x,polyval(p,x), k ) xlabel( x ) ylabel( p(x) ) title( Eine Parabel ) (ii) hold on p2=polyval(p,2); pstrich2=polyval(polyder(p),2); plot(x,p2+(x-2)*pstrich2, r ) scatter(2,p2, bs ) hold off... beim Zeichnen der Gerade könnte man auch polyval benutzen, ist aber bei einem Polynom von Grad 1 vielleicht zu kompliziert. Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 8 / 31
Aufgabe 9: Lösungsvorschlag A=3*eye(3); A(1,3)=1 B=[zeros(2) ones(2); zeros(1,4)] v=[-1 4 pi] A(2,:)=v B(1:2,)=v(2:)... oder statt die konkreten Endwerte 4 bzw. 3 einsetzen Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 9 / 31
Aufgabe 10: Lösungsvorschlag A=[1 2 3 4; 0 5 6 7; 0 0 8 9; 0 0 0 10]; b=[2 0 1 3] ; B=A; B(:,2)=b; x2=det(b)/det(a) x=a\b Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 10 / 31
Aufgabe 11: Lösungsvorschlag (i) A=[0-1] ; B=[3 1] ; C=[-1 3] ; D=[2 0] ; Aus dem Ansatz E = A + s(b A) = C + t(d C) folgt M ( s t ) = C A, wobei M die Spalten B A und C D enthält: M=[B-A C-D]; st=m\(c-a); E=A+st(1)*(B-A) (ii) t=dot(c-a,b-a)/dot(b-a,b-a); F=A+t*(B-A) (iii) s=-1:0.1:3; Alle Punkte auf AB sehen aus wie A + s(b A) = (1 s)a + sb. Schreibt man alle s-werte in einen Zeilenvektor, kann man alle Punkte auf AB spaltenweise in eine Matrix schreiben via... AB=A*(1-s)+B*s; plot(ab(1,:),ab(2,:), k ) hold on CD=C*(1-s)+D*s; plot(cd(1,:),cd(2,:), k ) scatter(e(1),e(2), ro ) scatter(f(1),f(2), bs ) hold off axis([-2 4-2 4]) Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 11 / 31
Aufgabe 12: Lösungsvorschlag (i) fliplr(diag(v)) (ii) toeplitz([2-1 zeros(1,n-2)]) (iii) n=length(v); [zeros(n-1,1) eye(n-1); v]) Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 12 / 31
Aufgabe 13: Lösungsvorschlag (i) A=triu(ones(6))+2*tril(ones(6),-1) oder A=ones(6)+tril(ones(6),-1) oder A=2*ones(6)-triu(ones(6)) (ii) B=blkdiag(5*triu(ones(2)),-2*ones(3)) (iii) C=kron(diag(1:3),[1 1] ) oder C=blkdiag([1 1],[2 2],[3 3] ) Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 13 / 31
Aufgabe 14: Lösungsvorschlag t=-0.7*pi/4:0.01:0.9*3*pi/4; r=3*cos(t).*sin(t)./(cos(t).ˆ3+sin(t).ˆ3);... Punkt für die komponentenweisen Operationen nicht vergessen! plot(r.*cos(t),r.*sin(t), b ) hold on x=-2:0.1:2; plot(x,-x-1, b: ) hold off axis equal axis([-2 2-2 2]) xlabel( x ) ylabel( y ) title( Kartesisches Blatt ) Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 14 / 31
Aufgabe 15: Lösungsvorschlag (i) t=0:0.01:2*pi; omega1=1; omega2=2; phi1=0; phi2=0; figure plot(sin(omega1*t+phi1),sin(omega2*t+phi2)) figure plot3(sin(omega1*t+phi1),sin(t),sin(omega2*t+phi2)) (ii) omega1=2; omega2=3; phi1=0; phi2=0; figure plot(sin(omega1*t+phi1),sin(omega2*t+phi2)) figure plot3(sin(omega1*t+phi1),sin(t),sin(omega2*t+phi2)) (iii) omega1=2; omega2=3; phi1=0; phi2=3*pi/4; figure plot(sin(omega1*t+phi1),sin(omega2*t+phi2)) figure plot3(sin(omega1*t+phi1),cos(t),sin(omega2*t+phi2)) Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 15 / 31
Aufgabe 16: Lösungsvorschlag (i) figure x=-1:0.02:1; y=x; [X,Y]=meshgrid(x,y); surf(x,y,cos(5*(x.ˆ2+y.ˆ2))); xlabel( x ) ylabel( y ) zlabel( f(x,y) ) title( rotierter Kosinus ) (ii) figure x=0:0.01:1; y=x; [X,Y]=meshgrid(x,y); surf(x,y,max(27*x.*y.*(1-x-y),0)); xlabel( x ); ylabel( y ); zlabel( g(x,y) ); title( Bubble-Funktion ); Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 16 / 31
Aufgabe 17: Lösungsvorschlag (i) Entweder summe=@(n) sum(1:n); eintippen oder die Funktion als.m-datei auslagern summe.m function x=summe(n) x=sum(1:n); und dann summe(100) in der Kommandozeile eintippen (ii) Entweder fakultaet=@(n) prod(1:n); eintippen oder die Funktion als.m-datei auslagern fakultaet.m function x=fakultaet(n) x=prod(1:n); und dann fakultaet(10) in der Kommandozeile eintippen Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 17 / 31
Aufgabe 17ff: Lösungsvorschlag (iii) Die Funktion benutzt eine weitere (Puffer-)Variable... tausche.m function [a,b]=tausche(a,b) c=b; b=a; a=c;... und das Tauschen geschieht mit a=3; b=eye(2); [a,b]=tausche(a,b) Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 18 / 31
Aufgabe 18: Lösungsvorschlag Zunächst Funktion als.m-datei auslagern, hier ohne else-anweisungen: f.m function y=f(x) y=0; if (x>=0)&&(x<1) y=xˆ2/2; if (x>=1)&&(x<2) y=-xˆ2+3*x-3/2; if (x>=2)&&(x<3) y=(3-x)ˆ2/2; Dann kann der B-Spline geplottet werden: x=-1:0.01:4; plot(x,arrayfun(@f,x)) Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 19 / 31
Aufgabe 18ff: Lösungsvorschlag 2 (Alternative) Zunächst Funktion als.m-datei auslagern, hier mit else und elseif-anweisungen: f.m function y=f(x) if (x>=0)&&(x<1) y=xˆ2/2; elseif (x>=1)&&(x<2) y=-xˆ2+3*x-3/2; elseif (x>=2)&&(x<3) y=(3-x)ˆ2/2; else y=0; Dann kann der B-Spline geplottet werden: x=-1:0.01:4; plot(x,arrayfun(@f,x)) Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 20 / 31
Aufgabe 19: Lösungsvorschlag (i) Zunächst Funktion als.m-datei auslagern, entweder mit for-schleife geldanlage.m function K=geldanlage(K0,n,p) K=K0; for j=0:n-1 K=K*(1+p/100); oder ohne: geldanlage.m function K=geldanlage(K0,n,p) K=K0*(1+p/100)ˆn;... und dann geldanlage(2000,5,3) in der Kommandozeile eintippen. Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 21 / 31
Aufgabe 19ff: Lösungsvorschlag (ii) Zunächst Funktion aus (i) erweitern, z.b. in der Variante mit Schleife geldanlage.m function K=geldanlage(K0,n,p,k) K=K0; for j=0:n-1 K=K*(1+p*k/(100*12))ˆ(12/k); und ohne Schleife geldanlage.m function K=geldanlage(K0,n,p,k) K=K0*(1+p*k/(100*12))ˆ(12/k*n);... und dann geldanlage(2000,5,3,1) in der Kommandozeile eintippen. Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 22 / 31
Aufgabe 19ff: Lösungsvorschlag (iii) Zunächst Funktion als.m-datei auslagern: sparen.m function K=sparen(E,n,p,k) K=0; for j=0:n-1 K=(K+E)*(1+p*k/(100*12))ˆ(12/k);... und dann in der Kommandozeile eintippen: sparen(500,5,3,12) sparen(500,5,3,1) Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 23 / 31
Aufgabe 20: Lösungsvorschlag % Musterloesung zur Aufgabe 20 clear ; close all ; x =[0:0.01:1]; for a =[1 2 3. 5] figure plot (x,a*x.*(1 - x)) xlabel ( x ) ylabel ( f_a (x) ) title ([ Plot von f_a fuer a= num2str (a )]) hold on scatter (1/2, a /4) text (1/2, a /4+0.04, Hochpunkt ) axis ([0 1 0 1]) hold off Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 24 / 31
Aufgabe 21: Lösungsvorschlag % Musterloesung zur Aufgabe 21 clear ; close all f=@(x,y) (1 -x ).^2+100*( y-x.^2).^2; % Teil 1: 3D- Funktionsplot xh= -1:0.05:3; yh= -1:0.05:3; [X,Y]= meshgrid (xh,yh ); Z=f(X,Y); surf (X,Y,Z) title ( Die Rosenbrock - Funktion ) xlabel ( x ) ylabel ( y ) zlabel ( f(x,y) ) axis ([ -1 3-1 3 0 1000]) hold on scatter3 (1,1,f(1,1), r* ) hold off % Teil 2: 2D- Hoehenlinien figure contour (X,Y,Z,100, ShowText, on ) title ( Hoehenlinien der Rosenbrock -Funktion ) xlabel ( x ) ylabel ( y ) hold on scatter (1,1, r* ) hold off Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 25 / 31
Aufgabe 22: Lösungsvorschlag % Musterloesung zur Aufgabe 22 clear ; close all f=@(x,y) (x.^2+y -11).^2+( x+y.^2-7).^2; [X,Y]=meshgrid ( -5:0.05:5); contour (X,Y,f(X,Y ),20); title ( Hoehenlinien und Gradient der Funktion von Himmelblau ) xlabel ( x ) ylabel ( y ) hold on [X2,Y2 ]=meshgrid ( -5:0.2:5); % [DX,DY ]= gradient (f(x2,y2 )); % Alternative mit von Hand berechnetem Gradient : gx=@(x,y) 4*x.*(x.^2+y -11)+2*( x+y.^2-7); gy=@(x,y) 2*(x.^2+y -11)+4* y.*(x+y.^2-7); DX=gx(X2,Y2 ); DY=gy(X2,Y2 ); quiver (X2,Y2,DX,DY,3) hold off % optional : Plot figure surf (X,Y,f(X,Y)) title ( Funktion von Himmelblau ) xlabel ( x ) ylabel ( y ) zlabel ( f(x,y) ) Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 26 / 31
Aufgabe 23: Lösungsvorschlag % Musterloesung zur Aufgabe 23 clear ; close all dreieck ([0 0],[1 0],[0 1]) dreieck ([0 0],[1 0],[0.5 0.5* sqrt (3)]) Inhalt der Datei dreieck.m: function dreieck (A,B, C) figure patch ([A(1) B (1) C (1)],[ A (2) B (2) C(2)], g, EdgeColor, r ) hold on scatter ([A(1) B (1) C (1)],[ A (2) B (2) C(2)], r* ) S=( A+B+C )/3; scatter (S(1),S(2), bo ) plot ([A(1) (B (1)+ C (1))/2],[ A (2) (B (2)+ C (2))/2], b ) plot ([B(1) (A (1)+ C (1))/2],[ B (2) (A (2)+ C (2))/2], b ) plot ([C(1) (A (1)+ B (1))/2],[ C (2) (A (2)+ B (2))/2], b ) hold off Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 27 / 31
Aufgabe 24: Lösungsvorschlag % Musterloesung zur Aufgabe 24 matrix2latex ([1 2 3;4 5 6], M.txt ) Inhalt der Datei matrix2latex.m: function matrix2latex (M, dateiname ) fid=fopen ( dateiname, w ); [m,n]= size (M); fprintf (fid, \\ begin { tabular }{ ); for kk =1: n fprintf (fid, c ); fprintf (fid, }\n ); for jj =1: m for kk =1: n fprintf (fid, %f,m(jj, kk )); if kk <n fprintf (fid, & ); if jj <m fprintf (fid, \\\\\n ); else fprintf (fid, \n ); fprintf (fid, \\ { tabular }\n ); fclose ( fid ); Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 28 / 31
Aufgabe 25: Lösungsvorschlag % Musterloesung zur Aufgabe 25 clear ; close all for n =3:8 dateiname =[ int2str (n) eck.png ]; neck (n, dateiname ); Inhalt der Datei neck.m: function neck (n, dateiname ) figure patch ( cos (2* pi *[0:n -1]/ n), sin (2* pi *[0:n -1]/ n), r, EdgeColor, k ) axis ([ -1 1-1 1]) axis square print ( -dpng, dateiname, -r600 ) Zum Einbinden der erstellten Grafiken in LATEX siehe LATEX-Aufgabe 10. Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 29 / 31
Aufgabe 26: Lösungsvorschlag % Musterloesung zur Aufgabe 26 clear ; close all % (i) zufallszahl =@(a,b) a+ rand ()*(b-a); % (ii) figure N =1000; v= randi (6,1,N)+ randi (6,1,N); h= histc (v,2:12); bar (2:12, h) title ( Absolute Haeufigkeiten beim Wuerfeln mit zwei Wuerfeln ) % ( iii ) figure N =100; x1= random_walk ( N); x2= random_walk ( N); x3= random_walk ( N); plot (1: N+1,x1, b,1:n+1,x2, r,1:n+1,x3, g ) title ( random walks ) xlabel ( t ) ylabel ( x(t) ) Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 30 / 31
Aufgabe 26: Lösungsvorschlag ff. Inhalt der Datei random_walk.m: function x= random_walk ( n) if false, % 1. Variante : mit Schleife ( langsam ) x= zeros (1,n +1) for jj =1:n, zufall = randi (2); if zufall ==1, x(jj +1)= x(jj )+1; else x(jj +1)= x(jj ) -1; if true, % 2. Variante : mit Summe ( schnell ) zufall =2* randi (2,1, n) -3; % ergibt n Zufallszahlen +1 oder -1 x= zufall *[ zeros (n,1) triu ( ones (n ))]; Dr. Martin Gutting (Uni Siegen) Octave/Matlab-Lösungen 31 / 31