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

Part II - Advanced

Contents

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