function [A,d]=mq(n,a,b)
%
% Costruisce una matrice quadrata A di dim.
% nxn t.c. 
% A(i,j)=cos(pi*x(i))/(1+x(j)^2)
% dove il vettore x contiene valori in un 
% intervallo [a,b] inserito da tastiera
% e suddiviso in parti uguali (x=a:passo:b)
% Estrarre la diagonale principale di A
% Input:  n, a, b con a<b
% Output: matrice A

% Nel caso di uno script file si usa l'istruzione
% input('') per inserire n, a e b

global B C

A=zeros(n) ;

% Controllo
if a>b
    temp=min(a,b) ;
    b=max(a,b) ;
    a=temp ;
end

x=linspace(a,b,n) ; %x ha n elementi

for i=1:n
    for j=1:n
       A(i,j)=cos(pi*x(i))/(1+x(j)^2) ; 
    end
end
d=diag(A) ;
if n<=10
    disp(d)
end

% Costruire una matrice B ottenuta moltiplicando
% A e d+(somma delle colonne di A)

% Alternativa a sum(A,2)
% z=zeros(n,1) ;
% for i=1:n
%    z=z+A(:,i) ;
% end
z=sum(A,2) ;
v=d+z ;
B=A*v ;
C=v'*A ;

end
