Preskoči na glavno vsebino
Učilnica FRI 23/24
  • Domov
  • Več
Zapri
Preklopi iskalni vnos
Slovenščina ‎(sl)‎
English ‎(en)‎ Slovenščina ‎(sl)‎ Македонски ‎(mk)‎ Русский ‎(ru)‎ 한국어 ‎(ko)‎
Trenutno uporabljate gostujoči dostop
Prijavite se
Domov
Course Activities
Forumi Naloge Viri
Nedavno dostopani predmeti
You are not enrolled in any courses
  1. pn
  2. Polona in Ančka

Polona in Ančka

Zahteve zaključka
Odprto: četrtek, 7. december 2023, 00.00
Rok za oddajo: sreda, 13. december 2023, 15.15

V tej nalogi bomo delali z resničnimi podatki.

Ančki in Poloni so nataknili GPS sledilnik in nekaj let opazovali, kod hodita. Podatke najdete v priloženi datoteki. Prvi stolpec je datum, naslednja dva sta zemljepisni koordinati Polone, naslednja dva pa koordinati Ančke. nan pomeni, da podatek ni znan: podatki namreč niso zabeleženi vsakodnevno, poleg tega so Poloni nataknili sledilnik par let kasneje kot Ančki. Če je za nekoga v nekem dnevu znana ena koordinata, je znana tudi druga.

Končni cilj naloge bo ugotoviti, na kateri dan sta si bili Ančka in Polona najbližje.

Podatki so bili zbrani v okviru študije Rjavi medved v Sloveniji 1993-1997 (Kaczensky, P., Knauer, F., Jonozovic, M., Blazic, M. (1999): Slovenian brown bear 1993-1999). Medvedki, ki so ju v študiji poimenovali Ančka in Polona sem izbral, ker imata največji presek dni, za katere obstajajo meritve.

Nekaj funkcij, ki vam bodo prišle prav:

  • np.min in np.max sicer vrneta najmanjši in največji element tabele, vendar bosta vrnili nan, čim tabela vsebuje kak nan. V tem primeru je potebno uporabiti np.nanmin in np.nanmax, ki vrneta največji in najmanjši element, pri čemer ignorirate tiste, ki so nan.
  • np.nanargmin in np.nanargmax sta podobna np.argmin in np.argmax, vendar ignorirata nan-e.
  • np.isnan vrne True za elemente, ki so nan.
  • np.isfinite vrne True za elemente, ki so običajna števila - torej tiste, ki niso nan ali inf.
  • np.sqrt izračuna koren vseh elementov tabele.

V zapiskih se vam splača prebrati razdelek, v katerem smo računali, koliko je $\pi$.

Naloga navidez zahteva, da napišemo veliko funkcij. V resnici pa je zastavljena tako, da se dopolnjujejo - v večini je potrebno le spremeniti nekaj iz prejšnje. Tokrat se vaše funkcije ne bodo klicale med sabo.

Vse funkcije je potrebno sprogramirati z uporabo numpy. Nobenih zank - nobenih for ali while. Vse funkcije brez prve bodo dolge le eno vrstico, saj bo vse delo opravil numpy. Testi tega še ne testirajo, vendar jih bomo verjetno dopolnili.

  1. Napiši funkcijo preberi_podatke(), ki prebere podatke iz datoteke polona-in-ancka.csv (datoteka naj bo v istem direktoriju kot tvoj program; odpre naj jo open("polona-in-ancka.csv"), brez kakšnih dodatnih poti!) ter vrne tri numpy-jeve tabele: tabelo z datumi ter tabeli z Poloninimi in Ančkimi koordinatami. Prva tabela bodo nizi, druga pa števila (dtype mora biti float). Polonini podatki so v stolpcih 1 in 2, če začnemo šteti od 0, Ančkini pa v 3 in 4.

  2. Napiši funkcijo meritev(xy), ki prejme koordinate in pove, za koliko dni so le-te znane. (Če je znana ena, je tudi druga.) Za Polono obstaja 208 meritev, za Ano 350.

  3. Napiši funkcijo vzhod_zahod(xy), ki prejme koordinate in vrne najvzhodnejšo in najzahodnejšo zemljepisno dolžino v podatkih. Zemljepisna dolžina je druga koordinata in narašča proti vzhodu. Za Polono, recimo, je najvzhodnejša dolžina 14.4868167466, najzahodnejša pa 14.3361857993.

  4. Napiši funkcijo najvzhodnejša(xy), ki vrne koordinate (zemljepisno širino in dolžino) najbolj vzhodne točke v podatkih. Za Polono mora vrniti (45.8236039136, 14.4868167466). (Številko 14.4868..., najvzhodnejšo koordinato vrne tudi prejšnja funkcija. Ta mora vrniti pripadajočo zemljepisno širino.)

  5. Napiši funkcijo minrazdalja(xy, tocka), ki prejme zabeležene koordinate in koordinate neke točke. Vrniti mora najmanjšo razdaljo med temi zabeleženimi koordinatami in to točko. V nalogi se bomo delali, da je Zemlja ploščata in da imata koordinati enako skalo (torej, da je ena stopinja po širini enaka kot po višini) in lahko zato računamo kar evklidske razdalje ("po Pitagori").

    Najkrajša razdalja med Polono in Prešernom ([46.0513539,14.502127]) je 0.1877726.

    Če imamo torej medvedovi koordinati (mx, my) in točko (tx, ty), je razdalja med medvedom in točko kar $\sqrt{(m_x - t_x)^2 + (m_y - t_y)^2}$. Nalogo reši tako, da od (vseh) medvedjih koordinat odšteješ koordinate točke, vse skupaj skvadriraš in sešteješ po vrsticah, potem izračunaš koren teh vsot in na koncu vrneš minimum (z nanmin).

  6. Napiši funkcijo najblizja(xy, tocka), ki je podobna prejšnji, vendar ne vrne minimalne razdalje temveč najbližjo točko. Za Polono in Prešerna vrne (45.8675868, 14.4635502): Polona je bila najbližje sprehajalcem po Prešernovem trgu, ko je bila nekoč malo južno od Rakitne.

  7. Napiši funkcijo minmedrazdalja(xy1, xy2), ki dobi tabelo s koordinatami dveh medvedov (torej celotni tabeli za vse dni beleženja) in vrne najmanjšo razdaljo, zabeleženo na isti dan. Najmanjša razdalja med Polono in Ančko je 0.07254133219635045). (Funkcija je presenetljivo (in še bolj) podobna funkciji minrazdalja)

  8. Napiši funkcijo dan_srecanja(datumi, xy1, xy2), ki prejme tabelo z datumi in tabeli s koordinatama (v bistvu vse, kar vrača preberi_podatke) ter vrne datum, ko sta si bili Polona in Ančka najbližje. Pravilni odgovor je "1998-06-23".

Teaserji

Polona in Ančka sta se srečali v bližini nekega radarja. Predvsem Ančka ni bila daleč. Poišči Ančkine koordinate, vnesi v Google Earth, najdi radar. Potem si lahko prebereš kaj več o njem - je kar zanimivo. Radar si najbrž tudi že kdaj opazil(a), ko si se peljal(a) po avtocesti proti Logatcu.

Podatki so iz zbirke različnih podatkov o gibanju živali, ki jih najdemo na strani https://www.movebank.org/cms/webapp. V tej študiji nista le Ančka in Polona, temveč še 20 drugih medvedov in medvedk. Celotna, originalna datoteka je priložena testom, če koga, ki mu je blizu bolj rumen tisk, zanima, ali je imela Ančka kaj z Vinkom (ali pa se je Vinko bolj zanimal za Polono). (Ali pa, ojoj, za obe?)

Testi in podatki

  • podatki-in-testi.zip podatki-in-testi.zip
    7. december 2023, 15:38
◄ Vaje
Rešitev ►
Trenutno uporabljate gostujoči dostop (Prijavite se)
Pridobi mobilno aplikacijo Obvestilo o avtorskih pravicah
Stran poganja Moodle