Last active
November 18, 2021 20:26
-
-
Save DrSplinter/6ea10a1eedc0cf56874fcd2a1b3982c2 to your computer and use it in GitHub Desktop.
matika - machy
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "execution_count": 18, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "import numpy as np\n", | |
| "import pandas as pd\n", | |
| "import matplotlib\n", | |
| "matplotlib.rcParams['text.usetex'] = True\n", | |
| "import matplotlib.pyplot as plt\n", | |
| "from sympy import *\n", | |
| "import sympy.vector\n", | |
| "from IPython.display import display\n", | |
| "\n", | |
| "def seq_to_intervals(s):\n", | |
| " l = -oo\n", | |
| " values = [] \n", | |
| " for r in s:\n", | |
| " values.append(Interval(l,r,left_open=True))\n", | |
| " l = r\n", | |
| " values.append(Interval(l, oo,left_open=True, right_open=True))\n", | |
| " return values\n", | |
| "\n", | |
| "def latex_double_dollar(cl):\n", | |
| " f = cl._repr_latex_\n", | |
| " cl._repr_latex_ = lambda *args, **kwargs : f\"${f(*args,**kwargs)}$\"\n", | |
| "\n", | |
| "if 'times' not in globals():\n", | |
| " for c in [Eq, Set, Matrix]:\n", | |
| " latex_double_dollar(c)\n", | |
| "times = True" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Graf funkce $f$" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 19, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "$$\\displaystyle f{\\left(x \\right)} = x^{2} e^{- x}$$" | |
| ], | |
| "text/plain": [ | |
| "Eq(f(x), x**2*exp(-x))" | |
| ] | |
| }, | |
| "execution_count": 19, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "x = symbols('x')\n", | |
| "f = Function('f')\n", | |
| "fun = (x**2) * (E**(-x))\n", | |
| "Eq(f(x), fun)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Krok 1 - definicni obor a pruseciky s osami" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 20, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "$$\\displaystyle \\mathbb{R}$$" | |
| ], | |
| "text/plain": [ | |
| "Reals" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "$$\\displaystyle x^{2} e^{- x} = 0$$" | |
| ], | |
| "text/plain": [ | |
| "Eq(x**2*exp(-x), 0)" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "$$\\displaystyle \\left\\{0\\right\\}$$" | |
| ], | |
| "text/plain": [ | |
| "{0}" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "$$\\displaystyle f{\\left(0 \\right)} = 0$$" | |
| ], | |
| "text/plain": [ | |
| "Eq(f(0), 0)" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "display(calculus.util.continuous_domain(fun,x,S.Reals))\n", | |
| "display(Eq(fun,0))\n", | |
| "display(solveset(Eq(fun,0),x))\n", | |
| "display(Eq(f(0),fun.subs(x,0)))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Krok 2 - stacionarni body + rostouci + klesajici" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 21, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "$$\\displaystyle \\frac{d}{d x} f = - x^{2} e^{- x} + 2 x e^{- x}$$" | |
| ], | |
| "text/plain": [ | |
| "Eq(Derivative(f, x), -x**2*exp(-x) + 2*x*exp(-x))" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "$$\\displaystyle \\frac{d}{d x} f = x \\left(2 - x\\right) e^{- x}$$" | |
| ], | |
| "text/plain": [ | |
| "Eq(Derivative(f, x), x*(2 - x)*exp(-x))" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "$$\\displaystyle x \\left(2 - x\\right) e^{- x} = 0$$" | |
| ], | |
| "text/plain": [ | |
| "Eq(x*(2 - x)*exp(-x), 0)" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "$$\\displaystyle \\left\\{0, 2\\right\\}$$" | |
| ], | |
| "text/plain": [ | |
| "{0, 2}" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "$$\\displaystyle Set\\left(\\left(-\\infty, 0\\right], \\left(0, 2\\right], \\left(2, \\infty\\right)\\right)$$" | |
| ], | |
| "text/plain": [ | |
| "Set(Interval(-oo, 0), Interval.Lopen(0, 2), Interval.open(2, oo))" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "$$\\displaystyle Set\\left(\\text{False}, \\text{True}, \\text{False}\\right)$$" | |
| ], | |
| "text/plain": [ | |
| "Set(False, True, False)" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "$$\\displaystyle Set\\left(\\text{True}, \\text{False}, \\text{True}\\right)$$" | |
| ], | |
| "text/plain": [ | |
| "Set(True, False, True)" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "display(Eq(Derivative(f,x), fun.diff(x),evaluate=False))\n", | |
| "display(Eq(Derivative(f,x), fun.diff(x).simplify(),evaluate=False))\n", | |
| "display(Eq(fun.diff(x).simplify(),0,evaluate=False))\n", | |
| "sps = solveset(Eq(fun.diff(x),0),x)\n", | |
| "display(sps)\n", | |
| "intervals = seq_to_intervals(solve(Eq(fun.diff(x),0),x))\n", | |
| "display(Set(*intervals))\n", | |
| "display(Set(*[is_increasing(fun,i) for i in intervals]))\n", | |
| "display(Set(*[is_decreasing(fun,i) for i in intervals]))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Krok 3 - kriticke body + konvexita + konkavita" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 22, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "$$\\displaystyle \\frac{d^{2}}{d x^{2}} f = x^{2} e^{- x} - 4 x e^{- x} + 2 e^{- x}$$" | |
| ], | |
| "text/plain": [ | |
| "Eq(Derivative(f, (x, 2)), x**2*exp(-x) - 4*x*exp(-x) + 2*exp(-x))" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "$$\\displaystyle \\frac{d^{2}}{d x^{2}} f = \\left(x^{2} - 4 x + 2\\right) e^{- x}$$" | |
| ], | |
| "text/plain": [ | |
| "Eq(Derivative(f, (x, 2)), (x**2 - 4*x + 2)*exp(-x))" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "$$\\displaystyle \\left(x^{2} - 4 x + 2\\right) e^{- x} = 0$$" | |
| ], | |
| "text/plain": [ | |
| "Eq((x**2 - 4*x + 2)*exp(-x), 0)" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "$$\\displaystyle \\left\\{2 - \\sqrt{2}, \\sqrt{2} + 2\\right\\}$$" | |
| ], | |
| "text/plain": [ | |
| "{2 - sqrt(2), sqrt(2) + 2}" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "$$\\displaystyle Set\\left(\\left(-\\infty, 2 - \\sqrt{2}\\right], \\left(2 - \\sqrt{2}, \\sqrt{2} + 2\\right], \\left(\\sqrt{2} + 2, \\infty\\right)\\right)$$" | |
| ], | |
| "text/plain": [ | |
| "Set(Interval(-oo, 2 - sqrt(2)), Interval.Lopen(2 - sqrt(2), sqrt(2) + 2), Interval.open(sqrt(2) + 2, oo))" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "$$\\displaystyle Set\\left(\\text{True}, \\text{False}, \\text{True}\\right)$$" | |
| ], | |
| "text/plain": [ | |
| "Set(True, False, True)" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "$$\\displaystyle Set\\left(\\text{False}, \\text{True}, \\text{False}\\right)$$" | |
| ], | |
| "text/plain": [ | |
| "Set(False, True, False)" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "display(Eq(Derivative(Derivative(f,x),x), fun.diff(x).diff(x),evaluate=False))\n", | |
| "display(Eq(Derivative(Derivative(f,x),x), simplify(fun.diff(x).diff(x)),evaluate=False))\n", | |
| "display(Eq(simplify(fun.diff(x).diff(x)),0,evaluate=False))\n", | |
| "cps = solveset(fun.diff(x).diff(x))\n", | |
| "display(cps)\n", | |
| "intervals = seq_to_intervals(solve(Eq(fun.diff(x).diff(x),0),x))\n", | |
| "display(Set(*intervals))\n", | |
| "display(Set(*[is_convex(fun,x,domain=i) for i in intervals]))\n", | |
| "display(Set(*[is_convex(-fun,x,domain=i) for i in intervals]))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Krok 4 - graf" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 23, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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", | |
| "text/plain": [ | |
| "<Figure size 432x288 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "$$\\displaystyle Set\\left(\\left( 0, \\ 0\\right), \\left( 2 - \\sqrt{2}, \\ \\frac{\\left(2 - \\sqrt{2}\\right)^{2}}{e^{2 - \\sqrt{2}}}\\right), \\left( 2, \\ \\frac{4}{e^{2}}\\right), \\left( \\sqrt{2} + 2, \\ \\frac{\\left(\\sqrt{2} + 2\\right)^{2}}{e^{\\sqrt{2} + 2}}\\right)\\right)$$" | |
| ], | |
| "text/plain": [ | |
| "Set((0, 0), (2 - sqrt(2), (2 - sqrt(2))**2*exp(-2 + sqrt(2))), (2, 4*exp(-2)), (sqrt(2) + 2, (sqrt(2) + 2)**2*exp(-2 - sqrt(2))))" | |
| ] | |
| }, | |
| "execution_count": 23, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "ps = list(sps + cps)\n", | |
| "ps.sort()\n", | |
| "xps = list(map(float, ps))\n", | |
| "yps = [fun.subs(x,xp) for xp in xps]\n", | |
| "xx = np.linspace(min(xps)-1, max(xps)+1, 100)\n", | |
| "\n", | |
| "fig = plt.figure()\n", | |
| "ax = fig.add_subplot(1, 1, 1)\n", | |
| "ax.spines['left'].set_position('zero')\n", | |
| "ax.spines['bottom'].set_position('zero')\n", | |
| "ax.spines['right'].set_color('none')\n", | |
| "ax.spines['top'].set_color('none')\n", | |
| "ax.xaxis.set_ticks_position('bottom')\n", | |
| "ax.yaxis.set_ticks_position('left')\n", | |
| "\n", | |
| "yy = lambdify(x, fun)(xx)\n", | |
| "plt.plot(xx, np.transpose(yy))\n", | |
| "plt.plot(xps, yps, 'k*')\n", | |
| "plt.show()\n", | |
| "Set(*[(xp, fun.subs(x,xp)) for xp in ps])" | |
| ] | |
| } | |
| ], | |
| "metadata": { | |
| "interpreter": { | |
| "hash": "aee8b7b246df8f9039afb4144a1f6fd8d2ca17a180786b69acc140d282b71a49" | |
| }, | |
| "kernelspec": { | |
| "display_name": "Python 3.9.7 64-bit", | |
| "language": "python", | |
| "name": "python3" | |
| }, | |
| "language_info": { | |
| "codemirror_mode": { | |
| "name": "ipython", | |
| "version": 3 | |
| }, | |
| "file_extension": ".py", | |
| "mimetype": "text/x-python", | |
| "name": "python", | |
| "nbconvert_exporter": "python", | |
| "pygments_lexer": "ipython3", | |
| "version": "3.9.7" | |
| }, | |
| "orig_nbformat": 4 | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 2 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment