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
- Kapitel 2 i kurslitteraturen handlar om fält.
- Lab1 (Introduktion till Matlab), framförallt avsnitt 3 (exempel på fältanvändning), 4 (skapa matriser (fält)).
- Lab2 (Mer om funktioner och grafik i Matlab), framförallt avsnitt 2 (kommandon för fält), avsnitt 3 (operatorer).