\documentclass{article}
\usepackage[magyar]{babel}
\usepackage[latin2]{inputenc}
\begin{document}


\centerline{\large \bf Java és C++ gyakorlat fizikus--informatikusoknak}
\vspace*{5mm}
\centerline{\large \bf 1. zárthelyi dolgozat}
\vspace*{5mm}
\centerline{\large 2004. november 8., hétfő}

\vspace*{15mm}

\begin{enumerate}
\item A kvaterniók teste a komplex számtest egy speciális bővítése. Minden
kvaternió az $a=\alpha_0+\alpha_1{\bf i}+\alpha_2{\bf j}+\alpha_3{\bf k}$
alakban írható, ahol $\alpha_0$, $\alpha_1$, $\alpha_2$, $\alpha_3$ valós
számok, az {\bf i}, {\bf j}, {\bf k} generátor kvaterniókra pedig fennállnak
az alábbi szorzási szabályok:
$${\bf i}^2={\bf j}^2={\bf k}^2=-1,$$
$${\bf j}{\bf k}=-{\bf k}{\bf j}={\bf i},$$
$${\bf k}{\bf i}=-{\bf i}{\bf k}={\bf j},$$
$${\bf i}{\bf j}=-{\bf j}{\bf i}={\bf k}.$$
Írjunk C++ programot, melyben definiáljuk a kvaterniók osztályát, dolgozzuk ki
az összeadás és szorzás operátorát és a műveleti jelek
túl\-ter\-he\-lé\-sé\-vel egyszerű jelölésmóddal alkalmazzuk a következő
kifejezés ki\-szá\-mí\-tá\-sá\-ra:
$$(-3+2{\bf i}+4{\bf j}+5{\bf k})+(3+4{\bf i}-7{\bf j}+5{\bf k})(2-6{\bf i}+3{\bf j}+7{\bf k}).$$
\item Virtuális függvények alkalmazásával írjunk olyan C++ programot, amely az
$$ax^2+bx+c=0$$
valós együtthatós másodfokú egyenlet gyökeit minden lehetséges esetben (két
konjugált komplex gyök van, a két valós gyök egybeesik, két
különböző valós gyök van) helyesen, az esetnek megfelelő megoldóképlet
alkalmazásával adja meg!
\item Minden négyzetes mátrix felbontható egy ortogonális mátrix (Q) és egy
  felső háromszögmátrix (R) szorzatára. (Hatékonyan alkalmazható pl. sok nem felcserélhető mátrix
  összeszorzására.) A felbontás neve \mbox{Q-R} dekompozíció, melynek egy C
  nyelvű, float típusra megírt változata a Numerical Recipes
  programkönyvtárban (a gépen a {\it numrec} directory-ban) {\tt qrdcmp.c}
  néven található meg, a hozzátartozó dokumentáció a {\tt doc/c2-10.ps} file.  

C++ programunkban sablonok alkalmazásával általánosítsuk a 
\mbox{Q-R} dekompozíciós algoritmust úgy, hogy float, double
és std::complex$<$double$>$ típusú adatok esetén egyaránt működjön!

\end{enumerate}

\end{document}
