
diff -r 6108f2007151 -r 0eca6c542fce day1/cheatsheet6.tex
--- a/day1/cheatsheet6.tex	Thu Nov 19 11:04:11 2009 +0530
+++ b/day1/cheatsheet6.tex	Thu Nov 19 22:26:00 2009 +0530
@@ -1,6 +1,20 @@
 \documentclass[12pt]{article}
 \title{Solving Equations \& ODEs}
 \author{FOSSEE}
+\usepackage{listings}
+\lstset{language=Python,
+    basicstyle=\ttfamily,
+commentstyle=\itshape\bfseries,
+showstringspaces=false,
+}
+\newcommand{\typ}[1]{\lstinline{#1}}
+\usepackage[english]{babel}
+\usepackage[latin1]{inputenc}
+\usepackage{times}
+\usepackage[T1]{fontenc}
+\usepackage{ae,aecompl}
+\usepackage{mathpazo,courier,euler}
+\usepackage[scaled=.95]{helvet}
 \begin{document}
 \date{}
 \vspace{-1in}
@@ -9,27 +23,87 @@
 \large{FOSSEE}
 \end{center}
 \section{Solving linear equations}
-\begin{verbatim}
-    In []: A = array([[3,2,-1],
-                      [2,-2,4],                   
-                      [-1, 0.5, -1]])
-    In []: b = array([[1], [-2], [0]])
-    In []: x = solve(A, b)
-    In []: Ax = dot(A,x)
-    In []: allclose(Ax, b)
-    Out[]: True
-\end{verbatim}
+Condier following sets of equations:\\
+  \begin{align*}
+    3x + 2y - z  & = 1 \\
+    2x - 2y + 4z  & = -2 \\
+    -x + $\frac{1}{2}$y -z & = 0
+  \end{align*}\\
+The matrix representation is:\\
+\begin{center}
+$A*x = B$
+\end{center}
+Where A is coefficient matrix(in this case 3x3)\\
+B is constant matrix(1x3)\\
+x is the required solution.\\
+\begin{lstlisting}
+In []: A = array([[3,2,-1], [2,-2,4], [-1, 0.5, -1]])
+In []: B = array([[1], [-2], [0]])
+In []: x = solve(A, B)
+\end{lstlisting}
+Solve the equation $A x = B$ for $x$.\\
+To check whether solution is correct try this:
+\begin{lstlisting}
+In []: Ax = dot(A,x)  #Matrix multiplication of A and x(LHS)
+In []: allclose(Ax, B)
+Out[]: True
+\end{lstlisting}
+\typ{allclose} Returns \typ{True} if two arrays(in above case Ax and B) are element-wise equal within a tolerance. 
+\newpage
 \section{Finding roots}
-\begin{verbatim}
-  In []: coeffs = [1, 6, 13]
-  In []: roots(coeffs)
-\end{verbatim}
-Finding the roots of a function
-\begin{verbatim}
-In []: fsolve(sin(x)+cos(x)**2, 0)
-\end{verbatim}
+\subsection{Polynomials}
+\begin{center}
+  $x^2+6x+13=0$
+\end{center}
+to find roots, pylab provides \typ{roots} function.
+\begin{lstlisting}
+In []: coeffs = [1, 6, 13] #list of all coefficients
+In []: roots(coeffs)
+\end{lstlisting}
+\subsection{functions}
+Functions can be defined and used by following syntax:
+\begin{lstlisting}
+def func_name(arg1, arg2):
+    #function code
+    return ret_value
+\end{lstlisting}
+A simple example can be
+\begin{lstlisting}
+def expression(x):
+    y = x*sin(x)
+    return y
+\end{lstlisting}
+Above function when called with a argument, will return $xsin(x)$ value for that argument.
+\begin{lstlisting}
+In [95]: expression(pi/2)
+Out[95]: 1.5707963267948966
+
+In [96]: expression(pi/3)
+Out[96]: 0.90689968211710881
+\end{lstlisting}
+\subsection{Roots of non-linear eqations}
+For Finding the roots of a non linear equation(defined as $f(x)=0$), around a starting estimate we use \typ{fsolve}:\\
+\typ{In []: from scipy.optimize import fsolve}\\
+\typ{fsolve} is not part of \typ{pylab}, instead it is part of \textbf{optimize} package of \textbf{scipy}, and hence we \textbf{import} it.\\
+%\typ{fsolve} takes first argument as name of function, which evaluates $f(x)$, whose roots one wants to find. And second argument is starting estimate, around which roots are found.
+For illustration, we want to find roots of equation:
+\begin{center}
+  $f(x)=sin(x)+cos(x)^2$
+\end{center}
+So just like we did above, we define a function:
+\begin{lstlisting}
+In []: def f(x):
+   ....:        return sin(x)+cos(x)**2
+   ....: 
+\end{lstlisting}
+Now to find roots of this non linear equation, around a initial estimate value, say 0, we use \typ{fsolve} in following way:
+\begin{lstlisting}
+In []: fsolve(f, 0) #arguments are function name and estimate
+Out[]: -0.66623943249251527
+\end{lstlisting}
+
 \section{ODE}
-\begin{verbatim}
+\begin{lstlisting}
   In []: def epid(y, t):
   ....     k, L = 0.00003, 25000
   ....     return k*y*(L-y)
@@ -40,5 +114,5 @@
   In []: y = odeint(epid, 250, t)
 
   In []: plot(t, y)
-\end{verbatim}
+\end{lstlisting}
 \end{document}




