Luentoja Matemaattiset ohjelmistot-kurssilla 6.3.2014

Contents

Matriisin osat ja kokoaminen

clear   % Poista muuttujat
clc     % Tyhjenna ruutu
close all  % Sulje grafiikkaikkunat
format compact    % Turhat valirivit tiivistetaan.
 A=reshape(1:6,2,3),B=ones(2,2),C=diag(1:3)
A =
     1     3     5
     2     4     6
B =
     1     1
     1     1
C =
     1     0     0
     0     2     0
     0     0     3

Vierekkain:

 vierekkain=[A B]
 % Allekkain:
 allekkain=  [A;C]
vierekkain =
     1     3     5     1     1
     2     4     6     1     1
allekkain =
     1     3     5
     2     4     6
     1     0     0
     0     2     0
     0     0     3

Vektorin indeksointi

Lue lisaa lyhyesta

Tassa lyhyen oppaan opetusta loogisesta indeksoinnista

MathWorks % Ei tarvitse klikata nyt.

clear
close all
format compact
clc
v = [13 5 9  -1]
v =
    13     5     9    -1
v(2)              % 2. alkio         -> 5
ans =
     5
v([1 3 end])      % alkiot 1 3 end   -> 13 9 -1
ans =
    13     9    -1
v(1:3)            % alkiot 1 2 3     -> 13 5 9
ans =
    13     5     9
v(1:3)=-[1 2 3]   % Vektorin osan muuttaminen
v =
    -1    -2    -3    -1
v([1 1 end-1 2 1]) % Saa toistaa ja jarjestaa.
ans =
    -1    -1    -3    -2    -1
v([1 3])=NaN      % Skalaarin laajennussaanto
v                 % NaN  -2.0000   NaN  -1
v =
   NaN    -2   NaN    -1
v =
   NaN    -2   NaN    -1

Matriisin indeksointi

clc
clear
format compact
A=[3 33;9 8]
A =
     3    33
     9     8
A(1,1)        % --> 3
A(1,2)        % --> 33
ans =
     3
ans =
    33
%{
  Voidaan indeksoida myos yhdella indeksilla.
  Silloin ajatellaan matriisi pitkana, sarakkeittain
  jonoutettuna vektorina.
%}

A(3)    % <--> A(2,1)
[A(3) A(1,2)]
ans =
    33
ans =
    33    33

Lisaa matriisin indeksoinnista

A = magic(6)
A =
    35     1     6    26    19    24
     3    32     7    21    23    25
    31     9     2    22    27    20
     8    28    33    17    10    15
    30     5    34    12    14    16
     4    36    29    13    18    11
B = A(3,5)
B =
    27
C = A([1,2,3],4)        % Sarakkeen 4 alkiot riveilta 1 2 3
C =
    26
    21
    22
D = A(4,[1,1,1])        % [A(4,1) A(4,1) A(4,1)]
D =
     8     8     8
E = A([2,5],[3,1])      % Rivien 2 5 sarakkeet 3 1
E =
     7     3
    34    30
F = A(:,4)              % Koko 4. sarake
F =
    26
    21
    22
    17
    12
    13
G = A(4,:)              % Koko 4. rivi
G =
     8    28    33    17    10    15
H = A(:)        % A jonoutettuna sarakkeittain
size(H)                 % Pitka pystyvektori
H =
    35
     3
    31
     8
    30
     4
     1
    32
     9
    28
     5
    36
     6
     7
     2
    33
    34
    29
    26
    21
    22
    17
    12
    13
    19
    23
    27
    10
    14
    18
    24
    25
    20
    15
    16
    11
ans =
    36     1
H'                      % Naytetaan transponoituna.
A(1:3,[2 3 end-1])=NaN  % Paivitys vastaavasti kuin vekt.
                        % Matriisi A siis muuttuu.
ans =
  Columns 1 through 13
    35     3    31     8    30     4     1    32     9    28     5    36     6
  Columns 14 through 26
     7     2    33    34    29    26    21    22    17    12    13    19    23
  Columns 27 through 36
    27    10    14    18    24    25    20    15    16    11
A =
    35   NaN   NaN    26   NaN    24
     3   NaN   NaN    21   NaN    25
    31   NaN   NaN    22   NaN    20
     8    28    33    17    10    15
    30     5    34    12    14    16
     4    36    29    13    18    11

Esimerkki: Rivioperaatiot Gaussin eliminoinnissa

Lyhyen oppaan Gauss-esimerkki

Ehdotus: Kopioi komentoriveja omaan editoriisi ja kay ajatuksella lapi vaiheita ainakin johonkin saakka. Tee omia muistiinpanoja.

Looginen indeksointi

%{
Hyvin tehokas tapa data-alkioiden valitsemiseen perustuu bittikuvioilla
"bitpatterns" indeksointiin.
%}

Tassa lyhyen oppaan opetusta loogisesta indeksoinnista

%clear
vk=[1 3 4 2 5 6 2 1 6 7 4 5 3 2 1 2 3] % Varmuuskertoimet
vk =
  Columns 1 through 13
     1     3     4     2     5     6     2     1     6     7     4     5     3
  Columns 14 through 17
     2     1     2     3
vk >= 3
% Tuloksena looginen vektori, jossa 1 vastaa ehdon toteutumista.
vk(vk>=3) % Indeksoidaan loogisella vektorilla.
ans =
  Columns 1 through 13
     0     1     1     0     1     1     0     0     1     1     1     1     1
  Columns 14 through 17
     0     0     0     1
ans =
     3     4     5     6     6     7     4     5     3     3

Looginen valinta matriisille

%{
 Toimii aivan samoin kuin vektorille.
 Voidaan valita loogisten operaattoreiden, kuten < > <= >= == ~
 tai loogisten is-funktioiden, kuten isprime, isfinite, ... avulla.
%}
% Esim:
clear;clc
A=magic(6)
A =
    35     1     6    26    19    24
     3    32     7    21    23    25
    31     9     2    22    27    20
     8    28    33    17    10    15
    30     5    34    12    14    16
     4    36    29    13    18    11
Bittimatr= A>30       % Bittimatriisi
Bittimatr =
     1     0     0     0     0     0
     0     1     0     0     0     0
     1     0     0     0     0     0
     0     0     1     0     0     0
     0     0     1     0     0     0
     0     1     0     0     0     0
Ayes=A(A>30)    % Ehdon toteuttavat alkiot (pystyvektorina)
Ayes =
    35
    31
    32
    36
    33
    34
[I,J]=find(A>30);
[I J]
ans =
     1     1
     3     1
     2     2
     6     2
     4     3
     5     3

Mitka ovat > 30 ?

clc
A, Bittimatr
Ayes
yesindeksit=[I J]
A =
    35     1     6    26    19    24
     3    32     7    21    23    25
    31     9     2    22    27    20
     8    28    33    17    10    15
    30     5    34    12    14    16
     4    36    29    13    18    11
Bittimatr =
     1     0     0     0     0     0
     0     1     0     0     0     0
     1     0     0     0     0     0
     0     0     1     0     0     0
     0     0     1     0     0     0
     0     1     0     0     0     0
Ayes =
    35
    31
    32
    36
    33
    34
yesindeksit =
     1     1
     3     1
     2     2
     6     2
     4     3
     5     3

Luentotehtava:

% Poimi kaikki A:n alkiot, jotka ovat alkulukuja ja > 10.
% Sijoita vastaaville kohdille A:han arvo Inf.
% Tiedoksi: help isprime, Looginen "and" on &
%
%
%
%

Luentotehtava: (vrt. Lyhyt opas)

%{
 Muodostetaan yksikkovalilla (0,1) tasaisesti jakautuneista
 satunnaismuuttujista
 koostuva 10 x 10 matriisi. Voidaan kysya vaikka seuraavia:

    Kuinka moni alkio on vahintaan 0.2 ?
    Mika on kaikkien naiden summa?
    Kuinka moni on valilla (0.4,0.6) ?
%}

Grafiikka, perusasiat

% * plot -  2d-datapisteiden piirto, tasokayrat
% * fplot, ezplot - Funktion piirto, adaptiivinen pisteiden valinta
% * plot3 - avaruuskayrat, periaate aivan sama kuin plot:lla
% * mesh,surf,surfc,surfl ... Pinta avaruudessa
% * contour  - Korkeuskayrapiirros (myos ezcontour)
%
% Esim:
%
% Piirra

$$ \ \ \ \ \ y=x^3-2 x +1, x\in [-2,2]$$

x=linspace(-2,2,100); % 100 on oletus.
y=x.^3 -2*x +1;
plot(x,y)

http://math.tkk.fi/~apiola/matlab/opas/lyhyt/grafiikka.html