Re: MAT C=A^k, kun A on vektori?

[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!

Etusivu  |  Keskustelu
Copyright © Survo Systems 2001-2013. All rights reserved.
Updated 2013-06-15.