{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Atrapa „skryptu”\n",
    "# Znajdowanie pierwiastków równania kwadratowego"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Fakt.** Niech $a, b, c \\in \\mathbb{C}$, $a \\neq 0$. Wówczas zespolone pierwiastki wielomianu $P(z) = az^2 + bz + c$ mają postać:\n",
    "\\begin{align}\n",
    "z_1 & = \\frac{-b + \\sqrt{\\Delta}}{2a},\\\\\n",
    "z_2 & = \\frac{-b - \\sqrt{\\Delta}}{2a},\n",
    "\\end{align}\n",
    "gdzie $\\Delta = b^2 - 4ac$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*Dowód.* Bezpośrednim rachunkiem:\n",
    "\\begin{align}\n",
    "a(z - z_1)(z - z_2) & = a\\left(z - \\frac{-b + \\sqrt{\\Delta}}{2a}\\right)\\left(z - \\frac{-b - \\sqrt{\\Delta}}{2a}\\right)\n",
    "= a\\left(\\left(z + \\frac{b}{2a}\\right) - \\frac{\\sqrt{\\Delta}}{2a}\\right)\\left(\\left(z + \\frac{b}{2a}\\right) + \\frac{\\sqrt{\\Delta}}{2a}\\right) \\\\\n",
    "& = a\\left(\\left(z + \\frac{b}{2a}\\right)^2 - \\frac{\\Delta}{4a^2}\\right) = a\\left(z^2 + \\frac{b^2}{4a^2} + \\frac{bz}{a} - \\frac{b^2 - 4ac}{4a^2}\\right) \\\\\n",
    "& = a\\left(z^2 + \\frac{bz}{a} - \\frac{c}{a}\\right) = az^2 + bz + c.\n",
    "\\end{align}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Przykład:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Współczynniki wielomianu:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "a = 1\n",
    "b = 2\n",
    "c = 1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Można pominąć, gdy nie mamy `sympy`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle z^{2} + 2 z + 1$"
      ],
      "text/plain": [
       "z**2 + 2*z + 1"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sympy import *\n",
    "z = Symbol('z')\n",
    "f = S(a) * z**2 + S(b) * z + S(c)\n",
    "f"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Wyróżnik:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d = b**2 - 4*a*c\n",
    "d"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Pierwiastki:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-1, -1)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z1 = (-b-sqrt(d))/(2*a)\n",
    "z2 = (-b+sqrt(d))/(2*a)\n",
    "z1, z2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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r18/SdLBgweVlZWlyMhISdL777+vX3/91XHO7t279fDDD+vzzz/XTTfd9EeXBwAAqgCf2LPUqlUr9erVS8OHD9fSpUtlt9s1atQoDRgwwPFOuKNHj6pHjx5688031alTJwUHBysxMVFJSUkKDQ1VUFCQRo8ercjISMfm7v8NRCdPnnQ83v/udQIAANcmnwhLkvT2229r1KhR6tGjh6xWq/r166fk5GTHcbvdroMHDzrtbJ8/f75jblFRkWJiYvTSSy95o3wAAOCjfCYshYaGauXKlZc93rRpU8eeo4sCAgK0ZMkSLVmypFyPcdddd11yHwAA4NrmM5/gDQAA4A2EJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABOEJQAAABPVvV1AVWAYhiSpoKDAy5V4n91uV2FhoQoKCuTn5+ftcqos+uw59Noz6LNn0GdnF39vX/w9fjmEpQpw+vRpSVKjRo28XAkAAHDV6dOnFRwcfNnjFuNKcQpXVFpaqmPHjqlOnTqyWCzeLserCgoK1KhRI/34448KCgrydjlVFn32HHrtGfTZM+izM8MwdPr0aYWHh8tqvfzOJK4sVQCr1aobbrjB22VUKkFBQfxF9AD67Dn02jPos2fQ59+YXVG6iA3eAAAAJghLAAAAJghLqFD+/v6aMWOG/P39vV1KlUafPYdeewZ99gz6fHXY4A0AAGCCK0sAAAAmCEsAAAAmCEsAAAAmCEsAAAAmCEtwybPPPquuXbsqMDBQISEh5TrHMAxNnz5d119/vWrWrKmoqCh99913Zc4tKipSu3btZLFYtGfPnoor3Ae5o9dHjhxRYmKimjVrppo1a+qmm27SjBkzVFxc7KZVVH7uek6fOnVKgwYNUlBQkEJCQpSYmKgzZ864YQW+4Wr68f3336tv376q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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "x1, y1 = complex(z1).real, complex(z1).imag\n",
    "x2, y2 = complex(z2).real, complex(z2).imag\n",
    "plt.scatter([x1, x2], [y1, y2], s=50)\n",
    "plt.xlabel('Real part')\n",
    "plt.ylabel('Imaginary part')\n",
    "plt.grid()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "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.11.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
