import numpy as np
from numpy.linalg import svd


def pca(X):
    """
        Функция выполняет вычисление главных компонент для матрицы 
        объекты-признаки X
    """

    m, n = X.shape

    U = np.zeros((n, n))
    S = np.zeros((n, n))

    # ====================== Ваш код здесь ======================
    # Инструкция: выполнить вычисление ковариационной матрицы и ее 
    # собственных чисел и собственных векторов. Последние являются 
    # искомыми главными компонентами данных

    Sigma = X.transpose().dot(X) / m
    U, S, V = svd(Sigma)

    # ===========================================================

    return U, S
