function A=mat_modele(n)

// bloc diagonal
G=sparse(toeplitz([4 -1 zeros(1,n-2)]));
// G = sparse(4*eye(n,n) - diag(ones(n-1,1),1) - diag(ones(n-1,1),-1));

// matrice tridiagonale par blocs
A=spzeros(n^2,n^2);
for k=1:n
    A((k-1)*n+1:k*n,(k-1)*n+1:k*n)=G;
end;
for l=1:n-1
    A((l-1)*n+1:l*n,l*n+1:(l+1)*n)=-speye(n,n);
    A(l*n+1:(l+1)*n,(l-1)*n+1:l*n)=-speye(n,n);
end;

endfunction

// Variante :
// function A=mat_modele(n)
// d=sparse(ones(n^2-1,1)); d(n:n:n^2-n)=0; e=sparse(ones(n^2-n,1));
// A=4*speye(n^2,n^2)-diag(d,1)-diag(d,-1)-diag(e,n)-diag(e,-n);
// endfunction