function information
	
	% leggi tutto il file nel vettore s
	%
	fid = fopen('La Tempesta.rar');
	s = fread(fid,inf,'uint8');
	fclose(fid);

	% trova le occorrenze di tutti i simboli (il file 'La Tempesta.txt' è UTF-8, quindi appaiono
	% anche caratteri "strani"  per la rappresentazione, fra le altre, delle lettere accentate)
	%
	freq = zeros(256,1);
	for i = 1:numel(s)
		freq(1 + s(i)) = freq(1 + s(i)) + 1;
	end
	
	% estrazione degli indici dei simboli che appaiono effettivamente nel messaggio (gli altri
	% appaiono zero volte)
	%
	A = find(freq > 0) - 1;
	NA = numel(A);
	fprintf('Alfabeto: "%s" (%d simboli)\n',char(A.'),NA);
	
	% per costruzione p(1 + A) è diverso da zero
	%
	p = freq(1 + A) / sum(freq);
	H0 = -sum(p.*log2(p));
	fprintf('Entropia della sorgente modellata come DMS: %g bit/simbolo (%d bytes, %g%%)\n',...
		H0,ceil(H0*numel(s)/8),H0/8*100);
	
	% il vettore r contiene la posizione nel vettore p dell'elemento di alfabeto a
	%
	r = zeros(256,1);
	for i = 1:NA
		r(1 + A(i)) = i;
	end
	% oppure r(1+A) = 1:NA;
	
	% trova le occorrenze delle coppie (s(i),s(i-1)) (modella la sorgente come una sorgente
	% Markoviana con numero di stati pari ad NA, e stato uguale all'ultimo simbolo emesso)
	%
	freq2 = zeros(NA,NA);
	for i = 2:numel(s)
		% freq2( 1+s(i) , 1+s(i-1) )=freq2( 1+s(i) , 1+s(i-1) )+1;
		freq2(r(1+s(i)),r(1+s(i-1)))=freq2(r(1+s(i)),r(1+s(i-1)))+1;
	end
	
	% trova le probabilità di transizione ad un passo
	%
	p2 = zeros(NA,NA);
	for i = 1:NA
		p2(:,i)=freq2(:,i)/sum(freq2(:,i));
	end
	
	% calcola le entropie corrispondenti a ciascuno stato
	%
	H = zeros(NA,1);
	for i = 1:NA
		H(i) = -sum(p2(:,i).*log2(eps+p2(:,i)));
	end

	% trova l'autovettore relativo all'autovalore più grande
	%
	[V,lambda]=eigs(p2,1);
	if abs(lambda - 1) > NA*eps
		fprintf('L''autovalore massimo non è 1!!');
	end
	
	% normalizza l'autovettore in modo da ottenere il vettore delle probabilità a regime
	w = V/sum(V);
	
	% trova l'entropia media della sorgente con memoria a un passo
	H1 = sum(w.*H);
	fprintf('Entropia della sorgente modellata come Markoviana con stato == ultimo simbolo emesso: %g bit/simbolo (%d bytes, %g%%)\n',...
		H1,ceil(H1*numel(s)/8),H1/8*100);
end
