HF 2 (15 pont)

  • Minden feladatot a feladatszámnak megfelelő számú megoldásnotebookban oldj meg! Az első feladatot az feladat01.ipynb notebookba és így tovább.
  • A megoldás tartalmazza a megoldandó feladat szövegét a megoldásnotebook első markdown cellájában!
  • 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 csak fél feladatnak számítanak.
  • 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 csak fél feladatnak számít!
  • A beadott notebookok Kernel -> Restart&Run All hatására a beadott formát reprodukálják!
  • A Feladatok megadott pontszámán túl a beadott feladatok külalakjáért összesen 3 pontot lehet szerezni!

Feladat 1 (2 pont)

Vizsgáljuk a szabályos $n$-szögre épülő molekula, avagy egy hópehely, virág, szabályosan megpakolt pizza, torta, vagy más sütemény geometriai szimmetriáit!

A szimmetriáik közt szerepel az y tengelyre való $\;\mathbf{T}=\begin{pmatrix}-1&0\\0&1\end{pmatrix}\;$ tükrözés, és az $\alpha=2\pi/n$ szögű $\;\mathbf{F}=\begin{pmatrix}\cos{\alpha}&-\sin{\alpha}\\\sin{\alpha}&\cos{\alpha}\end{pmatrix}\;$ forgatás.

  • Ellenőrizzük $n=6$ esetére, hogy $\;\mathbf{F}\cdot \mathbf{T} \neq \mathbf{T}\cdot \mathbf{F}\;$, viszont $\;\mathbf{F}\cdot \mathbf{T} = \mathbf{T}\cdot \mathbf{F}^{-1}\;$, Saját szavaiddal fogalmazd meg, hogy az utóbbi mit jelent geometriailag!

  • Írjunk egy check nevű függvényt, ami két bemeneti változóval T-vel és F-fel rendelkezik és visszatérési értéke két bool típusú változó (True vagy False). A check függvény általános, neki megadott $\mathbf{T},\mathbf{F}$ matrix-okra vagy array-kre elvégzi a fenti részfeladat ellenőrzéseit! Az első visztérési érték az első a második visszatérési érték pedig a második azonosságot ellenőrzésének megfelelő érték legyen! A numpy allclose rutinja segítségedre lehet két numpy array vagy matrix típusú objektum összehasonlításában.

  • Határozzuk meg $n=6$ esetén, hogy hány szimmetriatranszformáció van összesen! Gyűjtsük egy basic listába $\mathbf{F}$ egymástól különböző hatványait, azaz $\mathbf{F}^{k}$-kat (ezekből véges sok van, ugyanis ha egy forgatást egymás után többször elvégzünk akkor előbb utóbb az identitást kapjuk racionális szögek esetén), és egy mirror listába az $\mathbf{F}^{k}\mathbf{T}$ szorzatokat! Írjuk ki a 'basic' lista darabszámát és mindegyik mátrix determinánsát mindkét listából!

  • A saját szavaiddal fogalmazd meg, hogy milyen szabályosságot figyelhetünk meg a determinánsokra vonatkozólag!

  • Próbáljuk ki a $n=6$, $n=7$ és $n=5.5$ esetére is! A saját szavaiddal fogalmazd meg hogy az $n=5.5$-ös eset melyik képpel van kapcsolatban a megfelelő basic lista számossága alapján!

  • $n=6$ és $n=7$ esetén vizsgáljuk meg hogy valamelyik lista basic vagy mirror lista tartalmazza-e az x tengelyre való tükrözés $\;\mathbf{K}=\begin{pmatrix}1&0\\0&-1\end{pmatrix}\;$ mátrixát!

Feladat 2 (2 pont)

  • Először egy kockás papírra kézzel vázold fel a mátrix struktúráját, készíts vele szelfit, és töltsd fel a képet a kooplex-re!
  • Ezután írj egy programot mely felépíti a szomszédsági mátrixokat! A szomszédsági mátrix felépítését ne "kézzel egyenként" hanem algoritmikusan oldd meg (egyenként beállított mátrixelemek használata 0 pontot jelent). A szomszédsági mátrix felépítésében segítségedre lehet a numpy néhány array-ek létrehozására és manipulálására kitalált rutinja. Például a kron, a diag, a ones numpy függvényeknek melyek a feladat megoldásában segíthetnek!
  • A második gráfnál a piros élekhez tartózó elemeket a szomszédsági mátrixban cseréld le 0.5-re!
  • Mind a két esetben határozd meg, hogy a szomszédsági mátrix hány sajátértékének abszolút értéke kisebb $10^{-10}$-nél!
  • A saját szavaiddal diszkutáld, hogy az első gráf páros és páratlan szinten lévő csúcsainak számossága milyen kapcsolatban áll a zérushoz közeli sajátértékek számával!
  • A saját szavaiddal fogalmazd meg, hogy a kapott nem zérus (vagy nem nullához közeli) sajátértékek közül a negatív és pozitív sajátértékek milyen kapcsolatban állnak egymással!

Feladat 3 (2 pont)

Ebben a feladatban az alábbi $N\times N$-es blokk struktúrával rendelkező $H$ mátrix tulajdonságait fogjuk vizsgálni.

\begin{equation} H=\left(\begin{array}{ccccccc} U & T_{1} & T_{2}\\ T_{1}^{\top} & U & T_{1} & T_{2}\\ T_{2}^{\top} & T_{1}^{\top} & U & \ddots & \ddots\\ & T_{2}^{\top} & \ddots & \ddots & \ddots & T_{2}\\ & & \ddots & \ddots & U & T_{1} & T_{2}\\ & & & T_{2}^{\top} & T_{1}^{\top} & U & T_{1}\\ & & & & T_{2}^{\top} & T_{1}^{\top} & U \end{array}\right)\begin{array}{c} \\ \\ \uparrow\\ N\\ \downarrow\\ \\ \\ \end{array} \end{equation}

A mátrix minden blokkja egy $2\times 2$-es mátrix. A főátlóban lévő $U$ az első mellék átlóban lévő $T_1$ illetve a második mellékátlóban lévő $T_2$ mátrixok definíciója a következő: \begin{equation} U=\left(\begin{array}{cc} 0 & p\\ p & 0 \end{array}\right),\ T_{1}=\left(\begin{array}{cc} 0 & 0\\ v & 0 \end{array}\right),\ T_{2}=\left(\begin{array}{cc} 0 & w\\ 0 & 0 \end{array}\right), \end{equation}

A $T_1^\top$ és $T_2^\top$ mátrixok a $T_1$ és $T_2$ mátrixok transzponáltját jelölik. A mátrix többi, nem jelölt eleme 0.

  • Írj egy függvényt, melynek a neve és paraméterei legyenek make_ham_dense(p,v,w,N), a függvény visszatérési értéke pedig egy numpy array típusú válltozó legyen mely megfelelő $p,v,w$ és $N$ értékekhez tartozó $H$ mátrixot tartalmazza! A függvény definíciójában NE használjunk for ciklusokat! (Amenyiben for ciklust használsz a függvény definícióban erre a részfeladatra nem kapsz pontot.) A numpy beépített array-k létrehozására szolgáló függvényei segítségével oldjuk meg a feladatot! Nézz utána a kron, a diag, az ones numpy függvényeknek, melyek a feladat megoldásában segíthetnek!
  • A fent definiált make_ham_dense(p,v,w,N) függvény segítségével számold ki a H mátrix sajátértékeinek $p$ függését $v=0.5,w=1.0$ esetben $N=20$! Készíts egy ábrát amin a sajátértékeket ábrázolod! A $p$ paraméter értékeit a [-2,2] intervallumban 100 pontban mintavételezd!
  • Írj egy függvényt melynek a neve és paraméterei legyenek make_ham_sparse(p,v,w,N), a függvény visszatérési értéke pedig egy scipy csr_matrix típusú ritka mátrix legyen, mely a megfelelő $p,v,w$ és $N$ értékekhez tartozó $H$ mátrixot tartalmazza! A függvény definíciójában NE használjunk for ciklusokat! (Amenyiben for ciklust használsz a függvény definícióban erre a részfeladatra nem kapsz pontot.) A scipy beépített ritka mátrixok létrehozására szolgáló függvényei segítségével oldjuk meg a feladatot! Nézz utána a scipy.sparse modul kron, diags,spdiags és block_diag függvényeknek, melyek a feladat megoldásában segíthetnek!
  • A fent definiált make_ham_sparse(p,v,w,N) függvény segítségével és a scipy.sparse.linagl almodul eigsh függvényének használatával határozd meg, hogy a $p$ paraméter függvényében hány olyan sajátértéke van a $H$ mátrixnak, melynek az abszolút értéke kisebb $10^{-3}$-nál $v=0.5,w=1.0$ esetben $N=20$ és $N=501$ esetén! Az eigsh függvény paramétereit úgy állítsd be, hogy a 0 körüli sajátértékek közzül 20-at határozzon meg (k és sigma paraméterek lehetnek itt fontosak, a sajátvektorok meghatározására viszont nincs szükség)! Készíts egy ábrát amin a $p$ paraméter értékeit a [-2,2] intervallumban 100 pontban mintavételezd!

  • A saját szavaiddal fogalmazd meg, hogy a két elkészített képed alapján az $N$ paraméter növelésével hogy változnak a nullához közeli sajátértékek!

Feladat 4 (2 pont)

Vizsgáljuk az alábbi öt polinomot!

\begin{align} P_1(x)&= \frac{63 x^{5}}{8} - \frac{35 x^{3}}{4} + \frac{15 x}{8} + 1 , \\ P_2(x)&= \frac{35 x^{4}}{8} - \frac{9 x^{2}}{4} + \frac{7}{8} , \\ P_3(x)&= \frac{35 x^{4}}{8} - \frac{15 x^{2}}{4} + x + \frac{3}{8} , \\ P_4(x)&= \frac{63 x^{5}}{8} - \frac{25 x^{3}}{4} + \frac{11 x}{8} , \\ P_5(x)&= \frac{5 x^{3}}{2} + \frac{3 x^{2}}{2} - \frac{3 x}{2} - \frac{1}{2} \end{align}
  • Numerikus integrálás segítségével határozzuk meg az alábbi határozott integrál értékét minden $n\neq m$ párra!
$$ I_{nm}={\displaystyle \int _{-1}^{1}\,{P_{n}(x)\,P_{m}(x) \mathrm {d} x} } $$
  • Az integrálok értékét tároljuk el egy listába! A lista minden eleme egy háromelemű lista legyen, melynek első eleme az $n$, a második eleme $m$, a harmadik eleme pedig maga az integrál értéke! Azaz egy ilyen alakú struktúrát kell előállítani:
[ [1,2,I_12], [1,3,I_13], ... ]
  • A fent generált lista segítségével csoportosítsuk a polinomokat két csoportba! A csoportokba azok a polinomok kerüljenek, melyekre igaz, hogy közülük tetszőleges párt választva az integrál értéke nulla! A csoportosítást egy ábra készítésével oldjuk meg! Az ábrát az alábbi eljárás szerint készítsd el:

    • Generálj 5 véletlenszerűen elhelyezkedő síkbeli pontot. Minden egyes pont egy polinomot fog jelölni.
    • A polinomok sorszámát tüntesd fel az ábrán!
    • A fent generált lista segítségével minden olyan pontpárt köss össze egy vonallal, amelyekre az integrál értéke praktikusan nulla (az az integrál abszolult értéke $10^{-10}$-nél kisebb)!
  • Fogalmazd meg saját szavaiddal, hogy melyik polinomok kerülnek egy csoportba!

Feladat 5 (2 pont)

A Lorenz-modell egy olyan determinisztikus differenciálegyenlet-rendszert ír le, melynek bizonyos paraméterválasztások mellett a megoldása kaotikus. A rendszert leíró egyenletek a következők:

$\frac{dx}{dt} = \sigma(y-x)$

$\frac{dy}{dt} = x(\rho-z)-y$

$\frac{dz}{dt} = xy-\beta z$

A továbbiakban legyen $\sigma = 10$ és $\beta = 8/3$!

  • Vizsgáljuk $\rho = 0.1, 10, 20, 28$ értékekre a rendszer viselkedését! Ábrázoljuk egy közös ábra 4 különböző subplotján az $x_0 = 1$, $y_0 = 0.3$ és $z_0 = 0.5$ kezdőfeltétellel indított trajektóriákat $t=50$-ig (kellően sok mérési pontban), 3D-ben! Diszkutáljuk az alapvető különbségeket a különböző $\rho$ értékek között!

  • Ábrázoljuk a $\rho \in [0, 30]$ intervallumon 100 mérési pontban, legalább tízféle, véletlenül megválasztott kezdőfeltételekkel indított rendszerre az $x(t=50)$ értékeket $\rho$ függvényében egy közös ábrán! Mit tudunk az ábra alapján megállapítani a rendszer viselkedéséről? Milyen $\rho$ értéknél változik meg az alapvető dinamika?

  • Ábrázoljuk az $x_0^a = 1$, $y_0^a = 0.3$, $z_0^a = 0.5$, illetve az $x_0^b = 1.00001$, $y_0^b = 0.3$, $z_0^b = 0.5$ kezdőfeltételekkel indított trajektóriák egymástól való távolságát $\rho = 13$ és $\rho = 28$ esetén az idő függvényében egy közös ábrán! A függőleges tengely beosztását állítsuk logaritmikusra! Mit tapasztalunk?

Feladat 6 (2 pont)

Az alábbi kép két, $m$ és $M$, tömegű testből és egy nyújthatatlan, elhanyagolható tömegű $l$ hosszúságú kötélből álló rendszert ábrázol. Az $M$ tömegű test egy asztal síkján mozoghat. A kötél az asztal közepén elhelyezkedő lyukon keresztül köti össze a két testet. Az $m$ tömegű test csak a függőleges tengely mentén mozoghat. Az asztal síkja pont $l$ távolságra van a talajtól. Vizsgáljuk a képen vázolt dinamikai rendszer időfejlődését a Hamilton-féle mechanika egyenletein keresztül!

A rendszer Hamilton-függvénye az alábbi alakot ölti: $$ H=\frac{1}{2}\frac{p_{r}^{2}}{M+m}+\frac{1}{2}\frac{p_{\theta}^{2}}{Mr^{2}}+mgr $$ A négy dinamikai (az az időtől potenciálisan függő) változó a $p_r$, $p_\theta$, $r$ és $\theta$. A Hamiltoni-dinamika törvényeinek megfelelően ezen mennyiségek időfüggését az alábbi differenciálegyenlet-rendszer határozza meg: \begin{eqnarray} \frac{dp_r}{dt}=-\frac{\partial H}{\partial r}\\ \frac{dp_\theta}{dt}=-\frac{\partial H}{\partial \theta}\\ \frac{dr}{dt}=\frac{\partial H}{\partial {p_r}}\\ \frac{d\theta}{dt}=\frac{\partial H}{\partial {p_\theta}} \end{eqnarray}

A fenti differenciálegyenlet-rendszer megoldásának ismeretében a két tömegpont poziciója az alábbi összefüggések szerint adódik:

$$ \boldsymbol{r}_{M}=\left(\begin{array}{c} r(t)\cos\left(\theta(t)\right)\\ r(t)\sin\left(\theta(t)\right)\\ l \end{array}\right),\ \boldsymbol{r}_{m}=\left(\begin{array}{c} 0\\ 0\\ r(t) \end{array}\right) $$
  • Oldd meg a Hamilton-féle mozgásegyenleteket a $t\in[0,10]$ időintervallumot 1000 pontban mintavételezve, a $p_r(0)=0$, $p_\theta(0)=1$,$r(0)=1$ és $\theta(0)=0$ kezdőfeltételek mellett!
  • Legyen a kötél hossza $l=2$ m a tömegek pedig $m=1$ kg $M=2$ kg. A gravitációs gyorsulás értékét közelítsük g=10 $m/s^2$ értékkel
  • Készíts ábrát a négy dinamikai változó időfüggéséről!
  • Készíts interaktív 3D ábrát a két tömegpont mozgásáról! Jelöld a tömegpontokat összekötő kötelet is! Egy csúszka segítségével lehessen beállítani, hogy az ábrán éppen melyik időpontot ábrázolod!