%% Második labor: vektornormák és indukált mátrixnormák

%%
% A ":" operátort számokból álló vektor létrehozására használhatjuk. Elsõ szám: kezdõpont,
% második szám: lépésköz, harmadik szám végpont (illetve az az érték amit a végpont nem haladhat meg)

x=0:0.3:1 %ez egy sorvektor
%%
% Ez a típusán és az elfoglalt helyen is látszik
whos
%%
% A sorvektor egyes elemeit a () segítségével érjük el, a sorszámozás 1-el
% kezdõdik
x(1)
x(2)
% de x(6)!
%%
% értékadásnál nagyon oda kell figyelnünk, mert:
x(6)=5
%%
% sõt
x_sor(12)=5 
%%
% az aposztróf a transzponálás jele
x_oszlop=x_sor' 
%%
% Másik lehetõség vektor létrehozására: egyenlõ osztásközû sorvektor, a harmadik számnyi elemmel
y_sor=linspace(1,2,5) 

%% Mûveletek vektorokkal
x_sor=0:0.3:1
%%
% x vektor elemeinek száma
length(x_sor)
%%
% Méret. Nem mindegy, hogy 1*4 (sorvektor) vagy 4*1 (oszlopvektor)
size(x_sor) 
%%
size(x_oszlop)
%%
% konstanssal való szorzás
5*x 
%%
% skaláris szorzat, azaz egy szám
x*x' 
%%
% van rá külön parancs is a dot
dot(x,x)
%%
% diádszorzat
D=x_sor'*x_sor
%%
% az x vektor elemenkénti négyzete, általában is a pont az elemenkénti mûveletet jelenti.
x_sor.*x_sor 
%%
% Nézzük csak meg a méreteket:
size(D)
%%
length(D)
%% 
% A vektorok p normáját a norm paracs segítségével kérdezhetjük le
norm(x)
norm(x,2)
norm(x,1)
norm(x,'inf')

%% Mátrixok megadása
%%
% Elemenként: A sorok közé ; kell, a mátrix voltaképpen egy (sor)vektorokból álló (oszlop)vektor
C=[1 0 3; 4 3 -1; 3 -5 8] % itt az 1 0 3 az elsõ sor, 
%%
% vagy elõre definiált függvényekkel:
 % olyan matrix aminek diagonálisa a bemenetként kapott vektor
A=diag(y_sor)
%%
% 5*5-os egység mátrix
I=eye(5) 
%%
 % csupa 0-t tartalmazó 5*2-os mátrix
Z=zeros(5,2)
%%
% csupa egyet
E=ones(2,3) 
%%
% a mátrix mérete
size(C) 
%%
% sorainak száma
size(C,1) 
%%
% oszlopainak a száma
size(C,2) 
%%
% a sorainak és oszlopainak száma közül a nagyobb (vektor esetén a hossz)
length(C) 

%% Mátrixok indexelése
C
%%
% egy konkrét elem lekérdezése (3. sor 2. oszlop)
C(3,2)
%%
% oszlopfolytonosan számítva a 6. elem
C(6) 
%%
% Elsõ sor lekérése
C(1,:)
%%
% ez itt a felsõ 2*2-es mátrix
C(1:2,1:2) 

%%
% Ez pedig  C minden második oszlopa
C(:,1:2:3)
%%
% az indukált mátrixnormát szintén a norm parancs adja meg
norm(C)
norm(C,2)
norm(C,1)
norm(C,'inf')
norm(C,'fro')

%% Órai feladatok
%%
% Első feladat: Készítsünk olyan függvényt, amelynek bemenete egy mátrix, és  kiszámítja 
% a gyakorlaton definiált "összes elem abszolútértékének maximuma" normát,
% illetve az 1-es és a sup normát a norm() függvény használata nélkül!

%%
% <include>mxNorma.m</include>
%%
% Második feladat: készítsünk olyan függvényt, ami ábrázolja a bemenetként
% kapott mátrix Gersgorin-köreit.
%%
% <include>gerg1.m</include>
%% 
% A függvény használata:
gerg1(C)