Skip to content

Instantly share code, notes, and snippets.

@DrSplinter
Last active November 18, 2021 20:26
Show Gist options
  • Select an option

  • Save DrSplinter/6ea10a1eedc0cf56874fcd2a1b3982c2 to your computer and use it in GitHub Desktop.

Select an option

Save DrSplinter/6ea10a1eedc0cf56874fcd2a1b3982c2 to your computer and use it in GitHub Desktop.
matika - machy
Display the source blob
Display the rendered blob
Raw
{
"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
}
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment