1) V článku chybí max. podporované velikosti matic. Např. zvládne to 50 000/50 000, 500 000x500 000, 5 000 000 x 5 000 000 a více? Přeci jenom matice 5x5 jsou možná tak pro študáky 1 semestru.
2) Když už řešíš operace s maticemi, bylo by vhodné předvést i iterace maticových řešení. (to je základ numerické matematiky u různých lineárních i nelineárních řešení např. v mechanice kontinua)
3) Docela často se potřebují i výpočet vlastních čísel (tvz. eigenvalue). Je podporováno?
4) Sorry ale naprosto zcestně vysvětluješ Choleskyho dekompozicí. Choleskyho dekompozice slouží k řešení soustav rovnic a nekončí rozložením vstupní matice na dvě trojůhelníkové(nad diagonálou, pod diagonálou). To je jenom první krok a další následují. Navíc ji zapomněl na splnění podmínky o minorech matice.
Ahoj, zkusím odpovědět:
1) čistě teoretické limity jsou dané současnou implementací vectorz/matrix, což znamená: počet dimenzí - int (32bit), offset mezi dimenzemi také int (2^31-1), počet prvků long (2^64-1). Takže v případě 2D matic by to bylo 2^32-1x2^32-1 prvků. Prakticky je to horší, protože interně se nakonec po "zploštění" celé struktury NDArray zavolá new double[n]
, takže na současných VM Javy to bude Integer.MAX_VALUE - 5
prvků.
2) Jj pravda. Zkusím dát dohromady rozumné příklady. Popravdě se mi ten článek natáhl tak o 1/3, takže by se to tam nevlezlo, ale něco vymyslím (vezmi asi z toho, co máme v R-ku :-)
3) Ano, existuje pro to funkce decomp-eigenvalue
. Chtěl jsem se jí věnovat příště (ještě jsou podporovány další rozklady matic).
4) díky za upozornění. Snažil jsem se popsat jen ten první krok realizovaný funkcí decomp-cholesky
, tj. získání matic L a L*. Na co se to dál použije, už je jiná věc ne? Zmínit jsem to pravda měl.