Mala napomena za racunanje schurove forme.
Ideja zadatka je da se matricu A svede na gornje trokutastu matricu dobivenu unitarnim slicnostima. Program se zasniva na rekurzijama.
Najprije treba provjeriti da li je dimenzija matrice jedan, te ako jest tada se vracaju pripadni parametri (U=1,T=H, ind_2x2=0,br_it=0),te isto tako za dimenziju 2 (T=H,U=eye(max(size(H)))).
E ako matrica nije tih dimenzija, tada se ide nalazit nule po matrici ispod glavne pozitivne dijagonale, ali bi trebalo prije toga provijeriti jos uvjet
abs(H(i+1,i))<=tol*(abs(H(i,i)+abs(H(i+1,i+1))))
te ako je to zadovoljeno treba postavljati da je H(i+1,i)=0;
Najbolje bi bilo sve te pozicije gdje ste nasli nule postaviti u neki vektor.
Pa se sada rekurzivno poziva na svaki od tih blokova koje ste dobili razdvajanjem pocetne matrice. Ali treba biti malo oprezan, jer se sa 1. blokom i zadnjim treba posebno napraviti te rekurzivne pozive, dok se za unutarnje blokove moze sve staviti u for petlju, naprimjer.
Nemojte zaboraviti da dobro postelate unitarne matrice.
Da vam pomognem jos malo, jedan od nacina dobivanja unitarne matrice U je da kada rastavljate na blokove dobivate pripadnu unitarnu matricu Ui koju ste dobili iz funkcije schur_qr i tu matricu mnozite sa npr. matricom M s desna tj M=MUi. Sada ste dobili neku unitarnu matricu koju jos treba pomnoziti sa originalnom matricom U tj. U=UM.
I napokon, treca solucija je da ako niste dobili blokove, niti imate matricu koja je dimenzije 1 ili 2 tada morate raditi iteraciju QR metode.
Sto se tice konvergencije metode konjugiranih gradijenata, onvergencija se postize minimax uvjetom koja ovisi o stupnju polinoma. Sto je stupanj polinoma manji to bolje.
Ako nekome, nesto nije jasno neka me slobodno pita (a ionako sam vec dosta reko).
Mala napomena za racunanje schurove forme.
Ideja zadatka je da se matricu A svede na gornje trokutastu matricu dobivenu unitarnim slicnostima. Program se zasniva na rekurzijama.
Najprije treba provjeriti da li je dimenzija matrice jedan, te ako jest tada se vracaju pripadni parametri (U=1,T=H, ind_2x2=0,br_it=0),te isto tako za dimenziju 2 (T=H,U=eye(max(size(H)))).
E ako matrica nije tih dimenzija, tada se ide nalazit nule po matrici ispod glavne pozitivne dijagonale, ali bi trebalo prije toga provijeriti jos uvjet
abs(H(i+1,i))<=tol*(abs(H(i,i)+abs(H(i+1,i+1))))
te ako je to zadovoljeno treba postavljati da je H(i+1,i)=0;
Najbolje bi bilo sve te pozicije gdje ste nasli nule postaviti u neki vektor.
Pa se sada rekurzivno poziva na svaki od tih blokova koje ste dobili razdvajanjem pocetne matrice. Ali treba biti malo oprezan, jer se sa 1. blokom i zadnjim treba posebno napraviti te rekurzivne pozive, dok se za unutarnje blokove moze sve staviti u for petlju, naprimjer.
Nemojte zaboraviti da dobro postelate unitarne matrice.
Da vam pomognem jos malo, jedan od nacina dobivanja unitarne matrice U je da kada rastavljate na blokove dobivate pripadnu unitarnu matricu Ui koju ste dobili iz funkcije schur_qr i tu matricu mnozite sa npr. matricom M s desna tj M=MUi. Sada ste dobili neku unitarnu matricu koju jos treba pomnoziti sa originalnom matricom U tj. U=UM.
I napokon, treca solucija je da ako niste dobili blokove, niti imate matricu koja je dimenzije 1 ili 2 tada morate raditi iteraciju QR metode.
Sto se tice konvergencije metode konjugiranih gradijenata, onvergencija se postize minimax uvjetom koja ovisi o stupnju polinoma. Sto je stupanj polinoma manji to bolje.
Ako nekome, nesto nije jasno neka me slobodno pita (a ionako sam vec dosta reko).
|