%Serie 4 Aufgabe 1
clear all;
clc;
n=1;

%Aufgabenteil B: Problemstellung
for k=[40,100]
    disp('___________________________________________________')
     
    n
    disp('Durchlauf (1=>k=40;2=>k=100:)')
    
    tol=10^(-7);

    A=sparsemodel(k);
    b=-rhs(k);
    x0=zeros(size(b));

    %own algorithum
    tic
    [x,iter1]=my_cg(A,b,x0,1000,tol);
    time1=toc;

    %Mathlab alg.
    tic
    [y,FLAG,RELRES,iter2]=pcg(A,-b,tol,1000); %B has to be Minus because of programstructure
    time2=toc;
    n=n+1;
    
    %Aufgabenteil c:   
    
    condest(A)
    
    %Aufgabenteil d:
    R=cholinc(A,10^-3);
    H=R';
    tic
    [y,FLAG,RELRES,iter_d]=pcg(A,-b,tol,1000,H,H');
    time3=toc;
    
    disp('Tol1        Tol2        Tol3')
    [iter1 iter2 iter_d]
    disp('Time1        Time2        Time3')
    [time1 time2 time3]
end

% ___________________________________________________
% n =
%      2
% Durchlauf (1=>k=40;2=>k=100:)
%Lösung zu c (kondition):
% ans =
%   5.7750e+003

%______Lösung zu a,b,d:
% Tol1        Tol2        Tol3
% ans =
%    195   167    14
% Time1        Time2        Time3
% ans =
%     0.1590    0.5042    0.1589


%Teilaufgabe e)

clear all
for k=1000:100:2000
    disp(k)
    clear A
    A=sparsemodel(k);
    whos
end
%Out of memory schon bei 2000 Matrixgrösse:   A         3602404x3602404            230462756  double    sparse    

%jecken und ein bissen aufmotzen!

for k=80:10:200
   disp(k)
    clear A
    A=model(k); 
    whos
end
%Out of memory at K=100.... strange... slow... No idea... well A  9604x9604
%Maybe bit more ram would help?!


