[vastaus aiempaan viestiin]
Kirjoittaja: | Seppo Mustonen |
---|---|
Sähköposti: | - |
Päiväys: | 6.8.2006 10:26 |
Kiitos havainnostasi. Jossain vaiheessa yleistäessäni tuota matriisin potenssin laskemista ohjelmasta on tullut liian kitsas sallimaan vektoreilla alkiokohtaisen potenssiinkorotuksen. Matriisipotenssit yleensä liitetään vain neliömatriiseihin A, jolloin esim. A^3 tarkoittaa matriisituloa A*A*A ja ne on Survossa yleistetty symmetrisillä ei-negatiivisesti definiiteillä matriiseilla mielivaltaiselle reaaliarvoiselle eksponentille k matriisin spektraalihajotelman A=S*L*S' kautta muodossa A^k=S*(L^k)*S', missä ominaisarvojen (kaikki ei-negatiivisia) muodostaman lävistäjämatriisin L potenssi L^k lasketaan korottamalla kaikki sen alkiot erikseen potenssiin k. Vektoreilla x potenssiinkorotus em. mielessä on mahdotonta, koska x^2=x*x ei matriisilaskennassa ole mahdollinen ("incompatible dimensions in matrix operands"). Tarkoituksena on tällöin ollut tulkita se aivan eri tavalla eli alkiokohtaisena potenssiin korotuksena, mutta tämä vaihtoehto on nyt ollut sulkeutuneena pois. Olen korjannut virheen ja saadaan esim. MATRIX A /// 1 2 3 MAT SAVE A MAT C=A^2 / *C~A^2 3*1 MAT LOAD C A^2 /// 1 1 1 2 4 3 9 Saman laskutoimituksen voi kuitenkin tehdä vaivatta (ilman korjaustakin) matriisitulkilla esim. näin: MAT C=A MAT TRANSFORM C BY X#^2 ja tämä toimii alkiokohtaisesti jopa mielivaltaisilla matriiseilla ja reaalisilla eksponenteilla (tietyin luonnollisin rajoituksin). Seppo
Vastaukset: |
---|
Survo-keskustelupalstan (2001-2013) viestit arkistoitiin aika ajoin sukrolla, joka automaattisesti rakensi viesteistä (yli 1600 kpl) HTML-muotoisen sivukokonaisuuden. Vuoden 2013 alusta Survo-keskustelua on jatkettu entistäkin aktiivisemmin osoitteessa forum.survo.fi. Tervetuloa mukaan!