%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Aufgabe 2:
%   Schreiben Sie ein Skript, das die Matrix A und den Vektor b wie folgt 
%   generiert:
%    (1) es sollte zuerst eine 203x203 Zufallsmatrix A0 mit 1<=A0(i,j)<=3,
%        gleichverteilt, erzeugt werden,
%    (2) dann sollte jene Untermatrix A von A0 selektiert werden, deren 
%        Spalten- und Zeilenindizes durch 5 teilbar sind,
%    (3) sodann sollen alle Einträge A(ij) in A, die größer als 1.150 und 
%        kleiner als 2.959 sind, auf 1-A(ij)/2 gesetzt werden,
%    (4) schließlich sei der Vektor b zu erzeugen, der jene Dimension hat, 
%        die der Zeilenzahl von A entspricht, sodass 
%        b(i)=3*i^(2.9) für gerade i und b(i)=-sqrt(|mean(A(i,:)|) für 
%        ungerade i ist.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear all; % lösche alle Variablen
n=10;      % n=10 statt 203, für test

%(1)
A0=1+2*rand(n,n); % Zufallsmatrix A0 mit 1<=A0(i,j)<=3, gleichverteilt
[m,n]=size(A0);
disp(['(1) Lösung A0(' num2str(m) 'x' num2str(n) ')=' mat2str(A0)]);

%(2)
ind=5:5:n; % durch fünf teilbare Zahlen
A=A0(ind,ind);
[m,n]=size(A);
disp(['(2) Lösung A(' num2str(m) 'x' num2str(n) ')=' mat2str(A)]);

%(3)
ind=find(A>1.150 & A<2.959); % ind:={(i,j) | 1.150 < A(ij) < 2.959}
A(ind)=1-A(ind)/2;           % A(ij)=1-A(ij)/2 für alle ij in ind
disp(['(3) Lösung A(' num2str(m) 'x' num2str(n) ')=' mat2str(A)]);

%(4)
b=zeros(m,1);                % Vektor b zu erzeugen, der jene Dimension  
                             % hat, die der Zeilenzahl von A entspricht
i=2:2:m;                     % gerade Zahlen i=1,...,m
b(i)=3*i.^(2.9);             % b(i)=3*i^(2.9) für gerade i
for i=1:2:m                  % ungerade Zahlen i=1,...,m
    b(i)=-sqrt(abs(mean(A(i,:)))); % b(i)=-sqrt(|mean(A(i,:)|)
end
disp(['(4) Lösung b(dim=' num2str(size(b,1)) ')=' mat2str(b)]);