{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Relative cost of matrix factorizations" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import numpy as np\n", "import numpy.linalg as npla\n", "import scipy.linalg as spla\n", "\n", "import matplotlib.pyplot as pt\n", "\n", "from time import time" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 10, 14, 20, 30, 43, 63, 92, 133, 193, 279, 404,\n", " 585, 848, 1228, 1778], dtype=int32)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n_values = (10**np.linspace(1, 3.25, 15)).astype(np.int32)\n", "n_values" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-----> lu\n", "10\n", "14\n", "20\n", "30\n", "43\n", "63\n", "92\n", "133\n", "193\n", "279\n", "404\n", "585\n", "848\n", "1228\n", "1778\n", "-----> matmat\n", "10\n", "14\n", "20\n", "30\n", "43\n", "63\n", "92\n", "133\n", "193\n", "279\n", "404\n", "585\n", "848\n", "1228\n", "1778\n", "-----> svd\n", "10\n", "14\n", "20\n", "30\n", "43\n", "63\n", "92\n", "133\n", "193\n", "279\n", "404\n", "585\n", "848\n", "1228\n", "1778\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n4CulVJT4/067i56nKbwoAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def matmat(A):\n", " A @ A\n", "\n", "for name, f in [\n", " (\"lu\", spla.lu_factor),\n", " (\"matmat\", matmat),\n", " (\"svd\", npla.svd)\n", " ]:\n", "\n", " times = []\n", " print(\"----->\", name)\n", " \n", " for n in n_values:\n", " print(n)\n", "\n", " A = np.random.randn(n, n)\n", " \n", " start_time = time()\n", " f(A)\n", " times.append(time() - start_time)\n", " \n", " pt.plot(n_values, times, label=name)\n", "\n", "pt.grid()\n", "pt.legend(loc=\"best\")\n", "pt.xlabel(\"Matrix size $n$\")\n", "pt.ylabel(\"Wall time [s]\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* The faster algorithms make the slower ones look bad. But... it's all relative.\n", "* Is there a better way of plotting this?\n", "* Can we see the asymptotic cost ($O(n^3)$) of these algorithms from the plot?" ] } ], "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.5.2+" }, "widgets": { "state": {}, "version": "1.1.2" } }, "nbformat": 4, "nbformat_minor": 0 }