{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Matriz Transposta\n",
    "#### A transposta de uma matriz MA é uma matriz que possui os mesmos elementos de MA, mas postos em posições diferentes. Pode-se obter transportando ordenadamente os elementos das linhas de MA para as colunas de MA transposta."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Desse modo, tendo uma matriz $MA = (ma_{ij})_{m_{x}n}$ a transposta de MA é $MA^{t} = (ma^{'}_{ji})_{n_{x}m}$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$MA = \\begin{bmatrix}\n",
    "         a_{1,1} & a_{1,2} & ... & a_{1,n} \\\\\n",
    "         a_{2,1} & a_{2,2} & ... & a_{2,n} \\\\\n",
    "             :   &     :   &  :  &     :   \\\\\n",
    "         a_{m,1} & a_{m,2} & ... & a_{m,n} \\\\\n",
    "         \\end{bmatrix}\n",
    "MA^{t} = \\begin{bmatrix}\n",
    "                 a_{1,1} & a_{2,1} &  : & a_{m,1} \\\\\n",
    "                 a_{1,2} & a_{2,2} &  : & a_{m,2} \\\\\n",
    "                    ...  &   ...   &  : &   ...   \\\\\n",
    "                 a_{1,n} & a_{2,n} &  : & a_{m,n} \\\\\n",
    "                 \\end{bmatrix}$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np # importando a biblioteca numpy padrão do Python"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# criando a função de matriz transposta\n",
    "def transposta():\n",
    "    \n",
    "    # recebe a quantidade de linhas da matriz\n",
    "    linha = int(input(\"Informe quantas linhas tem sua matriz: \")) \n",
    "    # recebe a quantidade de colunas da matriz\n",
    "    coluna = int(input(\"Informe quantas colunas tem sua matriz: \")) \n",
    "    \n",
    "    # comandos de ir para a próxima linha\n",
    "    print(\"\\n\") \n",
    "    \n",
    "    # iniciando uma matriz de números reais com linhas e colunas definidas\n",
    "    A = np.empty([linha,coluna], dtype = float)\n",
    "\n",
    "    # estrutura for aninhada que recebe os elementos da matriz\n",
    "    for i in range(0, linha):\n",
    "        for j in range(0, coluna):\n",
    "            A[i][j] = float(input(\"Insira o elemento [{}][{}] da matriz: \".format(i + 1,j + 1)))\n",
    "\n",
    "    #imprime na tela a matriz original\n",
    "    print(\"\\n\\nA matriz digitada é:\\n\\n{}\\n\\n\".format(A))\n",
    "\n",
    "    # definindo a matriz transposta com uma função do numpy\n",
    "    A_T = np.transpose(A) \n",
    "\n",
    "    # imprime na tela a matriz transposta\n",
    "    print(\"A matriz transposta é:\\n\\n{}\\n\\n\". format(A_T))\n",
    "\n",
    "    # definindo a matriz transposta da matriz A_T, voltando a ser a matriz A\n",
    "    A = np.transpose(A_T)\n",
    "\n",
    "    # imprime na tela a matriz tranposta da mesma já transposta, ou seja, retornará a matriz original\n",
    "    print(\"A matriz transposta da transpostada é:\\n\\n{}\".format(A))\n",
    "    \n",
    "    # função não retorna nenhum valor\n",
    "    return None"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "Informe quantas linhas tem sua matriz:  2\n",
      "Informe quantas colunas tem sua matriz:  3\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "Insira o elemento [1][1] da matriz:  1\n",
      "Insira o elemento [1][2] da matriz:  2\n",
      "Insira o elemento [1][3] da matriz:  3\n",
      "Insira o elemento [2][1] da matriz:  4\n",
      "Insira o elemento [2][2] da matriz:  5\n",
      "Insira o elemento [2][3] da matriz:  6\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "A matriz digitada é:\n",
      "\n",
      "[[1. 2. 3.]\n",
      " [4. 5. 6.]]\n",
      "\n",
      "\n",
      "A matriz transposta é:\n",
      "\n",
      "[[1. 4.]\n",
      " [2. 5.]\n",
      " [3. 6.]]\n",
      "\n",
      "\n",
      "A matriz transposta da transpostada é:\n",
      "\n",
      "[[1. 2. 3.]\n",
      " [4. 5. 6.]]\n"
     ]
    }
   ],
   "source": [
    "# imprimindo a função criada\n",
    "transposta()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Alguma Dúvida? Entre em Contato Comigo:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- [Me envie um e-mail](mailto:alysson.barbosa@ee.ufcg.edu.br);"
   ]
  }
 ],
 "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.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}