diff -r d14bc84feca1 -r 054117c9dd59 getting-started-with-symbolics/script.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/getting-started-with-symbolics/script.rst Tue Oct 26 16:08:02 2010 +0530 @@ -0,0 +1,277 @@ +Symbolics with Sage +------------------- + +Hello friends and welcome to the tutorial on symbolics with sage. + +{{{ Show welcome slide }}} + + +.. #[Madhu: What is this line doing here. I don't see much use of it] + +During the course of the tutorial we will learn + +{{{ Show outline slide }}} + +* Defining symbolic expressions in sage. +* Using built-in costants and functions. +* Performing Integration, differentiation using sage. +* Defining matrices. +* Defining Symbolic functions. +* Simplifying and solving symbolic expressions and functions. + +We can use Sage for symbolic maths. + +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 sage treats sin(y) as a symbolic expression . We can use +this to do symbolic maths using sage's built-in constants and +expressions.. + + +So let us try :: + + var('x,alpha,y,beta') + x^2/alpha^2+y^2/beta^2 + +taking another example + + var('theta') + sin^2(theta)+cos^2(theta) + + +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,infinity , Function n gives the numerical values of all these + constants. + +{{{ Type n(pi) + n(e) + n(oo) + On the sage notebook }}} + + + +If you look into the documentation of function "n" by doing + +.. #[Madhu: "documentation of the function "n"?] + +:: + n( + +You will see what all arguments it takes and what it returns. It will be very +helpful if you look at the documentation of all functions introduced through +this script. + + + +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 + +.. #[Madhu: "no of digits"? Also "We wish to obtain" than "we wish to + use"?] +:: + + n(pi, digits = 10) + +Apart from the constants sage also has a lot of builtin functions like +sin,cos,log,factorial,gamma,exp,arcsin etc ... +lets try some of them 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('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 functions that are not continuous but defined +piecewise. Let us define 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( + +{{{ Show the documentation of Piecewise }}} + +:: + f=Piecewise([[(0,1),h(x)],[(1,2),g(x)]],x) f + + + + +We can also define functions which are 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) + + +Lets us now try another series :: + + + f(n) = (-1)^(n-1)*1/(2*n - 1) + sum(f(n), n, 1, oo) + + +This series converges to pi/4. + + +Moving on let us see how to perform simple calculus operations 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 differential we need to add an extra third argument +for order :: + + diff( 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 + + + +Many a times we need to find factors of an expression ,we can use the "factor" function + +:: + factor( + y = (x^100 - x^70)*(cos(x)^2 + cos(x)^2*tan(x)^2) + f = factor(y) + +One can simplify complicated expression :: + + f.simplify_full() + +This simplifies the expression fully . We 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 when we substitute the value the answer is almost = 0 showing +the solution we got was correct. + + + + +Lets us now try some matrix algebra symbolically :: + + + + 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() + + + +{{{ Part of the notebook with summary }}} + +So in this tutorial we learnt how to + + +* We learnt about defining symbolic expression and functions. +* Using built-in constants and functions. +* Using to see the documentation of a function. +* Simple calculus operations . +* Substituting values in expression using substitute function. +* Creating symbolic matrices and performing operation on them . +