getting-started-with-symbolics/script.rst
author Puneeth Chaganti <punchagan@gmail.com>
Wed, 27 Oct 2010 12:54:41 +0530
changeset 358 284170f2c12e
child 376 3e947a3fa83e
permissions -rw-r--r--
Merged Heads.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
358
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
     1
Symbolics with Sage
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
     2
-------------------
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
     3
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
     4
Hello friends and welcome to the tutorial on symbolics with sage.
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
     5
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
     6
{{{ Show welcome slide }}}
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
     7
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
     8
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
     9
.. #[Madhu: What is this line doing here. I don't see much use of it]
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    10
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    11
During the course of the tutorial we will learn
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    12
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    13
{{{ Show outline slide  }}}
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    14
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    15
* Defining symbolic expressions in sage.  
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    16
* Using built-in costants and functions. 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    17
* Performing Integration, differentiation using sage. 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    18
* Defining matrices. 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    19
* Defining Symbolic functions.  
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    20
* Simplifying and solving symbolic expressions and functions.
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    21
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    22
We can use Sage for symbolic maths. 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    23
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    24
On the sage notebook type::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    25
   
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    26
    sin(y)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    27
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    28
It raises a name error saying that y is not defined. But in sage we
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    29
can declare y as a symbol using var function.
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    30
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    31
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    32
::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    33
    var('y')
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    34
   
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    35
Now if you type::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    36
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    37
    sin(y)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    38
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    39
sage simply returns the expression.
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    40
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    41
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    42
Thus sage treats sin(y) as a symbolic expression . We can use
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    43
this to do  symbolic maths using sage's built-in constants and
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    44
expressions..
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    45
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    46
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    47
So let us try ::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    48
   
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    49
   var('x,alpha,y,beta') 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    50
   x^2/alpha^2+y^2/beta^2
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    51
 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    52
taking another example
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    53
   
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    54
   var('theta')
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    55
   sin^2(theta)+cos^2(theta)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    56
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    57
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    58
Similarly, we can define many algebraic and trigonometric expressions
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    59
using sage .
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    60
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    61
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    62
Sage also provides a few built-in constants which are commonly used in
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    63
mathematics .
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    64
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    65
example : pi,e,infinity , Function n gives the numerical values of all these
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    66
    constants.
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    67
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    68
{{{ Type n(pi)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    69
   	n(e)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    70
	n(oo) 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    71
    On the sage notebook }}}  
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    72
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    73
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    74
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    75
If you look into the documentation of function "n" by doing
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    76
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    77
.. #[Madhu: "documentation of the function "n"?]
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    78
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    79
::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    80
   n(<Tab>
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    81
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    82
You will see what all arguments it takes and what it returns. It will be very
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    83
helpful if you look at the documentation of all functions introduced through
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    84
this script.
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    85
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    86
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    87
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    88
Also we can define the no. of digits we wish to use in the numerical
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    89
value . For this we have to pass an argument digits.  Type
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    90
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    91
.. #[Madhu: "no of digits"? Also "We wish to obtain" than "we wish to
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    92
     use"?]
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    93
::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    94
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    95
   n(pi, digits = 10)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    96
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    97
Apart from the constants sage also has a lot of builtin functions like
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    98
sin,cos,log,factorial,gamma,exp,arcsin etc ...
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
    99
lets try some of them out on the sage notebook.
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   100
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   101
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   102
::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   103
     
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   104
   sin(pi/2)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   105
   
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   106
   arctan(oo)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   107
     
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   108
   log(e,e)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   109
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   110
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   111
Given that we have defined variables like x,y etc .. , We can define
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   112
an arbitrary function with desired name in the following way.::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   113
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   114
       var('x') 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   115
       function('f',x)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   116
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   117
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   118
Here f is the name of the function and x is the independent variable .
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   119
Now we can define f(x) to be ::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   120
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   121
     f(x) = x/2 + sin(x)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   122
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   123
Evaluating this function f for the value x=pi returns pi/2.::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   124
	   
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   125
	   f(pi)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   126
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   127
We can also define functions that are not continuous but defined
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   128
piecewise.  Let us define a function which is a parabola between 0
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   129
to 1 and a constant from 1 to 2 .  Type the following as given on the
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   130
screen
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   131
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   132
::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   133
      
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   134
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   135
      var('x') 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   136
      h(x)=x^2 g(x)=1 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   137
      f=Piecewise(<Tab>
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   138
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   139
{{{ Show the documentation of Piecewise }}} 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   140
    
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   141
::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   142
      f=Piecewise([[(0,1),h(x)],[(1,2),g(x)]],x) f
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   143
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   144
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   145
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   146
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   147
We can also define functions which are series 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   148
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   149
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   150
We first define a function f(n) in the way discussed above.::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   151
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   152
   var('n') 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   153
   function('f', n)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   154
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   155
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   156
To sum the function for a range of discrete values of n, we use the
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   157
sage function sum.
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   158
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   159
For a convergent series , f(n)=1/n^2 we can say ::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   160
   
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   161
   var('n') 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   162
   function('f', n)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   163
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   164
   f(n) = 1/n^2
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   165
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   166
   sum(f(n), n, 1, oo)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   167
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   168
 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   169
Lets us now try another series ::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   170
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   171
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   172
    f(n) = (-1)^(n-1)*1/(2*n - 1)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   173
    sum(f(n), n, 1, oo)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   174
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   175
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   176
This series converges to pi/4. 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   177
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   178
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   179
Moving on let us see how to perform simple calculus operations using Sage
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   180
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   181
For example lets try an expression first ::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   182
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   183
    diff(x**2+sin(x),x) 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   184
    2x+cos(x)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   185
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   186
The diff function differentiates an expression or a function. Its
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   187
first argument is expression or function and second argument is the
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   188
independent variable.
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   189
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   190
We have already tried an expression now lets try a function ::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   191
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   192
   f=exp(x^2)+arcsin(x) 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   193
   diff(f(x),x)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   194
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   195
To get a higher order differential we need to add an extra third argument
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   196
for order ::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   197
 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   198
   diff(<tab> diff(f(x),x,3)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   199
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   200
in this case it is 3.
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   201
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   202
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   203
Just like differentiation of expression you can also integrate them ::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   204
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   205
     x = var('x') 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   206
     s = integral(1/(1 + (tan(x))**2),x) 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   207
     s
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   208
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   209
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   210
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   211
Many a times we need to find factors of an expression ,we can use the "factor" function
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   212
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   213
::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   214
    factor(<tab> 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   215
    y = (x^100 - x^70)*(cos(x)^2 + cos(x)^2*tan(x)^2) 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   216
    f = factor(y)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   217
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   218
One can  simplify complicated expression ::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   219
    
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   220
    f.simplify_full()
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   221
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   222
This simplifies the expression fully . We can also do simplification
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   223
of just the algebraic part and the trigonometric part ::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   224
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   225
    f.simplify_exp() 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   226
    f.simplify_trig()
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   227
    
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   228
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   229
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   230
One can also find roots of an equation by using find_root function::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   231
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   232
    phi = var('phi') 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   233
    find_root(cos(phi)==sin(phi),0,pi/2)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   234
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   235
Lets substitute this solution into the equation and see we were
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   236
correct ::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   237
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   238
     var('phi') 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   239
     f(phi)=cos(phi)-sin(phi)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   240
     root=find_root(f(phi)==0,0,pi/2) 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   241
     f.substitute(phi=root)
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   242
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   243
as we can see when we substitute the value the answer is almost = 0 showing 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   244
the solution we got was correct.
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   245
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   246
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   247
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   248
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   249
Lets us now try some matrix algebra symbolically ::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   250
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   251
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   252
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   253
   var('a,b,c,d') 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   254
   A=matrix([[a,1,0],[0,b,0],[0,c,d]]) 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   255
   A
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   256
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   257
Now lets do some of the matrix operations on this matrix
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   258
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   259
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   260
::
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   261
    A.det() 
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   262
    A.inverse()
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   263
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   264
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   265
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   266
{{{ Part of the notebook with summary }}}
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   267
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   268
So in this tutorial we learnt how to
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   269
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   270
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   271
* We learnt about defining symbolic expression and functions.  
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   272
* Using built-in constants and functions.  
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   273
* Using <Tab>  to see the documentation of a function.  
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   274
* Simple calculus operations .  
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   275
* Substituting values in expression using substitute function.
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   276
* Creating symbolic matrices and performing operation on them .
284170f2c12e Merged Heads.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff changeset
   277