diff --git a/BasicGates/BasicGates.ipynb b/BasicGates/BasicGates.ipynb index 2fe2a0dc12a..c1704739032 100644 --- a/BasicGates/BasicGates.ipynb +++ b/BasicGates/BasicGates.ipynb @@ -214,7 +214,7 @@ "\n", "**Input:** A qubit in state $|\\psi\\rangle = \\alpha |0\\rangle + \\beta |1\\rangle$.\n", "\n", - "**Goal:** Change the qubit state to $\\alpha |0\\rangle + \\color{red}i\\beta |1\\rangle$ (add a relative phase $i$ to $|1\\rangle$ component of the superposition).\n" + "**Goal:** Change the qubit state to $\\alpha |0\\rangle + {\\color{red}i}\\beta |1\\rangle$ (add a relative phase $i$ to $|1\\rangle$ component of the superposition).\n" ] }, { @@ -251,7 +251,7 @@ "**Goal:** Change the state of the qubit as follows:\n", "- If the qubit is in state $|0\\rangle$, don't change its state.\n", "- If the qubit is in state $|1\\rangle$, change its state to $e^{i\\alpha} |1\\rangle$.\n", - "- If the qubit is in superposition, change its state according to the effect on basis vectors: $\\beta |0\\rangle + \\color{red}{e^{i\\alpha}} \\gamma |1\\rangle$.\n" + "- If the qubit is in superposition, change its state according to the effect on basis vectors: $\\beta |0\\rangle + {\\color{red}{e^{i\\alpha}}} \\gamma |1\\rangle$.\n" ] }, { @@ -479,10 +479,10 @@ "source": [ "### Task 2.2. Two-qubit gate - 2\n", "\n", - "**Input:** Two unentangled qubits (stored in an array of length 2) in state $|+\\rangle \\otimes |+\\rangle = \\frac{1}{2} \\big( |00\\rangle + |01\\rangle + |10\\rangle \\color{blue}+ |11\\rangle \\big)$.\n", + "**Input:** Two unentangled qubits (stored in an array of length 2) in state $|+\\rangle \\otimes |+\\rangle = \\frac{1}{2} \\big( |00\\rangle + |01\\rangle + |10\\rangle {\\color{blue}+} |11\\rangle \\big)$.\n", "\n", "\n", - "**Goal:** Change the two-qubit state to $\\frac{1}{2} \\big( |00\\rangle + |01\\rangle + |10\\rangle \\color{red}- |11\\rangle \\big)$.\n", + "**Goal:** Change the two-qubit state to $\\frac{1}{2} \\big( |00\\rangle + |01\\rangle + |10\\rangle {\\color{red}-} |11\\rangle \\big)$.\n", "\n", "> Note that while the starting state can be represented as a tensor product of single-qubit states,\n", "> the resulting two-qubit state can not be represented in such a way." @@ -514,10 +514,10 @@ "source": [ "### Task 2.3. Two-qubit gate - 3\n", "\n", - "**Input:** Two unentangled qubits (stored in an array of length 2) in an arbitrary two-qubit state $\\alpha |00\\rangle + \\color{blue}\\beta |01\\rangle + \\color{blue}\\gamma |10\\rangle + \\delta |11\\rangle$.\n", + "**Input:** Two unentangled qubits (stored in an array of length 2) in an arbitrary two-qubit state $\\alpha |00\\rangle + {\\color{blue}\\beta} |01\\rangle + {\\color{blue}\\gamma} |10\\rangle + \\delta |11\\rangle$.\n", "\n", "\n", - "**Goal:** Change the two-qubit state to $\\alpha |00\\rangle + \\color{red}\\gamma |01\\rangle + \\color{red}\\beta |10\\rangle + \\delta |11\\rangle$.\n", + "**Goal:** Change the two-qubit state to $\\alpha |00\\rangle + {\\color{red}\\gamma} |01\\rangle + {\\color{red}\\beta} |10\\rangle + \\delta |11\\rangle$.\n", "\n", "> This task can be solved using one intrinsic gate; as an exercise, try to express the solution using several (possibly controlled) Pauli gates." ] @@ -549,9 +549,9 @@ "### Task 2.4. Toffoli gate\n", "\n", "**Input:** Three qubits (stored in an array of length 3) in an arbitrary three-qubit state \n", - "$\\alpha |000\\rangle + \\beta |001\\rangle + \\gamma |010\\rangle + \\delta |011\\rangle + \\epsilon |100\\rangle + \\zeta|101\\rangle + \\color{blue}\\eta|110\\rangle + \\color{blue}\\theta|111\\rangle$.\n", + "$\\alpha |000\\rangle + \\beta |001\\rangle + \\gamma |010\\rangle + \\delta |011\\rangle + \\epsilon |100\\rangle + \\zeta|101\\rangle + {\\color{blue}\\eta}|110\\rangle + {\\color{blue}\\theta}|111\\rangle$.\n", "\n", - "**Goal:** Flip the state of the third qubit if the state of the first two is $|11\\rangle$, i.e., change the three-qubit state to $\\alpha |000\\rangle + \\beta |001\\rangle + \\gamma |010\\rangle + \\delta |011\\rangle + \\epsilon |100\\rangle + \\zeta|101\\rangle + \\color{red}\\theta|110\\rangle + \\color{red}\\eta|111\\rangle$." + "**Goal:** Flip the state of the third qubit if the state of the first two is $|11\\rangle$, i.e., change the three-qubit state to $\\alpha |000\\rangle + \\beta |001\\rangle + \\gamma |010\\rangle + \\delta |011\\rangle + \\epsilon |100\\rangle + \\zeta|101\\rangle + {\\color{red}\\theta}|110\\rangle + {\\color{red}\\eta}|111\\rangle$." ] }, { @@ -581,9 +581,9 @@ "### Task 2.5. Fredkin gate\n", "\n", "**Input:** Three qubits (stored in an array of length 3) in an arbitrary three-qubit state \n", - "$\\alpha |000\\rangle + \\beta |001\\rangle + \\gamma |010\\rangle + \\delta |011\\rangle + \\epsilon |100\\rangle + \\color{blue}\\zeta|101\\rangle + \\color{blue}\\eta|110\\rangle + \\theta|111\\rangle$.\n", + "$\\alpha |000\\rangle + \\beta |001\\rangle + \\gamma |010\\rangle + \\delta |011\\rangle + \\epsilon |100\\rangle + {\\color{blue}\\zeta}|101\\rangle + {\\color{blue}\\eta}|110\\rangle + \\theta|111\\rangle$.\n", "\n", - "**Goal:** Swap the states of second and third qubit if and only if the state of the first qubit is $|1\\rangle$, i.e., change the three-qubit state to $\\alpha |000\\rangle + \\beta |001\\rangle + \\gamma |010\\rangle + \\delta |011\\rangle + \\epsilon |100\\rangle + \\color{red}\\eta|101\\rangle + \\color{red}\\zeta|110\\rangle + \\theta|111\\rangle$." + "**Goal:** Swap the states of second and third qubit if and only if the state of the first qubit is $|1\\rangle$, i.e., change the three-qubit state to $\\alpha |000\\rangle + \\beta |001\\rangle + \\gamma |010\\rangle + \\delta |011\\rangle + \\epsilon |100\\rangle + {\\color{red}\\eta}|101\\rangle + {\\color{red}\\zeta}|110\\rangle + \\theta|111\\rangle$." ] }, { diff --git a/BasicGates/Workbook_BasicGates.ipynb b/BasicGates/Workbook_BasicGates.ipynb index 0bf5d679257..a84928ca0ef 100644 --- a/BasicGates/Workbook_BasicGates.ipynb +++ b/BasicGates/Workbook_BasicGates.ipynb @@ -622,7 +622,7 @@ "\n", "**Input:** A qubit in state $|\\psi\\rangle = \\alpha |0\\rangle + \\beta |1\\rangle$.\n", "\n", - "**Goal:** Change the qubit state to $\\alpha |0\\rangle + \\color{red}i\\beta |1\\rangle$ (add a relative phase $i$ to $|1\\rangle$ component of the superposition).\n" + "**Goal:** Change the qubit state to $\\alpha |0\\rangle + {\\color{red}i}\\beta |1\\rangle$ (add a relative phase $i$ to $|1\\rangle$ component of the superposition).\n" ] }, { @@ -745,7 +745,7 @@ "**Goal:** Change the state of the qubit as follows:\n", "- If the qubit is in state $|0\\rangle$, don't change its state.\n", "- If the qubit is in state $|1\\rangle$, change its state to $e^{i\\alpha} |1\\rangle$.\n", - "- If the qubit is in superposition, change its state according to the effect on basis vectors: $\\beta |0\\rangle + \\color{red}{e^{i\\alpha}} \\gamma |1\\rangle$." + "- If the qubit is in superposition, change its state according to the effect on basis vectors: $\\beta |0\\rangle + {\\color{red}{e^{i\\alpha}}} \\gamma |1\\rangle$." ] }, { @@ -794,14 +794,14 @@ " =\n", "\\begin{bmatrix}\n", " 1.\\beta + 0.\\gamma\\\\\n", - " 0.\\beta + \\color{red}{e^{i\\alpha}}\\gamma\n", + " 0.\\beta + {\\color{red}{e^{i\\alpha}}}\\gamma\n", " \\end{bmatrix} \n", " =\n", " \\begin{bmatrix}\n", " \\beta\\\\\n", - " \\color{red}{e^{i\\alpha}}\\gamma\n", + " {\\color{red}{e^{i\\alpha}}}\\gamma\n", " \\end{bmatrix} \n", - " = \\beta |0\\rangle + \\color{red}{e^{i\\alpha}} \\gamma |1\\rangle\n", + " = \\beta |0\\rangle + {\\color{red}{e^{i\\alpha}}} \\gamma |1\\rangle\n", "$$" ] }, @@ -1166,10 +1166,10 @@ "source": [ "## Task 2.2. Two-qubit gate - 2\n", "\n", - "**Input:** Two unentangled qubits (stored in an array of length 2) in state $|+\\rangle \\otimes |+\\rangle = \\frac{1}{2} \\big( |00\\rangle + |01\\rangle + |10\\rangle \\color{blue}+ |11\\rangle \\big)$.\n", + "**Input:** Two unentangled qubits (stored in an array of length 2) in state $|+\\rangle \\otimes |+\\rangle = \\frac{1}{2} \\big( |00\\rangle + |01\\rangle + |10\\rangle {\\color{blue}+} |11\\rangle \\big)$.\n", "\n", "\n", - "**Goal:** Change the two-qubit state to $\\frac{1}{2} \\big( |00\\rangle + |01\\rangle + |10\\rangle \\color{red}- |11\\rangle \\big)$." + "**Goal:** Change the two-qubit state to $\\frac{1}{2} \\big( |00\\rangle + |01\\rangle + |10\\rangle {\\color{red}-} |11\\rangle \\big)$." ] }, { @@ -1278,7 +1278,7 @@ " 1\\cdot\\color{red}{e^{i\\alpha}}\\\\\n", "\\end{bmatrix}\n", "=\n", - "\\frac{1}{2} \\big( |00\\rangle + |01\\rangle + |10\\rangle \\color{red}- |11\\rangle \\big)\n", + "\\frac{1}{2} \\big( |00\\rangle + |01\\rangle + |10\\rangle {\\color{red}-} |11\\rangle \\big)\n", "$$" ] }, @@ -1337,10 +1337,10 @@ "source": [ "## Task 2.3. Two-qubit gate - 3\n", "\n", - "**Input:** Two unentangled qubits (stored in an array of length 2) in an arbitrary two-qubit state $\\alpha |00\\rangle + \\color{blue}\\beta |01\\rangle + \\color{blue}\\gamma |10\\rangle + \\delta |11\\rangle$.\n", + "**Input:** Two unentangled qubits (stored in an array of length 2) in an arbitrary two-qubit state $\\alpha |00\\rangle + {\\color{blue}\\beta} |01\\rangle + {\\color{blue}\\gamma} |10\\rangle + \\delta |11\\rangle$.\n", "\n", "\n", - "**Goal:** Change the two-qubit state to $\\alpha |00\\rangle + \\color{red}\\gamma |01\\rangle + \\color{red}\\beta |10\\rangle + \\delta |11\\rangle$.\n", + "**Goal:** Change the two-qubit state to $\\alpha |00\\rangle + {\\color{red}\\gamma} |01\\rangle + {\\color{red}\\beta} |10\\rangle + \\delta |11\\rangle$.\n", "\n", "> This task can be solved using one intrinsic gate; as an exercise, try to express the solution using several (possibly controlled) Pauli gates." ] @@ -1423,7 +1423,7 @@ " \\delta\\\\\n", "\\end{bmatrix}\n", "=\n", - "|00\\rangle + \\color{red}\\gamma |01\\rangle + \\color{red}\\beta |10\\rangle + \\delta |11\\rangle\n", + "|00\\rangle + {\\color{red}\\gamma} |01\\rangle + {\\color{red}\\beta} |10\\rangle + \\delta |11\\rangle\n", "$$" ] }, @@ -1533,9 +1533,9 @@ "## Task 2.4. Toffoli gate\n", "\n", "**Input:** Three qubits (stored in an array of length 3) in an arbitrary three-qubit state \n", - "$\\alpha |000\\rangle + \\beta |001\\rangle + \\gamma |010\\rangle + \\delta |011\\rangle + \\epsilon |100\\rangle + \\zeta|101\\rangle + \\color{blue}\\eta|110\\rangle + \\color{blue}\\theta|111\\rangle$.\n", + "$\\alpha |000\\rangle + \\beta |001\\rangle + \\gamma |010\\rangle + \\delta |011\\rangle + \\epsilon |100\\rangle + \\zeta|101\\rangle + {\\color{blue}\\eta}|110\\rangle + {\\color{blue}\\theta}|111\\rangle$.\n", "\n", - "**Goal:** Flip the state of the third qubit if the state of the first two is $|11\\rangle$, i.e., change the three-qubit state to $\\alpha |000\\rangle + \\beta |001\\rangle + \\gamma |010\\rangle + \\delta |011\\rangle + \\epsilon |100\\rangle + \\zeta|101\\rangle + \\color{red}\\theta|110\\rangle + \\color{red}\\eta|111\\rangle$.\n", + "**Goal:** Flip the state of the third qubit if the state of the first two is $|11\\rangle$, i.e., change the three-qubit state to $\\alpha |000\\rangle + \\beta |001\\rangle + \\gamma |010\\rangle + \\delta |011\\rangle + \\epsilon |100\\rangle + \\zeta|101\\rangle + {\\color{red}\\theta}|110\\rangle + {\\color{red}\\eta}|111\\rangle$.\n", "\n", "### Solution\n", "\n", @@ -1629,7 +1629,7 @@ " \\color{red}\\eta\\\\ \n", "\\end{bmatrix}\n", "=\n", - "\\alpha |000\\rangle + \\beta |001\\rangle + \\gamma |010\\rangle + \\delta |011\\rangle + \\epsilon |100\\rangle + \\zeta|101\\rangle + \\color{red}\\theta|110\\rangle + \\color{red}\\eta|111\\rangle\n", + "\\alpha |000\\rangle + \\beta |001\\rangle + \\gamma |010\\rangle + \\delta |011\\rangle + \\epsilon |100\\rangle + \\zeta|101\\rangle + {\\color{red}\\theta}|110\\rangle + {\\color{red}\\eta}|111\\rangle\n", "$$" ] }, @@ -1660,9 +1660,9 @@ "## Task 2.5. Fredkin gate\n", "\n", "**Input:** Three qubits (stored in an array of length 3) in an arbitrary three-qubit state \n", - "$\\alpha |000\\rangle + \\beta |001\\rangle + \\gamma |010\\rangle + \\delta |011\\rangle + \\epsilon |100\\rangle + \\color{blue}\\zeta|101\\rangle + \\color{blue}\\eta|110\\rangle + \\theta|111\\rangle$.\n", + "$\\alpha |000\\rangle + \\beta |001\\rangle + \\gamma |010\\rangle + \\delta |011\\rangle + \\epsilon |100\\rangle + {\\color{blue}\\zeta}|101\\rangle + {\\color{blue}\\eta}|110\\rangle + \\theta|111\\rangle$.\n", "\n", - "**Goal:** Swap the states of second and third qubit if and only if the state of the first qubit is $|1\\rangle$, i.e., change the three-qubit state to $\\alpha |000\\rangle + \\beta |001\\rangle + \\gamma |010\\rangle + \\delta |011\\rangle + \\epsilon |100\\rangle + \\color{red}\\eta|101\\rangle + \\color{red}\\zeta|110\\rangle + \\theta|111\\rangle$.\n", + "**Goal:** Swap the states of second and third qubit if and only if the state of the first qubit is $|1\\rangle$, i.e., change the three-qubit state to $\\alpha |000\\rangle + \\beta |001\\rangle + \\gamma |010\\rangle + \\delta |011\\rangle + \\epsilon |100\\rangle + {\\color{red}\\eta}|101\\rangle + {\\color{red}\\zeta}|110\\rangle + \\theta|111\\rangle$.\n", "\n", "\n", "### Solution\n", @@ -1758,7 +1758,7 @@ " \\theta\\\\ \n", "\\end{bmatrix}\n", "=\n", - "\\alpha |000\\rangle + \\beta |001\\rangle + \\gamma |010\\rangle + \\delta |011\\rangle + \\epsilon |100\\rangle + \\color{red}\\eta|101\\rangle + \\color{red}\\zeta|110\\rangle + \\theta|111\\rangle\n", + "\\alpha |000\\rangle + \\beta |001\\rangle + \\gamma |010\\rangle + \\delta |011\\rangle + \\epsilon |100\\rangle + {\\color{red}\\eta}|101\\rangle + {\\color{red}\\zeta}|110\\rangle + \\theta|111\\rangle\n", "$$" ] }, @@ -1800,7 +1800,7 @@ "file_extension": ".qs", "mimetype": "text/x-qsharp", "name": "qsharp", - "version": "0.14" + "version": "0.24" }, "widgets": { "application/vnd.jupyter.widget-state+json": { diff --git a/tutorials/ComplexArithmetic/ComplexArithmetic.ipynb b/tutorials/ComplexArithmetic/ComplexArithmetic.ipynb index 3188b2bf0ae..e0b20103798 100644 --- a/tutorials/ComplexArithmetic/ComplexArithmetic.ipynb +++ b/tutorials/ComplexArithmetic/ComplexArithmetic.ipynb @@ -68,10 +68,10 @@ "\n", "As we said before, $i$ can't be a real number. In that case, we'll call it an **imaginary unit**. However, there is no reason for us to define it as acting any different from any other number, other than the fact that $i^2 = -1$:\n", "\n", - "$$i + i = 2i \\\\\n", - "i - i = 0 \\\\\n", - "-1 \\cdot i = -i \\\\\n", - "(-i)^{2} = -1$$\n", + "$$i + i = 2i$$\n", + "$$i - i = 0$$\n", + "$$-1 \\cdot i = -i$$\n", + "$$(-i)^{2} = -1$$\n", "\n", "We'll call the number $i$ and its real multiples **imaginary numbers**.\n", "\n", @@ -251,8 +251,8 @@ "\n", "Another property of the conjugate is that it distributes over both complex addition and complex multiplication:\n", "\n", - "$$\\overline{x + y} = \\overline{x} + \\overline{y} \\\\\n", - "\\overline{x \\cdot y} = \\overline{x} \\cdot \\overline{y}$$" + "$$\\overline{x + y} = \\overline{x} + \\overline{y}$$\n", + "$$\\overline{x \\cdot y} = \\overline{x} \\cdot \\overline{y}$$" ] }, { diff --git a/tutorials/LinearAlgebra/LinearAlgebra.ipynb b/tutorials/LinearAlgebra/LinearAlgebra.ipynb index aa939469382..a1bb9eea13c 100644 --- a/tutorials/LinearAlgebra/LinearAlgebra.ipynb +++ b/tutorials/LinearAlgebra/LinearAlgebra.ipynb @@ -405,8 +405,8 @@ "\n", "Another, equivalent definition highlights what makes this an interesting property. For any matrices $B$ and $C$ of compatible sizes:\n", "\n", - "$$A^{-1}(AB) = A(A^{-1}B) = B \\\\\n", - "(CA)A^{-1} = (CA^{-1})A = C$$\n", + "$$A^{-1}(AB) = A(A^{-1}B) = B$$\n", + "$$(CA)A^{-1} = (CA^{-1})A = C$$\n", "\n", "A square matrix has a property called the **determinant**, with the determinant of matrix $A$ being written as $|A|$. A matrix is invertible if and only if its determinant isn't equal to $0$.\n", "\n", @@ -948,8 +948,8 @@ " A_{n-1,0} \\cdot \\color{blue} {\\begin{bmatrix}B_{0,0} & \\dotsb & B_{0,l-1} \\\\ \\vdots & \\ddots & \\vdots \\\\ B_{k-1,0} & \\dotsb & B_{k-1,l-1} \\end{bmatrix}} & \\dotsb &\n", " A_{n-1,m-1} \\cdot \\color{red} {\\begin{bmatrix}B_{0,0} & \\dotsb & B_{0,l-1} \\\\ \\vdots & \\ddots & \\vdots \\\\ B_{k-1,0} & \\dotsb & B_{k-1,l-1} \\end{bmatrix}}\n", "\\end{bmatrix}\n", - "= \\\\\n", - "=\n", + "=$$\n", + "$$=\n", "\\begin{bmatrix}\n", " A_{0,0} \\cdot \\color{red} {B_{0,0}} & \\dotsb & A_{0,0} \\cdot \\color{red} {B_{0,l-1}} & \\dotsb & A_{0,m-1} \\cdot \\color{blue} {B_{0,0}} & \\dotsb & A_{0,m-1} \\cdot \\color{blue} {B_{0,l-1}} \\\\\n", " \\vdots & \\ddots & \\vdots & \\dotsb & \\vdots & \\ddots & \\vdots \\\\\n", diff --git a/tutorials/MultiQubitGates/MultiQubitGates.ipynb b/tutorials/MultiQubitGates/MultiQubitGates.ipynb index b61076f38c6..8989558631a 100644 --- a/tutorials/MultiQubitGates/MultiQubitGates.ipynb +++ b/tutorials/MultiQubitGates/MultiQubitGates.ipynb @@ -153,11 +153,11 @@ " \n", " $\\text{CNOT}$\n", " $\\begin{bmatrix} 1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0 \\end{bmatrix}$\n", - " $\\text{CNOT}|\\psi\\rangle = \\alpha|00\\rangle + \\beta|01\\rangle + \\color{red}\\delta|10\\rangle + \\color{red}\\gamma|11\\rangle$\n", - " $\\text{CNOT}|00\\rangle = |00\\rangle \\\\\n", - " \\text{CNOT}|01\\rangle = |01\\rangle \\\\\n", - " \\text{CNOT}|10\\rangle = |11\\rangle \\\\\n", - " \\text{CNOT}|11\\rangle = |10\\rangle$\n", + " $\\text{CNOT}|\\psi\\rangle = \\alpha|00\\rangle + \\beta|01\\rangle + {\\color{red}\\delta}|10\\rangle + {\\color{red}\\gamma}|11\\rangle$\n", + " $\\text{CNOT}|00\\rangle = |00\\rangle$
\n", + " $\\text{CNOT}|01\\rangle = |01\\rangle$
\n", + " $\\text{CNOT}|10\\rangle = |11\\rangle$
\n", + " $\\text{CNOT}|11\\rangle = |10\\rangle$\n", " CNOT\n", " \n", "" @@ -225,12 +225,12 @@ "\n", "Let's consider ket-bra representation of the $\\text{CNOT}$ gate:\n", "\n", - "$$\\text{CNOT} = |00\\rangle\\langle00| + |01\\rangle\\langle01| + |10\\rangle\\langle11| + |11\\rangle\\langle10| = \\\\\n", - "= \\begin{bmatrix} 1 \\\\ 0 \\\\ 0 \\\\ 0 \\end{bmatrix}\\begin{bmatrix} 1 & 0 & 0 & 0 \\end{bmatrix} +\n", + "$$\\text{CNOT} = |00\\rangle\\langle00| + |01\\rangle\\langle01| + |10\\rangle\\langle11| + |11\\rangle\\langle10| =$$\n", + "$$= \\begin{bmatrix} 1 \\\\ 0 \\\\ 0 \\\\ 0 \\end{bmatrix}\\begin{bmatrix} 1 & 0 & 0 & 0 \\end{bmatrix} +\n", "\\begin{bmatrix} 0 \\\\ 1 \\\\ 0 \\\\ 0 \\end{bmatrix}\\begin{bmatrix} 0 & 1 & 0 & 0 \\end{bmatrix} +\n", "\\begin{bmatrix} 0 \\\\ 0 \\\\ 1 \\\\ 0 \\end{bmatrix}\\begin{bmatrix} 0 & 0 & 0 & 1 \\end{bmatrix} +\n", - "\\begin{bmatrix} 0 \\\\ 0 \\\\ 0 \\\\ 1 \\end{bmatrix}\\begin{bmatrix} 0 & 0 & 1 & 0 \\end{bmatrix} = \\\\ =\n", - "\\begin{bmatrix} 1 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 0 \\\\ \\end{bmatrix} + \n", + "\\begin{bmatrix} 0 \\\\ 0 \\\\ 0 \\\\ 1 \\end{bmatrix}\\begin{bmatrix} 0 & 0 & 1 & 0 \\end{bmatrix} =$$ \n", + "$$=\\begin{bmatrix} 1 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 0 \\\\ \\end{bmatrix} + \n", "\\begin{bmatrix} 0 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 0 \\\\ \\end{bmatrix} + \n", "\\begin{bmatrix} 0 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 0 & 0 \\\\ \\end{bmatrix} + \n", "\\begin{bmatrix} 0 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 0 \\\\ 0 & 0 & 1 & 0 \\\\ \\end{bmatrix} =\n", @@ -239,10 +239,10 @@ "This representation can be used to carry out calculations in Dirac notation without ever switching back to matrix representation:\n", "\n", "$$\\text{CNOT}|10\\rangle \n", - "= \\big(|00\\rangle\\langle00| + |01\\rangle\\langle01| + |10\\rangle\\langle11| + |11\\rangle\\langle10|\\big)|10\\rangle = \\\\\n", - "= |00\\rangle\\langle00|10\\rangle + |01\\rangle\\langle01|10\\rangle + |10\\rangle\\langle11|10\\rangle + |11\\rangle\\langle10|10\\rangle = \\\\\n", - "= |00\\rangle\\big(\\langle00|10\\rangle\\big) + |01\\rangle\\big(\\langle01|10\\rangle\\big) + |10\\rangle\\big(\\langle11|10\\rangle\\big) + |11\\rangle\\big(\\langle10|10\\rangle\\big) = \\\\\n", - "= |00\\rangle(0) + |01\\rangle(0) + |10\\rangle(0) + |11\\rangle(1) = |11\\rangle$$\n", + "= \\big(|00\\rangle\\langle00| + |01\\rangle\\langle01| + |10\\rangle\\langle11| + |11\\rangle\\langle10|\\big)|10\\rangle =$$\n", + "$$= |00\\rangle\\langle00|10\\rangle + |01\\rangle\\langle01|10\\rangle + |10\\rangle\\langle11|10\\rangle + |11\\rangle\\langle10|10\\rangle =$$\n", + "$$= |00\\rangle\\big(\\langle00|10\\rangle\\big) + |01\\rangle\\big(\\langle01|10\\rangle\\big) + |10\\rangle\\big(\\langle11|10\\rangle\\big) + |11\\rangle\\big(\\langle10|10\\rangle\\big) =$$\n", + "$$= |00\\rangle(0) + |01\\rangle(0) + |10\\rangle(0) + |11\\rangle(1) = |11\\rangle$$\n", "\n", "> Notice how a lot of the inner product terms turn out to equal 0, and our expression is easily simplified. We have expressed the CNOT gate in terms of outer product of computational basis states, which are orthonormal, and apply it to another computational basis state, so the individual inner products are going to always be 0 or 1. " ] @@ -257,10 +257,10 @@ "a_{20} & a_{21} & a_{22} & a_{23} \\\\ \n", "a_{30} & a_{31} & a_{32} & a_{33} \\\\ \\end{bmatrix}$$\n", "will have the following ket-bra representation:\n", - "$$A = a_{00} |00\\rangle\\langle00| + a_{01} |00\\rangle\\langle01| + a_{02} |00\\rangle\\langle10| + a_{03} |00\\rangle\\langle11| +\\\\\n", - "+ a_{10} |01\\rangle\\langle00| + a_{11} |01\\rangle\\langle01| + a_{12} |01\\rangle\\langle10| + a_{13} |01\\rangle\\langle11| +\\\\\n", - "+ a_{20} |10\\rangle\\langle00| + a_{21} |10\\rangle\\langle01| + a_{22} |10\\rangle\\langle10| + a_{23} |10\\rangle\\langle11| +\\\\\n", - "+ a_{30} |11\\rangle\\langle00| + a_{31} |11\\rangle\\langle01| + a_{32} |11\\rangle\\langle10| + a_{33} |11\\rangle\\langle11| \n", + "$$A = a_{00} |00\\rangle\\langle00| + a_{01} |00\\rangle\\langle01| + a_{02} |00\\rangle\\langle10| + a_{03} |00\\rangle\\langle11| +$$\n", + "$$+ a_{10} |01\\rangle\\langle00| + a_{11} |01\\rangle\\langle01| + a_{12} |01\\rangle\\langle10| + a_{13} |01\\rangle\\langle11| +$$\n", + "$$+ a_{20} |10\\rangle\\langle00| + a_{21} |10\\rangle\\langle01| + a_{22} |10\\rangle\\langle10| + a_{23} |10\\rangle\\langle11| +$$\n", + "$$+ a_{30} |11\\rangle\\langle00| + a_{31} |11\\rangle\\langle01| + a_{32} |11\\rangle\\langle10| + a_{33} |11\\rangle\\langle11| \n", "$$\n", "\n", "A similar expression can be extended for matrices that describe $N$-qubit gates, where $N > 2$:\n", @@ -294,21 +294,21 @@ "> * Two, as we can clearly see, are computational basis states $|00\\rangle$ and $|01\\rangle$ with eigen values $1$ and $1$, respectively (the basis states that are not affected by the gate). \n", "> * The other two are $|1\\rangle \\otimes |+\\rangle = \\frac{1}{\\sqrt{2}}\\big(|10\\rangle + |11\\rangle\\big)$ and $|1\\rangle \\otimes |-\\rangle = \\frac{1}{\\sqrt{2}}\\big(|10\\rangle - |11\\rangle\\big)$ with eigenvalues $1$ and $-1$, respectively:\n", ">\n", - "> $$\\text{CNOT}|0\\rangle \\otimes |0\\rangle = |0\\rangle \\otimes |1\\rangle \\\\\n", - "\\text{CNOT}|0\\rangle \\otimes |1\\rangle = |0\\rangle \\otimes |1\\rangle \\\\\n", - "\\text{CNOT}|1\\rangle \\otimes |+\\rangle = |1\\rangle \\otimes |+\\rangle \\\\\n", - "\\text{CNOT}|1\\rangle \\otimes |-\\rangle = -|1\\rangle \\otimes |-\\rangle$$\n", + "> $$\\text{CNOT}|0\\rangle \\otimes |0\\rangle = |0\\rangle \\otimes |1\\rangle$$\n", + "> $$\\text{CNOT}|0\\rangle \\otimes |1\\rangle = |0\\rangle \\otimes |1\\rangle$$\n", + "> $$\\text{CNOT}|1\\rangle \\otimes |+\\rangle = |1\\rangle \\otimes |+\\rangle$$\n", + "> $$\\text{CNOT}|1\\rangle \\otimes |-\\rangle = -|1\\rangle \\otimes |-\\rangle$$\n", ">\n", "> Here's what the decomposition looks like:\n", ">\n", "> $$\\text{CNOT} = |00\\rangle\\langle00| + |01\\rangle\\langle01| + \n", - "|1\\rangle \\otimes |+\\rangle\\langle1| \\otimes \\langle +| - |1\\rangle \\otimes| -\\rangle\\langle1| \\otimes \\langle -| = \\\\\n", - "= |00\\rangle\\langle00| + |01\\rangle\\langle01| + \n", - "\\frac{1}{2}\\big[\\big(|10\\rangle + |11\\rangle\\big)\\big(\\langle10| + \\langle11|\\big) - \\big(|10\\rangle - |11\\rangle\\big)\\big(\\langle10| - \\langle11|\\big)\\big] = \\\\\n", - "= |00\\rangle\\langle00| + |01\\rangle\\langle01| +\n", - "\\frac{1}{2}\\big(\\color{red}{|10\\rangle\\langle10|} + |10\\rangle\\langle11| + |11\\rangle\\langle10| + \\color{red}{|11\\rangle\\langle11|} - \\color{red}{|10\\rangle\\langle10|} + |10\\rangle\\langle11| + |11\\rangle\\langle10| - \\color{red}{|11\\rangle\\langle11|}\\big) = \\\\\n", - "= |00\\rangle\\langle00| + |01\\rangle\\langle01| + \\frac{1}{2}\\big(2|10\\rangle\\langle11| + 2|11\\rangle\\langle10|\\big) = \\\\ \n", - "= |00\\rangle\\langle00| + |01\\rangle\\langle01| + |10\\rangle\\langle11| + |11\\rangle\\langle10|$$" + "|1\\rangle \\otimes |+\\rangle\\langle1| \\otimes \\langle +| - |1\\rangle \\otimes| -\\rangle\\langle1| \\otimes \\langle -| =$$\n", + ">$$= |00\\rangle\\langle00| + |01\\rangle\\langle01| + \n", + "\\frac{1}{2}\\big[\\big(|10\\rangle + |11\\rangle\\big)\\big(\\langle10| + \\langle11|\\big) - \\big(|10\\rangle - |11\\rangle\\big)\\big(\\langle10| - \\langle11|\\big)\\big] =$$\n", + ">$$= |00\\rangle\\langle00| + |01\\rangle\\langle01| +\n", + "\\frac{1}{2}\\big({\\color{red}{|10\\rangle\\langle10|}} + |10\\rangle\\langle11| + |11\\rangle\\langle10| + {\\color{red}{|11\\rangle\\langle11|}} - {\\color{red}{|10\\rangle\\langle10|}} + |10\\rangle\\langle11| + |11\\rangle\\langle10| - {\\color{red}{|11\\rangle\\langle11|}}\\big) =$$\n", + ">$$= |00\\rangle\\langle00| + |01\\rangle\\langle01| + \\frac{1}{2}\\big(2|10\\rangle\\langle11| + 2|11\\rangle\\langle10|\\big) =$$\n", + ">$$= |00\\rangle\\langle00| + |01\\rangle\\langle01| + |10\\rangle\\langle11| + |11\\rangle\\langle10|$$" ] }, { @@ -334,11 +334,11 @@ " \n", " $\\text{SWAP}$\n", " $\\begin{bmatrix} 1 & 0 & 0 & 0 \\\\ 0 & 0 & 1 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\end{bmatrix}$\n", - " $\\text{SWAP}|\\psi\\rangle = \\alpha|00\\rangle + \\color{red}\\gamma|01\\rangle + \\color{red}\\beta|10\\rangle + \\delta|11\\rangle$\n", - " $\\text{SWAP}|00\\rangle = |00\\rangle \\\\\n", - " \\text{SWAP}|01\\rangle = |10\\rangle \\\\\n", - " \\text{SWAP}|10\\rangle = |01\\rangle \\\\\n", - " \\text{SWAP}|11\\rangle = |11\\rangle$\n", + " $\\text{SWAP}|\\psi\\rangle = \\alpha|00\\rangle + {\\color{red}\\gamma}|01\\rangle + {\\color{red}\\beta}|10\\rangle + \\delta|11\\rangle$\n", + " $\\text{SWAP}|00\\rangle = |00\\rangle$
\n", + " $\\text{SWAP}|01\\rangle = |10\\rangle$
\n", + " $\\text{SWAP}|10\\rangle = |01\\rangle$
\n", + " $\\text{SWAP}|11\\rangle = |11\\rangle$\n", " SWAP\n", " \n", "" @@ -392,7 +392,7 @@ "\n", "#### Q# #\n", "\n", - "In Q# we describe the operation as the sequence of gates that are applied to the qubitsm regardless of whether the qubits are adjacent or not.\n", + "In Q# we describe the operation as the sequence of gates that are applied to the qubits, regardless of whether the qubits are adjacent or not.\n", "\n", "```C#\n", "operation CINOT (qs: Qubit[]) : Unit {\n", @@ -405,9 +405,9 @@ "In Dirac notation we can consider the effect of the gate on each basis vector separately: each basis vector $|a_1a_2a_3\\rangle$ remains unchanged if $a_1 = 0$, and becomes $|a_1a_2(\\neg a_3)\\rangle$ if $a_1 = 1$. The full effect on the state becomes:\n", "\n", "$$\\text{CINOT}|\\psi\\rangle \n", - "= x_{000} \\text{CINOT}|000\\rangle + x_{001} \\text{CINOT}|001\\rangle + x_{010} \\text{CINOT}|010\\rangle + x_{011} \\text{CINOT}|011\\rangle \\\\\n", - "+ \\color{red}{x_{100}} \\text{CINOT}|\\color{red}{100}\\rangle + \\color{red}{x_{101}} \\text{CINOT}|\\color{red}{101}\\rangle + \\color{red}{x_{110}} \\text{CINOT}|\\color{red}{110}\\rangle + \\color{red}{x_{111}} \\text{CINOT}|\\color{red}{111}\\rangle = \\\\\n", - "= x_{000}|000\\rangle + x_{001}|001\\rangle + x_{010}|010\\rangle + x_{011}|011\\rangle + \\color{red}{x_{101}}|100\\rangle + \\color{red}{x_{100}}|101\\rangle + \\color{red}{x_{111}}|110\\rangle + \\color{red}{x_{110}}|111\\rangle $$\n", + "= x_{000} \\text{CINOT}|000\\rangle + x_{001} \\text{CINOT}|001\\rangle + x_{010} \\text{CINOT}|010\\rangle + x_{011} \\text{CINOT}|011\\rangle+$$\n", + "$$+ {\\color{red}{x_{100}}} \\text{CINOT}|{\\color{red}{100}}\\rangle + {\\color{red}{x_{101}}} \\text{CINOT}|{\\color{red}{101}}\\rangle + {\\color{red}{x_{110}}} \\text{CINOT}|{\\color{red}{110}}\\rangle + {\\color{red}{x_{111}}} \\text{CINOT}|{\\color{red}{111}}\\rangle =$$\n", + "$$= x_{000}|000\\rangle + x_{001}|001\\rangle + x_{010}|010\\rangle + x_{011}|011\\rangle + {\\color{red}{x_{101}}}|100\\rangle + {\\color{red}{x_{100}}}|101\\rangle + {\\color{red}{x_{111}}}|110\\rangle + {\\color{red}{x_{110}}}|111\\rangle $$\n", "\n", "#### Matrix form\n", "\n", @@ -450,20 +450,20 @@ "These can be represented as applying the following gates on the 3 qubits. \n", "\n", "1. $\\text{SWAP} \\otimes I$\n", - "$$x_{000}|000\\rangle + x_{001}|001\\rangle + \\color{red}{x_{100}}|010\\rangle + \\color{red}{x_{101}}|011\\rangle + \n", - "\\color{red}{x_{010}}|100\\rangle + \\color{red}{x_{011}}|101\\rangle + x_{110}|110\\rangle + x_{111}|111\\rangle\n", + "$$x_{000}|000\\rangle + x_{001}|001\\rangle + {\\color{red}{x_{100}}}|010\\rangle + {\\color{red}{x_{101}}}|011\\rangle + \n", + "{\\color{red}{x_{010}}}|100\\rangle + {\\color{red}{x_{011}}}|101\\rangle + x_{110}|110\\rangle + x_{111}|111\\rangle\n", "$$\n", "\n", "2. $I \\otimes \\text{CNOT}$\n", "$$\n", - "x_{000}|000\\rangle + x_{001}|001\\rangle + \\color{blue}{x_{101}}|010\\rangle + \\color{blue}{x_{100}}|011\\rangle + \n", - "{x_{010}}|100\\rangle + {x_{011}}|101\\rangle + \\color{blue}{x_{111}}|110\\rangle + \\color{blue}{x_{110}}|111\\rangle\n", + "x_{000}|000\\rangle + x_{001}|001\\rangle + {\\color{blue}{x_{101}}}|010\\rangle + {\\color{blue}{x_{100}}}|011\\rangle + \n", + "{x_{010}}|100\\rangle + {x_{011}}|101\\rangle + {\\color{blue}{x_{111}}}|110\\rangle + {\\color{blue}{x_{110}}}|111\\rangle\n", "$$\n", "\n", "3. $\\text{SWAP} \\otimes I$\n", "$$\n", "x_{000}|000\\rangle + x_{001}|001\\rangle + {x_{010}}|010\\rangle + {x_{011}}|011\\rangle +\n", - "\\color{green}{x_{101}}|100\\rangle + \\color{green}{x_{100}}|101\\rangle + \\color{green}{x_{111}}|110\\rangle + \\color{green}{x_{110}}|111\\rangle\n", + "{\\color{green}{x_{101}}}|100\\rangle + {\\color{green}{x_{100}}}|101\\rangle + {\\color{green}{x_{111}}}|110\\rangle + {\\color{green}{x_{110}}}|111\\rangle\n", "$$\n", "\n", "The result is the the $\\text{CINOT}$ gate as we intended; so we can write\n", @@ -520,54 +520,54 @@ "$$\n", "\\left(\\begin{bmatrix} 1 & 0 & 0 & 0 \\\\ 0 & 0 & 1 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\end{bmatrix} \\otimes \n", "\\begin{bmatrix} 1 & 0 \\\\ 0 & 1 \\end{bmatrix}\\right)\n", - "\\begin{bmatrix} x_{000} \\\\ x_{001} \\\\ x_{010} \\\\ x_{011} \\\\ x_{100} \\\\ x_{101} \\\\ x_{110} \\\\ x_{111} \\end{bmatrix} = \\\\\n", - "= \\left(\\begin{bmatrix} 1 & 0 & 0 & 0 \\\\ 0 & 0 & 1 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\end{bmatrix} \\otimes \n", + "\\begin{bmatrix} x_{000} \\\\ x_{001} \\\\ x_{010} \\\\ x_{011} \\\\ x_{100} \\\\ x_{101} \\\\ x_{110} \\\\ x_{111} \\end{bmatrix} =$$\n", + "$$= \\left(\\begin{bmatrix} 1 & 0 & 0 & 0 \\\\ 0 & 0 & 1 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\end{bmatrix} \\otimes \n", "\\begin{bmatrix} 1 & 0 \\\\ 0 & 1 \\end{bmatrix}\\right)\n", "\\left( \\begin{bmatrix} 1 \\\\ 0 \\\\ 0 \\\\ 0 \\end{bmatrix} \\otimes \\begin{bmatrix} x_{000} \\\\ x_{001} \\end{bmatrix}\n", "+ \\begin{bmatrix} 0 \\\\ 1 \\\\ 0 \\\\ 0 \\end{bmatrix} \\otimes \\begin{bmatrix} x_{010} \\\\ x_{011} \\end{bmatrix} \n", "+ \\begin{bmatrix} 0 \\\\ 0 \\\\ 1 \\\\ 0 \\end{bmatrix} \\otimes \\begin{bmatrix} x_{100} \\\\ x_{101} \\end{bmatrix} \n", - "+ \\begin{bmatrix} 0 \\\\ 0 \\\\ 0 \\\\ 1 \\end{bmatrix} \\otimes \\begin{bmatrix} x_{110} \\\\ x_{111} \\end{bmatrix} \\right) = \\\\\n", - "= \\begin{bmatrix} 1 \\\\ 0 \\\\ 0 \\\\ 0 \\end{bmatrix} \\otimes \\begin{bmatrix} x_{000} \\\\ x_{001} \\end{bmatrix}\n", - "+ \\begin{bmatrix} 0 \\\\ 1 \\\\ 0 \\\\ 0 \\end{bmatrix} \\otimes \\color{red}{\\begin{bmatrix} x_{100} \\\\ x_{101} \\end{bmatrix}} \n", - "+ \\begin{bmatrix} 0 \\\\ 0 \\\\ 1 \\\\ 0 \\end{bmatrix} \\otimes \\color{red}{\\begin{bmatrix} x_{010} \\\\ x_{011} \\end{bmatrix}} \n", + "+ \\begin{bmatrix} 0 \\\\ 0 \\\\ 0 \\\\ 1 \\end{bmatrix} \\otimes \\begin{bmatrix} x_{110} \\\\ x_{111} \\end{bmatrix} \\right) =$$\n", + "$$= \\begin{bmatrix} 1 \\\\ 0 \\\\ 0 \\\\ 0 \\end{bmatrix} \\otimes \\begin{bmatrix} x_{000} \\\\ x_{001} \\end{bmatrix}\n", + "+ \\begin{bmatrix} 0 \\\\ 1 \\\\ 0 \\\\ 0 \\end{bmatrix} \\otimes {\\color{red}{\\begin{bmatrix} x_{100} \\\\ x_{101} \\end{bmatrix}}} \n", + "+ \\begin{bmatrix} 0 \\\\ 0 \\\\ 1 \\\\ 0 \\end{bmatrix} \\otimes {\\color{red}{\\begin{bmatrix} x_{010} \\\\ x_{011} \\end{bmatrix}}} \n", "+ \\begin{bmatrix} 0 \\\\ 0 \\\\ 0 \\\\ 1 \\end{bmatrix} \\otimes \\begin{bmatrix} x_{110} \\\\ x_{111} \\end{bmatrix} \n", - "= \\begin{bmatrix} x_{000} \\\\ x_{001} \\\\ \\color{red}{x_{100} \\\\ x_{101} \\\\ x_{010} \\\\ x_{011}} \\\\ x_{110} \\\\ x_{111} \\end{bmatrix}\n", + "= \\begin{bmatrix} x_{000} \\\\ x_{001} \\\\ {\\color{red}{x_{100}}} \\\\ {\\color{red}{x_{101}}} \\\\ {\\color{red}{x_{010}}} \\\\ {\\color{red}{x_{011}}} \\\\ x_{110} \\\\ x_{111} \\end{bmatrix}\n", "$$\n", "\n", "2. $\\text{CNOT}$ 2nd and 3rd qubits.\n", "$$\n", "\\left(\\begin{bmatrix} 1 & 0 \\\\ 0 & 1 \\end{bmatrix} \\otimes \n", "\\begin{bmatrix} 1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0 \\end{bmatrix} \\right) \n", - "\\begin{bmatrix} x_{000} \\\\ x_{001} \\\\ x_{100} \\\\ x_{101} \\\\ x_{010} \\\\ x_{011} \\\\ x_{110} \\\\ x_{111} \\end{bmatrix} = \\\\\n", - "= \\left(\\begin{bmatrix} 1 & 0 \\\\ 0 & 1 \\end{bmatrix} \\otimes \n", + "\\begin{bmatrix} x_{000} \\\\ x_{001} \\\\ x_{100} \\\\ x_{101} \\\\ x_{010} \\\\ x_{011} \\\\ x_{110} \\\\ x_{111} \\end{bmatrix} =$$\n", + "$$= \\left(\\begin{bmatrix} 1 & 0 \\\\ 0 & 1 \\end{bmatrix} \\otimes \n", "\\begin{bmatrix} 1 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 1 & 0 \\end{bmatrix}\\right)\n", "\\left( \\begin{bmatrix} x_{000} \\\\ x_{010} \\end{bmatrix} \\otimes \\begin{bmatrix} 1 \\\\ 0 \\\\ 0 \\\\ 0 \\end{bmatrix} \n", "+ \\begin{bmatrix} x_{001} \\\\ x_{011} \\end{bmatrix} \\otimes \\begin{bmatrix} 0 \\\\ 1 \\\\ 0 \\\\ 0 \\end{bmatrix} \n", "+ \\begin{bmatrix} x_{100} \\\\ x_{110} \\end{bmatrix} \\otimes \\begin{bmatrix} 0 \\\\ 0 \\\\ 1 \\\\ 0 \\end{bmatrix} \n", "+ \\begin{bmatrix} x_{101} \\\\ x_{111} \\end{bmatrix} \\otimes \\begin{bmatrix} 0 \\\\ 0 \\\\ 0 \\\\ 1 \\end{bmatrix} \\right)\n", - "= \\\\ \n", - "= \\begin{bmatrix} x_{000} \\\\ x_{010} \\end{bmatrix} \\otimes \\begin{bmatrix} 1 \\\\ 0 \\\\ 0 \\\\ 0 \\end{bmatrix} \n", + "=$$ \n", + "$$= \\begin{bmatrix} x_{000} \\\\ x_{010} \\end{bmatrix} \\otimes \\begin{bmatrix} 1 \\\\ 0 \\\\ 0 \\\\ 0 \\end{bmatrix} \n", "+ \\begin{bmatrix} x_{001} \\\\ x_{011} \\end{bmatrix} \\otimes \\begin{bmatrix} 0 \\\\ 1 \\\\ 0 \\\\ 0 \\end{bmatrix} \n", - "+ \\color{blue}{\\begin{bmatrix} x_{101} \\\\ x_{111} \\end{bmatrix}} \\otimes \\begin{bmatrix} 0 \\\\ 0 \\\\ 1 \\\\ 0 \\end{bmatrix}\n", - "+ \\color{blue}{\\begin{bmatrix} x_{100} \\\\ x_{110} \\end{bmatrix}} \\otimes \\begin{bmatrix} 0 \\\\ 0 \\\\ 0 \\\\ 1 \\end{bmatrix} \n", - "= \\begin{bmatrix} x_{000} \\\\ x_{001} \\\\ \\color{blue}{x_{101} \\\\ x_{100}} \\\\ x_{010} \\\\ x_{011} \\\\ \\color{blue}{x_{111} \\\\ x_{110}} \\end{bmatrix}$$\n", + "+ {\\color{blue}{\\begin{bmatrix} x_{101} \\\\ x_{111} \\end{bmatrix}}} \\otimes \\begin{bmatrix} 0 \\\\ 0 \\\\ 1 \\\\ 0 \\end{bmatrix}\n", + "+ {\\color{blue}{\\begin{bmatrix} x_{100} \\\\ x_{110} \\end{bmatrix}}} \\otimes \\begin{bmatrix} 0 \\\\ 0 \\\\ 0 \\\\ 1 \\end{bmatrix} \n", + "= \\begin{bmatrix} x_{000} \\\\ x_{001} \\\\ {\\color{blue}{x_{101}}} \\\\ {\\color{blue}{x_{100}}} \\\\ x_{010} \\\\ x_{011} \\\\ {\\color{blue}{x_{111}}} \\\\ {\\color{blue}{x_{110}}} \\end{bmatrix}$$\n", "\n", "3. $\\text{SWAP}$ 1st and 2nd qubits.\n", "$$\n", "\\left(\\begin{bmatrix} 1 & 0 & 0 & 0 \\\\ 0 & 0 & 1 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\end{bmatrix} \\otimes \n", "\\begin{bmatrix} 1 & 0 \\\\ 0 & 1 \\end{bmatrix} \\right)\n", - "\\begin{bmatrix} x_{000} \\\\ x_{001} \\\\ x_{101} \\\\ x_{100} \\\\ x_{010} \\\\ x_{011} \\\\ x_{111} \\\\ x_{110} \\end{bmatrix} = \\\\\n", - "= \\left( \\begin{bmatrix} 1 & 0 & 0 & 0 \\\\ 0 & 0 & 1 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\end{bmatrix} \\otimes \n", + "\\begin{bmatrix} x_{000} \\\\ x_{001} \\\\ x_{101} \\\\ x_{100} \\\\ x_{010} \\\\ x_{011} \\\\ x_{111} \\\\ x_{110} \\end{bmatrix} =$$\n", + "$$= \\left( \\begin{bmatrix} 1 & 0 & 0 & 0 \\\\ 0 & 0 & 1 & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 0 & 1 \\end{bmatrix} \\otimes \n", "\\begin{bmatrix} 1 & 0 \\\\ 0 & 1 \\end{bmatrix} \\right) \n", "\\left( \\begin{bmatrix} 1 \\\\ 0 \\\\ 0 \\\\ 0 \\end{bmatrix} \\otimes \\begin{bmatrix} x_{000} \\\\ x_{001} \\end{bmatrix}\n", "+ \\begin{bmatrix} 0 \\\\ 1 \\\\ 0 \\\\ 0 \\end{bmatrix} \\otimes \\begin{bmatrix} x_{101} \\\\ x_{100} \\end{bmatrix} \n", "+ \\begin{bmatrix} 0 \\\\ 0 \\\\ 1 \\\\ 0 \\end{bmatrix} \\otimes \\begin{bmatrix} x_{010} \\\\ x_{011} \\end{bmatrix} \n", - "+ \\begin{bmatrix} 0 \\\\ 0 \\\\ 0 \\\\ 1 \\end{bmatrix} \\otimes \\begin{bmatrix} x_{111} \\\\ x_{110} \\end{bmatrix} \\right) = \\\\\n", - "= \\begin{bmatrix} 1 \\\\ 0 \\\\ 0 \\\\ 0 \\end{bmatrix} \\otimes \\begin{bmatrix} x_{000} \\\\ x_{001} \\end{bmatrix}\n", - "+ \\begin{bmatrix} 0 \\\\ 1 \\\\ 0 \\\\ 0 \\end{bmatrix} \\otimes \\color{green}{\\begin{bmatrix} x_{010} \\\\ x_{011} \\end{bmatrix}} \n", - "+ \\begin{bmatrix} 0 \\\\ 0 \\\\ 1 \\\\ 0 \\end{bmatrix} \\otimes \\color{green}{\\begin{bmatrix} x_{101} \\\\ x_{100} \\end{bmatrix}} \n", + "+ \\begin{bmatrix} 0 \\\\ 0 \\\\ 0 \\\\ 1 \\end{bmatrix} \\otimes \\begin{bmatrix} x_{111} \\\\ x_{110} \\end{bmatrix} \\right) =$$\n", + "$$= \\begin{bmatrix} 1 \\\\ 0 \\\\ 0 \\\\ 0 \\end{bmatrix} \\otimes \\begin{bmatrix} x_{000} \\\\ x_{001} \\end{bmatrix}\n", + "+ \\begin{bmatrix} 0 \\\\ 1 \\\\ 0 \\\\ 0 \\end{bmatrix} \\otimes {\\color{green}{\\begin{bmatrix} x_{010} \\\\ x_{011} \\end{bmatrix}}}\n", + "+ \\begin{bmatrix} 0 \\\\ 0 \\\\ 1 \\\\ 0 \\end{bmatrix} \\otimes {\\color{green}{\\begin{bmatrix} x_{101} \\\\ x_{100} \\end{bmatrix}}} \n", "+ \\begin{bmatrix} 0 \\\\ 0 \\\\ 0 \\\\ 1 \\end{bmatrix} \\otimes \\begin{bmatrix} x_{110} \\\\ x_{111} \\end{bmatrix}\n", - "= \\begin{bmatrix} x_{000} \\\\ x_{001} \\\\ \\color{green}{x_{010} \\\\ x_{011} \\\\ x_{101} \\\\ x_{100}} \\\\ x_{110} \\\\ x_{111} \\end{bmatrix}\n", + "= \\begin{bmatrix} x_{000} \\\\ x_{001} \\\\ {\\color{green}{x_{010}}} \\\\ {\\color{green}{x_{011}}} \\\\ {\\color{green}{x_{101}}} \\\\ {\\color{green}{x_{100}}}\\\\ x_{110} \\\\ x_{111} \\end{bmatrix}\n", "$$\n", "" ] @@ -843,7 +843,7 @@ "file_extension": ".qs", "mimetype": "text/x-qsharp", "name": "qsharp", - "version": "0.14" + "version": "0.24" } }, "nbformat": 4, diff --git a/tutorials/MultiQubitSystems/MultiQubitSystems.ipynb b/tutorials/MultiQubitSystems/MultiQubitSystems.ipynb index 84aa0ed909e..72e5f67a98b 100644 --- a/tutorials/MultiQubitSystems/MultiQubitSystems.ipynb +++ b/tutorials/MultiQubitSystems/MultiQubitSystems.ipynb @@ -170,10 +170,10 @@ "\n", "To simplify this, tensor products of basis states have their own notation:\n", "\n", - "$$|0\\rangle \\otimes |0\\rangle = |00\\rangle \\\\\n", - "|0\\rangle \\otimes |1\\rangle = |01\\rangle \\\\\n", - "|1\\rangle \\otimes |0\\rangle = |10\\rangle \\\\\n", - "|1\\rangle \\otimes |1\\rangle = |11\\rangle$$\n", + "$$|0\\rangle \\otimes |0\\rangle = |00\\rangle$$\n", + "$$|0\\rangle \\otimes |1\\rangle = |01\\rangle$$\n", + "$$|1\\rangle \\otimes |0\\rangle = |10\\rangle$$\n", + "$$|1\\rangle \\otimes |1\\rangle = |11\\rangle$$\n", "\n", "$$|0\\rangle \\otimes |0\\rangle \\otimes |0\\rangle = |000\\rangle$$\n", "\n", diff --git a/tutorials/SingleQubitGates/SingleQubitGates.ipynb b/tutorials/SingleQubitGates/SingleQubitGates.ipynb index 29e1803115f..5a4e8d883de 100644 --- a/tutorials/SingleQubitGates/SingleQubitGates.ipynb +++ b/tutorials/SingleQubitGates/SingleQubitGates.ipynb @@ -47,8 +47,9 @@ "\\begin{bmatrix} 0 & 1 \\\\ 1 & 0 \\end{bmatrix}\n", "\\begin{bmatrix} 1 \\\\ 0 \\end{bmatrix} =\n", "\\begin{bmatrix} 0 \\cdot 1 + 1 \\cdot 0 \\\\ 1 \\cdot 1 + 0 \\cdot 0 \\end{bmatrix} =\n", - "\\begin{bmatrix} 0 \\\\ 1 \\end{bmatrix} \\\\\n", - "X|1\\rangle =\n", + "\\begin{bmatrix} 0 \\\\ 1 \\end{bmatrix}$$\n", + "\n", + "$$X|1\\rangle =\n", "\\begin{bmatrix} 0 & 1 \\\\ 1 & 0 \\end{bmatrix}\n", "\\begin{bmatrix} 0 \\\\ 1 \\end{bmatrix} =\n", "\\begin{bmatrix} 0 \\cdot 0 + 1 \\cdot 1 \\\\ 1 \\cdot 0 + 0 \\cdot 1 \\end{bmatrix} =\n", @@ -56,8 +57,9 @@ "\n", "The general case:\n", "\n", - "$$|\\psi\\rangle = \\alpha|0\\rangle + \\beta|1\\rangle \\\\\n", - "X|\\psi\\rangle =\n", + "$$|\\psi\\rangle = \\alpha|0\\rangle + \\beta|1\\rangle$$\n", + "\n", + "$$X|\\psi\\rangle =\n", "\\begin{bmatrix} 0 & 1 \\\\ 1 & 0 \\end{bmatrix}\n", "\\begin{bmatrix} \\alpha \\\\ \\beta \\end{bmatrix} =\n", "\\begin{bmatrix} 0 \\cdot \\alpha + 1 \\cdot \\beta \\\\ 1 \\cdot \\alpha + 0 \\cdot \\beta \\end{bmatrix} =\n", @@ -92,8 +94,9 @@ "\\begin{bmatrix} \\epsilon & \\zeta \\\\ \\eta & \\mu \\end{bmatrix}\n", "\\begin{bmatrix} 1 \\\\ 0 \\end{bmatrix} =\n", "\\begin{bmatrix} \\epsilon \\cdot 1 + \\zeta \\cdot 0 \\\\ \\eta \\cdot 1 + \\mu \\cdot 0 \\end{bmatrix} =\n", - "\\begin{bmatrix} \\epsilon \\\\ \\eta \\end{bmatrix} = \\epsilon|0\\rangle + \\eta|1\\rangle \\\\\n", - "A|1\\rangle =\n", + "\\begin{bmatrix} \\epsilon \\\\ \\eta \\end{bmatrix} = \\epsilon|0\\rangle + \\eta|1\\rangle$$\n", + "\n", + "$$A|1\\rangle =\n", "\\begin{bmatrix} \\epsilon & \\zeta \\\\ \\eta & \\mu \\end{bmatrix}\n", "\\begin{bmatrix} 0 \\\\ 1 \\end{bmatrix} =\n", "\\begin{bmatrix} \\epsilon \\cdot 0 + \\zeta \\cdot 1 \\\\ \\eta \\cdot 0 + \\mu \\cdot 1 \\end{bmatrix} =\n", @@ -101,9 +104,11 @@ "\n", "Notice that applying the gate to the $|0\\rangle$ state transforms it into the state written as the first column of the gate's matrix. Likewise, applying the gate to the $|1\\rangle$ state transforms it into the state written as the second column. This holds true for any quantum gate, including, of course, the $X$ gate:\n", "\n", - "$$X = \\begin{bmatrix} 0 & 1 \\\\ 1 & 0 \\end{bmatrix} \\\\\n", - "X|0\\rangle = \\begin{bmatrix} 0 \\\\ 1 \\end{bmatrix} = |1\\rangle \\\\\n", - "X|1\\rangle = \\begin{bmatrix} 1 \\\\ 0 \\end{bmatrix} = |0\\rangle$$\n", + "$$X = \\begin{bmatrix} 0 & 1 \\\\ 1 & 0 \\end{bmatrix}$$\n", + "\n", + "$$X|0\\rangle = \\begin{bmatrix} 0 \\\\ 1 \\end{bmatrix} = |1\\rangle$$\n", + "\n", + "$$X|1\\rangle = \\begin{bmatrix} 1 \\\\ 0 \\end{bmatrix} = |0\\rangle$$\n", "\n", "Once you understand how a gate affects the computational basis states, you can easily find how it affects any state.\n", "Recall that any qubit state vector can be written as a linear combination of the basis states:\n", @@ -169,8 +174,9 @@ "\n", "This brings us to representing matrices. Recall that the outer product of two vectors of the same size produces a square matrix. We can use a linear combination of several outer products of simple vectors (such as basis vectors) to express any square matrix. For example, the $X$ gate can be expressed as follows:\n", "\n", - "$$X = |0\\rangle\\langle1| + |1\\rangle\\langle0| \\\\\n", - "|0\\rangle\\langle1| + |1\\rangle\\langle0| =\n", + "$$X = |0\\rangle\\langle1| + |1\\rangle\\langle0|$$\n", + "\n", + "$$|0\\rangle\\langle1| + |1\\rangle\\langle0| =\n", "\\begin{bmatrix} 1 \\\\ 0 \\end{bmatrix}\\begin{bmatrix} 0 & 1 \\end{bmatrix} +\n", "\\begin{bmatrix} 0 \\\\ 1 \\end{bmatrix}\\begin{bmatrix} 1 & 0 \\end{bmatrix} =\n", "\\begin{bmatrix} 0 & 1 \\\\ 0 & 0 \\end{bmatrix} + \\begin{bmatrix} 0 & 0 \\\\ 1 & 0 \\end{bmatrix} =\n", @@ -207,8 +213,8 @@ ">\n", "> You can use the properties of [eigenvalues and eigenvectors](../LinearAlgebra/LinearAlgebra.ipynb#Part-III:-Eigenvalues-and-Eigenvectors) to find the ket-bra decomposition of any gate. Given a gate $A$, and its orthogonal eigenvectors $|\\phi\\rangle$ and $|\\psi\\rangle$, if:\n", ">\n", - "> $$A|\\phi\\rangle = x_\\phi|\\phi\\rangle \\\\\n", - "A|\\psi\\rangle = x_\\psi|\\psi\\rangle$$\n", + "> $$A|\\phi\\rangle = x_\\phi|\\phi\\rangle$$\n", + "> $$A|\\psi\\rangle = x_\\psi|\\psi\\rangle$$\n", ">\n", "> Then:\n", ">\n", @@ -216,15 +222,15 @@ ">\n", "> Let's use our $X$ gate as a simple example. The $X$ gate has two eigenvectors: $|+\\rangle = \\frac{1}{\\sqrt{2}}\\big(|0\\rangle + |1\\rangle\\big)$ and $|-\\rangle = \\frac{1}{\\sqrt{2}}\\big(|0\\rangle - |1\\rangle\\big)$. Their eigenvalues are $1$ and $-1$ respectively:\n", ">\n", - "> $$X|+\\rangle = |+\\rangle \\\\\n", - "X|-\\rangle = -|-\\rangle$$\n", + "> $$X|+\\rangle = |+\\rangle$$\n", + "> $$X|-\\rangle = -|-\\rangle$$\n", ">\n", "> Here's what the decomposition looks like:\n", ">\n", - "> $$X = |+\\rangle\\langle+| - |-\\rangle\\langle-| = \\\\\n", - "= \\frac{1}{2}\\big[\\big(|0\\rangle + |1\\rangle\\big)\\big(\\langle0| + \\langle1|\\big) - \\big(|0\\rangle - |1\\rangle\\big)\\big(\\langle0| - \\langle1|\\big)\\big] = \\\\\n", - "= \\frac{1}{2}\\big(\\color{red}{|0\\rangle\\langle0|} + |0\\rangle\\langle1| + |1\\rangle\\langle0| + \\color{red}{|1\\rangle\\langle1|} - \\color{red}{|0\\rangle\\langle0|} + |0\\rangle\\langle1| + |1\\rangle\\langle0| - \\color{red}{|1\\rangle\\langle1|}\\big) = \\\\\n", - "= \\frac{1}{2}\\big(2|0\\rangle\\langle1| + 2|1\\rangle\\langle0|\\big) = |0\\rangle\\langle1| + |1\\rangle\\langle0|$$" + "> $$X = |+\\rangle\\langle+| - |-\\rangle\\langle-| =$$\n", + "> $$= \\frac{1}{2}\\big[\\big(|0\\rangle + |1\\rangle\\big)\\big(\\langle0| + \\langle1|\\big) - \\big(|0\\rangle - |1\\rangle\\big)\\big(\\langle0| - \\langle1|\\big)\\big] =$$\n", + "> $$= \\frac{1}{2}\\big({\\color{red}{|0\\rangle\\langle0|}} + |0\\rangle\\langle1| + |1\\rangle\\langle0| + {\\color{red}{|1\\rangle\\langle1|}} - {\\color{red}{|0\\rangle\\langle0|}} + |0\\rangle\\langle1| + |1\\rangle\\langle0| - {\\color{red}{|1\\rangle\\langle1|}}\\big) =$$\n", + "> $$= \\frac{1}{2}\\big(2|0\\rangle\\langle1| + 2|1\\rangle\\langle0|\\big) = |0\\rangle\\langle1| + |1\\rangle\\langle0|$$" ] }, {