• No results found

Inlämningsuppgift 1, HF1006. (MATLAB)

N/A
N/A
Protected

Academic year: 2021

Share "Inlämningsuppgift 1, HF1006. (MATLAB)"

Copied!
10
0
0

Loading.... (view fulltext now)

Full text

(1)

Sida 1 av 10

INLÄMNINGSUPPGIFT 1 (MATLAB) Linjär algebra och analys

Del1: Linjär algebra Kurskod: HF1006 Skolår: 2020/21

Redovisas under en av de tre schemalaggda redovisningstillfällen i slutet av P1.

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.

Två schemalaggda labbövningar ( i P1) är lärarledda lektioner i Matlab.

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 slutligen redovisar

uppgifterna under en av de tre schemalaggda redovisningstillfällen i P1.

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 1-14 bokar du via e-mail en tid för redovisning hos din klasslärare ( för Lin. Alg. delen).

iii) Du redovisar (med hjälp av din laptop) uppgifterna genom att förklara dina lösningar och visa att dina Matlab-koder fungerar.

iv) Efter godkänd redovisning laddar du upp på Canvas dina lösningar dvs m-filerna samlade i en mapp.

Du behöver inte lämna in någon pappersversion av lösningen.

Uppgift 1. ( Denna uppgift ska du göra innan första labbövningen)

A) Ladda ner MATLAB från webbsidan KTH Programvarunedladdning (använd Google för att hitta sidan eller gå direkt till

https://www.kth.se/student/kth-it-support/software/download

B) Starta Matlab och kolla några videos i Home>Help> Exemples ( t ex Getting Started, Working in The Development Environment,…)

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. Klicka på EDITOR , new, script.

2. Skriv och exekvera kommandona genom att

metod 1 (bättre): klicka på PUBLISH , och därefter ►Publish Du får ett snyggt html- arbetsblad med kommandon och svar.

(2)

Sida 2 av 10

metod 2: klicka på ► run . Då får du resultat i Command Window

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. Använd %% (två gånger % och blank därefter) för att börja ett nytt avsnitt

5. Slutligen, när allt fungerar, klicka på knappen PUBLISH , (och därefter ►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 menyn under ►Publish..) ” Publish” finns också som kommando (funktionsanrop).

%% A) ENKLA BERÄKNINGAR

% Anmärkning: Två procenttecken och blank därefter 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=3r1=10*p+2*q

a=1, b=2 % ( använd a och b från ditt personnummer) m1=sin(2*a+3*b)+cos(a^2+ b^3)

m2=log(5.23) % ln(5.23) m3=log10(11.56) % lg(11.56) m4 = sqrt(a+b +23.8)

m5=abs(3*a-57)

m7=asin(a+0.5) m8=acos(b+0.5)

m9=atan(a+1.23) % arctan(a+1.23) i radianer m10=acot(a+1.23) % arccot(a+1.23)

m11=asind(0.5) % arcsin(0.5), svaret är i grader (degrees) m12=acosd(0.5)

m13=atand(1)

m14=acotd(0) m15=atan2(b+3,23)

% atan2(y,x) ger den polära koordinaten till punkten (x,y) i radianer.

% Resultat ligger i intervallet (-pi, pi]

% Notera att vi anger omvänt ordning mellan x och y i kommandot atan2(y,x) m16=atan2d(1,-1)

% atan2(y,x) ger den polära koordinaten till punkten (x,y) i grader (degrees).

% Resultat ligger i intervallet (-180, 180]

% Notera att vi anger omvänt ordning mellan x och y i kommandot atan2d(y,x) m17=atan2d(-1,-1)

m17=atan2d(2,0) m17=atan2d(0,-3)

s=' Jag studerar ' % s tilldelas text ' Jag studerar ' t= ' på KTH '

v= [s,t]

(3)

Sida 3 av 10

%% B) VEKTORER (LISTOR) OCH MATRISER (TABELLER).

% Elementvisa operationer .* .^ ./

L=[328 462 235 124 123 145 654 132 234 221 333] % definierar en vektor

% (dvs, en numerisk lista)

max(L) min(L)

L(3)L(3) + 2*L(5)

A=[25 33 44 55; 11 21 91 41; 121 12 13 124] % en matris (=tabell)av typ 3x4.

A(2,3) A(3,1) A(1:2,1:4) A(1:2,3:4)

K1=max(A) % beräknar största element i varje kolonn

mA=max(max(A)) % beräknar största element i den hela matrisen.

v=5:0.5:9

% Förklaring: v=a:h:b skapar vektorn a, a+h, a+2h, a+3h, ….b w=4:0.5:8

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 v multipliceras med motsvarande element i w. För plus och minus behövs ej operator för elementvis addition och subtraktion.

g=v.*v h1=1./L H2=L.^(-1) k=v.^2 m=w.^3 n=2*v+3*w p=cos(v)

%% C) NÅGRA ENKLA PLOT-exempel Innan du fotsätter, läs först stencilen

http://ingforum.haninge.kth.se/armin/ALLA_KURSER/matlab/PLOT2D.pdf

x=0:0.1:4*pi ;

% Om vi avslutar ett kommando med semikolon då exekveras kommandot

% men resultat visas inte på skärmen.

y=4*sin(x);

figure(1) % plottar grafen i fönstret figure(1) plot(x, y)

title('4sin(x)')

xlabel('x i radianer');

ylabel('Funktionens värde');

%% figure(2) % plottar grafen i fönstret figure(2) t=0:0.1:6.28;

z=5*cos(t);

plot(t , z ) grid on % rutnät title('5cos(x)')

(4)

Sida 4 av 10

%% 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=-3:0.1:3; % Skapar en lista med x-värden.

y=3*x; % Beräknar tillhörande y-värden.

z=sin(x); % Beräknar tillhörande z-värden.

plot(x,y) hold on plot(x,z) hold off

%% Ett exempel på en parametriserad kurva clcclear

t=0:0.01:2*pi;

x=4*cos(t);

y=3*sin(t);

figure(4) plot(x,y) grid on axis equal

title('Ellipsen med halvaxlarna 4 och 3')

%% Ett exempel på "stem plot"

x = 0:0.1:3;

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.

=============================================================

Innan du börjar med Uppgift 3, läs först stencilen

http://ingforum.haninge.kth.se/armin/ALLA_KURSER/matlab/IF_FOR_WHILE.pdf 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.

D) Ange ett eget exempel med kommandot rand.

E) Ange ett eget exempel med kommandot randi.

F) Ange ett eget exempel med kommandot rem

G) Använd for...end slinga för att beräkna summan 15 22

3

3 2 10

3 2

k

k k

k k

=

+ +

+ −

.

(5)

Sida 5 av 10

Tips. Läs Matlab-hjälp om ovanstående kommandon.

Spara som Uppgift3 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([95+a, 259+b],1,N) % N slumpvalda heltal mellan 95+a och 259+b.

A) Beräkna summan av alla tal R(i) som uppfyller 110<R(i)≤180. 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 Uppgift4

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^3+y^2+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,5,-1]) % substituerar x=10 , y=5 och z=-1 i f

%%syms x

g=(x^2+5*x+6)/(x+2) % definierar g som funktion av x g1=simplify(g) % förenklar g

h=sin(x)

h1=diff(h,x) % deriverar h

h2=int(h,x) % beräknar

h )(x dx

(6)

Sida 6 av 10 h3=int(h,x,0,pi) % beräknar

0πh( dxx)

%%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=sin(x^2+y^2)

ezsurf(F, [-1,1],[-2,2]) % Grafen till ytan F=sin(x^2+y^2) där -1<=x<=1 och -2<=y<=2

title('F=sin(x^2+y^2)') xlabel('x-axeln')

ylabel('y-axeln ') zlabel('F värden')

B) Låt f x( ) 2 cos(3= x x+ . Beräkna 2) f ('x),

f )(x dxoch

π

0

) ( dxx

f samt plotta grafen till )

(x

f 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

clcclear

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

%Eller, 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+8==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

(7)

Sida 7 av 10

Uppgift 7. Ekvationssystem. Kommandot solve kan användas för att lösa linjära och några ( enklare) icke linjära ekvationssystem.

Syntax: [y1,...,yN] = solve(ekvationer, variabler) 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

% notera att Matlab ger endast en av oändlig 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 och ange antalet lösningar som du får med Matlab.

i) 



= + +

= + +

= + +

7 2

6 9 2 2

z y x

z y x

z y x

ii)





= + +

= + +

= + +

2 3 7 2

4 4

1 2 3

z y x

z y x

z y x

iii)





= + +

= + +

= + +

3 3 3 4

1 2 2 2

2 2

z y x

z y x

z y x

C)

c1) (Matlab) Bestäm skärningen mellan planen x+ y+z=3och x+2y+2z =4. c2) Lös samma problem med ” papper och penna” och jämför med c1.

D) Bestäm skärningen mellan planen x+2y+2z=4och linjen (x,y,z)=(2,4,4)+t(11,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 =12 volt, V2= 10 volt, R1 =10 ohm, R2=5 ohm och R3= 15 ohm.

(8)

Sida 8 av 10

D

C

B A

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.

R1 V1

R2

R3 V2

i1

i2 i3

A B

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(2,3) , A+B, AB, BA , AT (transponatet till A) , A5, det(A) , det(3A+2B) 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 transponatet som A'.

Uppgift 10. Låt A=(1,2,2), B=(a+2,4,3), C=(a+4,8,4), D=(a+3,5,5) vara fyra punkter i R3.

a) Bestäm vektorerna u= AB , v= AC och w= AD b) Beräkna vinkeln mellan v och w

( i både radianer och grader) c) Beräkna arean av triangeln ABC

d) Beräkna volymen av pyramiden ABCD 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).

(9)

Sida 9 av 10

Uppgift 11.

Definition 1. (Linjär avbildning)

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(ku)= 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:

y = . Ax Exempel:

Låt A=





1 3

2 2

1 1

. Då är y = dvs Axyx





= 1 3

2 2

1 1

en linjär avbildning som avbildar

tvådimensionella vektorer xpå tredimensionella vektorer y .

Exempelsvis vektorn 

 

= 2

x 1 avbildas på





=

 





=

5 6 3 2 1 1 3

2 2

1 1 y

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).

Din uppgift. Låt

 

 −

= v v

v v

cos sin

sin

A cos . Avbildningen y = beskriver rotationen vinkeln v Ax kring origo. Låt 2

v

= .

A) Bestäm bilderna av punkterna P=(2, 2), Q= (3, a+4), 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. Om det finns en nollskild vektor v och en skalär λ så att

v v

A =λ  (**) då kallas 𝑣𝑣⃗ matrisens egenvektor och talet λ kallas matrisens egenvärde.

Anmärkning 1. En egenvektor v är parallell med sin bild Av (enligt (**) ) 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 vektor v gäller

(10)

Sida 10 av 10

v v

A=0⋅ dvs Av =0

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

i) 

 

= 2 1

4

A 2 . ii )





=

4 4 2

0 4 2

0 2 0

B .

Uppgift 13. Utskriftsformat. Läs hjälpavsnitt i Matlab om fprintf och därefter förklara följande utskriftsformat:

clcclear

%% 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 % använd dina parametrar a och b

A=randi([120+2a, 210+3b],44,55)

B) Bestäm summan av alla tal A(j,k) som uppfyller 170 < A(j,k) < 200.

C) Hur många sådana tal finns?

References

Related documents

Townsend (2002), beskriver också det personliga affektionsvärdet till mobiltelefonen, och resonerar kring huruvida det handlar om en personlig anknytning till produkten i sig,

The results indicate that asking the question about the right to publish a user’s review on the event holder’s website does not significantly affect the user’s willingness to share

By employing smart phones as mobile proxies to integrate SSNs into participatory sensor networks, sensing services both from stationary sensors in the SSNs and mobile sensors on

The different protocols have a similar data consumption at zero loss but MQTT-sn have a slightly higher rate of increase under loss than the other two protocols have, whereas AMQP

När du gjort färdigt uppgifterna 1-7 bokar du via e-mail en tid för redovisning hos din klasslärare ( för Analys-delen). iii) Du redovisar (med hjälp av din laptop)

Främst är det kommandon i tre kommandopaket som används i kursen: Control Toolbox, Polynomial Toolbox samt Statistics Toolbox.. 1

[r]

Evidence from managing scientific paper writing using the Oobeya room shows that proper management of research will actually create better research that is more