portal Michała Hanćkowiaka
Begin main content
{
"cells": [
  {
  "cell_type": "markdown",
  "metadata": {},
  "source": [
    "<div class=\"alert alert-block\" style=\"text-align: center; background-color: lightgrey; font-weight: bold;\">\n",
    "<h1> Algorytmy i programowanie (2024L) </h1>\n",
    "<h2> <i>Moduł math</i></h2> \n",
    "<h3></h3>\n",
    "</div>"
  ]
  },
  {
  "cell_type": "markdown",
  "metadata": {},
  "source": [
    "## Moduły w Pythonie\n",
    "\n",
    "Moduły w języku Python to po prostu biblioteki zawierające kod, który może zostać dodany do naszego programu za pomocą polecenia ```import```, po którym podajemy nazwę modułu, który chcemy dołączyć. Sam moduł jest plikiem z rozszerzeniem .py, w którym znajduje się kod. Python oferuje wiele wbudowanych modułów, takich jak:\n",
    " - ```math``` (funkcje matematyczne),\n",
    " - ```cmath``` (funkcje matematyczna dla liczb zespolonych),\n",
    " - ```string``` (operacje na łańcuchach znaków),\n",
    " - ```datetime```, ```time``` (moduły do obsługi czasu),\n",
    " - ```itertools``` (tworzenie różnego rodzaju iteratorów, np. permutacji),\n",
    " - ```random``` (generator liczb pseudolosowych).\n",
    "\n",
    "Listę pozostałych modułów można znaleźć tutaj https://docs.python.org/3/py-modindex.html.\n",
    "\n",
    "Dostępnych jest również wiele innych gotowych bibliotek, jednak aby móc z nich korzystać musimy je wcześniej zainstalować na swoim urządzeniu."
  ]
  },
  {
  "cell_type": "markdown",
  "metadata": {},
  "source": [
    "## Moduł math\n",
    "\n",
    "Moduł ```math``` dostarcza nam wielu funkcji matematycznych. Aby móc z niego korzystać, musimy na początek w naszym programie umieścić komendę ```import math```. Następnie, aby wywołać funkcję zdefiniowaną w tym module piszemy najpierw nazwę modułu, po niej kropkę i dopiero wtedy nazwę interesującej nas funkcji. "
  ]
  },
  {
  "cell_type": "code",
  "execution_count": 10,
  "metadata": {},
  "outputs": [
    {
    "name": "stdout",
    "output_type": "stream",
    "text": [
      "16\n",
      "720\n",
      "14400\n"
    ]
    }
  ],
  "source": [
    "import math\n",
    "print(math.gcd(144, 80)) # gcd = greatest common divisor czyli NWD\n",
    "print(math.lcm(144, 80)) # lcm = least common multiple czyli NWW\n",
    "print(math.prod([1, 4, 9, 16, 25])) # zwraca iloczyn liczb na liście"
  ]
  },
  {
  "cell_type": "markdown",
  "metadata": {},
  "source": [
    "Pełną listę funkcji, które dostarcza moduł math można znaleźć tutaj https://docs.python.org/3/library/math.html#module-math.\n",
    "\n",
    "Funkcje w pakiecie ```math``` zazwyczaj zwracają liczbę typu ```float```."
  ]
  },
  {
  "cell_type": "code",
  "execution_count": 22,
  "metadata": {},
  "outputs": [
    {
    "name": "stdout",
    "output_type": "stream",
    "text": [
      "8103.083927575384\n",
      "2.1972245773362196\n",
      "2.0\n",
      "3.169925001442312\n",
      "0.9542425094393249\n",
      "729.0\n",
      "3.0\n"
    ]
    }
  ],
  "source": [
    "x = 9\n",
    "y = 3\n",
    "print(math.exp(x))    # e^x\n",
    "print(math.log(x))    # logarytm naturalny z x\n",
    "print(math.log(x, y))  # logarytm o podstawie y z x\n",
    "print(math.log2(x))    # logarytm o podstawie 2 z x\n",
    "print(math.log10(x))  # logarytm o podstawie 10 z x\n",
    "print(math.pow(x, y))  # x^y\n",
    "print(math.sqrt(x))    # pierwiastek kwadratowy z x"
  ]
  },
  {
  "cell_type": "markdown",
  "metadata": {},
  "source": [
    "**Funkcje trygonometryczne**\n",
    "\n",
    "Moduł ```math``` dostarcza również funkcje trygonometryczne takie jak ```math.sin```, ```math.cos```, ```math.tan```, ```math.asin```, ```math.acos```, ```math.atan```, przy czym należy pamiętać, że argumenty pierwszych trzech funkcji i wartości zwracane przez ostatnie trzy podawane są w radianach. Aby przekonwertować radiany na stopnie możemy posłużyć się funkcją ```math.degrees```, z kolei funkcja ```math.radians``` zamienia stopnie na radiany."
  ]
  },
  {
  "cell_type": "code",
  "execution_count": 27,
  "metadata": {},
  "outputs": [
    {
    "name": "stdout",
    "output_type": "stream",
    "text": [
      "0.49999999999999994\n",
      "0.8660254037844386\n",
      "1.0\n"
    ]
    }
  ],
  "source": [
    "alfa = 30\n",
    "beta = 60\n",
    "gamma = 90\n",
    "print(math.sin(math.radians(alfa)))\n",
    "print(math.sin(math.radians(beta)))\n",
    "print(math.sin(math.radians(gamma)))"
  ]
  },
  {
  "cell_type": "markdown",
  "metadata": {},
  "source": [
    "**Zadanie 1.** Napisz program, który obliczy kąty w trójkącie o bokach długości $3$, $4$ i $5$."
  ]
  },
  {
  "cell_type": "markdown",
  "metadata": {},
  "source": [
    "**Zadanie 2.** Napisz program, który obliczy kąty w trójkącie o bokach długości $6$, $7$ i $10$."
  ]
  },
  {
  "cell_type": "markdown",
  "metadata": {},
  "source": [
    "**Stałe w module Math**\n",
    "\n",
    "Poza funkcjami matematycznymi, pakiet ```math``` udostępnia nam również klasyczne stałe matematyczne takie jak ```math.pi``` oraz ```math.e```, przy czym dokładność obydwu stałych jest ograniczona dokładnością typu float."
  ]
  },
  {
  "cell_type": "markdown",
  "metadata": {},
  "source": [
    "**Zadanie 3.** Napisz program, który policzy pole i objętość kuli o zadanym promieniu."
  ]
  },
  {
  "cell_type": "markdown",
  "metadata": {},
  "source": [
    "**Zadanie 4.** Jedna z definicji liczby $e$ mówi, że jest to wartość graniczna wyrażenia $\\left(1+\\frac1{n}\\right)^n$ przy $n$ zmierzającym do nieskończoności. Napisz program, który wyznaczy najmniejszą wartość $n$ taką, że wyrażenie $e-\\left(1+\\frac{1}{n}\\right)^n$ będzie mniejsze niż $10^{-m}$ dla zadanej liczby naturalnej $m$."
  ]
  },
  {
  "cell_type": "code",
  "execution_count": null,
  "metadata": {},
  "outputs": [],
  "source": []
  }
],
"metadata": {
  "kernelspec": {
  "display_name": "Python 3",
  "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.6.9"
  }
},
"nbformat": 4,
"nbformat_minor": 5
}
uwaga: portal używa ciasteczek tylko do obsługi tzw. sesji...