%%
\documentclass[12pt]{article}
\usepackage[pdftex, pdfmark]{hyperref}
\usepackage[polish]{babel}
\usepackage{multicol}
\usepackage[MeX]{polski}
%\usepackage[latin2]{inputenc}
%\usepackage[cp1250]{inputenc}
\usepackage[utf8]{inputenc}
%\usepackage[utf8x]{inputenc}
\usepackage[intlimits]{amsmath}
\usepackage{fancyhdr}
\usepackage{graphicx}
\usepackage[a4paper]{geometry} 
\pagestyle{fancy}
\lhead{  \today}
\rhead{ }
\chead{  Podstawy programowania: {\em Mathematica } }
\rfoot{ https://ribes.if.uj.edu.pl/mathematica/ }
\cfoot{}
\lfoot{ andrzej.odrzywolek@uj.edu.pl }
\renewcommand{\headrulewidth}{3pt}
\renewcommand{\footrulewidth}{0.5pt}
\renewcommand{\fboxrule}{2pt}


\begin{document}

\title{Zastaw zadań 3}
\date{\today}
\maketitle



{\bf Zadanie 1.} 
Napisać funkcję, która rozwiązuje w sposób przybliżony równanie z jedną niewiadomą
metodą \href{https://pl.wikipedia.org/wiki/Metoda_r%C3%B3wnego_podzia%C5%82u}{bisekcji}.



Funkcja powinna przyjmować cztery argumenty, kolejno:
\begin{enumerate}
\item funkcję $f$ definiującą równanie $f(x)=0$
\item lewą wartość startową $x_L$
\item prawą wartość startową $x_R$
\item dokładność absolutną wyznaczenia wartości $x_F$ będącej rozwiązaniem przybliżonym równania $f(x_F) \simeq 0$
\end{enumerate}


Funkcja powinna zwracać:
\begin{enumerate}
\item znalezioną wartość $x_F$
\item wartość funkcji w tym punkcie $f[x_F]$
\item ilość wykonanych iteracji
\item inne wielkości diagnostyczne wg. uznania studentów, np. listę coraz lepszych przybliżeń
\end{enumerate}



Analizując działanie funkcji należy założyć, że funkcja $f$ jest rosnąca w przedziale $x \in \{x_L, x_R\}$,
oraz że rozwiazanie równania $f(x_F)=0$ leży pomiędzy $x_L$ a $x_R$: $x_L < x_F < x_R$.


Funkcję należy przetestować używając równań dla których rozwiązanie jest oczywiste, oraz w bardziej skomplikowanych przypadkach poprzez porównanie z \pmb{FindRoot}. Jak zachowuje się napisana funkcja w sytuacji gdy
nie są spełnione założenia? Spróbuj zaimplementować prosty mechanizm zabezpieczający przed niewłaściwym użyciem poprzez np. wyświetlenie komunikatu o błędzie. 

\clearpage 



{\bf Zadanie 2$^\ast$.} (DOMOWE) Używając \textit{Mathematici} w wersji 8 (w wersji 7 nie ma możliwości
użycia zewnętrznego kompilatora C, ale składnia jest podobna) przepisać funkcję używająć nagłówka \pmb{Compile}
oraz opcji \pmb{CompilationTarget} $\to$ ''C''. Porównać szybkość działania funkcji z wersją z Zad.~1.



{\sc UWAGA:} w systemie operacyjnym musi być zainstalowany kompilator C; dla studentów UJ jest dostępne przez MSDNAA Microsoft VisualStudio dla Windows; w Linuxie powinien być zainstalowany kompilator gcc.

\end{document}
