Fält

Contents

Exempel på användning av fält

Lösa linjära ekvationssystem

A = [1 2 3; 3 2 1; 7 8 0]  % koefficientmatrisen för systemet
b = [14, 10, 23]'          % högerledet
R = rref([A b])
A =
     1     2     3
     3     2     1
     7     8     0
b =
    14
    10
    23
R =
     1     0     0     1
     0     1     0     2
     0     0     1     3

Rita grafer

x = linspace(0,4*pi);
f = sin(x)+0.3*sin(4*x);
plot(x,f);

Illustrera något

T = [40 40 40 40  100;
     80  0  0  0  100;
     80  0  0  0  100;
     80  0  0  0  100;
     80 20 20 20  100];
 imagesc(T)

Skapa fält

% Med hakparenteser
vr = [1, 27, -3];       % radvektor
vk = [77;88;99;111];    % kolumnvektor

A = [1 2 3; 3 2 1; 7 8 0];  % 3x3 matris

Med kolonnotation

z = 1:4;              % start:slut
zn2 = 4:-1:2;         % start:steg:slut

Med speciella kommandon

noll = zeros(1,5);  % 1x5 vektor med 0:or
ett = ones(3,1);    % 3x1 vektor med ettor
f = rand(4,4);      % 4x4 slumptal mellan 0 och 1, likformigt fördelade
xv = linspace(0,1); % 100 värden mellan 0 och 1

Ändra på element i fält

Element i fält har en plats och ett värde

vr = [1, 27, -3];
A = [1 2 3; 3 2 1; 7 8 0];

vr(2)    % 2:a elementet i vr
A(3,2)   % elem på 3:e raden 2:a kolumnen
ans =
    27
ans =
     8
vr(3) = -305  % ändra 3:e elem i vr
A(1,2) = 99   % ändra elem på första raden 2:a kol
vr =
     1    27  -305
A =
     1    99     3
     3     2     1
     7     8     0

Operatorer för fält

Alla operatorer fungerar för fält

% Matrisoperatorer ^ * / + -
A = [1 2 3; 3 2 1; 7 8 0];
x = [3; 2; 1]

A*x    % matris - vektor multiplikation
A*A    % matrismultiplikation
3*A    % multiplikation med skalär
x =
     3
     2
     1
ans =
    10
    14
    37
ans =
    28    30     5
    16    18    11
    31    30    29
ans =
     3     6     9
     9     6     3
    21    24     0

Fältoperatorer .^ .* ./ + -

A.*A   % elementvis multiplikation
1./x   % elementvis division
ans =
     1     4     9
     9     4     1
    49    64     0
ans =
    0.3333
    0.5000
    1.0000

Exempel, Rita grafen till f(x)=x-x*cos(7x), 0<=x<=8

x = linspace(0,8);    % 100 värden mellan 0 och 8
f = x - x.*cos(7*x);  % .* mellan vektorn x och vektorn cos(7*x)
clf;                  % rensa figuren
plot(x,f);

Kommandon för fält

De flesta kommandon fungerar för fält

x1 = -[4, 3, 2, 1]
xp = abs(x1)     % absolutbelopp
sin(x1)          % sinus
sqrt(abs(x1))    % roten ur
x1 =
    -4    -3    -2    -1
xp =
     4     3     2     1
ans =
    0.7568   -0.1411   -0.9093   -0.8415
ans =
    2.0000    1.7321    1.4142    1.0000

Finns också kommandon speciellt för fält

n = numel(x1)              % antalet element i x1 (length(x1) fungerar också)
mean(x1)                   % medelvärdet av elementen i x1
sum(x1)                    % summan av elementen
medel = sum(x1)/numel(x1)  % medelvärdet igen
diff(x1)                   % [ x1(2)-x1(1), x1(3)-x1(2), x1(4)-x1(3) ]
n =
     4
ans =
   -2.5000
ans =
   -10
medel =
   -2.5000
ans =
     1     1     1
%Exempel: summera 1+ 1/2 + 1/3 +...+ 1/100
v = 1:100;
t = 1./v;
svar = sum(t)
svar =
    5.1874

Fler fältkommandon

m = max(x1)                % största elementet
[m, pos] = max(x1)         % största elementet och dess placering i x1
m =
    -1
m =
    -1
pos =
     4

Ännu fler fältkommandon

x = rand(1,5)
xs = sort(x)       % sortera elementen i stigande ordning
[xs, ii] = sort(x) % indexvektorn (xs == x(ii))
x =
    0.1247    0.7170    0.0888    0.3567    0.3881
xs =
    0.0888    0.1247    0.3567    0.3881    0.7170
xs =
    0.0888    0.1247    0.3567    0.3881    0.7170
ii =
     3     1     4     5     2

Exempel:

Rita en cirkel med radie 1

t = linspace(0,2*pi);
x = cos(t);  y = sin(t);
plot(x,y);
axis equal

Slumpa fram 5 punkter

xs = rand(1,5)*2-1;
ys = rand(1,5)*2-1;
hold on;
plot(xs,ys,'o');

Hur många av punkterna hamnade i cirkeln?

sqrt((xs.^2+ys.^2))  % alla punkter som hamnat närmre origo än 1 finns i cirkeln
ans =
    0.6076    0.9962    0.9884    0.7323    0.9704

Referenser och lästips