Script Language Introduction - AMO
Introduction to Script (from Ducket, J, "Javascript and Jquery, interactive front-end web development", 2014)
Weeks 42 and 43 will be intro to Script language. Weeks 44-46 will be applied Matlab examples. The final project is mandatory to pass the course.
MatLab Tutorial - AMO
MatLab Tutorial. All exercises from this page expected by week 43.
Class Power-Points at Fronter. Some of them can be found here.
More info at the University of British Columbia (Guide to MATLAB), Eindhoven University of Technology Course or The University of Edinburgh (An interactive introduction to MATLAB)
.PDF file from Northwestern University
Øvingsoppgåver i Matlab - Part I
Contents
- Oppgave 1 Reknartar
- Oppgave 2 Lage variablar
- Oppgave 3 Lage variablar basert på andre variablar
- Oppgave 4 Lage vektorar
- Oppgave 5 Operasjonar på vektorar
- Oppgave 6 Lage kolonnevektorar
- Oppgave 7 Alternative måtar å lage vektorar på
- Oppgave 8 Lage matriser
- Oppgave 9 Operasjoner med matriser
- Oppgave 10 Plukke element frå ei matrise
- Oppgave 11 Bygge matriser - løyse likningsystem
- Oppgave 12 Fleire matriseoppgaver 1
- Oppgave 13 Fleire matriseoppgaver 2
- Oppgave 14 Fleire matriseoppgaver 3
- Oppgave 15 Rekneoperasjonar på matriser
- Oppgave 16 Bruk av vektorar (gjerne i eit script)
- Oppgave 17 Løys følgande likningsystem
- Oppgave 18 Løys følgande likningsystem frå Matte 1
- Oppgave 19 Undersøk om system av likninger er konsistent
- Oppgave 20 Jobbe med augmenterte matriser
- Oppgave 21 Finn den generelle løysinga på følgande augmenterte matriser
- Oppgave 22 Finn reaksjonskreftene frå eit mekanisk system (bru)
- Oppgave 23 Bruke innbygde funksjonar, plotte resultat
- Oppgave 24 Bruke standard statistiske modellar
- Oppgave 25 Rekne ut sannsynet for at ein rekrutt er høgare enn 1.95m
- Oppgave 26 Rekne ut sannsynet for ein person sin IQ
Oppgave 1 Reknartar
2+2 % addisjon 2*2 % multiplikasjon sqrt(36) % innebygde funksjonar 3*sqrt(3)/4+(1/12-1/(5*2^5)-1/(28*2^7)-1/(72*2^9)) 3+1/60*(8+(2*3)/(7*8*3)*(13+(3*5)/(10*11*3)*(18+(4*7)/(13*14*3))))
ans = 4 ans = 4 ans = 6 ans = 1.3758 ans = 3.1416
Oppgave 2 Lage variablar
a=2; % semikolon for å stoppe Matlab i å skrive resultatet til skjerm
b=3.14159;
a+b
ans = 5.1416
Oppgave 3 Lage variablar basert på andre variablar
c=a*2
d=cos(b)
e=c+d
r=5
O=2*pi*r % pi er ein innebygd variabel i Matlab
A=pi*r^2
x=0
curve_f=sin(x)+cos(x/3+1)
c = 4 d = -1.0000 e = 3.0000 r = 5 O = 31.4159 A = 78.5398 x = 0 curve_f = 0.5403
Oppgave 4 Lage vektorar
vector_1=[1 2 3 4 5 6 7 8 9 10] % linjevektor vector_2=[12 13 14 15 16 17 8767826264] vc=vector_1' % Transponere linjevektor % Tekststrengar vert lagra som vektorar i Matlab % Skal du kombinere tekststrengar må du kombinere dei slik du vil kombinere % vektorar. First_string='My name is '; Second_string='"Whatever_your_name_is"'; text=[First_string Second_string]
vector_1 = 1 2 3 4 5 6 7 8 9 10 vector_2 = 1.0e+09 * 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 8.7678 vc = 1 2 3 4 5 6 7 8 9 10 text = My name is "Whatever_your_name_is"
Oppgave 5 Operasjonar på vektorar
vec_1=[1 2 3] vec_2=[7 8 9] vec_3=[vec_1 10] % forlenge ein vektor med ekstra element vec_1+10 vec_1+vec_2 vec_1-vec_2 times(vec_1,vec_2) % multiplisere to vektorar element for element vec_1.*vec_2 % multiplisere to vektorar element for element vec_2c=vec_2' % transponere linjevektor vec_2 vec_1*vec_2c % multiplisere to vektorar
vec_1 = 1 2 3 vec_2 = 7 8 9 vec_3 = 1 2 3 10 ans = 11 12 13 ans = 8 10 12 ans = -6 -6 -6 ans = 7 16 27 ans = 7 16 27 vec_2c = 7 8 9 ans = 50
Oppgave 6 Lage kolonnevektorar
colu_1=[1; 2; 3; 4; 5] colu_2=[23; 24; 25; 26] colu_3=['aa';'bb';'cc';'dd']
colu_1 = 1 2 3 4 5 colu_2 = 23 24 25 26 colu_3 = aa bb cc dd
Oppgave 7 Alternative måtar å lage vektorar på
z=zeros(5,1) % kolonnevektor med nullar, 5 rekker 1 kolonne zz=ones(1,5) % linjevektor med 1-tall, 1 rekke 5 kolonner zzz=[0:1:10] % linjevektor frå 0 til 10, med step på 1 zzzz=linspace(0,10,20) % linjevektor frå 0 til 10, 20 like intervall
z = 0 0 0 0 0 zz = 1 1 1 1 1 zzz = 0 1 2 3 4 5 6 7 8 9 10 zzzz = Columns 1 through 7 0 0.5263 1.0526 1.5789 2.1053 2.6316 3.1579 Columns 8 through 14 3.6842 4.2105 4.7368 5.2632 5.7895 6.3158 6.8421 Columns 15 through 20 7.3684 7.8947 8.4211 8.9474 9.4737 10.0000
Oppgave 8 Lage matriser
matr_1=[1 2 3; 4 5 6; 7 8 9] matr_2=['lala' 'lele';'lili' 'lolo';'lulu' 'lålå'] a=[1 2]; % linjevektor b=[3 4]; % linjevektor c=[5; 6]; % kolonnevektor d=[a;b]; % lage matrise av to linjevektorar % bygge vidare på matrisene: e=[d c]; % korleis ser denne ut? f=[[e e];[a b a]]; % Enn denne?
matr_1 = 1 2 3 4 5 6 7 8 9 matr_2 = lalalele lililolo lululålå
Oppgave 9 Operasjoner med matriser
matr_1+10 sin(matr_1) matr_1' % transponering av matriser inv(matr_1) % invertering av matriser I=matr_1*inv(matr_1) % Identitetsmatrisen A*1/A Element=matr_1.*matr_1 % multiplisere to matriser, element for element
ans = 11 12 13 14 15 16 17 18 19 ans = 0.8415 0.9093 0.1411 -0.7568 -0.9589 -0.2794 0.6570 0.9894 0.4121 ans = 1 4 7 2 5 8 3 6 9 Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.541976e-18. ans = 1.0e+16 * -0.4504 0.9007 -0.4504 0.9007 -1.8014 0.9007 -0.4504 0.9007 -0.4504 Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.541976e-18. I = 2 0 2 8 0 0 16 0 8 Element = 1 4 9 16 25 36 49 64 81
Oppgave 10 Plukke element frå ei matrise
matr_1(1,2) % Plukker eit element '2' matr_1(8) % Plukker eit element '6' , ved å telle frå (1,1) matr_1(1:3,2) % Plukker dei tre første rekkene, og talet i kolonne 2 matr_1(3,:) % Plukker tredje rekke, alle kolonnene
ans = 2 ans = 6 ans = 2 5 8 ans = 7 8 9
Oppgave 11 Bygge matriser - løyse likningsystem
% x + 2y = 6 A x = B % x - y = 0 % a=1;b=2;c=1;d=-1; % koeffisienter på venstre side e=6;f=0; % høgre side av likskapsteiknet A=[a b;c d]; B=[e;f]; x=inv(A)*B % A^(-1) = inv(A) x=A\B % Alternative matrise-divisjon
x = 2 2 x = 2 2
Oppgave 12 Fleire matriseoppgaver 1
% 5x = 3y - 2z + 10 -> 5x - 3y + 2z = 10 % 8y + 4z = 3x + 20 -> -3x +8y + 4z = 20 % 2x + 4y - 9z = 9 -> 2x + 4y - 9z = 9 A=[5 -3 2;-3 8 4;2 4 -9]; B=[10; 20; 9]; x=A\B;
Oppgave 13 Fleire matriseoppgaver 2
% Lag følgande matriser: % A=[12 17 3 4] % B=[5 8 3;1 2 3; 2 4 6] % C=[22;17;4] A=[12 17 3 4]; B=[5 8 3;1 2 3; 2 4 6]; C=[22;17;4]; % a) La x1 vere andre kolonne i A % b) La x2 vere tredje kolonne i B % c) La x3 vere tredje rekke i B % d) La x4 vere første tre variabler i A som første linje % og la B vere dei neste tre rekkene % a) x1=A(:,2) % b) x2=B(:,3) % c) x3=B(3,:) % d) x4=[A(1:3);B]
x1 = 17 x2 = 3 3 6 x3 = 2 4 6 x4 = 12 17 3 5 8 3 1 2 3 2 4 6
Oppgave 14 Fleire matriseoppgaver 3
% Gitt matrisa % A = 1 3 2 % 2 1 1 % 3 2 3 A=[1 3 2; 2 1 1; 3 2 3]; % Korleis kan du lage matrisa % B = 3 2 % 2 1 B=[A(1,2:3);A(2,1:2)]
B = 3 2 2 1
Oppgave 15 Rekneoperasjonar på matriser
A=[1 2 3;2 2 2;-1 2 1]; B=[1 0 0;1 1 0;1 1 1]; C=[1 1;2 1;1 2] % prøv følgande operasjonar: A+B,A+C,B-A,C-B,A*B,B*A,A*C,C*A,A.*B %
C = 1 1 2 1 1 2
Oppgave 16 Bruk av vektorar (gjerne i eit script)
dates=[1015 1066 1660 1814 1905 2014]
dates=[1015 1066 1660 1814 1905 2014];
sum_all=sum(dates)
how_many_dates=length(dates)
average_dates=sum_all/how_many_dates
disp('The average is: ')
disp(average_dates)
dates = 1015 1066 1660 1814 1905 2014 sum_all = 9474 how_many_dates = 6 average_dates = 1579 The average is: 1579
Oppgave 17 Løys følgande likningsystem
% -12x + y = 3 % x + y = 10 % A=[-12 1;1 1]; B=[3; 10]; x=A\B % Matrisedivisjon x=inv(A)*B % Alternativ % % 5x + 3y - z = 10 % 3x + 2y + z = 4 % 4x -y + 3z = 12 A=[5 3 -1;3 2 1;4 -1 3];B=[10;4;12]; x=A\B % % x1 - 2x2 - x3 + 3x4 = 10 % 2x1 + 3x2 + x4 = 8 % x1 - 4x3 - 2x4 = 3 % -x2 + 3x2 + x4 = -7 A=[1 -2 -1 3;2 3 0 1;1 0 -4 -2;-1 3 0 1];B=[10;8;3;-7]; x=A\B % % -a + 4b -6c = pi % 8a + b = 2 % a*cos(pi/6) - c*exp(2.3) = 0 A=[-1 4 6;8 1 0;cos(pi/6) 0 -exp(2.3)];B=[pi; 2; 0];
x = 0.5385 9.4615 x = 0.5385 9.4615 x = 3.1613 -2.2581 -0.9677 x = 5.0000 -1.0000 -0.0000 1.0000
Oppgave 18 Løys følgande likningsystem frå Matte 1
% x1 + 7x2 = 4 % -2x1 - 9x2 = 2 A=[1 7;-2 -9]; B=[4;2]; x=A\B % x1 - 3x2 = 4 % -3x1 + 9x2 = 8 A=[1 -3;-3 9]; B=[4;8]; x=A\B % x2 + 5x3 = -4 % x1 + 4x2 + 3x3 = -2 % 2x1 + 7x2 + x3 = -1 A=[0 1 5;1 4 3;2 7 1]; B=[-4;-2;-1]; x=A\B
x = -10 2 Warning: Matrix is singular to working precision. x = Inf Inf Warning: Matrix is singular to working precision. x = NaN -Inf Inf
Oppgave 19 Undersøk om system av likninger er konsistent
% dvs. at likningsystemet har minst ei løysing % determinanten til koeffisientmatrisa må då vere ulik null % % % -2x1 - 3x2 + 4x3 = 5 % x2 - 2x3 = 4 % x1 + 3x2 - x3 = 2 A=[-2 -3 4;0 1 -2;1 3 -1]; % A=koeffisientmatrisa det(A) % Eksisterer determinanten til A?
ans = -8
Oppgave 20 Jobbe med augmenterte matriser
% Finn den reduserte trappeforma av følgande augmenterte matriser % (redusert trappeform = reduced row eccehlon form, rref) % % Augmentert matrise er Koeffisientmatrisa + høgresida % % C = [A B] C1=[1 2 3 4;5 6 7 8;6 7 8 7]; C2=[1 3 0 0 3;0 0 1 0 0;0 0 0 0 0;0 0 0 3 1]; % Har desse likningsystema noko løysing? R1=rref(C1) % Siste linje: 0 0 0 1 betyr at 0x=1 (ingen løysing) R2=rref(C2) % Siste linje: 0 0 0 0 0 betyr at 0=0 (ingen løysing) %
R1 = 1 0 -1 0 0 1 2 0 0 0 0 1 R2 = 1.0000 3.0000 0 0 3.0000 0 0 1.0000 0 0 0 0 0 1.0000 0.3333 0 0 0 0 0
Oppgave 21 Finn den generelle løysinga på følgande augmenterte matriser
C1=[1 0 2 5;2 0 3 6]; C2=[0 3 6 9;-1 1 -2 -1]; % R1=rref(C1) % x1=-3,x2=fri,x3=4 R2=rref(C2) % x1=4-4x3,x2=3-2x3,x3=fri
R1 = 1 0 0 -3 0 0 1 4 R2 = 1 0 4 4 0 1 2 3
Oppgave 22 Finn reaksjonskreftene frå eit mekanisk system (bru)
% % $$\sum F_x=0 \qquad \sum F_y=0 \qquad \sum M=0$$ % $F_{bx} + F_2 =0 \quad F_a+F_{by}+F_1=0 \quad 6F_a+4F_1+2F_2=0$ % $$F_{bx}=5 \quad F_a+F_{by}=15 \quad 6F_a=15 \cdot 4+5 \cdot 2$$ % C=[0 1 0 5;1 0 1 15;6 0 0 70]; R=rref(C) A=[0 1 0;1 0 1;6 0 0]; B=[5;15;70]; x=A\B
R = 1.0000 0 0 11.6667 0 1.0000 0 5.0000 0 0 1.0000 3.3333 x = 11.6667 5.0000 3.3333
Oppgave 23 Bruke innbygde funksjonar, plotte resultat
x=[0:pi/12:2*pi]; % Lage argumentvektor A=2;B=3; % Lage amlitudeverdiar f_x=A.*sin(x); % Lage funksjonsverdi g_x=B.*cos(x); % Lage fleire funksjonsverdiar plot(x,f_x) % Plotte sinus-funksjon hold on % bevare plottet til neste plott plot(x,g_x) % Plotte cosinus-funksjon hold off grid on
Oppgave 24 Bruke standard statistiske modellar
x = -4:0.1:4; % vektor med x-veridar y = normpdf(x); % vektor med y-verdiar plot(x,y,'r-'); % plot med raud linje xlabel('x'); % Beskrivelse på x-aksen ylabel('density'); % Beskrivelse på y-aksen title('Standard normal distribution') grid on % Lage eit grid box on % Lage ei boks rundt figuren clear all figure(1) x=-4:0.0001:4; % lag vektor med x-verdi y=normpdf(x); % vektor y med funksjonsverdiane frå normalfordelinga my=0;sig=0.09;sig2=sig*sig;c=2*sig2;a=sig*sqrt(2*pi);b=1/a; y1=b.*exp(-x.^2./c); % vektor y1 med alternativ normalfordeling plot(x,y,'r-',x,y1,'b-') % plot funksj y med raud linje, y1 med blå pkt xlabel('x') % merk aksane ylabel('tetthet') % title('Normalfordeling') %tittel på plottet legend('Standard normalfordeling','\mu=0 og \sigma=0.09',2) grid on %
Oppgave 25 Rekne ut sannsynet for at ein rekrutt er høgare enn 1.95m
% Høgda til rekruttar (i militæret) er normalfordelt med % gjennomsnittsverdi, my=180 cm og standardavvik, stdavk=6.4 cm x=150:1:210; % Lage ein vektor med x-verdiar my=180;stdavk=6.4; % Middelverdi og standardavvik y1=normpdf(x,my,stdavk); % Normalfordeling med innebygd Matlab funksjon A=1/(stdavk*sqrt(2*pi)); B=(x-my).^2./(2*stdavk^2); y2=A.*exp(-B); % Normalfordeling på manuelt vis plot(x,y1,'r-',x,y2,'bo') % plot funksjon med raud linje xlabel('Høgde på rekruttane') % merk aksane ylabel('Sannsynlighetstetthet') % title('Fordeling av høgde på rekruttar') %tittel på plottet legend('Innebygd Matlab-funksjon','Manuell fordelingsfunksjon',2) grid on % Sannsynet for at ein tilfeldig rekrutter høgare enn 195cm % kan vi finne ved å integrere tetthetsfunksjonen frå 195 og oppover % teoretisk til uendeleg, i praksis eit endeleg tal, her kan vi bruke 210cm n=length(x); A=0;dF=0;dA=0; lim1=195; F(1)=y2(1); for i=1:n-1 dF=(y2(i)+y2(i+1))*(x(i+1)-x(i))/2; F(i+1)=F(i)+dF; if x(i)>=lim1 dA=(y2(i)+y2(i+1))*(x(i+1)-x(i))/2; A = A+dA; end end disp('Sannsynligheten er: ') disp(A) % Kva er sannsynet for at ein rekrutt ikkje er mindre enn 168? % Vi kan gjere dette på samme måten, men no integrerer vi opp til grense % (168), og ikkje frå grensa og oppover. B=0;dF=0;dB=0; lim2=168; F(1)=y2(1); for i=1:n-1 dF=(y2(i)+y2(i+1))*(x(i+1)-x(i))/2; F(i+1)=F(i)+dF; if x(i+1)<=lim2 dB=(y2(i)+y2(i+1))*(x(i+1)-x(i))/2; B = B+dB; end end disp('Sannsynligheten er: ') disp(B) % Pass på at grensene for det nedre og det øvre integralet er % bestemt ulikt. Ved nedre integral sjekkar vi om x(i+1) har nådd grensa % Vi vil ikkje integrere lenger enn til og med lim. % Ved øvre grense integrerer vi frå x(i), vi startar integrasjonen på lim % Kjappversjonen ved å bruke den innebygde kumulative fordelingsfunksjonen A=1-normcdf(lim1,my,stdavk) % 0.0095 B=normcdf(lim2,my,stdavk) % 0.0304 % Skilnaden mellom den manuelle metoden og den innebygde metoden % skuldast det litt store intervall i den manuelle metoden.
Sannsynligheten er: 0.0097 Sannsynligheten er: 0.0307 A = 0.0095 B = 0.0304
Oppgave 26 Rekne ut sannsynet for ein person sin IQ
% IQ er normalfordelt med gjennomsnittverdi my=100 og standardavvik % stdavk=16 % % a) Kva er sannsynet for at ein person har IQ over 130? Enn under 90? % Bruker den innebygde funksjonen my=100;stdavk=16; IQa=1-normcdf(130,my,stdavk) IQb=normcdf(90,my,stdavk)
IQa = 0.0304 IQb = 0.2660