{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Algebra: \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "https://docs.scipy.org/doc/numpy-1.13.0/reference/routines.linalg.html" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "sns.set()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 1. Dot Product\n", "\n", "$ u = M.v, C = A.B $" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0.61880652, 0.16277711, 0.77725885, 0.39357105, 0.72518988])" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v = np.random.rand(5)\n", "v" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0.44722927, 0.75871176, 0.74971577, 0.83610699, 0.18085266],\n", " [ 0.00121306, 0.84271476, 0.65241612, 0.27094445, 0.63364293],\n", " [ 0.07906587, 0.85301928, 0.62214839, 0.59205861, 0.70427723],\n", " [ 0.88162665, 0.76250728, 0.15724579, 0.63985535, 0.04617605],\n", " [ 0.57250482, 0.6551876 , 0.562632 , 0.29052545, 0.29159418]])" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "M = np.random.rand(5,5)\n", "M" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 1.44319253, 1.21116885, 1.41510068, 1.07721068, 1.22403352])" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "u = np.dot(M,v)\n", "u" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[2.04187416, 1.27819139, 1.95077838, 1.61949482, 1.17248351],\n", " [1.7066333 , 0.83570007, 1.52109089, 1.39001526, 0.71187379],\n", " [1.44468595, 0.79383607, 1.35776556, 1.11653487, 0.79871042],\n", " [1.51494078, 1.10723018, 1.52666191, 1.23628874, 1.00665592],\n", " [0.51859666, 0.65862101, 0.61337647, 0.40747731, 0.66203929]])" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "M = np.random.rand(5,5)\n", "N = np.random.rand(5,5)\n", "np.dot(M,N)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2. Kronecker Product" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![img](https://sammo3182.github.io/slides_gh/slides/mathCamp/image/Kronecker.png)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([[1., 0., 0.],\n", " [0., 1., 0.],\n", " [0., 0., 1.]]), array([[1., 1., 1.],\n", " [1., 1., 1.],\n", " [1., 1., 1.]]))" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "I = np.eye(3)\n", "O = np.ones((3,3))\n", "I,O" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1., 1., 1., 0., 0., 0., 0., 0., 0.],\n", " [1., 1., 1., 0., 0., 0., 0., 0., 0.],\n", " [1., 1., 1., 0., 0., 0., 0., 0., 0.],\n", " [0., 0., 0., 1., 1., 1., 0., 0., 0.],\n", " [0., 0., 0., 1., 1., 1., 0., 0., 0.],\n", " [0., 0., 0., 1., 1., 1., 0., 0., 0.],\n", " [0., 0., 0., 0., 0., 0., 1., 1., 1.],\n", " [0., 0., 0., 0., 0., 0., 1., 1., 1.],\n", " [0., 0., 0., 0., 0., 0., 1., 1., 1.]])" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "KIO = np.kron(I,O)\n", "KIO" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1., 0., 0., 1., 0., 0., 1., 0., 0.],\n", " [0., 1., 0., 0., 1., 0., 0., 1., 0.],\n", " [0., 0., 1., 0., 0., 1., 0., 0., 1.],\n", " [1., 0., 0., 1., 0., 0., 1., 0., 0.],\n", " [0., 1., 0., 0., 1., 0., 0., 1., 0.],\n", " [0., 0., 1., 0., 0., 1., 0., 0., 1.],\n", " [1., 0., 0., 1., 0., 0., 1., 0., 0.],\n", " [0., 1., 0., 0., 1., 0., 0., 1., 0.],\n", " [0., 0., 1., 0., 0., 1., 0., 0., 1.]])" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "KOI = np.kron(O,I)\n", "KOI" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 3. Transpose of a matrix" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize = [15,6])\n", "plt.subplot(1,2,1)\n", "sns.heatmap(M, annot=True)\n", "plt.subplot(1,2,2)\n", "sns.heatmap(M.T, annot=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 4. Solve Matrix Equation : $\\large{Ax = b}$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$2x_1 + 3x_2 +5x_3 + 4x_4 +2x_5 = 19$\n", "\n", "$5x_1 + 4x_2 +2x_3 + 6x_4 +1x_5 = 23$\n", "\n", "$9x_1 + 2x_2 +4x_3 + 5x_4 +2x_5 = 45$\n", "\n", "$1x_1 + 9x_2 +6x_3 + 9x_4 +3x_5 = 56$\n", "\n", "$9x_1 + 7x_2 +8x_3 + 4x_4 +x_5 = 12$" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import numpy.linalg as LA" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 4.57281553, 9.84789644, -12.78964401, -8.95145631,\n", " 40.03236246])" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A = np.array([[2,3,5,4,2],[5,4,2,6,1],[9,2,4,5,2],[1,9,6,9,3],[9,7,8,4,1]])\n", "b = np.array([19,23,45,56,12])\n", "x = LA.solve(A,b)\n", "x" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([19., 23., 45., 56., 12.])" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.dot(A,x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 5. Inverse" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-927.0000000000007" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "LA.det(A)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[-0.21359223, -0.09708738, 0.17152104, 0.04854369, 0.03559871],\n", " [-0.57605178, -0.35275081, 0.18985976, 0.34304207, 0.09600863],\n", " [ 0.60517799, 0.27508091, -0.3193096 , -0.30420712, 0.06580367],\n", " [ 0.52427184, 0.60194175, -0.33009709, -0.30097087, -0.08737864],\n", " [-0.98381877, -1.26537217, 1.0021575 , 0.79935275, -0.16936354]])" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "AI = LA.inv(A)\n", "AI" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 1.00000000e+00, 6.24500451e-17, 1.66533454e-16,\n", " 1.66533454e-16, 6.93889390e-17],\n", " [-9.71445147e-17, 1.00000000e+00, 0.00000000e+00,\n", " 3.33066907e-16, 1.80411242e-16],\n", " [ 4.57966998e-16, -2.91433544e-16, 1.00000000e+00,\n", " -2.22044605e-16, -1.52655666e-16],\n", " [-6.52256027e-16, -1.38777878e-17, -5.55111512e-16,\n", " 1.00000000e+00, -2.08166817e-16],\n", " [ 5.82867088e-16, -5.82867088e-16, 2.22044605e-16,\n", " 9.99200722e-16, 1.00000000e+00]])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.dot(AI,A)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 6. Singular Value Decomposition: Find Principle Axis" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![img](https://www.polymathlove.com/articles_imgs/207/algebr19.gif)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$\\large{A =PDQ}$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$X^{T}AX = 4x_1^2 + 6x_2^2 + 8x_3^2+ 8x_1x_2 + 6x_2x_3 - 16x_3x_1$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$ X^{T}AX = \\begin{pmatrix} x_1 & x_2 & x_3 \\end{pmatrix}\\begin{pmatrix} 4 & 4 & -8 \\\\ \n", " 4 & 3 & 3 \\\\\n", " -8 & 3 & 4 \\end{pmatrix}\\begin{pmatrix} x_1 \\\\ \n", " x_2 \\\\\n", " x_3 \\end{pmatrix}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$X^{T}AX = 12.06 x_1^2 + 6.56 x_2^2 + 5.5 x_3^2 $" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "A = np.array([[4,4,-8],[4,3,3],[-8,3,4]])" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [], "source": [ "P,D,Q = LA.svd(A)" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([12.06630095, 6.56787841, 5.50157746])" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "D" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[-0.72405638, 0.63996989, 0.25725649],\n", " [-0.09331565, -0.46043612, 0.88277447],\n", " [ 0.68339926, 0.61517243, 0.39310092]])" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "P" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[-0.72405638, -0.09331565, 0.68339926],\n", " [-0.63996989, 0.46043612, -0.61517243],\n", " [ 0.25725649, 0.88277447, 0.39310092]])" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Q" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[-0.72405638, -0.09331565, 0.68339926],\n", " [ 0.63996989, -0.46043612, 0.61517243],\n", " [ 0.25725649, 0.88277447, 0.39310092]])" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "LA.inv(P)" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 4., 4., -8.],\n", " [ 4., 3., 3.],\n", " [-8., 3., 4.]])" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "AN = np.matmul(np.matmul(P, np.diag(D)), Q)\n", "AN" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 4, 4, -8],\n", " [ 4, 3, 3],\n", " [-8, 3, 4]])" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1.0000000000000004, -1.0000000000000002)" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "LA.det(P),LA.det(Q)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.3" }, "widgets": { "state": {}, "version": "1.1.2" } }, "nbformat": 4, "nbformat_minor": 2 }