Contents

Exempel Anonym funktion

f(x) = x*xos(x), 0 < x < 2pi

f = @(x)x.*cos(x);

x = linspace(0,2*pi);
y = f(x);
plot(x,y)
grid on      % rutnät

Exempel extern funktion

type f
function y = f(x)
  y = x.*cos(x);

Exempel extern funktion från lab3b

type cirkel

% Vilka är in-parametrarna?
% Vilka är ut-parametrarna?
% Vad beräknar funktionen ?
function [x,y]=cirkel(a,b,r)
  t = linspace(0,2*pi);
  x = a+r*cos(t);
  y = b+r*sin(t);

Anrop av funktionen cirkel

[x,y] = cirkel(0,0,1);
plot(x,y,'blue');
hold on;
[x,y] = cirkel(2,3,5);
plot(x,y,'red')
axis equal
grid on

Obs, Matlabs inbyggda kommandon är externa funktioner

Exempel. Inmatning/utskrift

% x = input('Skriv ett tal ');
% disp('Du skrev ');
% disp(x);

Man kan inte blanda tal och tecken i disp

% x = input('Skriv ett tal ');
% utskrift = ['Du skrev ', num2str(x)];
% disp(utskrift);

Exempel (formatkoder för snyggare utskrift)

% r = input('Skriv en radie ');
% V = 4/3*pi*r^3;
% utskrift = num2str(V,'%.1f\n');  % avrunda till en decimal
% disp(utskrift)

ginput - läsa in från figurfönster

figure(1); clf; hold on; axis([0,1,0,1]); grid on

[x,y] = ginput(3);
plot(x,y)

Rita hela triangeln

x = [x; x(1)]
y = [y; y(1)]
plot(x,y)
x =
    0.2776
    0.7523
    0.3191
    0.2776
y =
    0.7828
    0.4650
    0.3105
    0.7828

Exempel if-sats

% r = input('Skriv en positiv radie ');
% if r>0
%    V = 4/3*pi*r^3;
%    disp(V)
% end

Exempel if-sats (flervalsalternativ)

% r = input('Skriv en positiv radie ');
% if r > 0
%     V = 4/3*pi*r^3;
%     disp(V)
% elseif r == 0
%   disp('du skrev 0 :(');
% else
%   disp('Äsch du skrev ett negativt tal');
% end

Exempel while - loop.

%Så länge som r är negativt; läs in ett nytt tal
% r = -1;
% while r <= 0
%    r = input('Skriv en positiv radie ');
% end
% disp('Grattis radien är nu positiv ');
% V = 4/3*pi*r^3;
% disp(['V = ',num2str(V)])

Exempel for - loop

for i = [1, 0, 3]
    disp(i)
end
     1
     0
     3

Fem volymer (for - loop)

for r = 1:0.1:1.4
    V = 4/3*pi*r^3;
    disp([r, V]);
end
    1.0000    4.1888
    1.1000    5.5753
    1.2000    7.2382
    1.3000    9.2028
    1.4000   11.4940

Beräkna 1 + 1/2 + 1/3 + ... + 1/100

s = 0;
for n = 1:100
    s = s+1/n;
end
disp(s)
    5.1874

Beräkna 1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11

s = 0;
teck = -1;
for n = 1:2:11
    teck = -teck;
    s = s+teck/n;
end
disp(s)
    0.7440

pi/4 = 1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 ....

Beräkna pi med 5 korrekta decimaler

s = 1; teck = 1; n = 1;
while abs(4*s-pi) > 0.5e-5
  teck = -teck;
  n = n+2;
  s = s+teck/n;
end
disp(4*s)
    3.1416