{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "e5e44fb3",
   "metadata": {},
   "source": [
    "## Ejemplo 5.1: Producto de Krönecker"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "71cd75b7",
   "metadata": {},
   "source": [
    "$\\newcommand{\\ket}[1]{|{#1}\\rangle}\\newcommand{\\bra}[1]{\\langle{#1}|}$\n",
    "Si $\\boldsymbol{A}$ y $\\boldsymbol{B}$ son dos matrices de dimensión $2\\times 2$ se tiene que\n",
    "\\begin{align*}\n",
    "\\boldsymbol{A} \\otimes \\boldsymbol{B} =\n",
    "\\begin{bmatrix}\n",
    "a_{11} & a_{12} \\\\\n",
    "a_{21} & a_{22}\n",
    "\\end{bmatrix}\n",
    "\\otimes\n",
    "\\begin{bmatrix}\n",
    "b_{11} & b_{12}\\\\\n",
    "b_{21} & b_{22}\n",
    "\\end{bmatrix} =\n",
    "\\begin{bmatrix}\n",
    "a_{11} b_{11} & a_{11} b_{12} & a_{12} b_{11} & a_{12} b_{12} \\\\\n",
    "a_{11} b_{21} & a_{11} b_{22} & a_{12} b_{21} & a_{12} b_{22} \\\\\n",
    "a_{21} b_{11} & a_{21} b_{12} & a_{22} b_{11} & a_{22} b_{12} \\\\\n",
    "a_{21} b_{21} & a_{21} b_{22} & a_{22} b_{21} & a_{22} b_{22}\n",
    "\\end{bmatrix}.\n",
    "\\end{align*}\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "e51496e6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "A =\n",
      " [[0 1]\n",
      " [2 3]] \n",
      "B =\n",
      " [[10 11]\n",
      " [12 13]] \n",
      "A ⊗ B =\n",
      " [[ 0  0 10 11]\n",
      " [ 0  0 12 13]\n",
      " [20 22 30 33]\n",
      " [24 26 36 39]]\n"
     ]
    }
   ],
   "source": [
    "# El comando de numpy que realiza el producto de Kroenecker es kron(A,B):\n",
    "\n",
    "import numpy as np\n",
    "\n",
    "A = np.array([[0, 1], [2, 3]])\n",
    "B = np.array([[10, 11], [12, 13]])\n",
    "A_kron_B = np.kron(A, B)\n",
    "\n",
    "print(\"A =\\n\", str(A), \"\\nB =\\n\", str(B), \"\\nA ⊗ B =\\n\", str(A_kron_B))\n"
   ]
  }
 ],
 "metadata": {
  "celltoolbar": "Raw Cell Format",
  "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.10.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
