{ "cells": [ {"cell_type":"markdown","source":"

Questions to be handed in for project 6b:

","metadata":{"internals":{"slide_type":"subslide","slide_helper":"subslide_end"},"slideshow":{"slide_type":"slide"},"slide_helper":"slide_end"}}, {"cell_type":"markdown","source":"

Read about this material here: Symbolic math in Julia.

","metadata":{}}, {"cell_type":"markdown","source":"

Begin by loading our package for plotting and a new package that allows symbolic math:

","metadata":{}}, {"outputs":[],"cell_type":"code","source":["using Plots\nusing SymPy"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"
","metadata":{}}, {"cell_type":"markdown","source":"

Quick background Read the notes for more detail

","metadata":{"internals":{"slide_type":"subslide"},"slideshow":{"slide_type":"subslide"},"slide_helper":"slide_end"}}, {"cell_type":"markdown","source":"

There are many computer algebra systems (CAS) that do symbolic math. Most students are familiar with Wolfram's alpha site, as many homework problems can be easily done there. That site uses Wolfram's Mathematica program, though the interface relaxes greatly the syntax of that program. Other CASs include Maple and Sage. Both Mathematica and Maple are available for free to CUNY students and Sage is free to everyone, as it is open source.

","metadata":{}}, {"cell_type":"markdown","source":"

In addition to these, there is SymPy, an add-on to the popular Python programming language. Julia's SymPy package interfaces with Python's SymPy package in a fairly easy to use manner.

","metadata":{}}, {"cell_type":"markdown","source":"

The first thing one does is create some symbolic variables:

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/plain":["(x, y, z, h)"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["x, y, z, h = symbols(\"x, y, z, h\")"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

(This can also be done with just @vars x y z h

","metadata":{}}, {"cell_type":"markdown","source":"

That command creates symbolic variables that (more or less) magically interact with Julia functions. So for example, we can create a symbolic expression as follows:

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":["$$16 x^{2} - 96 x + 128$$"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["p = 16x^2 - 96x + 128"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

Note a subtle but big difference: we did not define a function, rather p is an expression. (A function would be p(x) = ...). Symbolic expressions print slightly differently than functions, so this can be a clue. Also note that we could have defined a function, then evaluated it on the symbolic value of $x$:

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":["$$16 x^{2} - 96 x + 128$$"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["q(x) = 16x^2 - 96x + 128\t# a function\nq(2)\t\t\t\t# used as any other function call\nq(x)\t\t\t\t# evaluating with a symbolic value gives expression"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

What is so great about symbolic expressions? Well, they can be manipulated symbolically!

","metadata":{}}, {"cell_type":"markdown","source":"

For example to factor the polynomial p we have the factor function:

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":["$$16 \\left(x - 4\\right) \\left(x - 2\\right)$$"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["factor(p)"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

Or if we used a function:

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":["$$16 \\left(x - 4\\right) \\left(x - 2\\right)$$"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["factor(q(x))"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

(factor applied to a symbolic expression tries to factor as a polynomial, say; whereas factor applied to an integer tries to find prime factors. The factor function is generic, so can have different implementations depending on the type of its argument.)

","metadata":{}}, {"cell_type":"markdown","source":"

To solve for p=0 we have solve:

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":["\\begin{bmatrix}2\\\\4\\end{bmatrix}"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["solve(p, x)\t\t\t# or just solve(p) as x can be implied"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

The two answers are $2$ and $4$, as one could read from the factorization of p. The solve function tries to solve when the expression is equal to $0$. To solve something of the type $g(x) = h(x)$, use $g(x) - h(x) = 0$, as is done with fzero, our numeric solver.

","metadata":{}}, {"cell_type":"markdown","source":"

Symbolic expressions are not functions, but they can often be called like functions. In the simplest case – with just one free symbol, the notation is similar:

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":["$$2$$"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["ex = x^2 - 2x + 2\nex(2)"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

For expressions with one or more variable, then an indication must be made as to which variable gets which value. There are a few ways to do this, but using => might be the most direct:

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":["$$-6$$"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["ex = x^2 - y^2 - 1\nex(x=>2, y=>3)"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

The use of () to substitute a value is only valid for version 0.4 or greater. This is just a convenient interface for subs to substitute a value into a expression. The syntax for that is: subs(ex, (x,xvalue), (y, yvalue), ...). So, we could have done:

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":["$$-6$$"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["ex = x^2 - y^2 - 1\nsubs(ex, (x,2), (y,3))"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

Questions

","metadata":{"internals":{"slide_type":"subslide"},"slideshow":{"slide_type":"subslide"},"slide_helper":"slide_end"}}, {"cell_type":"markdown","source":"

Working with algebraic expressions

","metadata":{"internals":{"slide_type":"subslide"},"slideshow":{"slide_type":"subslide"},"slide_helper":"slide_end"}}, {"cell_type":"markdown","source":"

Algebra functions include expand to expand a polynomial expression, simplify to simplify algebraically an expression, together to combine expressions, and factor to factor expressions.

","metadata":{}}, {"cell_type":"markdown","source":"","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"","metadata":{}}, {"cell_type":"markdown","source":"\n$$\nf(x) = \\frac{x^3 + 3x^2}{x^2 - x - 6}\n$$\n","metadata":{}}, {"cell_type":"markdown","source":"

(Use factor to get the factors, then read these values off.)

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"","metadata":{}}, {"cell_type":"markdown","source":"\n$$\n\\frac{\\frac{1}{x+h} - \\frac{1}{x}}{h}\n$$\n","metadata":{}}, {"cell_type":"markdown","source":"

From your simplified answer, what would be the value if $h=0$?

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

Performing limits

","metadata":{"internals":{"slide_type":"subslide"},"slideshow":{"slide_type":"subslide"},"slide_helper":"slide_end"}}, {"cell_type":"markdown","source":"

The limit function from SymPy implements Gruntz's algorithm to find symbolic derivatives. It does not have the issues with floating point that a numeric approach does.

","metadata":{}}, {"cell_type":"markdown","source":"

The basic form is limit(expr, x, c), where x is the symbolic variable and c is where the limit is being taken. Optionally one can include dir="+" or dir="-" to find limits from the right or left. For example, the right limit at $c=0$ of $x^x$ is given by:

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":["$$1$$"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["limit(x^x, x, 0, dir=\"+\")"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"","metadata":{}}, {"cell_type":"markdown","source":"\n$$\n\\lim_{x \\rightarrow 0} \\frac{3^x - 1}{x}\n$$\n","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"","metadata":{}}, {"cell_type":"markdown","source":"\n$$\n\\lim_{x \\rightarrow 0+} (1 + 3x)^{1/x}\n$$\n","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"","metadata":{}}, {"cell_type":"markdown","source":"\n$$\n\\lim_{x \\rightarrow 1} \\frac{x^n - 1}{x^m - 1}\n$$\n","metadata":{}}, {"cell_type":"markdown","source":"

You can define $m$ and $n$ as symbols and your answer will include them:

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/plain":["(m, n)"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["m,n = symbols(\"m, n\")"],"metadata":{},"execution_count":1}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"","metadata":{}}, {"cell_type":"markdown","source":"\n$$\n\\lim_{x \\rightarrow \\infty} (\\frac{x}{x+1})^x\n$$\n","metadata":{}}, {"cell_type":"markdown","source":"

Limits at infinity just need c=oo (oh-oh, not zero-zero).

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":["$$\\cos{\\left (x \\right )}$$"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["f(x) = sin(x)\nex = (f(x + h) - f(x)) / h\nlimit(ex, h, 0)"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

Questions: Finding derivatives

","metadata":{"internals":{"slide_type":"subslide"},"slideshow":{"slide_type":"subslide"},"slide_helper":"slide_end"}}, {"cell_type":"markdown","source":"

SymPy provides the diff function for finding derivatives: diff(ex, x) will find the derivative in x, whereas diff(ex, x, 2) will find the second derivative. For example, here we see the chain rule in action:

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":["$$e^{x} \\cos{\\left (e^{x} \\right )}$$"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["f(x) = sin(exp(x))\ndiff(f(x), x)"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

(Just to be clear, the D function from the Roots package was D(f) which creates a function. Here we use f(x) which creates a symbolic expression. It is an important distinction, diff(f,x) will not work, as desired.)

","metadata":{}}, {"cell_type":"markdown","source":"","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"","metadata":{}}, {"cell_type":"markdown","source":"\n$$\nf(x) = \\frac{1}{\\sqrt(2\\pi)} e^{-x^2/2}?\n$$\n","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"","metadata":{}}, {"cell_type":"markdown","source":"\n$$\n\\lim_{h \\rightarrow 0} \\frac{f(x + h) - f(x-h)}{h}.\n$$\n","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"","metadata":{}}, {"cell_type":"markdown","source":"\n$$\n\\lim_{h \\rightarrow 0} \\frac{f(x + h) - 2f(x) + f(x-h)}{h^2}.\n$$\n","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

Graphing expressions

","metadata":{"internals":{"slide_type":"subslide"},"slideshow":{"slide_type":"subslide"},"slide_helper":"slide_end"}}, {"cell_type":"markdown","source":"

The plot function is overloaded to also plot symbolic expressions of a single variable. The use is not so different than how it is used to plot a function:

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/plain":"Plot(...)","image/png":"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"},"metadata":{"image/png":{"height":480,"width":600}},"execution_count":1}],"cell_type":"code","source":["plot(sin(x), 0, 2pi)\nplot!(cos(x))"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

The difference is we plot the expressions sin(x) and cos(x) rather than function objects sin and cos.

","metadata":{}}, {"cell_type":"markdown","source":"","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"","metadata":{}}, {"cell_type":"markdown","source":"\n$$\nf(0) + \\frac{f'(0)}{1!} x + \\frac{f''(0)}{2!}x^2.\n$$\n","metadata":{}}, {"cell_type":"markdown","source":"

Where $n!=n \\cdot (n-1) \\cdots 2 \\cdot 1$, and can be evaluated with factorial(2). Do the two mostly agree on this interval?

","metadata":{}}, {"cell_type":"markdown","source":"

(One tedious aspect of finding $f'(a)$ is that it is done in two steps like replace(diff(f, x), x, a) (find the derivative in x, the replace x with a). The following function can shorten the above so that D(f,k)(a) works on symbolic expression.

","metadata":{}}, {"cell_type":"markdown","source":"

Questions: Integration

","metadata":{"internals":{"slide_type":"subslide"},"slideshow":{"slide_type":"subslide"},"slide_helper":"slide_end"}}, {"cell_type":"markdown","source":"

The integrate function can be used for integration – when an antiderivative exists. Integration comes in two flavors

","metadata":{}}, {"cell_type":"markdown","source":"","metadata":{}}, {"cell_type":"markdown","source":"

The two are related, as the definite integral $\\int_a^b f(x) dx = F(b) - F(a)$ where $F(x)$ is any antiderivative (they all differ by atmost a constant).

","metadata":{}}, {"cell_type":"markdown","source":"

In SymPy, we simply pass in a symbolic expression and optionally limits of integration:

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":["$$\\left(- x - 1\\right) e^{- x}$$"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["integrate(x*exp(-x))\t\t# indefinite integral"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

or

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":["$$- \\frac{11}{e^{10}} + 1$$"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["integrate(x*exp(-x), (x, 0, 10))\t# definite"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

The limits of integration are lumped together as a tuple of the form (symbol, a, b), this syntax allows for multiple integration.

","metadata":{}}, {"cell_type":"markdown","source":"

Questions

","metadata":{"internals":{"slide_type":"subslide"},"slideshow":{"slide_type":"subslide"},"slide_helper":"slide_end"}}, {"cell_type":"markdown","source":"","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"","metadata":{}}, {"cell_type":"markdown","source":"\n$$\n\\int_0^t x \\cdot \\exp(-x) dx\n$$\n","metadata":{}}, {"cell_type":"markdown","source":"

Then differentiate it to confirm that the fundamental theorem of calculus holds.

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"","metadata":{}}, {"cell_type":"markdown","source":"\n$$\nf(c) = (b-a)^{-1} \\int_a^b f(x) dx\n$$\n","metadata":{}}, {"cell_type":"markdown","source":"

For $f(x) = 10e^{-5t}$ find a $c$ in the interval $[0,1]$.

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":[""]},"metadata":{},"execution_count":1}],"cell_type":"code","source":[""],"metadata":{},"execution_count":1} ], "metadata": { "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "0.6" }, "kernelspec": { "display_name": "Julia 0.6.0", "language": "julia", "name": "julia-0.6" } }, "nbformat": 4, "nbformat_minor": 2 }