\documentclass{article} 
\usepackage{bm} 
\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 11., csütörtök} 
 
\vspace*{15mm} 
 
\begin{enumerate} 
\item A mellékelt programban megtalálja a kvaternio osztályt, amellyel az 
${\bm \alpha}=\alpha_0+\alpha_1{\bf i}+\alpha_2{\bf j}+\alpha_3{\bf k}$ alakú
  kvaterniók definiálhatók, értelmezett rájuk az összeadás (+ és +=
  műveletek), a szorzás ill. a valós számmal való szorzás (* ill. *= alakban
  egyaránt), valamint a konjugálás ({\bf i}, {\bf j}, {\bf k} együtthatójának
  egyidejű előjelváltása) a conjg függvénnyel. Helyvektorokat kvaterniókkal
${\bf r}=x{\bf i}+y{\bf j}+z{\bf k}$ alakban adhatunk meg. Mutassa meg
  numerikus példákon (véletlenszerű kvaterniókat kiválasztva), hogy 
az ${\bm r}'={\bm \alpha}{\bm r}\bm \alpha^*$ transz\-formáció
tetszőleges ${\bm \alpha}$ kvaternió esetében a vektor elforgatásának felel
meg, amennyiben $\alpha_0^2+\alpha_1^2+\alpha_2^2+\alpha_3^2=1$! Mutassa meg
továbbá, hogy a z tengely körüli $\varphi=45^\circ$ szögű elforgatás a 
$\cos(\varphi/2)+ \sin(\varphi/2){\bf k}$ kvaterniónak felel meg, 
az x tengely körüli $\beta=60^\circ$ szögű elforgatás pedig a 
$\cos(\beta/2)+ \sin(\beta/2){\bf i}$ kvaterniónak! Határozza meg ennek
alapján numerikusan, a kvaterniók használatával a $\varphi=45^\circ$,
$\beta=60^\circ$, $\psi=30^\circ$ Euler-szögekhez ($\varphi$ szögű
forgatás a z tengely körül, majd $\beta$ szögű
forgatás az x tengely körül, végül $\psi$ szögű
forgatás a z tengely körül) tartozó forgatás mátrixát!  

\item Virtuális függvények alkalmazásával írjon olyan C++ programot, amely
minden kétismeretlenes, két egyenletből álló lineáris egyenletrendszer esetében 
automatikusan megtalálja a lehetséges megoldásokat! 
  
\item Minden négyzetes mátrix felbontható egy alsó háromszögmátrix (L) és egy
  felső háromszögmátrix (U) szorzatára. (Hatékonyan alkalmazható lineáris
  egyenletrendszerek megoldásakor.) A felbontás neve \mbox{LU} 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 ludcmp.c}
  néven található meg, a hozzátartozó dokumentáció a {\tt doc/c2-3.ps} file.  

C++ programjában sablonok alkalmazásával általánosítsa az 
\mbox{LU} 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} 
