INLÄMNINGSUPPGIFT 1 (MATLAB) Linjär algebra och analys
Transcription
INLÄMNINGSUPPGIFT 1 (MATLAB) Linjär algebra och analys
1 INLÄMNINGSUPPGIFT 1 (MATLAB) Linjär algebra och analys Kurskod: HF1006/HF1008 Skolår: 2014/15 Due date: Data elektro: 14 okt 2014 tid:8:15-10:00 Medicinsk teknik 13 okt tid 10:15 -12:00 armin@sth.kth.se www.sth.kth.se/armin Individuellt arbete. Använd MATLAB för att lösa dina uppgifter. I nedanstående uppgifter a, b, c och d är de sista fyra siffrorna i ditt personnummer. Har du t ex pn. 751332 2348 så är a=2 , b=3, c=4 och d=8 som du substituerar i dina uppgifter och därefter löser dem. 5 labbövningar är schemalagda i första delen ( dvs LinAlg-delen). Första 3 labbövningar är lärarledda lektioner i Matlab. De sista två labbövningarna (av 5 i del 1) är avsedda för redovisning av inlupp1. REDOVISNING. i) Under kursens gång gör du nedanstående uppgifter 1-13, skriver kommentarer till dina lösningar, sparar varje uppgift som separat m-fil (script) och redovisar under sista två (av totalt fem) labbövningar i Lin Alg delen. ii) Hinner du inte redovisa dina (korrekta) lösningar i tid måste du göra även uppgift 14. När du gjort färdigt uppgifterna 2-14 bokar du via email en tid för redovisning hos din klasslärare ( för LinAlg delen). iii) Du redovisar (med hjälp av din laptop) dina uppgifter genom att förklara dina lösningar och visa att dina Matlab-koder fungerar. Du behöver inte lämna in någon pappersversion av lösningen. iv) Skicka via e-mail m-filerna (med ditt namn och uppgift i filnamn) till din klasslärare genast efter redovisning Uppgift 1. ( Denna uppgift ska du göra innan första labbövningen) A) Ladda ner MATLAB från webbsidan KTH Program Distribution: http://www.kth.se/student/support/kth-it/mjukvarudistribution/progdist B) Starta Matlab och läs Help> Exemples >Getting Started C) Allmänt: Observera även att kommandot help följt av funktionsnamn ger hjälptext. T.ex help sqrt ger hjälpinformation om funktionen sqrt (kvadratroten ur). Uppgift 2. Testa och förklara hur nedanstående kommandon fungerar. Gör följande: 1. Öppna File , new, script. 2. Skriv och exekvera kommandona genom att klicka på ► run . 1 2 Tips. Exekvera ofta , efter några kommandon, så att du tidigt upptäcker eventuella fel. 3. Skriv förklaringar efter tecken %. Spara script som Uppgift2 ) 4. Slutligen, när allt fungerar, klicka på knappen PUBLISH , ►Publish för att få ett snyggt html- arbetsblad med kommandon och svar. ( Du kan välja mellan html, doc och pdf-fil i " Edit publishing options " som fins i i menyn under ►Publish..) ” Publish” finns också som kommando (funktionsanrop). %% A) ENKLA BERÄKNINGAR % Anmärkning: Två procenttecken i början av raden definierar ett nytt avsnitt ("section" ) % Detta är användbart om man vill presentera (" publicera ") arbetet % eller om man vill exekvera endast ett avsnitt . clc % Förklaring: clc= Clear Command Window , rensar kommandofönstret clear % Förklaring: clear raderar alla variabler format compact % tätare utskrift , om man vill p=5 % p tilldelas värdet 5 q=3 r1=p+q a=1, b=2 % ( använd a och b från personnummer) m1=sin(a)+cos( b^3) m2=log(3) % ln3 m3=log10(11) % lg(11) m4 = sqrt(a+b +23.8) m5=abs(3*a-57) s=' Jag studerar ' % s tilldelas text ' Jag studerar ' t= ' på KTH ' v= [s,t] %% B) VEKTORER (LISTOR) OCH MATRISER (TABELLER) L=[24 23 45 32 34 21 33] % definierar en vektor (en numerisk lista) L(3) L(3) + 2*L(5) A=[1 2 3 4; 22 33 44 55; 121 122 123 124] A(2,3) A(3,1) v=5:0.5:8 % Förklaring: v=a:h:b skapar vektorn a, a+h, a+2h, a+3h, ….b w=7:0.5:10 z=sin(w) % Anmärkning: sin(w) tillämpas elementvis % Notera att z blir en vektor om w är det. f=v.*w % Förklaring Operator .* står för elementvis multiplikation : Varje element i x multipliceras med motsvarande element i y. För plus och minus behövs ej operator för elementvis addition och subtraktion. g=v.*v k=v.^2 m=w.^3 n=2*v+3*w p=cos(v) %% C) NÅGRA ENKLA PLOT-exempel x=0:0.1:4*pi ; % Om vi avslutar ett kommando med semikolon då exekveras kommandot % men resultat visas inte på skärmen. y=sin(x); figure(1) % plottar grafen i fönstret figure(1) plot(x, y) title('sin(x)') xlabel('x i radianer'); 2 3 ylabel('Funktionens värde'); %% figure(2) % plottar grafen i fönstret figure(2) t=0:0.1:6.28; z=cos(t); plot(t , z ) grid on % rutnät title('cos(x)') %% Flera grafer i samma koordinatsystem figure(3) % För att plotta flera grafer i samma koordinatsystem ( samma fönster) % använder vi kommandot "hold on" x=-2:0.1:2; y=2*x; z=sin(x); plot(x,y) hold on plot(x,z) hold off %% Ett exempel på clc clear en parametrizerad kurva t=0:0.01:2*pi; x=4*cos(t); y=3*sin(t); figure(4) plot(x,y) grid on axis equal %Förklara. title('Ellipsen med halvaxlarna 4 och 3') %% Ett exempel på "stem plot" x = 0:0.1:4; y = sin(x.^2).*exp(-x); figure(5) stem(x,y) xlabel('Tid') ylabel('Signal') Spara script som Uppgift2 (Matlab automatiskt lägger till m som "efternamn"). Dvs, ”Uppgift2.m” blir namnet istället för ”Uppgift2” där ”efternamnet” anger att filtypen är en Matlabfil, ett s.k. script. Uppgift 3. Öppna en ny m-fil (File , new, script ) A) Ange ett eget exempel med for … end slinga (loop). B) Ange ett eget exempel med if…end satsen. C Ange ett eget exempel med kommandot while. C) Ange ett eget exempel med kommandot rand. D) Ange ett eget exempel med kommandot randi. E) Ange ett eget exempel med kommandot rem 3 4 k + 10 . 2 +1 k =3 Tips. Läs Matlab-hjälp om ovanstående kommandon. Spara som Uppgift4 22 F) Använd for...end slinga för att beräkna summan ∑k Uppgift 4. Öppna en ny m fil (File, new, script ) och skapa lista med N=50+a slumpvalda heltal som ligger mellan 100+a och 159+b med hjälp av följande kommandon: clc % (Clear Command Window) clear a=1 % du ska ange a-värdet från ditt personnummer b=2 % du ska ange b-värdet från ditt personnummer N=50+a R=randi([100+a, 159+b],1,N) % N slumpvalda heltal mellan 100+a och 159+b. A) Beräkna summan av alla tal R(i) som uppfyller 120 < R(i ) ≤ 140 . B) Beräkna summan av alla tal i R som är delbara med 12. C) Hur många sådana tal (delbara med 12) finns i R? Tips. Kommandot rem(x, 12) ger resten då heltal x delas med 12. D) Exekvera och förklara följande plot -kommandot : hist( R,5) Anmärkning: Om vi skriver frekv=hist(R,5) så ritas inget histogram; i stället får vi en vektor "frekv" med frekvenser (för de 5 delintervall av intervallet [Rmin, Rmax] ) Spara script som Uppgift5 Uppgift 5. Symboliska beräkningar. Med Matlab kan vi utföra symboliska beräkningar inom bl. a. algebra och analys, lösa linjära ekvationssystem , lösa vissa ickelinjära system samt lösa några typer av differentialekvationssystem. Viktig: För att kunna utföra symboliska beräkningar måste vi först deklarera alla ingående symboliska variabler, (t ex variabler x1 x2 x3 ...) med kommandot syms x1 x2 x3 ... A) Testa följande exempel: Exempel 6A %% clc clear format compact % tätare utskrift syms x y z % vi deklarerar att x, y och z är symboliska variabler f= (x+y+z)*x % f blir också en symbolisk variabel eftersom den definieras % med hjälp av x, y och z f=expand(f) % utvecklar dvs " expanderar" f f1=subs(f,x,10) % substituerar x=10 i f f2=subs(f,[x,y,z],[10,3,-1]) % substituerar x=10 , y=3 och z=-1 i f %% syms x g=(x^2+x)/x g1=simplify(g) h=sin(x) h1=diff(h,x) % definierar g som funktion av x % förenklar g % deriverar h 4 5 h2=int(h,x) % beräknar h3=int(h,x,0,pi) % beräknar %% figure(1) ezplot(h,[-10,10]) % ezplot (Easy to use function plotter) ritar grafen % till symboliska funktionen h i intervallet [-10,10] %% figure(2) F=x^2+y^2 ezsurf(F, [-1,1],[-2,2]) % Grafen till ytan F=x^2+y^2 där -1<=x<=1 och 2<=y<=2 title('F=x^2+y^2') xlabel('x-axeln') ylabel('y-axeln ') zlabel('F värden') B) Låt f ( x ) = x sin x . Beräkna f ' ( x ) , ∫ π f ( x )dx och ∫ f ( x )dx samt plotta grafen till f (x ) 0 för − 4 ≤ x ≤ 4 . Uppgift 6. Ekvationer. Linjära och några (enklare) icke linjära ekvationer kan man lösa med kommandot solve. Alla ingående variabler måste deklareras som symboliska (t ex syms x y a b) Testa följande exempel clc clear format compact % tätare utskrift syms x p q r ekv1=p*x+q==r sol1=solve(ekv1,x) % löser ekv1 och ger namn sol1 till lösningen %Eler, Matlab2010: ekv1= ’p*x+q=r’ sol1=solve(ekv1,x) %% syms x ekv2=x^2+x+1==0 sol2=solve(ekv2,x) % en andragradsekvation har 2 lösningar %% syms x ekv2=x^3+1==0 sol3=solve(ekv2,x) % en tredjegradsekvation har 3 lösningar %% % Vi har fått tre lösningar som ligger i listan (vektor) sol3. % Lösningarna kan vi plocka på följande sätt: x1=sol3(1), x2=sol3(2), x3 = sol3(3) % Med hjälp av double kan vi få det numeriska värdet av ett tal, t. ex x2n=double(x2) %ger nummeriska värdet av x2 5 6 Uppgift 7. Ekvationssystem. Kommandot solve kan användas för att lösa linjära och några ( enklare) icke linjära ekvationssystem. [y1,...,yN] = solve(ekvationer, variabler) Syntax: A) Gör följande exempel: %% clc clear format compact % tätare utskrift syms x y z ekv1=x+y+2*z==3 ekv2= 2*x+y+z==4 ekv3=2*x+y+3*z==4 % ett linjärt ekv. system med exakt en lösning [X,Y,Z]=solve(ekv1,ekv2,ekv3,x,y,z)% löser systemet S=[X,Y,Z] % lösningen %% syms x y ekv1=x+2*y==5 ekv2= x+2*y==3 %Det är uppenbart att systemet saknar lösning [X,Y]=solve(ekv1,ekv2,x,y) S=[X,Y] lösningen %% syms x y ekv1=x+2*y==5 ekv2= x+2*y==5 % ett linjärt ekv. system med oändligt många lösningar [X,Y]=solve(ekv1,ekv2,x,y) S=[X,Y] % %% % Ett icke linjärt ekv system med två lösningar syms x y ekv1=x^2+y==5 ekv2= x^2-y==3 % ett ICKE linjärt ekv. system [X,Y]=solve(ekv1,ekv2,x,y)% löser systemet S=[X,Y] % två lösningar: Varje par (X(k), Y(k) med samma index är en lösning B) Lös följande linjära ekvationssystem ⎧x + y + z = 6 ⎧x + y = 2 ⎪ ⎪ i) ⎨ x + 2 y + 2 z = 9 ii) ⎨2 x + 2 y = 4 iii) ⎪x + y + 2z = 7 ⎪3x + 3 y = 6 ⎩ ⎩ ⎧x + y + z = 3 ⎪ ⎨x + 2 y + 2z = 5 ⎪2 x + 3 y + 3 z = 2 ⎩ C) Bestäm skärningen mellan planen x + y + z = 3 och x + 2 y + 2 z = 4 D) Bestäm skärningen mellan planen x + y + z = 3 och linjen ( x, y , z ) = ( 2,4,6) + t (1,1,1) . Tips. Beskriv linjen med tre skalära ekvationer. lös därefter system med 4 ekvationer (planets ekvation plus tre linjens ekvationer) . Uppgift 8. I nedanstående el-krets gäller: V1 =24 volt, V2= 12 volt, R1 =10 ohm, R2=15 ohm och R3= 20 ohm. A) Bestäm tre oberoende ekvationer för strömmarna i1, i2 och i3. Tips: Använd Kirchhoffs lagar. B) (Matlab) Lös systemet i A, dvs bestäm strömmarna i1, i2 och i3. 6 7 i1 R1 V1 i2 A B R2 i3 R3 V2 Uppgift 9. . och Öppna File , new, script ( dvs en ny m-fil) och definiera ( skapa) ovanstående matriser A och B. i) Beräkna A(3,2) +B(1,4) , A+B, AB, BA , AT (transponat till A) , A3 +B4, det(A) , det(A+B) och (A+B)-1 om A+B är inverterbar. ii) Bestäm X ur matrisekvationen AX = C–BX , ( välj själv en C matris) Tips. Bestäm först (papper och penna) ett uttryck för X och därefter beräkna X med Matlab. Tips: I Matlab skrivs matrisinvers inv(A) och transponat A'. Uppgift 10. Låt A=(1,2,2), B=(a+2,4,3), C=(a+3,7,3), D=(a+2,4,4) vara fyra punkter i R3. → → → a) Bestäm vektorerna u = AB , v = AC och w = AD D b) Beräkna vinkeln mellan u och v w ( i både radianer och grader) C c) Beräkna arean av triangeln ABC v d) Beräkna volymen av pyramiden ABCD A Tips. Skalärprodukten mellan u och v beräknas med dot(u,v), vektorprodukten mellan u och v beräknas med cross(u,v), längden av en vektor w beräknas med norm(w). Uppgift 11. Definition 1. (Linjär avbildning) 7 u B 8 En funktion T från Rn (n-dimensionella vektorer) till Rm (m-dimensionella vektorer) säges vara en linjär avbildning ( linjär funktion eller linjär transformation) om följande två villkor är uppfyllda Villkor 1. T( u + v ) = T( u ) + T( v ) Villkor 2. T(k u ) = kT( u ) för varje skalär k och alla . T ex. rotationen kring origo, spegling i en linje, spegling i ett plan i R3,projektionen av en vektor på en linje, projektionen av en vektor på ett plan i R3 är linjära avbildningar. En linjär avbildning från Rn till Rm kan definieras med hjälp av en m × n matris A genom: r r y = Ax . Exempel: ⎡1 1 ⎤ ⎡1 1⎤ r r r r Låt A= ⎢2 2⎥ . Då är y = Ax dvs y = ⎢2 2⎥ x en linjär avbildning som avbildar ⎢ ⎥ ⎢ ⎥ ⎢⎣3 1⎥⎦ ⎢⎣ 3 1⎥⎦ r r tvådimensionella vektorer x på tredimensionella vektorer y . ⎡1 1 ⎤ ⎡3⎤ 1 ⎡ ⎤ r ⎡1 ⎤ r ⎢ Exempelsvis vektorn x = ⎢ ⎥ avbildas på y = 2 2⎥ ⎢ ⎥ = ⎢6⎥ ⎢ ⎥ 2 ⎢ ⎥ ⎣ 2⎦ ⎢⎣ 3 1⎥⎦ ⎣ ⎦ ⎢⎣5⎥⎦ → Anmärkning: Eftersom en punkt P tillhörande ortvektor OP har samma koordinater, istället att säga vektorn (x1, x2,...xn) kan vi säga punkten (x1, x2,...xn). ⎡cos v − sin v ⎤ r r Din uppgift. Låt A = ⎢ . Avbildningen y = Ax beskriver rotationen vinkeln v ⎥ ⎣ sin v cos v ⎦ 3π . kring origo. Låt v = 4 A) Bestäm bilderna av punkterna P=(1, 1), Q= (3, a+6), R=(5,3) , (beteckna bilderna med K, L och M). B) Rita trianglarna PQR och KLM i samma koordinatsystem. Uppgift 12. Definition (Egenvektor och egenvärde) Låt A vara en kvadratisk matris dvs en matris av typ n × n . r Om det finns en nollskild vektor v och en skalär λ så att r r Av = λ v då kallas (**) matrisens egenvektor och talet λ kallas matrisens egenvärde. r r Anmärkning 1. En egenvektor v parallell med sin bild Av (enligt (**) ) r Anmärkning 2. Nollvektorn 0 godkänns alltså INTE som egenvektor till en kvadratisk matris A. Däremot talet 0 kan vara ett egenvärde till A. Detta ät fallet om för någon r vektor v gäller r r r r Av = 0 ⋅ v dvs Av = 0 8 9 Anmärkning 3. (Matlab) Egenvärden till en kvadratisk matris A kan vi bestämma med hjälp av kommandot d=eig(A). Element i (vektorn) d är matrisens egenvärde. Egenvektorer kan man få med hjälp av [V,D] = eig(A) Kolonner i matrisen i V är matrisens (normerade) egenvektorer, elementen på diagonalen i D är matrisens egenvärden. . Din uppgift. Bestäm egenvärden och motsvarande egenvektorer till ⎡ 0 1 0⎤ ⎡0 1 ⎤ ii ) B = ⎢ − 1 2 0⎥ . i) A = ⎢ ⎥. ⎢ ⎥ 1 0 ⎣ ⎦ ⎣⎢ 1 2 2⎦⎥ iii)Vad är den geometriska tolkningen av de linjer som egenvektorerna bildar i uppgift (i)? Uppgift 13. Utskriftsformat. Läs hjälpavsnitt i Matlab om fprintf och därefter förklara följande utskriftsformat: clc clear %% Några exempel med fprintf R =23.456789876 A=R^2*pi fprintf('Arean är lika med %20.2f \n',A) % ovanstående kommandot blandar text och tal i utskriften. %Skriver ut A med 2 decimaler och totalt 20 platser % \n betyder att utskrift forsätter i en ny rad %% fprintf('Arean är lika med %14.8E \n',A) %% fprintf('Om radien R är lika med %8.3f så är cirkelns area lika med %8.3f \n',R,A) %% fprintf(' Radien R= %10.3E. Arean= %10.3E \n',R,A) %% Komplexa tal och fprintf z = 2.3000 - 3.4000i; fprintf( 'z= %s \n' , num2str(z) ) % omvandlar z till textvariabel (string) Uppgift 14. Extra uppgift. ( Endast för de som inte redovisar i tid uppgifter 1-13) Kommandot randi([imin, imax],m,n) genererar en matris av typ m × n med slumpvis valda tal som ligger mellan imin och imax. A) Skapa en matris med följande kommandon a=1, b=2 % använd dina parametrar a och b A=randi([100+a, 200+b],23,44) B) Bestäm summan av alla tal A(j,k) som uppfyller 130 < A(j,k) < 180. C) Hur många sådana tal finns? 9