Minulla olisi tarve laskea n*n-matriisin (n noin 2-15) ominaisarvot numeerisesti Java-ohjelmassa. Mikäköhän olisi kätevin tapa hoitaa homma?
Ohjelma osaa ainakin summata ja kertoa matriiseja, ratkaista yhtälön Ax=b ja muodostaa osamatriiseista uusia matriiseja. Joten jos näitä välineitä käyttäen ominaisarvot ja -vektorit selviäisivät, niin hyvä.
Karakteristinen polynomi kannattanee unohtaa saman tien. QR-hajotelmasta ominaisarvoja sai jotenkin fiksusti arvottua, toimisikohan se tapa? Vai kenties jotenkin muuten?
Ohjelma osaa ainakin summata ja kertoa matriiseja, ratkaista yhtälön Ax=b ja muodostaa osamatriiseista uusia matriiseja. Joten jos näitä välineitä käyttäen ominaisarvot ja -vektorit selviäisivät, niin hyvä.
Karakteristinen polynomi kannattanee unohtaa saman tien. QR-hajotelmasta ominaisarvoja sai jotenkin fiksusti arvottua, toimisikohan se tapa? Vai kenties jotenkin muuten?
Vastaukset 2
Vanhimmat
Lue ensin vaikka täältä sivulta 304 lähtien ominaisarvoista ja -vektoreista
http://www.csc.fi/oppaat/num.kayt/
Minä tekisin ensiksi jonkun toimivan algoritmin, joka laskisi symbolisesti yleisen polynomin. Sitten tämä algoritmi sijoittaisi kaikki 14 polynomia Java-koodin sekaan oikealle paikalleen. Sitten käyttäisin jotakin numeerista menetelmää juurten etsimiseen, vaikkapa Newtonin iteraatiota. Tästä saisi helposti ominaisarvot ja -vektorit selville.
Myönnän että koodista tulisi sekava, mutta tällä saisi nopeasti laskettua oikean polynomin ja Newtonin iteraatio suppenee yleensä nopeasti kohti polynomin juurta.