1. Mathematics

1.1. Builtin

1.1.1. Constans

  • inf or Infinity

  • -inf or -Infinity

  • 1E10 or 1E-5

1.1.2. Functions

  • abs()

  • round()

  • pow()

  • sum()

  • min()

  • max()

  • divmod()

  • complex()

1.2. math

1.2.1. Constants

import math


math.pi
math.e

1.2.2. Degree/Radians Conversion

import math


math.degrees(x)
math.radians(x)

1.2.3. Rounding to lower

import math


math.floor(3.14)                # 3
math.floor(3.00000000000000)    # 3
math.floor(3.00000000000001)    # 3
math.floor(3.99999999999999)    # 3

1.2.4. Rounding to higher

import math


math.ceil(3.14)                 # 4
math.ceil(3.00000000000000)     # 3
math.ceil(3.00000000000001)     # 4
math.ceil(3.99999999999999)     # 4

1.2.5. Logarithms

import math


math.log(x)     # if base is not set, then ``e``
math.log(x, base=2)
math.log10()

math.exp(x)

1.2.6. Linear Algebra

import math


math.sqrt()
math.pow(x, y)

math.hypot()    # 2D, since Python 3.8 also multiple dimensions
math.dist()     # Euclidean distance, Since Python 3.8

1.2.7. Trigonometry

import math


math.sin()
math.cos()
math.tan()

math.sinh()
math.cosh()
math.tanh()

math.asin(x)
math.acos(x)
math.atan(x)
math.atan2(x)

math.asinh(x)
math.acosh(x)

1.2.8. Other functions

import math


math.isinf(x)
math.fabs(x)

1.3. Assignments

1.3.1. Trigonometry

  1. Program wczytuje od użytkownika wielkość kąta w stopniach

  2. Użytkownik zawsze podaje int albo float

  3. Wyświetl wartość funkcji trygonometrycznych (sin, cos, tg, ctg)

  4. Jeżeli funkcja trygonometryczna nie istnieje dla danego kąta podnieś stosowny wyjątek

1.3.2. Euclidean distance 2D

  1. Dane są dwa punkty A i B o podanych koordynatach tuple

  2. Punkty A i B są dwuwymiarowe (x, y)

  3. Oblicz odległość między nimi

  4. Wykorzystaj algorytm Euklidesa

  5. Funkcja musi przechodzić doctest Listing 141.

Listing 141. Euclidean distance 2D
def euclidean_distance(A, B):
    """
    >>> A = (1, 0)
    >>> B = (0, 1)
    >>> euclidean_distance(A, B)
    1.4142135623730951

    >>> euclidean_distance((0,0), (1,0))
    1.0

    >>> euclidean_distance((0,0), (1,1))
    1.4142135623730951

    >>> euclidean_distance((0,1), (1,1))
    1.0

    >>> euclidean_distance((0,10), (1,1))
    9.055385138137417
    """
    x1 = ...
    y1 = ...
    x2 = ...
    y2 = ...
    return ...
../_images/k-nearest-neighbors-euclidean-distance1.png

Figure 17. Wyliczanie odległości w celu oszacowania przynależności do zbioru. Zwróć uwagę, że bez względu na ilość wymiarów wzór się niewiele różni.

1.3.3. Euclidean distance n dimensions

  1. Dane są dwa punkty A i B o podanych koordynatach tuple

  2. Punkty A i B są na N-wymiarowej przestrzeni (x, y, ...)

  3. Punkty A i B muszą być równo-wymiarowe

  4. Funkcja musi przechodzić doctest Listing 142.

Listing 142. Euclidean distance N-dimension
def euclidean_distance(A, B):
    """
    >>> A = (0,1,0,1)
    >>> B = (1,1,0,0)
    >>> euclidean_distance(A, B)
    1.4142135623730951

    >>> euclidean_distance((0,0,0), (0,0,0))
    0.0

    >>> euclidean_distance((0,0,0), (1,1,1))
    1.7320508075688772

    >>> euclidean_distance((0,1,0,1), (1,1,0,0))
    1.4142135623730951

    >>> euclidean_distance((0,0,1,0,1), (1,1,0,0,1))
    1.7320508075688772

    >>> euclidean_distance((0,0,1,0,1), (1,1))
    Traceback (most recent call last):
        ...
    ValueError: Punkty muszą być w przestrzeni tylu-samo wymiarowej
    """
    x1 = ...
    y1 = ...
    x2 = ...
    y2 = ...
    return ...

1.3.4. Matrix multiplication

  • Complexity level: hard

  • Lines of code to write: 6 lines

  • Estimated time of completion: 20 min

  • Filename: solution/math_matmul.py

  1. Napisz program mnożący macierze wykorzystując zagnieżdżone pętle for

A = [
    [1, 0],
    [0, 1]
]
def matrix_multiplication(A, B):
    """
    >>> A = [[1, 0], [0, 1]]
    >>> B = [[4, 1], [2, 2]]
    >>> matrix_multiplication(A, B)
    [[4, 1], [2, 2]]

    >>> A = [[1,0,1,0], [0,1,1,0], [3,2,1,0], [4,1,2,0]]
    >>> B = [[4,1], [2,2], [5,1], [2,3]]
    >>> matrix_multiplication(A, B)
    [[9, 2], [7, 3], [21, 8], [28, 8]]
    """
    return
Hints
  • macierz zerowa

  • trzy pętle

1.3.5. Triangle

  • Complexity level: easy

  • Lines of code to write: 5 lines

  • Estimated time of completion: 10 min

  • Filename: solution/math_triangle.py

  1. Napisz program, który obliczy pole trójkąta.

  2. Użytkownik poda wysokość i długość podstawy tego trójkąta.

  3. Wysokość i długość podstawy mogą być liczbami niecałkowitymi.

  4. Wykorzystaj doctest do przetestowania funkcji.

The whys and wherefores
  • Umiejętność wykorzystania gotowych funkcji w zewnętrznej bibliotece

  • Umiejętność wyszukania informacji na temat API funkcji w dokumentacji języka i jego odpowiedniej wersji

  • Stworzenie dwóch alternatywnych podejść do rozwiązania zadania

  • Porównanie czytelności obu rozwiązań