HF 4 (15 pont)

  • Minden feladatot a feladatszámnak megfelelő számú megoldásnotebookban oldj meg. Az első feladatot az feladat01.ipynb notebookban és így tovább.
  • A megoldás tartalmazza a megoldandó feladat szövegét a megoldásnotebook első markdown cellájában!
  • A beadott notebookok letisztázottak és igényesen szerkeztettek legyenek!
  • Kommentekkel, illetve markdown cellákkal magyarázd, hogy éppen mit csinál az adott kódrészlet!
  • Magyarázat nélkül a beküldött feladatok AUTOMATIKUSAN 0 PONTOT ÉRNEK!
  • Az elkészített ábrák minden esetben rendelkezzenek ábrafeliratokkal (cím, tengelyfeliratok és − amennyiben indokolt − jelmagyarázat)! Amennyiben a beadott ábrákon nincsenek feliratok, az adott feladat AUTOMATIKUSAN 0 PONTOT ÉRNEK!
  • A beadott notebookok Kernel -> Restart&Run All hatására a beadott formát reprodukálják! (Próbáld ki!)

Adatok

Az alábbi feladatok megoldásához szükséges adatfileok a /v/courses/fiznum1.public/data mappában találhatóak.

Feladat 1 (2.5 pont)

A feladat megoldása során ne használjunk for ciklust és segédlistákat, hanem amennyiben lehet, a pandas, numpy és matplotlib modulok beépített függvényeit és algoritmusait.

Az alábbi feladat a magyarországi kutató-fejlesztő helyek kutatóinak létszámát vizsgálja nemenként és korcsoportonként.

  1. Olvassuk be a https://www.ksh.hu/stadat_files/tte/hu/tte0008.html URL-en található táblázatot anélkül, hogy előtte letöltenénk egy fájlba az oldal tartalmát. (0.25p)
  2. Ábrázoljuk az összes kutató létszámát az idő függvényében. (0.5p)
  3. Melyik években csökkent a kutatók száma az előző évhez képest? (0.25p)
  4. Melyik évben volt a 35 év alatti korosztályban a legmagasabb és a legalacsonyabb a nők aránya? (0.25p)
  5. Ábrázoljuk a nők arányának időbeli változását korcsoportonként külön-külön görbével, egy ábrán. Milyen trendeket figyelhetünk meg? (0.5p)
  6. Ábrázoljuk évente rétegzett oszlopdiagramon az összes kutató látszámát, nemenként más színnel színezve a rétegeket. (0.5p)
  7. Melyik évben nőtt az előző évhez képest a legnagyobb mértékben a 35 év feletti korosztályban a férfiak aránya? (0.25p)

Feladat 2 (2.5 pont)

A feladat megoldása során ne használjunk for ciklust és segédlistákat, hanem kizárólag a pandas, numpy és matplotlib modulok beépített függvényeit és algoritmusait.

Ebben a feladatban a különböző helyeken és időpontokban történt UFO-észleléseket vizsgáljuk meg.

  1. Olvassuk be az UFO_eszlelesek.csv fájl tartalmát egy pandas DataFrame-be. Alakítsuk át a "idopont" nevű oszlopot dátum típusúvá, a "szelesseg", "hosszusag" és "idotartam (s)" oszlopokat pedig számmá. (0.25p)
  2. Mikori volt a legkorábbi UFO észlelés? Hol látták és mennyi ideig tartott? (0.25p)
  3. Hányféle országból érkeztek az észlelések? Melyik ország lakói észlelték a legtöbb UFO-t? Ebben az országban hányszor annyi észlelés volt, mint a többiben összesen? (Azokat a megfigyeléseket ne vegyük figyelembe, ahol nem szerepel az "orszag" oszlopban megfelelő adat.) (0.5p)
  4. Olvassuk be a https://developers.google.com/public-data/docs/canonical/states_csv URL-en elérhető táblázatot egy pandas DataFrame-be. (Ne töltsük le az adatokat előtte egy fájlba.) A kapott táblázatban a "latitude" és "longitude" oszlopok a különböző amerikai államok geometriai közepének, centroidjának a koordinátáit jelölik. Fűzzük össze ezt a táblázatot az UFO észlelések táblázatának azon soraival, melyek Amerikából származó észlelést tartalmaznak. (Legyünk résen az összefésülendő oszlopok azonosításánál és azok pontos tartalmával kapcsolatban is.) (0.5p)
  5. Melyik amerikai államból származott a legtöbb megfigyelés? Ebben az államban milyen volt a megfigyelések helyszínének és az állam centroidjának a távolságának az eloszlása? Készítsünk ábrát róla! (A távolság meghatározásához írjunk egy függvényt, melyet az apply metódussal hattassunk a táblázatra. A függvény megírásához segítségünkre lehet a Haversine képlet.) Próbáljuk meg értelmezni a kapott eloszlást, miért lehet ilyen? (1p)

Feladat 3 (2.5 pont)

A feladat megoldása során ne használjunk for ciklust és segédlistákat, hanem amennyiben lehet, a pandas, numpy és matplotlib modulok beépített függvényeit és algoritmusait.

Ebben a feladatban Zürich kutyáit és gazdijaikat elemezzük.

  1. Olvassuk be a kutyatartok.csv adatfájlt egy pandas DataFrame-be. Hány gazdinak van egynél több kutyája? Hány kutyája van a legtöbb kutyát tartó gazdinak? A két kutyát tartó gazdik közül hánynak van ugyanolyan és hánynak két különböző típusú kutyája? (0.25p)
  2. Készítsünk egy táblázatot, melyben a sorok a gazdik korosztályát mutatják, az oszlopok pedig a kerületeket és minden cella azt mondja meg, hogy az adott kerületben hány olyan kutya él, akinek a gazdija az korosztályba tartozik. Ezután készítsünk el egy olyanilyen struktúrájú táblázatot, melyben a cellák azt mondják meg, hogy az adott kerületben lakó kutyusok hányad részének van az adott korcsoportba tartozó gazdija. Melyik kerületben a legnagyobb azoknak a kutyáknak az aránya, akiknek 20 évnél fiatalabb a gazdija? (0.5p)
  3. Melyik a 10 leggyakoribb kutyafajta? Csak ezekre a fajtákra korlátozva látunk-e összefüggést a gazdik neme és a fajták eloszlása között? Készítsünk két kördiagramot. (0.5p)
  4. Van-e összefüggés a gazdik és a kutyák neme között? Ábrázoljuk egy 2x2-es mátrix heatmapjén! A mátrix cellái mutassák meg, hogy az összes hím illetve nőstény kutyának mekkora arányban van férfi/nő gazdijuk. (Az egyszerűség kedvéért használhatjuk a seaborn modult.) (0.5p)
  5. Ábrázoljuk a top10 leggyakoribb kutyafajta eloszlását a kerületek között rétegzett oszlopdiagramon! (0.25p)
  6. Szűkítsük az adatokat a top10 leggyakoribb kutyafajtára. Ábrázoljuk a különböző fajták részarányát (ebben a szűkített adathalmazban) a kutyák születési idejének függvényében egy közös ábrán. Van-e olyan fajta, ami régebben jóval népszerűbb volt, mint 2010 után? (0.5p)

Feladat 4 (2.5 pont)

Egy $a$ szám lánctörtfelbontása az

$$ a = a_0+\frac{1}{a_1+\frac{1}{a_2+\frac{1}{a_3+\ldots}}} $$

alakú előállítását jelenti, ahol $a_k$ egészek, és $a_0$ kivételével mind pozitív kell legyen. Irracionális $a$ számra ennek véges részletével (amikor az $a_{n-1}$ melletti tagot elhagyjuk) viszonylag pontos $p/q$ racionális közelítést lehet adni. Tipikusan az $1/q^2$ pontosság érhető el, de pl. a $\pi$ esetében a lánctörtet $a_3$-ig kiértékelve $\pi\approx 355/113$ közelítést kapunk, aminek a hibája a várt $10^{-4}$ helyett csupán $\approx 3\cdot 10^{-7}$.

Ha a lánctörtben az $a_{n-1}$ melletti tagot nem egyszerűen elhagyjuk, hanem $x$-szel helyettesítjük, akkor minden $n$-re egy-egy függvényt kapunk, pl. $n=4$ esetén:

$$ f_n([a_0,...a_{n-1}],x) = a_0+\frac{1}{a_1+\frac{1}{a_2+\frac{1}{a_3+x}}} $$

  • Állítsuk elő az $f_n$ függvényt $n=1,2,3,4,5$ esetekre, és a together függvény használatával mindegyiket hozzuk $g(x)/h(x)$ alakra, és úgy írassuk ki! Igaz-e, hogy $g$ és $h$ mindegyiknél lineáris függvény? (0.6p)

  • Mivel a nagyobb $n$ értékeknél nehezen kiolvasható a lineáris és konstans tagok együtthatója, a fraction függvénnyel válaszuk külön a számlálót és a nevezőt, utána pedig a collect függvénnyel gyűjtsük össze az $x$-ben lineáris tagokat! Azonban a többtagú kifejezések szorzatából a collect nem tudja kiszedni az $x$-es tagokat, ezért előtte az expand függvénnyel fel kell bontanunk a zárójeleket. Írassuk ki az így kapott számlálót és nevezőt is $n=5$-ig! (0.5p)

  • Most írassuk ki e lineáris törtfüggvényeket, mindegyik $a_k$ értékbe 1-et helyettesítve! Észre veszünk-e valamit az együtthatókon? (0.4p)

  • Ábrázoljuk is a függvényeket a $[0,64]$ intervallumon, szintén mindegyik $a_k$ értékbe 1-et helyettesítve! Igaz-e, hogy mindegyik oda tartani látszik $x\rightarrow\infty$ esetén, ahonnan az előző függvény indeul $x=0$-nál? Ellenőrizzük ezt a limit függvény használatával! (0.5p)

  • Írjunk egy fun nevű függvényt, ami tetszőleges $n$-re létrehozza az $f_n$ függvényt, szintén lineáris törtfüggvényként! A függvény egyetlen argumentuma legyen az $a_0, a_1, \ldots a_{n-1}$ értékekből vagy változókból álló lista! Tehát ez általános $a_k$ értékekre kell működjön. Az $n$ értékét pedig nem szabad külön átadni! Ellenőrizzük az $n=4$ esetre a már legyártott függvénnyel összehasonlítva fun([a0,a1,a2,a3]) eredményét! Próbáljuk ki 10 db 1-esből álló listával is: ha jól csináltuk, akkor az $55$ kétszer szerepel az együtthatók közt! (0.5p)

Feladat 5 (2.5 pont)

Egy $f(x)$ függvény $n$-ed rendű Taylor-polinomját a következő képpen definiáljuk: \begin{equation} T_n(x) = f(0) + \frac{f'(0)}{1!} x + \frac{f''(0)}{2!} x^2 + \ldots + \frac{f^{(n)}(0)}{n!} x^n \end{equation}

Az $f(x)$ függvény $m$ per $n$ Padé-közelítése pedig a következő alakot ölti \begin{equation} P_{n}^{m}(x) = \frac{a_0 + a_1 x + a_2 x^2 + \ldots + a_m x^m}{1 + b_1 x + b_2 x^2 + \ldots b_n x^n} = \frac{A_m(x)}{B_n(x)}, \end{equation} ahol az együtthatók $a_0, a_1, \ldots, a_m$ és $b_1, b_2, \ldots, b_n$ úgy vannak megválasztva, hogy a következő teljesül \begin{equation} A_m(x) - T_{m + n}(x) B_n(x) = K(x) x^{n + m + 1} \end{equation} valamilyen $K$ polinomra.

  • Írj egy függvényt ami kiszámolja egy sympy szimbolikus kifejezés $n$-ed rendű Taylor-polinomját azaz $T_n$-et. A bemenő paraméterek legyenek a következőek: a kifejezés amit sorfejtünk, a változó ami szerint sorfejtünk, és az utolsó bemeneti változó legyen az $n$. A feladat megoldása során NE HASZNÁLD a sympy modul beépített series függvényét! (0.5p)

  • Számold ki szimbolikusan az $e^{-2x}$ kifejezés ötöd rendű Taylor-polinomját az $x$ változó szerint. (0.25p)

  • Írj egy függvényt ami kiszámolja egy sympy szimbolikus kifejezés $m$ per $n$ Padé-közelítését. Válaszd úgy az $a_0, a_1, \ldots, a_m$ és $b_1, b_2, \ldots, b_n$ együtthatókat, hogy az $A_{m}(x) - T_{n + m}(x) B_{n}(x) = c_0 + c_1 x + \ldots c_{n + m} x^{n + m} + K(x)x^{n + m + 1}$ polinom $c_i$ együtthatói legyenek nullák. Ehhez egy $n + m + 1$ változós lineáris egyenletrendszert kell megoldani amit a következő egyenletek definiálnak $c_i(a_0, a_1, \ldots, a_m, b_1, b_2, \ldots, b_n) = 0$ minden $i \in \{0, 1, 2, \ldots, n + m\}$. Használd a sympy solve függvényét. (1.0p)

  • Számold ki az $e^{-x}$ Padé táblázatát $n = 3$-ig és $m = 3$-ig. (0.25p)

  • Határozd meg az $\ln(1 + x) / x$ függvény 20-ad rendű Taylor-polinomját és 3 per 3 Padé közelítését. Ábrázold a Taylor-polimomot, a Padé-közelítést és a $\ln(1 + x) / x$ függvényt egy ábrán az $x \in (-1, 3)$ tartományon. Írd le saját szavaiddal mit tapasztalsz, és melyik közelítést használnád ha $x > 1$. (0.5p)

Feladat 6 (2.5 pont)

A K részecske létezésének igazolására végzett kísérletek egyike során a mérések a kísérleti Kocka tartályban egy ilyen elektromos potenciál kialakulását igazolták:

$$ U = - \log(y^2+z^2) $$

Ebből próbálhatunk következtetni a töltéssel rendelkező K részecskék jelenlétére. A Kocka élei a koordinátatengelyekkel párhuzamosak, vetülete mindhárom tengelyre a $[-a,a]$ intervallum.

  • Határozzuk meg az elektromos teret az $\underline E = - \mbox{grad}\, U $ összefüggés alapján! (0.5p)

  • Számoljuk ki ennek divergenciáját, ami sima töltéssűrűség esetén annak értékével arányos! Vajon ha itt eredményül 0 értéket kapunk, akkor az minden pontban érvényes, így biztosan nincs töltés a Kockában? (0.5p)

  • Mivel az elektromos térnek a Kockára vett felületintegrálja a benne lévő töltéssel arányos, próbáljunk következtetni a töltésre a felületintegrál kiszámításával! Először vizsgáljuk meg a Kocka 6 lapja közül van-e, amin az elektromos tér a felülettel párhuzamos, mert akkor arra nem kell számolnunk. Azt is nézzük meg, vannak-e oldalak, amiken szimmetriatulajdonság miatt egyenlő lesz az integrál, akkor azt elég egyszer kiszámolni! Végül állapítsuk meg, van-e töltés a Kockában! (0.6p)

  • Ellenőrizzük, hogy az elektromos tér rotációmentes, a rotáció tényleges kiszámításával! (0.5p)

  • Számítsuk ki erre a nem rotációmentes vektortérre is a divergenciát és a rotációt: $$ \underline v = \left ( \begin{array}{c} z-y \\ x-z \\ y-x \end{array} \right ) $$ Ez alapján mit mondhatunk, $\underline v$ milyen irányú tengely körüli örvényt írhat le? (0.4p)