1. domača naloga
Oddaja naloge
Naloge oddajte na Gitlab.
Naloge, ki jih boste oddali na Gitlabu, bodo javno dostopne. Če kdo ne želi, da je njegov izdelek javno dostopen, naj si ustvari privatno različico(fork) repozitorija nummat-1920 in naj povabi zraven kolega, ki bo kodo pregledal in asistenta(@mrcinv). Če kdo ne želi uporabljati Gitlaba ali programskega jezika julia, naj se oglasi asistentu.
Navodila za oddajo naloge (glejte tudi dokument o delu z gitom in Gitlabom)
- Ustvarite svoj zahtevek(issue) in zahtevo za združitev(merge request).
- Napište kodo, teste in kratek dokument z opisom rešitve in primerom. Kodo potisnite na repozitorij v svoji git veji.
- Povabite kolega, da pregleda vašo kodo, tako da ga omenite kot
@vzdevek
v komentarju na zahtevi za združitev(merge request). - Ko je pregled končan in pripombe kolega upoštevane, povabite še asistenta (
@mrcinv
).
Rešitev naloge naj vsebuje vsaj 3 datoteke:
- izvorna kodo v
src/domace/vzdevek/ImeNaloge.jl
- testi v
test/domace/vzdevek/ImeNaloge.jl
, ki so vključeni vtest/runtests.jl
- kratek dokument z opisom rešitve v
doc/src/domace/vzdevek/ImeNaloge.md
in „praktičnim“ primerom uporabe (slikice prosim :-)).
Po lastni presoji, lahko rešitev vsebuje tudi več drugih datotek. Vsaka funkcija naj tudi vsebuje docstring z opisom funkcije.
Naloga
Pasovne diagonalno dominantne matrike
Pasovna matrika je matrika, ki ima neničelne elemente le v glavni diagonali in v nekaj stranskih diagonalah ob glavni diagonali. Matrika je diagonalno dominantna po vrsticah, če za vse $i$ velja
Definirajte podatkovni tipe
PasovnaMatrika
, ki predstavlja pasovno matriko,ZgornjePasovnaMatrika
, ki predstavlja zgornje trikotno pasovno matriko inSpodnjePasovnaMatrika
, ki predstavlja spodnje trikotno pasovno matriko
Podatkovni tipi naj hranijo le neničelne elemente matrike. Za omenjene podatkovne tipe definirajte metode za naslednje funkcije:
- indeksiranje:
Base.getindex
,Base.setindex!
inBase.size
. Podatkovni tipi naj ustrezajo vmesniku AbstractArray, da lahko do elementov dostopamo s sintaksnoA[i,j]
. - množenje z desne
Base.*
z vektorjem - „deljenje“ z leve
Base.\
lu
, ki izračuna LU-razcep brez pivotiranja, če je matrika diagonalno dominantna, sicer pa javi napako. Vrnjena faktorja naj bosta tipaSpodnjePasovnaMatrika
inZgornjePasovnaMatrika
.
Časovna zahtevnost omenjenih funkcij naj bo linearna (odvisna od širine pasu). Več informacij o tipih in vmesnikih.
Za primer rešite sistem za Laplaceovo matriko v 2D.