% scaletta per la lezione del 27 aprile 2005
%
% 

clear

v = linspace(1,10)

A = [ 1 2 3
      4 5 6
      7 8 9];
  
B = magic(4);


% i file usati sono scaricabili dalla rete:
% http://www.mcgraw-hill.it/naldi

% scompattare i file con un programma apposito:
% per esempio: ark in un sistema linux
%              winzip in un sistema windows

% Cartella filem/cap1


% nota: correggere il file mediav.m fornito
% la parola function all'inizio del file e' incompleta
help mediav

m1 = mediav(v);


help mediam

m2 = mediam(A);


help mediam2

m2bis = mediam2(A)


% calcolare le medesime quantita' usando la funzione SUM


% un po' di successioni ricorsive

help successione

a1 = 9;
as = 1e4;

% nota: il file successione.m fornito e' incompleto. 
% Aggiungere un'ulteriore riga:
% x=a;

seq = successione(a1, as)

% operatori relazionali

a1 < as               % minore di

a1 <= 9               % minore di o uguale a

a1 > as               % maggiore

a1 >= as              % maggiore di o uguale a

a1 == as              % uguale a

a1 ~= as              % diverso da



% operatori logici (booleani)

a2 = 4;

a1 < as & a1 ~= as 

a1 < as | a1 ~= as

~(a1 < as & a1 ~= as)

xor(a1 ~= as, a2 > as)


help successione2

seq2 = successione2(a1)

seq2 = successione2(100);


% GRAFICA ELEMENTARE

plot(seq2, ':o');



x = linspace(0,pi,101);

y = cos(x);

y_app = apprcos(x);


figure

plot(x,y, 'r', x,y_app,'k')


% versioni alternative della funzione successione2.m

% occorre evitare che potenzialmente si 
% eseguano infiniti loop
help successione2b

N = 20;

x1 = 9;

seq2b = successione2b( x1, N )

help successione2c

seq2c = successione2b( x1, N )

seq2c100 = successione2c(100);


% uso del costrutto SWITCH  
n=2;
z = rem(x(n),2);
switch z
    case 0 
        x(n+1) = x(n)/2;
    case 1
        x(n+1) = 3*x(n) -1;
    otherwise
        disp('Non e'' stato inserito un numero intero');
end


% uso di ISINTEGER e funzioni analoghe


% visualizzazione elmentare di tabelle

help tabcossin

tabcossin;

% memorizzare le operazioni compiute con DIARY
% salvatabella.m

diary tabella.txt
tabcossin
diary off


%memorizzare i dati del workspace con save

%salvavalori
n = 5
x = linspace(0,pi,n);
c=cos(x);
s=sin(x);
z = 1:n;

save tabella.dat z x c s -ascii


% visualizzavalori
load tabella.dat

A = tabella;
disp('--------------------------')
fprintf('k\t x(k)\t cos(x(k))\t cos(x(k))\n');
disp('------------------------------------------');
fprintf('%d\t %3.2f\t %6.5f\t %6.5f\n', A); 

% fine lezione

% grafica 2d e 3d

x = linspace(0, 2*pi, 21);
y = cos(x);

plot(x,y)

figure
plot(x,y, '-o');
hold on
plot(x,y,'r')

title('Grafico di cos(x) vs. x')
xlabel('x')
ylabel('cos(x)')

a = axis

axis([a(1) pi a(3) a(4)])

x = linspace(0,2*pi)
s=sin(x);
c=cos(x);

plot(x,s,'-')
hold on
plot(x,c,'--')
hold off

plot(x,s,'-',x,c,'--',[1 5]*pi/4, [1 -1]/sqrt(2), '*')
legend('seno', 'coseno', 'intersezione')


% uso di SUBPLOT
% f(x) = exp(-x^2) * cos(k pi x)

x  = linspace(-2,2);
y1 = exp(-x.^2) .* cos(pi*x);
subplot(2,2,1)
plot(x,y1);
title('k=1');



% uso di SURF

n=5;
m=5;
x=linspace(0,1,n)
y=linspace(0,1,m)
[X,Y] = meshgrid(x,y)

Z = X .* (1-X) .* Y .* (1-Y);
surf(X,Y,Z);
xlabel('x')
ylabel('y')
zlabel('z')

figure

contour(X,Y,Z)

help graph3d