Merging the changes from Nishanth and Punch
authoramit
Thu, 16 Sep 2010 19:40:33 +0530
changeset 149 b9ae88095ade
parent 148 60a4616dbf55 (diff)
parent 145 81a74c2aef61 (current diff)
child 151 4032df8f6227
Merging the changes from Nishanth and Punch
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plotting-data.rst	Thu Sep 16 19:40:33 2010 +0530
@@ -0,0 +1,137 @@
+Plotting   Experimental  Data  
+=============================   
+Hello  and welcome , this tutorial on  Plotting Experimental data is 
+presented by the fossee  team.  
+
+{{{ Show the slide containing title }}}
+
+
+{{{ Show the Outline Slide }}}
+
+Here  we will discuss plotting  Experimental data. 
+
+1.We will see how we can represent a sequence of numbers in Python. 
+
+2.We will also become fimiliar with  elementwise squaring of such a
+sequence. 
+
+3. We will also see how we can use our graph to indicate Error.
+
+One needs   to  be  fimiliar  with  the   concepts  of  plotting
+mathematical functions in Python.
+
+We will use  data from a Simple Pendulum  Experiment to illustrate our
+points. 
+
+{{{ Simple Pendulum data Slide }}} 
+
+  
+  
+  
+As we know for a simple pendulum length,L is directly  proportional to 
+the square of time,T. We shall be plotting L and T^2 values.
+
+
+First  we will have  to initiate L and  T values. We initiate them as sequence 
+of values.  To tell ipython a sequence of values we  write the sequence in 
+comma  seperated values inside two square brackets.  This is also  called List 
+so to create two sequences
+
+L,t type in ipython shell. ::
+
+    In []: L = [0.1, 0.2, 0.3, 0.4, 0.5,0.6, 0.7, 0.8, 0.9]
+    
+    In []: t= [0.69, 0.90, 1.19,1.30, 1.47, 1.58, 1.77, 1.83, 1.94]
+
+
+  
+To obtain the  square of sequence t we will  use the function square
+with argument t.This is saved into the variable tsquare.::
+
+   In []: tsquare=square(t)
+  
+   array([  0.4761, 0.81 , 1.4161,  1.69 , 2.1609,  2.4964, 3.1329, 
+   3.3489, 3.7636])
+
+  
+Now to plot L vs T^2 we will simply type ::
+
+  In []: plot(L,t,.)
+
+'.' here represents to plot use small dots for the point. ::
+
+  In []: clf()
+
+You can also specify 'o' for big dots.::
+ 
+  In []: plot(L,t,o)
+
+  In []: clf()
+
+
+{{{ Slide with Error data included }}}
+
+
+Now we  shall try  and take into  account error  into our plots . The
+Error values for L and T  are on your screen.We shall again intialize
+the sequence values in the same manner as we did for L and t ::
+
+  In []: delta_L= [0.08,0.09,0.07,0.05,0.06,0.00,0.06,0.06,0.01]
+  
+  In []: delta_T= [0.04,0.08,0.11,0.05,0.03,0.03,0.01,0.07,0.01]
+
+
+  
+Now to plot L vs T^2 with an error bar we use the function errorbar()
+
+The syntax of the command is as given on the screen. ::
+
+    
+    In []: errorbar(L,tsquare,xerr=delta_L, yerr=delta_T, fmt='b.')
+
+This gives a  plot with error bar for  x and y axis. The  dots are of
+blue color.
+
+
+similarly we can draw the same error bar with big red dots just change 
+the parameters to fmt to 'ro'. ::
+
+    In []: clf()
+    In []: errorbar(L,tsquare,xerr=delta_L, yerr=delta_T, fmt='ro')
+
+
+
+thats it. you can explore other options to errorbar using the documentation 
+of errorbar.::
+
+   In []: errorbar?
+
+
+{{{ Summary Slides }}}
+
+In this tutorial we have learnt : 
+
+1. How to declare a sequence of number , specifically the kind of sequence we learned was a list.
+
+2. Plotting experimental data extending our knowledge from mathematical functions. 
+
+3. The various options available for plotting dots instead of lines.
+
+4. Plotting experimental data such that we can also represent error. We did this using the errorbar() function.
+
+
+ {{{ Show the "sponsored by FOSSEE" slide }}}
+
+
+
+This tutorial was created as a part of FOSSEE project.
+
+Hope you have enjoyed and found it useful.
+
+ Thankyou
+
+ 
+
+Author              : Amit Sethi
+Internal Reviewer   :
+Internal Reviewer 2 : 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plotui.rst	Thu Sep 16 19:40:33 2010 +0530
@@ -0,0 +1,177 @@
+Hello and welcome to the tutorial on creating simple plots using
+Python.This tutorial is presented by the Fossee group.  
+{{{ Show the Title Slide }}} 
+
+I hope you have IPython running on your computer.
+
+In this tutorial we will look at plot command and also how to study
+the plot using the UI.
+
+{{{ Show Outline Slide }}}
+
+Lets start ipython on your shell, type :: 
+
+      $ipython -pylab
+
+
+Pylab is a python library which provides plotting functionality.It
+also provides many other important mathematical and scientific
+functions. After running IPython -pylab in your shell if at the top of
+the result of this command, you see something like ::
+ 
+
+   `ERROR: matplotlib could NOT be imported!  Starting normal
+      IPython.`
+
+
+{{{ Slide with Error written on it }}}
+
+Then you have to install matplotlib and run this command again.
+
+Now type in your ipython shell ::
+
+             In[]: linpace?
+
+
+
+as the documentation says, it returns `num` evenly spaced samples,
+calculated over the interval start and stop.  To illustrate this, lets
+do it form 1 to 100 and try 100 points.  ::
+
+           In[]: linspace(1,100,100)
+
+As you can see a sequence of numbers from 1 to 100 appears.
+
+Now lets try 200 points between 0 and 1 you do this by typing ::
+
+
+            In[]: linspace(0,1,200)
+
+0 for start , 1 for stop and 200 for no of points.  In linspace 
+the start and stop points can be integers, decimals , or
+constants. Let's try and get 100 points between -pi to pi. Type ::
+           
+            In[]: p = linspace(-pi,pi,100)
+
+
+'pi' here is constant defined by pylab. Save this to the variable, p
+.
+
+If you now ::
+     
+	   In[]: len(p)
+
+You will get the no. of points. len function gives the no of elements
+of a sequence.
+
+
+Let's try and plot a cosine curve between -pi and pi using these
+points.  Simply type :: 
+
+
+       	  In[]: plot(p,cos(points))
+
+Here cos(points) gets the cosine value at every corresponding point to
+p.
+
+
+We can also save cos(points) to variable cosine and plot it using
+plot.::
+
+           In[]: cosine=cos(points) 
+
+	   In[]: plot(p,cosine)
+
+ 
+
+Now do ::
+       	 
+	   In[]: clf()
+
+this will clear the plot.
+
+This is done because any other plot we try to make shall come on the
+same drawing area. As we do not wish to clutter the area with
+overlaid plots , we just clear it with clf().  Now lets try a sine
+plot. ::
+
+
+    	 In []: plot(p,sin(p))
+
+
+
+ 
+The Window on which the plot appears can be used to study it better.
+
+First of all moving the mouse around gives us the point where mouse
+points at.  
+
+Also we have some buttons the right most among them is
+for saving the file. 
+
+Just click on it specifying the name of the file.  We will save the plot 
+by the name sin_curve in pdf format.
+
+{{{ Action corelating with the words }}}
+
+As you can see I can specify format of file.  
+Left to the save button is the slider button to specify the margins.  
+
+{{{ Action corelating with the words  }}}
+
+Left to this is zoom button to zoom into the plot. Just specify the 
+region to zoom into.  
+The button left to it can be used to move the axes of the plot.  
+
+{{{ Action corelating with the words }}}
+ 
+The next two buttons with a left and right arrow icons change the state of the 
+plot and take it to the previous state it was in. It more or less acts like a
+back and forward button in the browser.  
+
+{{{ Action corelating with the words }}}
+
+The last one is 'home' referring to the initial plot.
+
+{{{ Action corelating with the words}}}
+
+
+
+{{{ Summary Slide }}}
+
+
+In this tutorial we have looked at 
+
+1. Starting Ipython with pylab 
+
+2. Using linspace function to create `num` equaly spaced points in a region.
+
+3. Finding length of sequnces using  len.
+ 
+4. Plotting mathematical functions using plot.
+
+4. Clearing drawing area using clf 
+ 
+5. Using the UI of plot for studying it better . Using functionalities like save , zoom , moving the plots on x and y axis 
+
+etc ..
+ 
+
+
+{{{ Show the "sponsored by FOSSEE" slide }}}
+
+ 
+
+This tutorial was created as a part of FOSSEE project, NME ICT, MHRD India
+
+ 
+
+ Hope you have enjoyed and found it useful.
+
+ Thankyou
+
+ 
+
+Author              : Amit Sethi
+Internal Reviewer   :
+Internal Reviewer 2 : 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/symbolics.rst	Thu Sep 16 19:40:33 2010 +0530
@@ -0,0 +1,248 @@
+Symbolics with Sage
+-------------------
+
+This tutorial on using Sage for symbolic calculation is brought to you
+by Fossee group.
+
+{{{ Part of Notebook with title }}}
+
+We would be using simple mathematical functions on the sage notebook
+for this tutorial .
+
+During the course of the tutorial we will learn
+
+
+{{{ Part of Notebook with outline }}}
+
+To define symbolic expressions in sage .  Use built-in costants and
+function.  Integration , differentiation using sage .  Defining
+matrices.  Defining Symbolic functions .  Simplifying and solving
+symbolic expressions and functions
+    
+
+
+Using sage we can perform mathematical operations on symbols .
+
+On the sage notebook type::
+   
+    sin(y)
+
+It raises a name error saying that y is not defined . But in sage we
+can declare y as a symbol using var function. ::
+   
+    var('y')
+   
+Now if you type::
+
+    sin(y)
+
+     sage simply returns the expression .
+
+thus now sage treats sin(y) as a symbolic expression . You can use
+this to do a lot of symbolic maths using sage's built-in constants and
+expressions .
+
+Try out ::
+   
+   var('x,alpha,y,beta') x^2/alpha^2+y^2/beta^2
+ 
+Similarly , we can define many algebraic and trigonometric expressions
+using sage .
+
+
+
+Sage also provides a few built-in constants which are commonly used in
+mathematics .
+
+example : pi,e,oo , Function n gives the numerical values of all these
+    constants.
+
+For instance::
+
+   n(e)
+   
+   2.71828182845905
+
+gives numerical value of e.
+
+If you look into the documentation of n by doing ::
+
+   n(<Tab>
+
+You will see what all arguments it can take etc .. It will be very
+helpful if you look at the documentation of all functions introduced
+      
+
+Also we can define the no of digits we wish to use in the numerical
+value . For this we have to pass an argument digits.  Type::
+  
+   n(pi, digits = 10)
+
+Apart from the constants sage also has a lot of builtin functions like
+sin,cos,sinh,cosh,log,factorial,gamma,exp,arcsin,arccos,arctan etc ...
+lets try some out on the sage notebook. ::
+     
+   sin(pi/2)
+   
+   arctan(oo)
+     
+   log(e,e)
+
+
+Given that we have defined variables like x,y etc .. , We can define
+an arbitrary function with desired name in the following way.::
+
+       var('x') function(<tab> {{{ Just to show the documentation
+       extend this line }}} function('f',x)
+
+Here f is the name of the function and x is the independent variable .
+Now we can define f(x) to be ::
+
+     f(x) = x/2 + sin(x)
+
+Evaluating this function f for the value x=pi returns pi/2.::
+	   
+	   f(pi)
+
+We can also define function that are not continuous but defined
+piecewise.  We will be using a function which is a parabola between 0
+to 1 and a constant from 1 to 2 .  type the following as given on the
+screen::
+      
+
+      var('x') h(x)=x^2 g(x)=1 f=Piecewise(<Tab> {{{ Just to show the
+      documentation extend this line }}}
+      f=Piecewise([[(0,1),h(x)],[(1,2),g(x)]],x) f
+
+Checking f at 0.4, 1.4 and 3 :: f(0.4) f(1.4) f(3)
+
+for f(3) it raises a value not defined in domain error .
+
+
+Apart from operations on expressions and functions one can also use
+them for series .
+
+We first define a function f(n) in the way discussed above.::
+
+   var('n') function('f', n)
+
+
+To sum the function for a range of discrete values of n, we use the
+sage function sum.
+
+ For a convergent series , f(n)=1/n^2 we can say ::
+   
+   var('n') function('f', n)
+
+   f(n) = 1/n^2
+
+   sum(f(n), n, 1, oo)
+
+For the famous Madhava series :: var('n') function('f', n)
+
+    f(n) = (-1)^(n-1)*1/(2*n - 1)
+
+This series converges to pi/4. It was used by ancient Indians to
+interpret pi.
+
+For a divergent series, sum would raise a an error 'Sum is
+divergent' :: 
+	
+	var('n') 
+	function('f', n) 
+	f(n) = 1/n sum(f(n), n,1, oo)
+
+
+
+
+We can perform simple calculus operation using sage
+
+For example lets try an expression first ::
+
+    diff(x**2+sin(x),x) 2x+cos(x)
+
+The diff function differentiates an expression or a function . Its
+first argument is expression or function and second argument is the
+independent variable .
+
+We have already tried an expression now lets try a function ::
+
+   f=exp(x^2)+arcsin(x) diff(f(x),x)
+
+To get a higher order differentiation we need to add an extra argument
+for order ::
+ 
+   diff(<tab> diff(f(x),x,3)
+
+
+in this case it is 3.
+
+
+Just like differentiation of expression you can also integrate them ::
+
+     x = var('x') s = integral(1/(1 + (tan(x))**2),x) s
+
+
+
+To find factors of an expression use the function factor
+
+    factor(<tab> y = (x^100 - x^70)*(cos(x)^2 + cos(x)^2*tan(x)^2) f =
+    factor(y)
+
+One can also simplify complicated expression using sage ::
+    f.simplify_full()
+
+This simplifies the expression fully . You can also do simplification
+of just the algebraic part and the trigonometric part ::
+
+    f.simplify_exp() f.simplify_trig()
+    
+
+One can also find roots of an equation by using find_root function::
+
+    phi = var('phi') find_root(cos(phi)==sin(phi),0,pi/2)
+
+Lets substitute this solution into the equation and see we were
+correct ::
+
+     var('phi') f(phi)=cos(phi)-sin(phi)
+     root=find_root(f(phi)==0,0,pi/2) f.substitute(phi=root)
+
+
+as we can see the solution is almost equal to zero .
+
+
+We can also define symbolic matrices ::
+
+
+
+   var('a,b,c,d') A=matrix([[a,1,0],[0,b,0],[0,c,d]]) A
+
+
+Now lets do some of the matrix operations on this matrix ::
+
+
+    A.det() A.inverse()
+
+You can do ::
+    
+    A.<Tab>
+
+To see what all operations are available
+
+
+{{{ Part of the notebook with summary }}}
+
+So in this tutorial we learnt how to
+
+
+We learnt about defining symbolic expression and functions .  
+And some built-in constants and functions .  
+Getting value of built-in constants using n function.  
+Using Tab to see the documentation.  
+Also we learnt how to sum a series using sum function.  
+diff() and integrate() for calculus operations .  
+Finding roots , factors and simplifying expression using find_root(), 
+factor() , simplify_full, simplify_exp , simplify_trig .
+Substituting values in expression using substitute function.
+And finally creating symbolic matrices and performing operation on them .