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

Questions to be handed in for project Techniques of Integration

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

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

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

This project covers some of the techniques of integration utilizing the symbolic algebra capabilities provide by the SymPy package.

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

The basic techniques of integration involve

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

The SymPy function integrate is a implementation of the Risch Algorithm. This algorithm can decide if a function comprised of elementary functions has an antiderivative expressed in elementary function. For example, neither $\\sin(x^2)$ or $e^{x^2}$ has such a \"nice\" antiderivative, whereas $\\sin(x)^2$ and $xe^{-x^2}$ do. Risch's algorithm exploits Liouville's Theorem which gives a representation for any potential antiderivative of $f(x)$ using elementary functions such as polynomials, logarithms, exponentials and trigonometric functions.

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

Questions

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

When integrate works

","metadata":{"internals":{"slide_type":"subslide"},"slideshow":{"slide_type":"subslide"},"slide_helper":"slide_end"}}, {"cell_type":"markdown","source":"","metadata":{}}, {"cell_type":"markdown","source":"\n$$\n\\int \\cos(x) \\log(\\sin(x)) dx.\n$$\n","metadata":{}}, {"cell_type":"markdown","source":"

Judging from the answer does it appear to use parts, substitution, both, or something else.

","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 (\\log(x))^2 dx.\n$$\n","metadata":{}}, {"cell_type":"markdown","source":"

Judging from the answer does it appear to use parts, substitution, both, or something else.

","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 \\sin(x) \\cdot e^x dx.\n$$\n","metadata":{}}, {"cell_type":"markdown","source":"

Judging from the answer does it appear to use parts, substitution, both, or something else.

","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 x \\sec^2(x) dx.\n$$\n","metadata":{}}, {"cell_type":"markdown","source":"

But, replacing $\\sec(x)$ with $1/\\cos(x)$ may work. Does it?

","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":"

It doesn't always work ...

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

The integrate function works for many functions, but for some one can help by performing substitutions by hand first.

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

Here is an example from here where performing the substitution by hand is needed to give a boost. Find

","metadata":{}}, {"cell_type":"markdown","source":"\n$$\n\\int (1 + \\log(x)) \\cdot \\sqrt{1 + (x\\cdot\\log(x))^2} dx.\n$$\n","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":["$$\\sqrt{x^{2} \\log{\\left (x \\right )}^{2} + 1} \\left(\\log{\\left (x \\right )} + 1\\right)$$"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["@vars x dx\nf(x) = sqrt(x^2 + 1)\nu = x*log(x)\nex = f(u) * diff(u,x)"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

This is written to look like a substitution problem. Will SymPy be able to see that?

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":["$$\\int \\sqrt{x^{2} \\log{\\left (x \\right )}^{2} + 1} \\left(\\log{\\left (x \\right )} + 1\\right)\\, dx$$"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["integrate(ex, x)"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

Sympy can't do this integral, and so returns the expression. We can help.

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

Let's introduce a variable dx into our expression, and then we have:

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":["$$dx \\sqrt{x^{2} \\log{\\left (x \\right )}^{2} + 1} \\left(\\log{\\left (x \\right )} + 1\\right)$$"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["ex = f(u) * diff(u,x) * dx"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

Then we can have this substitution $u = x\\log(x)$ Then $du = (x \\cdot \\log(x))' dx$.

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

We replace each $x \\log(x)$ with a u, and replace $dx$ with $dy/(x \\cdot \\log(x))'$. The subs function can do so:

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":["$$du \\sqrt{u^{2} + 1}$$"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["u, du = symbols(\"u, du\")\n## replace x*log(x) with u and diff(x*log(x),x) * dx with du\nex1 = subs(ex, (x*log(x), u), (dx, du/diff(x*log(x),x)))"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

This latter function can be integrated (after stripping off the differential we added for familiarity):

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":["$$\\frac{u \\sqrt{u^{2} + 1}}{2} + \\frac{\\operatorname{asinh}{\\left (u \\right )}}{2}$$"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["ex = integrate(ex1 / du)"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

If needed we can resubstitute in $x \\log(x)$ for $u$ to get an answer.

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":["$$\\frac{x \\sqrt{x^{2} \\log{\\left (x \\right )}^{2} + 1} \\log{\\left (x \\right )}}{2} + \\frac{\\operatorname{asinh}{\\left (x \\log{\\left (x \\right )} \\right )}}{2}$$"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["subs(ex, (u, x*log(x)))"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

For future use, we codify the above steps in a function:

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/plain":["usub (generic function with 1 method)"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["function usub(ex, let_u_equal)\n u, du, dx = symbols(\"u, du, dx\")\n ex1 = ex * dx\n ex2 = subs(ex1, (dx, du/diff(let_u_equal, x)))\n ex3 = subs(ex2, (let_u_equal, u))\n ex3 / du\nend"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

This can be used as follow:

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":["$$u$$"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["ex = log(x)/x\nusub(ex, log(x))"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

While we are here, we also give this quick function for integration by parts. Just pick \"u\" and let SymPy do the ret:

","metadata":{}}, {"outputs":[{"output_type":"execute_result","data":{"text/latex":["\\begin{bmatrix}\\frac{x^{2} \\sin{\\left (x \\right )}}{2}\\\\\\frac{x^{2} \\cos{\\left (x \\right )}}{2}\\end{bmatrix}"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["function udv_parts(ex, let_u_equal)\n u, dv = let_u_equal, ex/let_u_equal\n du = diff(u, x)\n v = integrate(dv)\n [u*v, v*du]\t\t\t# return two pieces. One for FTC, one to integrate\nend\n\nex = x*sin(x)\nuv, vdu = udv_parts(ex, sin(x))"],"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":"

The absolute value

","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":["$$x$$"]},"metadata":{},"execution_count":1}],"cell_type":"code","source":["x = symbols(\"x\", positive=true)"],"metadata":{},"execution_count":1}, {"cell_type":"markdown","source":"

Does integrate now know how to integrate $|x|$?

","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":"

Helping integrate out

","metadata":{"internals":{"slide_type":"subslide"},"slideshow":{"slide_type":"subslide"},"slide_helper":"slide_end"}}, {"cell_type":"markdown","source":"","metadata":{}}, {"cell_type":"markdown","source":"\n$$\n\\int \\log(\\log(x)) / x dx?\n$$\n","metadata":{}}, {"cell_type":"markdown","source":"

If not, help it out.

","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 \\frac{(-\\log(x)^2 + 1)^{1/2}}{x} dx\n$$\n","metadata":{}}, {"cell_type":"markdown","source":"

Make a $u$-substitution to help integrate out with finding an answer:

","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 \\frac{1}{x \\sqrt{1 - \\log(x)^2}}dx.\n$$\n","metadata":{}}, {"cell_type":"markdown","source":"

Make a $u$-substitution to help integrate out with finding an answer:

","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 x^2 e^x dx.\n$$\n","metadata":{}}, {"cell_type":"markdown","source":"

What is $u$? What is the \"$v \\cdot du$\" term? Does it seem \"easier\" than what you started with? Why?

","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":"

Integration of rational functions:

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

Some background reading on the implementation is here

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

A rational function is a ratio of polynomial functions. Using polynomial long division and dividing out common factors, up to removable singularities, one can uniquely write a rational function in terms of three other polynomials:

","metadata":{}}, {"cell_type":"markdown","source":"\n$$\na(x)/b(x) = s(x) + r(x)/q(x)\n$$\n","metadata":{}}, {"cell_type":"markdown","source":"

where the degree of $r(x)$ is less than the degree of $q(x)$ and there are no common roots to $r(x)$ and $q(x)$. It is easy to integrate $s(x)$. What about the $r(x)/q(x)$?

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

We know from the fundamental theorem of algebra that we can factor $q(x) = p_1(x)^n_1 \\cdots p_k(x)^{n_k}$, where $p_i$ is a linear or quadratic factor. Further, the partial fraction decomposition ensures then that the ratio can be written as:

","metadata":{}}, {"cell_type":"markdown","source":"\n$$\n\\frac{r(x)}{q(x)} = \\sum_i^k \\frac{a_{i1}(x)}{p_i(x)} + \\frac{a_{i2}(x)}{p_i(x)^2} + ... + \\frac{a_{in_i}(x)}{p_i(x)^{n_i}}\n$$\n","metadata":{}}, {"cell_type":"markdown","source":"

with the $a_{ij}(x)$ being polynomials of degree less than or equal the $p_i(x)$, so in this case either a constant or linear polynomial.

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

So, if the polynomials of the form $(ax+b)/(cx^2 + dx + e)^j$ can be integrated, by the linearity of integration all rational functions can be integrated. Let's investigate this question.

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

Questions

","metadata":{"internals":{"slide_type":"subslide"},"slideshow":{"slide_type":"subslide"},"slide_helper":"slide_end"}}, {"cell_type":"markdown","source":"","metadata":{}}, {"cell_type":"markdown","source":"\n$$\nf(x) = \\frac{1}{x(x+1)}\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$$\nf(x) = \\frac{1}{x(x+1)^5}\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$$\nf(x) = \\frac{1}{x(x^2+1)}\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$$\nf(x) = \\frac{1}{x(x^2+1)^3}\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$$\nf(x) = \\frac{1}{(x^2+2)^2 (x^2+3)^3}\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\\int \\frac{1}{x^m} dx\n$$\n","metadata":{}}, {"cell_type":"markdown","source":"

will have a rational function for an answer? What is the answer when it isn't a rational function?

","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 \\frac{1}{x^2 + 1} dx\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\\int \\frac{x}{x^2 + 1} dx\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\\int \\frac{1}{(x^2+1)^m} dx\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\\int \\frac{x}{(x^2+1)^m} dx\n$$\n","metadata":{}}, {"cell_type":"markdown","source":"

Verify this is the case for any $m$ by integrating the above symbolically. (You might also try to do the substitution manually.)

","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 }