%operacoesElim
% OBJETIVO : Verificar o numero de opercoes realizadas 
%            para se resolver sistemas lineares via Eliminacao de Gauss
%
% Resolve varios sistemas rx=b (com dimensoes
% crescentes de 5 em 5  inicinado com ordem 10 indo ate ordem 60)
% com r uma matriz com elementos aleatorios(randomicos)
%  usando  Eliminacao Gaussiana  
%  o termo independente é b=r*x sendo
%  x o vetor solucao exato x= (1,1,...,1)t
%
% o numero de operacoes é gravado para cada  caso(cada dimensao)
%  O grafico com o numero de operacoes x dimensao è tracaodo
clear;
i=1;
 for n=10:20:210
    % gerando o sistema rx=b
   r=rand(n,n);
   x= ones(n,1); 
   b=r*x; 
   
   flops(0); % zera o contador do num de operacoes
   % solucao via Eliminacao
   xmaq=(r\b)';
   % conta o numero de operacoes realiadas
   operEliminacao=flops;
   
   % acumula os valores de  numero de operacoes e dimensao em vetores
   
   vetdimensao(i)= n;
   vetoperElim(i)=  operEliminacao;
   %calcula a raao entre o numero de operacoes e 2/3*n^3
   vetlimElim(i)= operEliminacao / ((2*n^3)/3 );

   i=i+1;

end
% os vetores dimensao e numero de operacao
% e a razao  entre o numero de operacoes e 2/3*n^3
vetdimensao
vetoperElim
vetlimElim
plot(vetdimensao, vetoperElim,'r*')
title('Numero de Operacoes versus dimensao ')
pause
plot(vetdimensao, vetlimElim,'b+')
title('Numero de Operacoes/(2/3*n^3) versus dimensao ')

 
 vetlimElim

