{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Cvičení 3 s pomocí Maximy (9. 10. 2023)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Příklad 1\n", "\n", "Vyšetřete vlastnosti grupoidu $(\\mathbb{R},+)$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Je třeba vyšetřit jednotlivé vlastnosti grupoidu:\n", "\n", "### Komutativita\n", "\n", "Je třeba ověřit, že \n", "\n", "$$\\forall a,b\\in \\mathbb{R}:\\, a+b=b+a.$$\n", "\n", "Tento předpis si upravíme do tvaru \n", "\n", "$$(a+b)-(b+a)=0$$ \n", "\n", "a levou stranu rovnice zadáme do Maximy:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{1}$}0\\]" ], "text/plain": [ "(%o1) 0" ], "text/x-maxima": [ "0" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(a+b)-(b+a);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Výsledek je roven nule z čehož plyne, že rovnice je správně, tj. platí $(a+b)=(b+a)$. Tedy grupoid $(\\mathbb{R},+)$ je *komutativní*.\n", "\n", "### Asociativita\n", "\n", "Je třeba ověřit, že \n", "\n", "$$\\forall a,b,c \\in \\mathbb{R}:\\, (a+b)+c=a+(b+c).$$\n", "\n", "Předpis si upravíme (analogicky jako v předchozím případě) do tvaru \n", "\n", "$$((a+b)+c)-(a+(b+c))=0$$ \n", "\n", "a levou stranu rovnice opět zadáme do Maximy:\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{2}$}0\\]" ], "text/plain": [ "(%o2) 0" ], "text/x-maxima": [ "0" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "((a+b)+c)-(a+(b+c));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Výsledek je opět roven nule, tj. platí $(a+b)+c=a+(b+c)$. Tedy grupoid $(\\mathbb{R},+)$ je *asociativní*.\n", "\n", "### Neutrální prvek\n", "\n", "Je třeba ověřit, že \n", "\n", "$$\\forall a\\in\\mathbb{R}\\, \\exists e\\in \\mathbb{R}: a+e=a=e+a$$\n", "\n", "Protože operace $+$ je komutativní, bude stačit vyřešit jednu z rovností $a+e=a$ a $e+a=a$. Nicméně z edukativních důvodů si vyřešíme obě rovnosti. Tentokrát v Maximě využijeme funkci `solve` (v první hranaté závorce je uvedena rovnice, ve druhé je uvedena proměnná, jejíž řešení hledáme):" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{3}$}\\left[ e=0 \\right] \\]" ], "text/plain": [ "(%o3) [e = 0]" ], "text/x-maxima": [ "[e = 0]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{4}$}\\left[ e=0 \\right] \\]" ], "text/plain": [ "(%o4) [e = 0]" ], "text/x-maxima": [ "[e = 0]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "solve([a+e=a],[e]);\n", "solve([e+a=a],[e]);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Z obou rovnic dostáváme, že neutřální prvek $e$ je roven $0$. Tedy v grupoidu $(\\mathbb{R},+)$ existuje *neutrální prvek*.\n", "\n", "### Symetrický prvek\n", "\n", "Je třeba ověřit, zda \n", "\n", "$$\\forall a\\in\\mathbb{R}\\, \\exists a^*\\in\\mathbb{R}:\\, a+a^*=e=a^*+a.$$\n", "\n", "Protože operace $+$ je komutativní, opět by stačilo vyřešit jednu z rovností $a+a^*=e$ a $a^*+a=e$. \n", "\n", "Pro snadnější zápis do maximy místo proměnné $a^*$ zadáme proměnnou $a$ a místo $e$ budeme psát skutečnou hodnotu neutrálního prvku, tj. $0$:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{5}$}\\left[ b=-a \\right] \\]" ], "text/plain": [ "(%o5) [b = - a]" ], "text/x-maxima": [ "[b = -a]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{6}$}\\left[ b=-a \\right] \\]" ], "text/plain": [ "(%o6) [b = - a]" ], "text/x-maxima": [ "[b = -a]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "solve([a+b=0],[b]);\n", "solve([b+a=0],[b]);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Z Maximy dostáváme, že $a^*=-a$. Je zřejmé, že každému $a$ existuje $a^*$, můžeme říct, že $(\\mathbb{R},+)$ je *Abelovskou grupou*.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Příklad 2\n", "\n", "Vyšetřete vlastnosti grupoidu $(\\mathbb{R},\\triangle)$, kde $\\forall a,b \\in \\mathbb{R}: a\\triangle b = a+ab+b$.\n", "\n", "\n", "Abychom mohli vyšetřit jednotlivé vlastnosti grupoidu, je třeba si nejprve zadefinovat nový operátor `triangle`:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{7}$}{\\it triangle}\\left(a , b\\right):=a+a\\,b+b\\]" ], "text/plain": [ "(%o7) triangle(a, b) := a + a b + b" ], "text/x-maxima": [ "triangle(a,b):=a+a*b+b" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "triangle(a,b):=a+a*b+b;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pokud nyní zadáme `triangle(a,b)`, dostaneme pro prvky $a$ a $b$ výsledek operace $\\triangle$:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{8}$}11\\]" ], "text/plain": [ "(%o8) 11" ], "text/x-maxima": [ "11" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "triangle(2,3);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nyní již budeme postupovat obdobně jako v předchozím příkladě:\n", "\n", "### Komutativita" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{9}$}0\\]" ], "text/plain": [ "(%o9) 0" ], "text/x-maxima": [ "0" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "triangle(a,b)-triangle(b,a);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Vydíme že rovnice platí, tedy grupoid je *komutativní*.\n", "\n", "### Asociativita" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{10}$}-a\\,\\left(b\\,c+c+b\\right)+\\left(a\\,b+b+a\\right)\\,c-b\\,c+a\\,b\\]" ], "text/plain": [ "(%o10) (- a (b c + c + b)) + (a b + b + a) c - b c + a b" ], "text/x-maxima": [ "(-a*(b*c+c+b))+(a*b+b+a)*c-b*c+a*b" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(triangle(triangle(a,b),c)-triangle(a,triangle(b,c)));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Tentokrát jsme rovnost neobdrželi. Nicméně je možné, že toto je pouze důsledekem toho, že se Maxima nesnažila výraz zjednodušit. K tomu jí vyzveme příkazem `ratsimp`:\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{11}$}0\\]" ], "text/plain": [ "(%o11) 0" ], "text/x-maxima": [ "0" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ratsimp(triangle(triangle(a,b),c)-triangle(a,triangle(b,c)));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Tentokrát jsme již nulu obdrželi a výsledek je tedy *asociativní*.\n", "\n", "### Neutrální prvek" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{12}$}\\left[ e=0 \\right] \\]" ], "text/plain": [ "(%o12) [e = 0]" ], "text/x-maxima": [ "[e = 0]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "solve([triangle(a,e)=a],[e]);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Neutrální prvek existuje a je roven nule.\n", "\n", "### Symetrický prvek" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{13}$}\\left[ b=-\\frac{a}{a+1} \\right] \\]" ], "text/plain": [ " a\n", "(%o13) [b = - -----]\n", " a + 1" ], "text/x-maxima": [ "[b = -a/(a+1)]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "solve([triangle(a,b)=0],[b]);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nalezli jsme symetrický prvek k prvku $a$, který je dán předpisem $a^*=-\\frac{a}{a+1}$. Tento předpis bohužel nemá řešení pro $a=-1$ a tedy symetrický prvek neexistuje ke každému prvku z $\\mathbb{R}$. \n", "\n", "Z výše uvedeného plyne, že $(\\mathbb{R},\\triangle)$ je *komutativní monoid*." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Příklad 3\n", "\n", "Vyšetřete vlastnosti grupoidu $(\\mathbb{N} , \\vee)$, kde $\\forall a, b \\in \\mathbb{N}: a\\vee b = \\max\\lbrace a, b\\rbrace$.\n", "\n", "BUdeme postupovat analogicky jako v minulém příkladě, ale musíme myslet na to, že uvažujeme pouze přirozená čísla:\n", "\n", "### Komutativita" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{14}$}0\\]" ], "text/plain": [ "(%o14) 0" ], "text/x-maxima": [ "0" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "max(a,b)-max(b,a);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Vydíme že rovnice platí, tedy grupoid je *komutativní*.\n", "\n", "### Asociativita" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{15}$}0\\]" ], "text/plain": [ "(%o15) 0" ], "text/x-maxima": [ "0" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "max(max(a,b),c)-max(a,max(b,c));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Obdželi jsme nulu, výsledek je tedy *asociativní*.\n", "\n", "### Neutrální prvek" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{16}$}\\left[ {\\it max}\\left(a , e\\right)=a \\right] \\]" ], "text/plain": [ "(%o16) [max(a, e) = a]" ], "text/x-maxima": [ "[max(a,e) = a]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "solve([max(a,e)=a],[e]);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Toto řešení nám již nepomůže resp. na to již mé znalosti Maximy nestačí. Pokud naleznete řešení, dejte mi prosím vědět a já ho sem doplním." ] } ], "metadata": { "kernelspec": { "display_name": "Maxima", "language": "maxima", "name": "maxima" }, "language_info": { "codemirror_mode": "maxima", "file_extension": ".mac", "mimetype": "text/x-maxima", "name": "maxima", "pygments_lexer": "maxima", "version": "branch_5_47_base_381_g45973baf2" } }, "nbformat": 4, "nbformat_minor": 4 }