{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "
\n", " \n", " \"QuantEcon\"\n", " \n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Linear Algebra\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Contents\n", "\n", "- [Linear Algebra](#Linear-Algebra) \n", " - [Overview](#Overview) \n", " - [Vectors](#Vectors) \n", " - [Matrices](#Matrices) \n", " - [Solving Systems of Equations](#Solving-Systems-of-Equations) \n", " - [Eigenvalues and Eigenvectors](#Eigenvalues-and-Eigenvectors) \n", " - [Further Topics](#Further-Topics) \n", " - [Exercises](#Exercises) \n", " - [Solutions](#Solutions) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Overview\n", "\n", "Linear algebra is one of the most useful branches of applied mathematics for economists to invest in\n", "\n", "For example, many applied problems in economics and finance require the solution of a linear system of equations, such as\n", "\n", "$$\n", "\\begin{array}{c}\n", " y_1 = a x_1 + b x_2 \\\\\n", " y_2 = c x_1 + d x_2\n", "\\end{array}\n", "$$\n", "\n", "or, more generally,\n", "\n", "\n", "\n", "$$\n", "\\begin{array}{c}\n", " y_1 = a_{11} x_1 + a_{12} x_2 + \\cdots + a_{1k} x_k \\\\\n", " \\vdots \\\\\n", " y_n = a_{n1} x_1 + a_{n2} x_2 + \\cdots + a_{nk} x_k\n", "\\end{array} \\tag{1}\n", "$$\n", "\n", "The objective here is to solve for the “unknowns” $ x_1, \\ldots, x_k $ given $ a_{11}, \\ldots, a_{nk} $ and $ y_1, \\ldots, y_n $\n", "\n", "When considering such problems, it is essential that we first consider at least some of the following questions\n", "\n", "- Does a solution actually exist? \n", "- Are there in fact many solutions, and if so how should we interpret them? \n", "- If no solution exists, is there a best “approximate” solution? \n", "- If a solution exists, how should we compute it? \n", "\n", "\n", "These are the kinds of topics addressed by linear algebra\n", "\n", "In this lecture we will cover the basics of linear and matrix algebra, treating both theory and computation\n", "\n", "We admit some overlap with [this lecture](https://lectures.quantecon.org/getting_started_julia/fundamental_types.html), where operations on Julia arrays were first explained\n", "\n", "Note that this lecture is more theoretical than most, and contains background\n", "material that will be used in applications as we go along" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Vectors\n", "\n", "\n", "\n", "A *vector* is an element of a vector space.\n", "\n", "Vectors can be added together and scaled (multiplied) by scalars.\n", "\n", "Vectors can be written as $ x = [x_1, \\ldots, x_n] $\n", "\n", "The set of all $ n $-vectors is denoted by $ \\mathbb R^n $\n", "\n", "For example, $ \\mathbb R ^2 $ is the plane, and a vector in $ \\mathbb R^2 $ is just a point in the plane\n", "\n", "Traditionally, vectors are represented visually as arrows from the origin to\n", "the point\n", "\n", "The following figure represents three vectors in this manner" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Setup" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "hide-output": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[32m\u001b[1mActivated\u001b[0m /home/qebuild/repos/lecture-source-jl/_build/website/jupyter/Project.toml\u001b[39m\n", "\u001b[36m\u001b[1mInfo\u001b[0m quantecon-notebooks-julia 0.1.0 activated, 0.2.0 requested\u001b[39m\n" ] } ], "source": [ "using InstantiateFromURL\n", "github_project(\"QuantEcon/quantecon-notebooks-julia\", version = \"0.2.0\")" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "hide-output": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "┌ Info: Recompiling stale cache file /home/qebuild/.julia/compiled/v1.2/Plots/ld3vC.ji for Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80]\n", "└ @ Base loading.jl:1240\n" ] } ], "source": [ "using LinearAlgebra, Statistics, Plots\n", "gr(fmt=:png);" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "hide-output": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAIAAAD9V4nPAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nO3deVxU5eIG8GeYGZhR0GHTAMm8dNXI3EMhxSW93auhppRmmtrtpmX3tqtppP20VEzUtLx6K0vTNBMtlVLMXCHLrXBDAzVUFAFhZHHW8/tjzEyQYRnmPTPzfD/9gTPDOU/vLA/nvGfOUUiSBCIiIk/lJToAERGRSCxCIiLyaCxCIiLyaCxCIiLyaCxCIiLyaCxCIiLyaCxCIiLyaCxCIpFiYmIUvxs3bpzoOESeSCU6AJHnkiQpMzMzNzfX19cXgErF9yORANwiJBImNzfXbDb3798/JCRkxIgRer1edCIiT6Rw2inWjEajQqFwzrpqzWw2K5VKmee0Wq2SJCmVStFBqiJJksVikf8mjslkUqvVotZ+8ODBSZMmzZkzJzw8/NVXXzUajZ999lnFh6Wnp8+aNavSwVyyZElQUFD9J7WPL0sHcokPIovFolAovLxkvTVltVrVarXdkM4rwitXrmi1Wuesq9YKCwt9fX29vb1FB6lKSUmJJEl+fn6ig1TFZDLp9frAwEDRQey4dOlSkyZN5PCJc/HixQ4dOuTm5la869FHH23ZsmXXrl0r3tWnTx+ZvK3KyspMJlPjxo1FB6mKxWIpLCwMDg4WHcSO/Px8nU4n88IuLi5Wq9UNGjQQHaQq165d02q1Pj4+VT/MeQOtUqk0Go3TVlc7Pj4+Go1G5kVoNpslSZL5YCqVSoPBIPOQ+P0ZF1WEBw4cMBgMMTExAPz8/DQaTaUj5uPjEx0dHR8f7/SANWC1WpVKpcyfcYvFYnvGRQexwxZS5kVoMBjUarX8B7M626yy3qolcm+lpaWPPPLI8ePHjUbj9OnTBw0aJDoRkSdiERIJ071794SEhLi4uLCwsCtXrsyePVt0IiJPJOtNbyL3plAonn/++eeff150ECKPxi1CIiLyaCxCIiLyaCxCIiLyaCxCIiLyaCxCIiLyaCxCIiLyaCxCIiLyaCxCIiLyaCxCIiLyaCxCInIfips4Z41nzpy5scbWrVs7Z6XkWCxCInI3U6ZMmTJliu1nSZJWrFjRvXt3nU6n0+n69u2blJRkNBprt+T8/PyIiIibC69x48Y3r45cEc81SkTuZsaMGTd+/s9//rNo0SK1Wt25c+eAgIC9e/e+8sormzZtSk1NrellhA0Gw+DBg7Ozs1u1anXjRn9/f9vq3n77bUflJyfjFiERua1ffvll0aJFd9xxx8GDB9PS0r766quffvrpwQcf/P777z/44IMaLUqSpLFjxx48eLCeopJALEIiclsbNmwA8MILL7Rp08Z2S6NGjd577z0AW7ZsqdGiEhMTly9fvmrVKoeHJOG4a5SI3FZJSUlYWFj37t1vvjEsLAzA5cuXq7+c9evXT5o0adasWQMGDHBwRJIBbhESkdtKTEw8d+7cAw88cPONn332GYBu3bpVcyEHDx4cMWLEyJEjJ0yY4PiIJAMsQiLyFJIkLV68+N///ndoaGg1W+3ChQsDBgxo167d0qVLnfaVDHIyFiEReYQ9e/bExsZOmzatbdu2O3bsaNq0qd1fKS8vHzhwoJeX1/r16zUajRNCkhCcIyQiN3f58uVXXnllxYoVd9xxx9tvvz1hwgSVqloffVlZWfv37w8MDOzRo8fNt2dnZ9u+SnjkyJFqLorkjE8hEbmzI0eO9O7du7CwcOrUqa+88kp5eXlNq6ugoKCgoODmW0wmU2ZmpkNjkkgsQiJyW/n5+X369PH29t67d2+XLl0sFkt5eXn1f71NmzaSJN1yo0KhaNWq1YkTJxyalERiERKR21qyZMmlS5c2btzYpUuXSh9w+PBhHx+fe+65x8nBSFZYhETktjZv3gzg1VdfnTRpEgBJkiwWi23XaIsWLTZu3NihQwdu3hGLkIjc1q+//gqg0vk8s9ns9DgkUyxCInJbeXl5N//TYrEUFBQ0adLkxi1lZWW322t6OxVnDcnV8XuEROS50tLSIiIiRKcgwbhFSESea/To0evWrROdggTjFiGReEeOHGnYsKHoFO6j+leoz8nJiYqKqsu6blyhvi4LIbG4RUgkWFFR0ahRo8rKykQHcQc3XzLXOdRq9Y2VtmjRwslrJ4dgERKJZLVaR40aNXny5Pj4eNFZ3EF1vgghSXDg9ltYWBi/feHqnFeE5eXl8j9euaioyGw2e3t7iw5SldLSUkmSZD6YJpNJr9crlUrRQewoLi729vYWuF9r7ty5d955Z+/evQFcuXKl0scUFxfPnDnzk08+qXjX/PnzAwMD6zVhNZWXl5tMJqvVKjrIbUkS3n/f+/PPG+3Zc0XmOzKLiooAyPwspnq9Xq1WGwwG0UGqYjAYdDqdWq2u+mHOG2i1Wq3Vap22utrRarVarVbmRWixWCRJkvlgqlQqk8kk85AANBqNVqsVVYTbt2/fs2fPpk2bbB95txsujUbTo0ePrl27VrwrMDBQJoMsSZJSqZRJmFtYrVi3Tjlrlur4cUXjxtYGDUQHssf2QSTzIjQajfL/VK/m9K3zBlqlUsn/OiY+Pj4ajUbmRWg2myVJkvlgKpVKg8Eg85D4/RkXVYS7du3auXOnn5+f7Z9arXb37t0VLxjr4+MTExMj832nVqtVqVTK7Rm3WrFuHd58EwEBMBjQoAEee+yaRiP3JrS9LGVehAaDQa1Wy+0Zr8jLy/4xoTxqlEiYWbNmSb8DIElS9S+bTlUzGrF8OVq3xoIFSExEr144exaxsVK7drKeUyAhWIRE5G4+/BB3343Vq/HJJ9izBw0aYOZMfPwxsrIU993HIqRbyXrTm8hz8MRdDqTRYP16dOoEAEVFiIvD449j0CA8+ywiIliEdCsWIRG5mxEj/vg5KgpNmuCzz7BrF9q0keQ970Zi8EVBRG7rySeRk4OzZwHg0CF07Cg6EMkS5wiJyD19+SVWrsSXX8J2tYlDh9C+Pfc/UyVYhETkhs6exfDheOYZ9O9//ZaDB9Ghg9BMJFcsQiJyN1YrYmJw771YvPj6LZKEv/4V997LLUKqBOcIicjdPPww9HrcfF16hQLr1sFiQUmJuFgkVyxCInIr772HLVuwcyd8fUVHIRfBXaNE5D6OHMHLL+Ott8BT9FD1sQiJyE0YjejRA9274403REchl8IiJCI30aMHAGzZIjoHuRrOERKRO5g6Ffv34+hRyPviMSRHLEIicnlpaZgxA++/j5YtRUchF8Rdo0Tk2oqK0LcvBg/GuHGio5BrYhHWhuImAmOcOXPmRozWrVsLTEIkUHQ0AgOxdq3oHOSyWIS1N2XKlClTplTxgIyMjKFDh0ZERGg0mubNmw8YMGDXrl01WkXVS2jcuLHdDETu7fnnkZ2N9HTROciVcY6w9mbMmFHFvfv374+OjjabzW3bto2Li7t48eKmTZs2bty4YcOGgQMHVmf5t1vC6tWr+/XrB8Df39+W4e2333bI/xGRa9mwAYsXIzkZYWGio5Ar4xZhfZkwYYLZbP78889//vnntWvX7t69+/vvvwfw1ltv1XEJM2fOrMfcRC7i0iUMG4annkL1/rAkui0WYb2QJOnEiRMtWrQYOnTojRtjY2ODgoIybz4BYq2WcOrUKccnJnI1nTvj7rvxv/+JzkGuj7tG64VCobhw4cLNtxiNxk8++SQ/P79Xr151XEJsbKwjsxK5oEGDUFCAn38WnYPcArcI692yZcsCAgJ8fHzGjh3bu3fv5cuX13EJS5curY+cRK7iww+xcSO+/RYBAaKjkFtgEda74uLiK1eu2H7W6/VHjx6t4xKOHz/uyHxELuXYMYwbhwkTwD0j5CgsQgdo/We33Pviiy+azeZz58598skn586d69evX2pqao2Wf8sShgwZYjtqhsjTmM2IjUXXruARY+RAnCN0ALvHvyiVyrCwsFGjRoWEhDz00EMLFy7s27dvjVZxyxL++9//DhgwoA6RiVxSr16wWrF9u+gc5F64RegA0p8BOHTo0IgRI1atWnXLI7t27Qrg3LlzdpdZ9RJuOY6GyBMkJiI9Hdu387Ta5GAswnqhVqtXrlxZ8bgY2/ReZGRkHZfQqlUrByUlcg379uH117FgAdq3Fx2F3A6LsF5ERkZGRERs2bIlOTn5xo05OTnPPfccgEGDBgE4fPhwFYe9VL2Ehx9+uB7TE8lMWRn69kX//hg/XnQUckecI6wXXl5eixcv7tev35AhQzp27HjXXXfl5eX9+OOPRqPx+eefj4+PB9ChQ4dWrVqdOHGipksYO3asrUqJPESXLmjYEBs2iM5BbopbhPWlb9++6enpQ4YMOXfu3KZNm3Jzc//2t7999913CxcurOMS3n333XpNTs70zTffREZG6nS6yMjIrVu3io4jRy++iMxM/PgjvPhxRfWDW4T1qHPnzl9++eXt7i0rK+vSpUstllBSUuKAcCQDFotl+PDhX375Za9evZKTk8eMGXP+/HnRoeTl22+xcCFWrEB4uOgo5L74J5YwaWlpERERolOQSGazeeXKlb179y4tLfXx8dHpdKITyUteHgYNwujRGD5cdBRya87bIiwvLzebzU5bXe0UFRWZzWbv6h2dfeNsL7Xz5JNPLl++vBYLmT5d+dVXDR555Nqdd1pDQ61hYVYAFouljnkcy2Qy6fV6pVIpOogdxcXF3t7eAi+wHB0dff78+fDwcIVC8c0331T6JBYXF8+aNavSk/MlJSUFBgbWf0z7ysvLTSaT1Wp14DK7dGkcHi69+67eUS9ti8VSVFSkVqsds7h6U1RUBEClkvUeO71er1arDQaD6CBVMRgMOp3O7jPuvIFWq9VardZpq6sdrVar1WqrWYQBAQEAysvLa7eurKys2v1iVJRh3jzVe++pOnfOTk+/vk2Zna3s3l13551SWJiUlGQS/k5XqVQmk0n+z7hGo9FqtQKLEIBWq83Pz3///fcnT568d+/eig/QaDTdu3evdEd6YGCgTAZZkiSlUunAME88ob540evXX685cJkWi8X2HnfUAuuJLaTMi9BoNMr/U12hUFTn3e28gVapVBqNxmmrqx0fHx+NRmO3CG/+Gp/z/6ceftj8r3+Z9u9X79vno9W2atYMXl5o1qzFvHmKs2cVFy7Az0/8dphSqTQYDK7yjIsqwuzs7CVLlsyePVuj0YwdOzYxMbHSEfPx8XnggQdsBxvLltVqVSqVjnrGly3Dhg3YvBlhYY58CVksFtsz7sBl1gdbSJkXocFgUKvV8h9Mr2ocZCXrgZat233nwWkSEgz3369esybshRdO5OTggw8wZgwA3Hef2FxUM6GhoUuXLn344Ye7deu2Zs2aDh06iE4kC6dP45ln8Mor+PvfRUchz8CDZVySTie9+SYWL8b583j2WTz9NCIjkZcnOhbVkEajWb9+/YsvvhgYGLh69er/8SKzgNmMLl3QsSMSE0VHIY/BInRVY8eioABffomkJPz6KwA0awZ+w9Dl9OzZ88CBA4WFhWlpaRUvXeKBHnoI166Bl1chZ2IRuiqlEu+/j1deQWkpWrTAsWOYMgWvv47ISPCraOSi5s3Dzp34/ns0aCA6CnkSFqELe+ABxMRgzpzr/5w6FWfOwNsbzZvj9deFJiOquV9+wWuv4e230amT6CjkYViErm3OHLz/Ps6cuf7PsDAcPowFC5CUhPBwnDwpMhtR9V27hu7d0acPJk4UHYU8D4vQtTVrhpkzccvXjcePR24umjXDPfdg7FhByYhqIiYGGg1SUkTnII/EInR5Tz+NikfdBwQgPR2ffYYVK3DHHfjpJxHJiKpn8mRkZGDPHp5Wm8Tg686dPf448vPRsSO6dsXIkXDo2a+IHCM1FbNnY9ky/PWvoqOQp2IRurkGDZCSgrVrsX49AgKQmio6ENFNioowcCCGD8eIEaKjkAdjEXqEwYORn4/evfH3v6NfPxiNogMRAQDuvx9NmmDFCtE5yLOxCD2FRoPkZGzbhh9+QFAQNm8WHYg83siROHcOP/4oOgd5PBahZ+nVC/n5GDgQAwagZ0/wEr8kytq1WLUKX36JJk1ERyGPxyL0OF5eWLEC+/cjMxPBwdwrRQKcPYsnnsALL6B/f9FRiFiEHqtDB+Tm4tlnMXo0oqOh14sORB7DakVMDNq0QVKS6ChEAFiEHi4pCT//jHPnEBSE994TnYY8Q79+0Ouxa5foHES/YxF6ujZtkJODiRPx8suIjMSlS6IDkVt77z2kpmLLFvj6io5C9DsWIQHA9OnIygKAZs0we7boNOSmjhzByy9j+nTExIiOQnQTFiFd17w5jh3DW2/hjTcQHn69F4kcxXZa7dhYTJ4sOgrRn7EI6U8mT75+wu5WrTBhgug05EZ69oSXF779VnQOogpYhHSroCCkp2PRIixYgPBwnDghOhC5vqlTceAA0tPh7S06ClEFLEKq3LhxuHQJERG4916MHCk6DbmytDTMmIGFC9GypegoRJVhEdJt6XTYsQOrVyM5GU2aYN8+0YHIBRUVoW9fDBmCceNERyG6DRYh2fHooygoQOfOiInB4MEwm0UHIpfStSuCgvDFF6JzEN0ei5Dss106PDkZqakICsLWraIDkYt47jmcPo20NNE5iKrEIqTqGjgQV64gLg7/+Aev5UT2JSdjyRJ88QXCwkRHIaoSi5BqQKXCihX4/nvs24fAQHz1lehAJFe5uXj8cTz9NAYOFB2FyB4WIdVYbCwuX8bw4Rg8GNHRvJYT3cpqRVQUWrbEkiWioxBVA4uQasPLC0uW4MAB/PYbgoPx6aeiA5GcPPIIrlzB3r2icxBVD4uQaq99e5w/j2efxVNPoX175OWJDkQy8OGH2LQJKSlo1Eh0FKLqYRFSXSUl4ddfYTSiWTPMmyc6jatJTk5u06aNTqeLjY09efKk6Dh1dewYxo3DxImIjRUdhajaWITkAC1a4NgxTJ6MCRMQGYncXNGBXMTp06dHjx798ccf5+bmxsXFjRkzRnSiOjGbERuL6Gi8847oKEQ1wSIkh5k2DdnZABAejqlTlaLjuIDs7Ozhw4dHRUVptdrRo0dnZmaKTlQnDz/sa7Xiu+9E5yCqIYUkSc5ZU15enlqtds66aq2wsNDX19db3icGLi0tlSTJV8YXNl261CchoUFgoHnTptK//MUqOk5V8vLygoODFQqF2BgWi2XChAleXl5z5sypeO9jjz1WVFQUEhJS8a6kpKTAwMD6D2jfO++okpL8duzQt2ljEZ3ltiwWS2FhYXBwsOggduTn5+t0OpVKJTpIVfR6vVqt1mq1ooNUxWAw6HQ6jUZT9cOcN9DyHzIAWq1Wq9XKvAgtFoskSXIezBdewOOPXx00yKdLl8bPP2+ZNcskOtFtaTQarVYrtgi3bds2ZcqUvn37Tps2rdLPPo1G88ADD3Tp0qXiXYGBgXJ4Jezb55WU5D1jhv7+++X+3rG9x0UHscMWUuZFaDQa5f+prlAoqvPudt5Aq1Qqu7UsnI+Pj0ajkXkRms1mSZJkPpghIcqtW4vXrw/697+Vq1crN29Gp06iM1XG9oyLKkJJkiZOnJienr527dqWt780g4+PT7du3eLj452ZrfrKymznG7I895zcX5YWi8X2jIsOYoctpMyL0GAwqNVq+Q+ml5f9GUDOEVI9+te/UFiIjh0RFYWRI2GV9V5SAXbt2vX1119v3LgxNDS0pKSkxDXPTRAVhYYNsXq1QXQQolpiEVL9atAAKSlYswbr16NpU/zwg+hAcrJjx47MzEx/f3+/34lOVGP/+Q9OnsSPP6Iaf3YTyRRfvOQM8fHIz8f99yMmBv368VpO102dOlX6M9GJaubbb/H++/j0U4SHi45CVAcsQnIS27WcvvsO6ekIDERKiuhAVDeXLmHQIIwejccfFx2FqG5YhORUvXqhoAADBiAuDj17oqxMdCCqrZgY3HUXPvpIdA6iOmMRkrN5eWHFCuzciSNHEBSEVatEB6Kae/RRXLjAK+6Sm2ARkhjduiE/H+PGYeRIREdDrxcdiKpt2TIkJyMlBQEBoqMQOQKLkERKSsKhQ8jJQZMm+Phj0WmoGrKy8MwzeOUV9OolOgqRg7AISbC2bXHuHF57Dc88g8hIXLokOhDdntmM6Gh06oTERNFRiByHRUiyMH06srIAIDwc774rOg3dRt++uHYN27eLzkHkUCxCkovmzXHsGBIS8PrriIi43oskH3PnYvdu7NyJBg1ERyFyKBYhyUtCAs6cgZ8fWrXCpEmi09DvfvoJEybgnXfQoYPoKESOxiIk2QkLw+HDeO89zJuH8HCcOCE6kMcrK0OfPnjoIUyYIDoKUT1gEZJMPfcccnPRrBnuvRdjx4pO49keeABaLTZtEp2DqH6wCEm+AgKQno5Vq7BiBZo2xU8/iQ7kkSZPxpEj2L2bp9Umt8WXNsnd0KHIz0enTujalddycrbUVMyejWXL8Ne/io5CVG9YhOQCbNdyWrcO69cjIACpqaIDeYbCQgwciCeewIgRoqMQ1ScWIbmMQYNQVIS4OPz97+jXD0aj6EDurksXNG2K5ctF5yCqZyxCciUqFVaswPbt+OEHBAVh82bRgdzXiBE4d47zsuQRWITkenr0QH4+Bg5EXByio1FSIjqQ21m7Fp9/ji+/RFCQ6ChE9Y9FSC7Jdi2ngwdx9iyCg7FihehAbuTsWTzxBF54Af37i45C5BQsQnJh7dvjwgU8+yxGj0Z0NIqKRAdyfVYrYmJw331IShIdhchZWITk8pKSkJGBvDw0aYL580WncXH/+Af0euzcKToHkROxCMkdREYiKwuvv45XX0VkJHJzRQdyTfPnY9s2bNkCX1/RUYiciEVI7uOtt65fs+LOOzF7tug0rubIEbz6KqZPR0yM6ChEzsUiJLdiu5bTW2/hjTcQHo5Tp0QHchHXrqFbN/TogcmTRUchcjoWIbmhyZOvn7D7nnvw2mui07iCHj2gVOKbb0TnIBKBRUjuKSgI6el4/30sXIg77sChQ6IDyVhCAg4eRHo6vL1FRyESgUVI7mzsWFy8iNat0bkzRo4UnUaW0tLwzjtYtAgtW4qOQiQIi5DcnE6HHTuwZg2Sk9GkCX74QXQgOSkqQt++iI/nFR/Jo7EIySPEx6OgAJ0744EHMHgwzGbRgW5isVhat24tZNVduiAoCGvWCFk5kVywCMlTaDRIScHWrfj+ewQG4ttvRQcCACxYsCAmJiYzM9P5q37uOZw5g7Q056+ZSF5YhORZHnwQBQUYMAD9+8viWk5t27ZNSEhw/nqTk7FkCb74AmFhzl85kbwoJElyzpry8vLUarVz1lVrhYWFvr6+3vI+eK60tFSSJF95n/zDZDLp9frAwEDRQW4rLU01cqRveTnee680Pt4kNkxAQEBhYeHt7n3ssceKi4tDQ0Mr3jV37tyAgICaru7iRa/27RsPH25ISiqr6e/eTnl5uclkatSokaMWWB8sFkthYWFwcLDoIHbk5+frdDqVSiU6SFX0er1ardZqtaKDVMVgMOh0Oo1GU/XDnDfQ8h8yAFqtVqvVyrwILRaLJEkyH0yVSmUymeQc8sEHce6c4emnTePG+X34oXXjRqPYz/Aqxkqj0URGRkZFRVW8y9/fv6aDbLWiTx+fli2lxYslwGFPkCRJSqVSzs84AIvFYnuPiw5ihy2kzIvQaDTK/1NdoVAoFAq7D3PeQKtUKru1LJyPj49Go5F5EZrNZkmSZD6YSqXSYDDIPCSApKSiiRN9+/Xzat5c88EHGDNGWJIqxsrHx6d79+7x8fEOWdGAASguxvHjVa2xFqxWq1KplPkzbrFYbO9x0UHssIWUeREaDAa1Wi3/wfTysj8DyDlC8nRt2+L8eTz7LJ5+Gu3bIy9PdKD69OGH2LwZKSmQ9y5MIqdiERIBQFISfv0VRiOaNcPcuaLT1I9jxzBuHKZNQ2ys6ChEcsIiJLquRQscO4YpUzBpEiIjcf6881bthGPWzGbExiImBiKOUSWSNRYh0Z9MnYrsbHh7o3lzt7oUQ48esFqxbZvoHETywyIkulV4OA4fxoIFmDsX4eE4eVJ0oDp76y3s24cdO3habaJKsAiJKjd+/B/XcnLpU3H+8AP+7/+wYAHathUdhUiWWIREtxUQgPR0LFmCTz/FHXfgwAHRgWpOr0efPoiLw/jxoqMQyRWLkMiOp59GYSE6dkRUFEaOhNUqOlBNREfDzw/JyaJzEMkYi5DIvgYNkJKCtWuxfj2aNnWZE1X/5z84dQo//ohqfKWYyHPx/UFUXYMHIz8f3buje3f06yevazlV9O23eP99fPopwsNFRyGSNxYhUQ1oNEhOxrZt+OEHBAQgJUV0oNu4dAmDBmHMGDz+uOgoRLLHIiSqsV69kJ+PgQMRF4eePVHmsEs4OEx0NFq0wIcfis5B5ApYhES14eWFFSuwfz8yMxEUhM8+Ex3oJkOGIDcXe/eKzkHkIliERLXXoQNyczFuHEaNQnQ09HrRgYBly7BhA1JSUPPLFBJ5KBYhUV0lJeHnn3HuHIKC8N57IpNkZeGZZ/Daa+jVS2QMItfCIiRygDZtkJODiRPx8suIjMSlSwIymM3o2hWdO2PWLAFrJ3JdLEIih5k+HVlZANCsGRITnb32Pn1gNuP77529XiJXxyIkcqTmzXHsGKZOxZQpiIi43otO8O672LMH27dD9hcMJ5IdFiGR473xBnJz0aQJWrXChAn1vrqffsLEiXjnHXToUO/rInI/LEKiehEUhPR0LFqEBQsQHo4TJ+prRWVl6NMHf/+7MxqXyC2xCInq0bhx16/ldO+9GDmyXlYREwOtFhs31svCiTwBi5Coftmu5bRqFZKT0aQJ9u1z5MJfeglHj2L3bp5Wm6j2+O4hcoahQ3H5Mjp3RkwMBg92zAm7U1Px3ntYtgx//asDlkbksViERE5iu5ZTcjJSUxEUhK1b67S0wkIMHIgRIzBihIPyEXkqFiGRUw0ciCtXEC5ODgsAACAASURBVBeHf/wD/frBaKzlcqKi0LQpPv3UoeGIPBKLkMjZVCqsWIHt27FvHwIDa3Ocy/DhOH8eP/1UD+GIPA+LkEiMHj1w+TKGD8egQYiORklJdX9x7VqsWYN16xAUVJ/5iDwGi5BIGC8vLFmCAwdw9iyCg6u1n/P0aTzxBF56Cf361X8+Is/gpCI0mUwJCQnOWVdd/O9//zt9+rToFHZ89913qampolPY8dtvvy1ZskR0Cvvefvttg8EgNkP79rhwAc8+i6eeQvv2yMu77SOtVjzwANq2xbvvOjFf9ezbt2/9+vWiU9hRWFiYlJQkOoV98+bNy8/PF53Cjq+//jotLU10CjuOHDmybNkyuw9zUhGazWaX+Fj86quvzp8/LzqFHfv379/n2C+j1YPc3Fz5fywC+OSTT4QXoU1SEjIycPUqmjXDvHmVP+bvf8fVq9ixw6nBquno0aM75JnsJsXFxatWrRKdwr7Vq1cXFRWJTmHHrl27MjIyRKew4/Tp05s2bbL7MO4aJZKLyEhkZWHyZLz2GiIjkZv7p3vnz8d332HHDvj6CspH5KZYhETyMm0abLvn77wTM2devzEnp/Grr2LGDHTqJDAakXtiERLJTng4jh1DUhKmTkV4OPT68Dfe6NmzJ15/XXQyInekkCTJCasxGAwtW7bs2rWrE9ZVF+np6S1btgwMDBQdpCqnTp2yWq2tWrUSHaQqV65cOXbs2AMPPCA6iB1bt27t3bu3SqUSHaRy167pdux4U68PVauLBw581svLKjrRbZ09e7a4uLht27aig1SlrKxs3759vXr1Eh3Ejh07dtx///0NGzYUHaQqGRkZfn5+d911l+ggVcnNzb3rrruWL19e9cOcVIQA0tPTf/vtN+esq9auXr2q1Wpl+7Foc+3aNUmStFqt6CBVsVgsZWVlfn5+ooPYUVRU1LhxY4VCITpIJcxmr8WLo9LT7/T2Pj9mzAc9erQTnagqBoPBYrE0aNBAdJCqWK3WkpKSRo0aiQ5ih16vb9iwoVKpFB2kKmVlZUql0sfHR3SQqphMpoceeig4OLjqhzmvCK9evSr/j8WCggI/Pz9vb2/RQapSUlIiSZLMB9NkMhUXFwfJ/ivfFy9ebNq0qQyLcO5cvPEGtFosWYI1a+KHDRsWHx8vOlRVysrKTCZT48aNRQepisViKSgoaNKkieggdly+fNnf31/mf5EXFxer1WqZ/+lz7do1pVKpVqurfhjnCInkJTUV4eF4/XU8+ywKC/Hoo6IDEbk7Wf/FQeRRzp7FsGHYtw+xsTh6FLLfgUfkJrhFSCSe2YyxY/GXvyAvD7/8gh072IJEzuOkIoyJiWnUqJFCoVAoFOPGjXPOSmvn6NGjMj9Ya+vWrffff79Op4uMjNxax4va1ZsNGzZ0795dp9PFxsaePHlSdJzbslgs99xzj9gM774LP7/rp9LOykKbNmLj1IbFYmnfvr3oFFVJTk5u06ZNYGDgwIEDZfuC/OabbyIjI3U6Xbdu3WR+GsUjR46EhISITlGVmJgYhUKh1Wq9vb3tl45U/6xWa0BAwKlTp65evXr16tXy8nInrLR2srKyOnTo4JxhqR2z2dy4ceOvv/7aYrGsXbs2NDRUdKJKZGdn+/n5bdmypaysLDExMSYmRnSiys2fP1/s071li9SsmaRWSy+9VNXDhgwZsnbtWmeFqrH58+dHRUUBKCoqEp2lcrYX5L59+65evfrmm2/K8wVpNpt1Ot22bdssFstHH30kz7e2zZUrVzp27AigtLRUdJbK2UonNzf38uXLhYWFdkvHGVuEubm5ZrM5Pj4+JCRkxIgRer3eCSutBavVOn78+IkTJ4oOUhWz2fzRRx/16NGjtLTUx8dHp9OJTlSJ7OzsYcOGdezYUavVjh49OjMzU3SiyrVt2/all14SsurTpxEdjX/8A/fdh/x8uMKJoG+rbdu2Mj+lfnZ29vDhw6OiorRa7bBhw+T5gjSbzStXruzdu3dpaam3t7dsj7+1Wq2jRo2aPHmy6CBVsZVO//79W7RoMWrUKPul44Ry3r9/f69evfbs2VNQUPDkk08OGzbMCSuthRkzZowfP952CmbRWapy9erV3NxcAAqFYu/evaLjVM5oNF6+fNlsNo8bN+65554THee2bCPpzDWWl0sjRkheXtI990hHj1brV2S+RWgDGW8R3mAwGEaNGiXnF+TVq1dtb+1du3aJzlK5GTNmvPrqq5IkQcZbhLbSOXTo0IULF0aMGGG3dOrrI+DGeU9u3KLX6yVJunDhgr+/fz2ttKZuDpmamtqrV6+LFy/KsAhvGcyrV6/q9fqSkpK33367c+fOYrPdcEtIo9H4xRdftG/ffuLEiSaTSWy2m92S08lFOHu2pNFIAQHSunU1+C0WoUNs2bKlXbt2//73v2X1gqyopKRk8uTJnTp1Eh2kErbPSdsAyrkIbygvLz979qzd0nHSFuHevXttRZifn3/HHXc4YaU1VXGP6O7du0WHqkRWVtaLL75oG8yLFy82bNhQdKJKWK3WV155pUuXLpmZmaKz2OG0IvzmG6lpU8nb2850YKVYhHVktVpfe+21bt26HTt27NKlS6LjVC4rK2vChAm2n22H7InNUylX+Zy0lY4kSeXl5bm5uXZLxxlzhKWlpY888khmZqbRaJw+ffqgQYOcsNKamjVrliRJ+fn5N7YIu3XrJjpUJUJDQ5ctW5aWliZJ0po1a2zHesjNrl27Nm7cuHLlytDQ0JKSkpKSEtGJRMrKQnQ0+vdHx44oKHDt6UAXtWvXrq+//nrjxo2hoaGlpaXyfEGGhoYuXbrU1isbNmyQ51G4ts9JGwClpaXy/Jy0lc7x48eNRuM777xjv3Tqr5NvsFqtCxcubNGiRVBQ0JNPPllcXOyEldbOzUUoWykpKe3atfP394+Ojj5+/LjoOJWYNm2a819mtVOvW4SlpX9MB9blieIWYR25ygvy+++/79ixo7+/f+fOnY8cOSI6jh2Q8a5RW+lEREQEBgaOGDHCbunwXKN/wnONOgrPNZqYiDffRMOG+Ogj1HEnSHw8zzXqGDzXqAO507lGZT3QRK4oJQVjxqCoCJMm4a23RKchIntYhEQOk5WFIUOQkYGHHsIXX8DXV3QgIqoGnmuUyAHKyjByJFq2hNGI48eRksIWJHIZLEKiukpMREAAUlKQnIxjx9CypehARFQT3DVKVHubN2PMGBQXY/JkTJ0qOg0R1QqLkKg2Tp3Co48iIwMDB2LVKmg0ogMRUW1x1yhRzZSVYfBgtG4NANnZSE5mCxK5NhYhUQ0kJECnw86d2LABhw+jeXPRgYiozliERNWycSOCgzFnDhISUFCAuDjRgYjIQThHSGTHzdOBq1dD3ucdIqIa4xYh0W2VlPwxHXjmDJKT2YJEbohFSFS5hAQEBCAtDdu24fBhhIeLDkRE9YNFSHSrVavg7485czBtGi5eRK9eogMRUX3iHCHRHw4fxvDhyMzkdCCRB+EWIRHw+3Rgp07w9sZvv3E6kMiDsAiJ/pgO3L4dhw8jLEx0ICJyIhYhebR167T+/oqkJMydi4sX0aOH6EBE5HScIyQPdegQnngCJ082HjZM+vhjBXeEEnksbhGSxyksRL9+16cDf/opb8UKwdOBFoulte27ikQkAouQPEtCApo2xcGD2LEDhw8jJMQqNs+CBQtiYmIyMzPFxiDyZNw1Sp5ixQo8/zzMZsyfj/HjRaf5Xdu2bSMiIuJ46lIicRSSJDlnTXl5eWq12jnrqrXCwkJfX19vec8XlZaWSpLk6+srOkhVTCaTXq8PDAwUHQQAfvlF9cwzDbKylEOGGBctKlXd9OdfXl5ecHCwQqEQlw4AAgICCgsLb3fv0KFD9Xp9aGhoxbvmzJkTEBBQn9Gqq7y83GQyNWrUSHSQqlgslsLCwuDgYNFB7MjPz9fpdCqVrDdU9Hq9Wq3WarWig1TFYDDodDqNvSulOW+g5T9kALRarVarlXkRWiwWSZJkPpgqlcpkMgkPWVCAp57y3rbNq3Nn66lT10JCAPwpkkaj0Wq1Ti7Cdu3anTx5EkB5efmNG6sYK29v76ioqPvvv7/iXf7+/sIH2UaSJKVSKZMwt2OxWGzvcdFB7LCFlHkRGo1G+X+qKxSK6ry7nTfQKpXKbi0L5+Pjo9FoZF6EZrNZkiSZD6ZSqTQYDAJDWq149VUsXIjAQOzciW7dvIBKwtiecScXYaUzglWMlUajiY2NjY+Pr89QdWW1WpVKpcxflhaLxfaMiw5ihy2kzIvQYDCo1Wr5D6aXl/1DYXiwDLmhTz+Fvz+WLsWCBbh4Ed26iQ5ERDIm6784iGrqwAE89hjOnsXjj2PZMsj7T2oikgVuEZKbyM9Hv36IikKTJsjJwYoVrtSCTjtmjYgqYhGSy7Na8fLLCAlBRgZ27kR6OkJCRGciItfBIiTXtmwZdDosXYqFC5GTw+lAIqox19l5RPRnP/2EYcNw9iz++U8sXoxqHBpGRFQJfniQ68nPR8+e6NIFTZrg/HksWcIWJKLa4+cHuZIb04FZWdizB+npaNpUdCYicnEsQnIZH398fTpw0SLk5CAmRnQgInILnCMkF7BvH4YP53QgEdULfqKQrOXloWdPREcjPBx5eZwOJCLH44cKyZTZjLFjERqKrCykpWHHDsjjKgtE5G5YhCRH8+ejUSOsWoX//hc5OejaVXQgInJfnCMkeeF0IBE5GT9mSC5ung7Mz+d0IBE5CT9pSDzbdGBICHJycPgwduyATic6ExF5DBYhCTZvHho1whdfYNUqZGWhbVvRgYjIw3COkIT57juMHo2LF/HUU1iyRHQaIvJULEIS4NIlDB2KXbsQG4uMDO4IJSKRuGuUnOrGtwNzcvDLL5wOJCLxWITkPHPnws8Pa9di9WpkZaFNG9GBiIi4a5ScIzUVTz2FS5fw/PNIShKdhojoJixCql9nz2LYMOzbh9hYHD2KRo1EByIi+jPuGqX6cu0aRo7EX/6CvLzr04FsQSKSIRYh1YukJK+77w7cvBlr1nA6kIhkjbtGycG2bsU//4lLl5RPP13+wQda0XGIiOxgEZLDnD6N4cPx44946CEcPmySpFKARUhEcsddo+QAtunAu+9GcTEyMpCSwulAInIZLEKqq8RE+PsjJQVr1+LYMURGig5ERFQT3DVKtffttxg9GleuYPx4fjuQiFwVtwipNrKyEB2N/v3RsSMKCtiCtZecnNymTRudThcbG3vy5EnRcYg8EYuQaqasDCNHomVLFBfj6FGkpMDXV3Qml3X69OnRo0d//PHHubm5cXFxY8aMEZ2IyBOxCKkGEhMREICUFKxbh2PH0Lq16EAuLjs7e/jw4VFRUVqtdvTo0ZmZmaITEXkihSRJzllTXl6eWq12zrpqrbCw0NfX19vbW3SQqpSWlkqS5OvcDbHUVPX48Q31esULL1x7/fVyu483mUx6vT4wMNAJ2eoiLy8vODhYoVCIjWGxWCZMmODl5TVnzpyK9w4dOvTq1athYWEV75o9e3ZAQED9B7SvvLzcZDI1kvfhwhaLpbCwMDg4WHQQO/Lz83U6nUol62M49Hq9Wq3WamX9FSmDwaDT6TQaTdUPc95Ay3/IAGi1Wq1WK/MitFgskiQ5bTBPn1YMG+Z95IiiTx/rypUGX19U59uBKpXKZDLJ/xnXaDRardaZRdiuXTvbXGB5+fW/J7Zt2zZlypS+fftOmzat0s8+b2/vTp063X///RXv8vf3l8kgS5KkVCplEuZ2LBaL7T0uOogdtpAyL0Kj0Sj/T3WFQlGdd7fzBlqlUtmtZeF8fHw0Go3Mi9BsNkuS5ITBLCvDiBH46iu0aoXjx9GypRdQ3ZUqlUqDweAqz7gzi/Dm/Z+SJE2cODE9PX3t2rUtW7a83a9oNJqePXvGx8c7JWAtWa1WpVIp82fcYrHYnnHRQeywhZR5ERoMBrVaLf/B9PKyPwMo64EmgRIT8eabaNgQyckYOFB0Gje1a9eur7/++ocfflCpVCUlJQCcvMebiMAipIo2b8aYMSguxuTJmDpVdBq3tmPHjszMTH9//xu3OG3Onohu4FGj9IdTp9C+PQYMQLduKC5mC9a7qVOnSn8mOhGRJ2IREgCUlWHw4Otfh8jORnIyZL/nn4jIMViEhIQE6HTYuRMbNuDwYTRvLjoQEZETsQg92saNCA7GnDlISEBBAeLiRAciInI6HizjoU6dwqOPIiMDAwdi9WrI+wsjRET1iFuEHqek5I/pwDNnkJzMFiQij8Yi9CwJCQgIQFoatm3D4cMIDxcdiIhINBahp1i1Cv7+mDMH06bh4kX06iU6EBGRPHCO0P0dPozhw5GZyelAIqJKcIvQndmmAzt1grc3fvuN04FERJVgEbqthAT4+yMtDdu34/BhVHYNHyIiYhG6o88+g06HpCQkJeHiRfToIToQEZGMcY7QrRw6hCeewMmTePxxfPQRd4QSEdnHLUI3UViIfv2uTweePYsVK9iCRETVwiJ0BwkJaNoUBw9ixw5OBxIR1QyL0LWtWIHGjZGUhPnzcfEiYmNFByIicjWcI3RVBw5g5Mjr04HLlkHFZ5KIqFb48el6Cgrwr39pv/sOUVHIyUFIiOhARESujLtGXYnVipdfxt13+x4+rNy5E+npbEEiorpiEbqMTz+Fvz+WLkVioiErq6RbN9GBiIjcAneNuoADB/DYYzh79vp04LVrJkkSnYmIyF1wi1DW8vPRrx+iotCkCXJysGIFD4ohInIwFqFM2aYDQ0KQkYHduzkdSERUX1iEcrRsGXQ6LF2KhQuRk4OYGNGBiIjcF3e0yctPP2HYMJw9i3/+E4sXw4t/qBAR1TN+0MpFXh569kSXLmjSBOfPY8kStiARkTPws1Y823RgWBiysrBnD9LT0bSp6ExERB6DRSjYxx9fnw5ctIjTgUREArAIhdm3DxEReOYZPP449HqMHSs6EInwzTffREZG6nS6yMjIrVu3io5D5IlYhALYpgOjoxEejrw8Tgd6LovFMnz48IULFxYWFv7f//3fmDFjRCci8kT8AHYqsxljxyI0FDk51y8fGBAgOhOJYzabV65c2bt379LSUh8fH51OJzoRkSdSSM46W1deXp5arXbOumqtsLDQ19fXu34u7r54sc+MGVovL7zzTvnIkYZaL6e0tFSSJF9fXwdmcziTyaTX6wMDA0UHsSMvLy84OFihUAjMUFpaGh4erlAovvnmm6ioqIoPGDp06NWrV5s1a1bxrlmzZgXI44+p8vJyk8nUqFEj0UGqYrFYCgsLg4ODRQexIz8/X6fTqeR9Him9Xq9Wq7VareggVTEYDDqdTqPRVP0w5w20/IcMgFar1Wq1Di/Cffu8xoxR//abYtQoy8KFJi8vL6D2Q2GxWCRJkvlgqlQqk8kk85AANBqNVqt1ZhG2a9fu5MmTAMrLy223aLXa/Pz8999/f/LkyXv37q34K97e3p06dercuXPFu/z9/WUyyJIkKZVKmYS5HYvFYnuPiw5ihy2kzIvQaDTK/1NdoVBU593tvIFWqVR2a1k4Hx8fjUbjwCLMy8Njj2HXLsTG4uBB6HRKQFnHZZrNZkmSZD6YSqXSYDDIPCR+f8adWYSZmZk3fs7Ozl6yZMns2bM1Gs3YsWMTExMrHTGNRtOzZ8/4+HinhawFq9WqVCpl/oxbLBbbMy46iB22kDIvQoPBoFar5T+YXtU4BINzhPXFNh0YEoKcHBw+jB07wAkgukVoaOjSpUt3794tSdKaNWs6dOggOhGRJ5L1Xxyua948TJkCHx+sWoWhQ0WnIbnSaDTr169/8cUXT58+3bp1648//lh0IiJPxCJ0sO++w+jRuHgRTz2FJUtEpyHZ69mz54EDB0SnIPJoLEKHuXQJQ4denw7MyOCOUCIi18A5Qge4+duBv/zC6UAiIlfCIqyruXPh54e1a7F6NbKy0KaN6EBERFQT3DVae6mpeOopXLqE559HUpLoNEREVCsswqqkpuLKFTz22K23nz2LYcPw44946CEcPQp5n0yDiIiqwl2jt6XX4+mnb53tu3YNI0fiL39BXh5+/hkpKWxBIiLXxiK8rZdewsMP429/++OWd9+Fvz9SUrBmDacDiYjcBHeNVm7bNnz/PX7++fo/t27FP/+JvDyMH8/pQCIit8ItwkoUF+Of/8SSJfDzw+nTiI7GP/6B++7D5ctsQSIid8MirMRLL2HAAHTvjpEjcffdKC5GRganA4mI3BOL8Fbffee1YweaNr0+Hbh2LY4dQ2Sk6FhERFQ/OEf4J8XFiiefVFosmD79j+lASUJREfR6SBLuuktwQiIicixuEf7J4MGN8vMVajXuvRebNyM0FH5+8PJCRARiYzFpkuh8RETkaNwi/EN5OUaONDz1FCIjVTod/Pz++I+IiNwVi/APWi1Gj77m56d23AXqiYhI7rhrlIiIPBqLkIiIPBqLkIiIPFr9FqHiJvW6ovp25syZG/8jrVu3Fh2HiIgcxhlbhFOmTJkyZUo1H5yfnx8REVH3ssnIyBg6dGhERIRGo2nevPmAAQN27dpVxeMnTZqkUCiCgoJ8fHxu7u/8/HwAjRs3rtH/BRERuQpnHDU6Y8YMAFevXrX7SIPBMHjw4Ozs7FatWtVljfv374+OjjabzW3bto2Li7t48eKmTZs2bty4YcOGgQMHVvorJ06cANC6dWsvL6+bt1+VSiUAf39/2//F22+/XZdgREQkNzL6+oQkSWPHjj148GDdFzVhwgSz2fz5558PGzbMdsvOnTt79uz51ltvVVGEd9555549e/z8/Lz5/QkiIo8ho4NlEhMTly9fvmrVqjouR5KkEydOtGjRYujQoTdujI2NDQoKyszMrPRXTCZTVlZWu3bt6rhqIiJyOXIpwvXr10+aNGnmzJkDBgyo46IUCsWFCxeys7Nv7OE0Go3/+9//8vPzu3TpUumvZGVlmc3mJk2avPDCCy1atAgMDHzwwQe//PLLOiYhIiL5k0URHjx4cMSIESNHjpwwYYJjl7xs2bKAgAAfH5+xY8f27t17+fLllT7MNkH40UcfrVy50mQylZeXb9++/dFHH3355Zcdm4eIiORGfBFeuHBhwIAB7dq1W7p0qcO/ZVFcXHzlyhXbz3q9/ujRo5U+zFaEXbp02b9//7lz565evbp27drGjRvPmzdv9+7djo1ERESy4tQibP1nAMrLywcOHOjl5bV+/XqNRuOQZd7sxRdfNJvN586d++STT86dO9evX7/U1NSKC3nmmWdOnz69a9euu+66C4BSqYyPj585cyaAlStX1iIVERG5CqceNVrxWJWsrKz9+/cHBgb26NHj5tuzs7NtrXbkyBGVqqqQtzv+5QalUhkWFjZq1KiQkJCHHnpo4cKFffv2veUxAQEBAQEBt9wYFxf33HPPZWRkVL18oro7cuRIly5dSktLRQch8kROLUJJkiq9vaCgoKCg4OZbTCaT3Ya73TIPHTo0d+7cfv36DR8+/Obbu3btCuDcuXPVTOvr6wugdtupRNVXVFQ0atSosrIy0UGIPJTgOcI2bdpIFQBo1aqV7eeqNwcrpVarV65cWfG4mOPHjwOIjIy85XZJku6+++6AgAC9Xn/z7enp6QDuu+++mgYgqj6r1Tpq1KjJkyeLDkLkuZy3RVheXm42m6v5YIvFcuMgl4yMDB8fn5YtW1bzd0NCQlq0aLFly5bly5fHxcXZbjx//vzYsWMB9O3b98qVK7css2/fvv/973+feeaZadOmmc1mb2/vM2fO/Oc//1Gr1UOHDr2RpGI2IUpLSyVJqv5gCmEymfR6ve28PHJWXFzs7e0t8Fy4c+fOvfPOO3v37g3gdq8rvV4/b968tWvXVrzrnXfeqbhXX4jy8nKTyWS1WkUHqYrFYikqKlKr1aKD2FFUVASgFpsBzqTX69VqtcFgEB2kKgaDQafT2X3GnTfQarVaq9VW88FeXl43HtyjR4+WLVv+/PPP1V/XwoULBw0aNGrUqPbt2zdv3vzy5cv79+83Go3PPvus7Vv2tyzzzTff3L1795o1a3bu3NmpU6fi4uL9+/cbDIbExMQOHTpUkU0Ii8UiSZLYDHapVCqTySTzkAA0Go1Wq3VmEbZr1+7kyZMAbN/S2bNnz6ZNm2wfebcbLm9v77vvvrtz584V7/L395fJIEuSpFQqZRLmdiwWi1arlXlIALaQMi9Co9FYo091Iap5yQfnDbRKpar+fJtCobj5wbf8067+/funp6fPmjVr9+7dx44dCw8P/9vf/vbSSy/Z/u6uuMyQkJD09PT58+enpqampaX5+vr26dNn8uTJ0dHRdrM5n9lsliRJ5pOXSqXSYDDIPCQAHx8fjUbjzCK8efJ7165dO3fu9PPzs/1Tq9Xu3r27W7dut/yKRqPp3bt3fHy800LWgtVqVSqVMn/GLRaL7RkXHcQOW0iZF6HBYFCr1fIfTC8v+zOAchzoW45/KSsru90ZYarQuXPnKk4NU/EQGz8/v4SEhOeee47nGiWnmTVr1qxZs2w/KxSK2x1NRkT1SvwX6u1KS0uLiIgQnYKIiNyTHLcIbzF69Oh169aJTkFUv7g5SCSKM4rQNgFzy5cTqi8nJ8ehcWrjzJkzLVq0EJ2CiIgcr36LsI7X15UPtVp94/+FjUhE5E7qtwhtJ7O2qc4V6mUrLCzs5v8XIiJyGy5wsAwREVH9YRESEZFHYxESEZFHYxESEZFHYxESEZFHYxESEZFHYxESEZFHYxESEZFHYxESEZFHYxESEZFHYxESEZFHYxESEZFHYxESEZFHYxESEZFHYxESEZFHYxESEZFHYxESEZFHYxESEZFHYxESEZFHYxESEZFHYxESEZFHYxESEZFHYxESEZFHYxESEZFHYxESiRQTE6P43bhx40THIfJEKtEBiDyXDdBGNQAAAeNJREFUJEmZmZm5ubm+vr4AVCq+H4kE4BYhkTC5ublms7l///4hISEjRozQ6/WiExF5Iuf9BWo2m0tKSpy2utq5du2al5eX0WgUHaQqZWVlABQKheggVTGZTNeuXZP/M24wGEpKSkQNZlZWVvv27WfOnBkeHj5p0qTx48cvW7as4sN8fHwWLVqUnJxc8a7Zs2f7+/vXf1L7ysvLLRaLUqkUHaQqFovFJV6W5eXl3t7eMh/M8vJyo9FotVpFB6mKwWDw8/Oz+zCFJElOSENENq1bt87MzARwy1svNzf33nvvLSwsrPgrRUVFX3/9daVLGzJkSMOGDesjJ5HnYBESCXPgwAGDwRATEwOgoKCgTZs2ubm5okMReRzOERIJU1pa+sgjjxw/ftxoNE6fPn3QoEGiExF5IhYhkTDdu3dPSEiIi4sLCwu7cuXK7NmzRSci8kTcNUpERB6NW4REROTRWIREROTRWIREROTRWIREROTRWIREROTRWIREROTRWIREROTRWIREROTRWIREROTRWIREROTRWIREROTRWIREROTRWIREROTRWIREROTRWIREROTRWIREROTRWIREROTRWIREROTRWIREROTRWIREROTRWIREROTRWIREROTRWIREROTR/h8eSxCYU7aF7QAAAABJRU5ErkJggg==" }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x_vals = [0 0 0 ; 2 -3 -4]\n", "y_vals = [0 0 0 ; 4 3 -3.5]\n", "\n", "plot(x_vals, y_vals, arrow = true, color = :blue,\n", " legend = :none, xlims = (-5, 5), ylims = (-5, 5),\n", " annotations = [(2.2, 4.4, \"[2, 4]\"),\n", " (-3.3, 3.3, \"[-3, 3]\"),\n", " (-4.4, -3.85, \"[-4, -3.5]\")],\n", " xticks = -5:1:5, yticks = -5:1:5,\n", " framestyle = :origin)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Vector Operations\n", "\n", "\n", "\n", "The two most common operators for vectors are addition and scalar multiplication, which we now describe\n", "\n", "As a matter of definition, when we add two vectors, we add them element by element\n", "\n", "$$\n", "x + y\n", "=\n", "\\left[\n", "\\begin{array}{c}\n", " x_1 \\\\\n", " x_2 \\\\\n", " \\vdots \\\\\n", " x_n\n", "\\end{array}\n", "\\right]\n", "+\n", "\\left[\n", "\\begin{array}{c}\n", " y_1 \\\\\n", " y_2 \\\\\n", " \\vdots \\\\\n", " y_n\n", "\\end{array}\n", "\\right]\n", ":=\n", "\\left[\n", "\\begin{array}{c}\n", " x_1 + y_1 \\\\\n", " x_2 + y_2 \\\\\n", " \\vdots \\\\\n", " x_n + y_n\n", "\\end{array}\n", "\\right]\n", "$$\n", "\n", "Scalar multiplication is an operation that takes a number $ \\gamma $ and a\n", "vector $ x $ and produces\n", "\n", "$$\n", "\\gamma x\n", ":=\n", "\\left[\n", "\\begin{array}{c}\n", " \\gamma x_1 \\\\\n", " \\gamma x_2 \\\\\n", " \\vdots \\\\\n", " \\gamma x_n\n", "\\end{array}\n", "\\right]\n", "$$\n", "\n", "Scalar multiplication is illustrated in the next figure" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "hide-output": false }, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# illustrate scalar multiplication\n", "\n", "x = [2]\n", "scalars = [-2 1 2]\n", "vals = [0 0 0; x * scalars]\n", "labels = [(-3.6, -4.2, \"-2x\"), (2.4, 1.8, \"x\"), (4.4, 3.8, \"2x\")]\n", "\n", "plot(vals, vals, arrow = true, color = [:red :red :blue],\n", " legend = :none, xlims = (-5, 5), ylims = (-5, 5),\n", " annotations = labels, xticks = -5:1:5, yticks = -5:1:5,\n", " framestyle = :origin)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In Julia, a vector can be represented as a one dimensional Array\n", "\n", "Julia Arrays allow us to express scalar multiplication and addition with a very natural syntax" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "3-element Array{Float64,1}:\n", " 1.0\n", " 1.0\n", " 1.0" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = ones(3)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "3-element Array{Int64,1}:\n", " 2\n", " 4\n", " 6" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y = [2, 4, 6]" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "3-element Array{Float64,1}:\n", " 3.0\n", " 5.0\n", " 7.0" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x + y" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "3-element Array{Float64,1}:\n", " 4.0\n", " 4.0\n", " 4.0" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "4x # equivalent to 4 * x and 4 .* x" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Inner Product and Norm\n", "\n", "\n", "\n", "The *inner product* of vectors $ x,y \\in \\mathbb R ^n $ is defined as\n", "\n", "$$\n", "x' y := \\sum_{i=1}^n x_i y_i\n", "$$\n", "\n", "Two vectors are called *orthogonal* if their inner product is zero\n", "\n", "The *norm* of a vector $ x $ represents its “length” (i.e., its distance from the zero vector) and is defined as\n", "\n", "$$\n", "\\| x \\| := \\sqrt{x' x} := \\left( \\sum_{i=1}^n x_i^2 \\right)^{1/2}\n", "$$\n", "\n", "The expression $ \\| x - y\\| $ is thought of as the distance between $ x $ and $ y $\n", "\n", "Continuing on from the previous example, the inner product and norm can be computed as\n", "follows" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "hide-output": false }, "outputs": [], "source": [ "using LinearAlgebra" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "12.0" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dot(x, y) # Inner product of x and y" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "12.0" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum(prod, zip(x, y)) # Gives the same result" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "1.7320508075688772" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "norm(x) # Norm of x" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "1.7320508075688772" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sqrt(sum(abs2, x)) # Gives the same result" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Span\n", "\n", "\n", "\n", "Given a set of vectors $ A := \\{a_1, \\ldots, a_k\\} $ in $ \\mathbb R ^n $, it’s natural to think about the new vectors we can create by performing linear operations\n", "\n", "New vectors created in this manner are called *linear combinations* of $ A $\n", "\n", "In particular, $ y \\in \\mathbb R ^n $ is a linear combination of $ A := \\{a_1, \\ldots, a_k\\} $ if\n", "\n", "$$\n", "y = \\beta_1 a_1 + \\cdots + \\beta_k a_k\n", "\\text{ for some scalars } \\beta_1, \\ldots, \\beta_k\n", "$$\n", "\n", "In this context, the values $ \\beta_1, \\ldots, \\beta_k $ are called the *coefficients* of the linear combination\n", "\n", "The set of linear combinations of $ A $ is called the *span* of $ A $\n", "\n", "The next figure shows the span of $ A = \\{a_1, a_2\\} $ in $ \\mathbb R ^3 $\n", "\n", "The span is a 2 dimensional plane passing through these two points and the origin\n", "\n", "\n", "" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "hide-output": false, "html-class": "collapse" }, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# fixed linear function, to generate a plane\n", "f(x, y) = 0.2x + 0.1y\n", "\n", "# lines to vectors\n", "x_vec = [0 0; 3 3]\n", "y_vec = [0 0; 4 -4]\n", "z_vec = [0 0; f(3, 4) f(3, -4)]\n", "\n", "# draw the plane\n", "n = 20\n", "grid = range(-5, 5, length = n)\n", "z2 = [ f(grid[row], grid[col]) for row in 1:n, col in 1:n ]\n", "wireframe(grid, grid, z2, fill = :blues, gridalpha =1 )\n", "plot!(x_vec, y_vec, z_vec, color = [:blue :green], linewidth = 3, labels = \"\",\n", " colorbar = false)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Examples\n", "\n", "If $ A $ contains only one vector $ a_1 \\in \\mathbb R ^2 $, then its\n", "span is just the scalar multiples of $ a_1 $, which is the unique line passing through both $ a_1 $ and the origin\n", "\n", "If $ A = \\{e_1, e_2, e_3\\} $ consists of the *canonical basis vectors* of $ \\mathbb R ^3 $, that is\n", "\n", "$$\n", "e_1\n", ":=\n", "\\left[\n", "\\begin{array}{c}\n", " 1 \\\\\n", " 0 \\\\\n", " 0\n", "\\end{array}\n", "\\right]\n", ", \\quad\n", "e_2\n", ":=\n", "\\left[\n", "\\begin{array}{c}\n", " 0 \\\\\n", " 1 \\\\\n", " 0\n", "\\end{array}\n", "\\right]\n", ", \\quad\n", "e_3\n", ":=\n", "\\left[\n", "\\begin{array}{c}\n", " 0 \\\\\n", " 0 \\\\\n", " 1\n", "\\end{array}\n", "\\right]\n", "$$\n", "\n", "then the span of $ A $ is all of $ \\mathbb R ^3 $, because, for any\n", "$ x = (x_1, x_2, x_3) \\in \\mathbb R ^3 $, we can write\n", "\n", "$$\n", "x = x_1 e_1 + x_2 e_2 + x_3 e_3\n", "$$\n", "\n", "Now consider $ A_0 = \\{e_1, e_2, e_1 + e_2\\} $\n", "\n", "If $ y = (y_1, y_2, y_3) $ is any linear combination of these vectors, then $ y_3 = 0 $ (check it)\n", "\n", "Hence $ A_0 $ fails to span all of $ \\mathbb R ^3 $\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Linear Independence\n", "\n", "\n", "\n", "As we’ll see, it’s often desirable to find families of vectors with relatively large span, so that many vectors can be described by linear operators on a few vectors\n", "\n", "The condition we need for a set of vectors to have a large span is what’s called linear independence\n", "\n", "In particular, a collection of vectors $ A := \\{a_1, \\ldots, a_k\\} $ in $ \\mathbb R ^n $ is said to be\n", "\n", "- *linearly dependent* if some strict subset of $ A $ has the same span as $ A $ \n", "- *linearly independent* if it is not linearly dependent \n", "\n", "\n", "Put differently, a set of vectors is linearly independent if no vector is redundant to the span, and linearly dependent otherwise\n", "\n", "To illustrate the idea, recall [the figure](#la-3dvec) that showed the span of vectors $ \\{a_1, a_2\\} $ in $ \\mathbb R ^3 $ as a plane through the origin\n", "\n", "If we take a third vector $ a_3 $ and form the set $ \\{a_1, a_2, a_3\\} $, this set will be\n", "\n", "- linearly dependent if $ a_3 $ lies in the plane \n", "- linearly independent otherwise \n", "\n", "\n", "As another illustration of the concept, since $ \\mathbb R ^n $ can be spanned by $ n $ vectors\n", "(see the discussion of canonical basis vectors above), any collection of\n", "$ m > n $ vectors in $ \\mathbb R ^n $ must be linearly dependent\n", "\n", "The following statements are equivalent to linear independence of $ A := \\{a_1, \\ldots, a_k\\} \\subset \\mathbb R ^n $\n", "\n", "1. No vector in $ A $ can be formed as a linear combination of the other elements \n", "1. If $ \\beta_1 a_1 + \\cdots \\beta_k a_k = 0 $ for scalars $ \\beta_1, \\ldots, \\beta_k $, then $ \\beta_1 = \\cdots = \\beta_k = 0 $ \n", "\n", "\n", "(The zero in the first expression is the origin of $ \\mathbb R ^n $)\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Unique Representations\n", "\n", "Another nice thing about sets of linearly independent vectors is that each element in the span has a unique representation as a linear combination of these vectors\n", "\n", "In other words, if $ A := \\{a_1, \\ldots, a_k\\} \\subset \\mathbb R ^n $ is\n", "linearly independent and\n", "\n", "$$\n", "y = \\beta_1 a_1 + \\cdots \\beta_k a_k\n", "$$\n", "\n", "then no other coefficient sequence $ \\gamma_1, \\ldots, \\gamma_k $ will produce\n", "the same vector $ y $\n", "\n", "Indeed, if we also have $ y = \\gamma_1 a_1 + \\cdots \\gamma_k a_k $,\n", "then\n", "\n", "$$\n", "(\\beta_1 - \\gamma_1) a_1 + \\cdots + (\\beta_k - \\gamma_k) a_k = 0\n", "$$\n", "\n", "Linear independence now implies $ \\gamma_i = \\beta_i $ for all $ i $" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Matrices\n", "\n", "\n", "\n", "Matrices are a neat way of organizing data for use in linear operations\n", "\n", "An $ n \\times k $ matrix is a rectangular array $ A $ of numbers with $ n $ rows and $ k $ columns:\n", "\n", "$$\n", "A =\n", "\\left[\n", "\\begin{array}{cccc}\n", " a_{11} & a_{12} & \\cdots & a_{1k} \\\\\n", " a_{21} & a_{22} & \\cdots & a_{2k} \\\\\n", " \\vdots & \\vdots & & \\vdots \\\\\n", " a_{n1} & a_{n2} & \\cdots & a_{nk}\n", "\\end{array}\n", "\\right]\n", "$$\n", "\n", "Often, the numbers in the matrix represent coefficients in a system of linear equations, as discussed at the start of this lecture\n", "\n", "For obvious reasons, the matrix $ A $ is also called a vector if either $ n = 1 $ or $ k = 1 $\n", "\n", "In the former case, $ A $ is called a *row vector*, while in the latter it is called a *column vector*\n", "\n", "If $ n = k $, then $ A $ is called *square*\n", "\n", "The matrix formed by replacing $ a_{ij} $ by $ a_{ji} $ for every $ i $ and $ j $ is called the *transpose* of $ A $, and denoted $ A' $ or $ A^{\\top} $\n", "\n", "If $ A = A' $, then $ A $ is called *symmetric*\n", "\n", "For a square matrix $ A $, the $ i $ elements of the form $ a_{ii} $ for $ i=1,\\ldots,n $ are called the *principal diagonal*\n", "\n", "$ A $ is called *diagonal* if the only nonzero entries are on the principal diagonal\n", "\n", "If, in addition to being diagonal, each element along the principal diagonal is equal to 1, then $ A $ is called the *identity matrix*, and denoted by $ I $" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Matrix Operations\n", "\n", "\n", "\n", "Just as was the case for vectors, a number of algebraic operations are defined for matrices\n", "\n", "Scalar multiplication and addition are immediate generalizations of the vector case:\n", "\n", "$$\n", "\\gamma A\n", "=\n", "\\gamma\n", "\\left[\n", "\\begin{array}{ccc}\n", " a_{11} & \\cdots & a_{1k} \\\\\n", " \\vdots & \\vdots & \\vdots \\\\\n", " a_{n1} & \\cdots & a_{nk} \\\\\n", "\\end{array}\n", "\\right]\n", ":=\n", "\\left[\n", "\\begin{array}{ccc}\n", " \\gamma a_{11} & \\cdots & \\gamma a_{1k} \\\\\n", " \\vdots & \\vdots & \\vdots \\\\\n", " \\gamma a_{n1} & \\cdots & \\gamma a_{nk} \\\\\n", "\\end{array}\n", "\\right]\n", "$$\n", "\n", "and\n", "\n", "$$\n", "A + B =\n", "\\left[\n", "\\begin{array}{ccc}\n", " a_{11} & \\cdots & a_{1k} \\\\\n", " \\vdots & \\vdots & \\vdots \\\\\n", " a_{n1} & \\cdots & a_{nk} \\\\\n", "\\end{array}\n", "\\right]\n", "+\n", "\\left[\n", "\\begin{array}{ccc}\n", " b_{11} & \\cdots & b_{1k} \\\\\n", " \\vdots & \\vdots & \\vdots \\\\\n", " b_{n1} & \\cdots & b_{nk} \\\\\n", "\\end{array}\n", "\\right]\n", ":=\n", "\\left[\n", "\\begin{array}{ccc}\n", " a_{11} + b_{11} & \\cdots & a_{1k} + b_{1k} \\\\\n", " \\vdots & \\vdots & \\vdots \\\\\n", " a_{n1} + b_{n1} & \\cdots & a_{nk} + b_{nk} \\\\\n", "\\end{array}\n", "\\right]\n", "$$\n", "\n", "In the latter case, the matrices must have the same shape in order for the definition to make sense\n", "\n", "We also have a convention for *multiplying* two matrices\n", "\n", "The rule for matrix multiplication generalizes the idea of inner products discussed above,\n", "and is designed to make multiplication play well with basic linear operations\n", "\n", "If $ A $ and $ B $ are two matrices, then their product $ A B $ is formed by taking as its\n", "$ i,j $-th element the inner product of the $ i $-th row of $ A $ and the\n", "$ j $-th column of $ B $\n", "\n", "There are many tutorials to help you visualize this operation, such as [this one](http://www.mathsisfun.com/algebra/matrix-multiplying.html), or the discussion on the [Wikipedia page](https://en.wikipedia.org/wiki/Matrix_multiplication)\n", "\n", "If $ A $ is $ n \\times k $ and $ B $ is $ j \\times m $, then\n", "to multiply $ A $ and $ B $ we require $ k = j $, and the\n", "resulting matrix $ A B $ is $ n \\times m $\n", "\n", "As perhaps the most important special case, consider multiplying $ n \\times k $ matrix $ A $ and $ k \\times 1 $ column vector $ x $\n", "\n", "According to the preceding rule, this gives us an $ n \\times 1 $ column vector\n", "\n", "\n", "\n", "$$\n", "A x =\n", "\\left[\n", "\\begin{array}{ccc}\n", " a_{11} & \\cdots & a_{1k} \\\\\n", " \\vdots & \\vdots & \\vdots \\\\\n", " a_{n1} & \\cdots & a_{nk}\n", "\\end{array}\n", "\\right]\n", "\\left[\n", "\\begin{array}{c}\n", " x_{1} \\\\\n", " \\vdots \\\\\n", " x_{k}\n", "\\end{array}\n", "\\right] :=\n", "\\left[\n", "\\begin{array}{c}\n", " a_{11} x_1 + \\cdots + a_{1k} x_k \\\\\n", " \\vdots \\\\\n", " a_{n1} x_1 + \\cdots + a_{nk} x_k\n", "\\end{array}\n", "\\right] \\tag{2}\n", "$$\n", "\n", ">**Note**\n", ">\n", ">$ A B $ and $ B A $ are not generally the same thing\n", "\n", "Another important special case is the identity matrix\n", "\n", "You should check that if $ A $ is $ n \\times k $ and $ I $ is the $ k \\times k $ identity matrix, then $ AI = A $\n", "\n", "If $ I $ is the $ n \\times n $ identity matrix, then $ IA = A $" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Matrices in Julia\n", "\n", "Julia arrays are also used as matrices, and have fast, efficient functions and methods for all the standard matrix operations\n", "\n", "You can create them as follows" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "2×2 Array{Int64,2}:\n", " 1 2\n", " 3 4" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A = [1 2\n", " 3 4]" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "Array{Int64,2}" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "typeof(A)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "(2, 2)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "size(A)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `size` function returns a tuple giving the number of rows and columns\n", "\n", "To get the transpose of `A`, use `transpose(A)` or, more simply, `A'`\n", "\n", "There are many convenient functions for creating common matrices (matrices of zeros, ones, etc.) — see [here](https://lectures.quantecon.org/getting_started_julia/fundamental_types.html#creating-arrays)\n", "\n", "Since operations are performed elementwise by default, scalar multiplication and addition have very natural syntax" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "3×3 Array{Float64,2}:\n", " 1.0 1.0 1.0\n", " 1.0 1.0 1.0\n", " 1.0 1.0 1.0" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A = ones(3, 3)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "UniformScaling{Int64}\n", "2*I" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2I" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "3×3 Array{Float64,2}:\n", " 2.0 1.0 1.0\n", " 1.0 2.0 1.0\n", " 1.0 1.0 2.0" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A + I" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To multiply matrices we use the `*` operator\n", "\n", "In particular, `A * B` is matrix multiplication, whereas `A .* B` is element by element multiplication\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Matrices as Maps\n", "\n", "\n", "\n", "Each $ n \\times k $ matrix $ A $ can be identified with a function $ f(x) = Ax $ that maps $ x \\in \\mathbb R ^k $ into $ y = Ax \\in \\mathbb R ^n $\n", "\n", "These kinds of functions have a special property: they are *linear*\n", "\n", "A function $ f \\colon \\mathbb R ^k \\to \\mathbb R ^n $ is called *linear* if, for all $ x, y \\in \\mathbb R ^k $ and all scalars $ \\alpha, \\beta $, we have\n", "\n", "$$\n", "f(\\alpha x + \\beta y) = \\alpha f(x) + \\beta f(y)\n", "$$\n", "\n", "You can check that this holds for the function $ f(x) = A x + b $ when $ b $ is the zero vector, and fails when $ b $ is nonzero\n", "\n", "In fact, it’s [known](https://en.wikipedia.org/wiki/Linear_map#Matrices) that $ f $ is linear if and *only if* there exists a matrix $ A $ such that $ f(x) = Ax $ for all $ x $" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Solving Systems of Equations\n", "\n", "\n", "\n", "Recall again the system of equations [(1)](#equation-la-se)\n", "\n", "If we compare [(1)](#equation-la-se) and [(2)](#equation-la-atx), we see that [(1)](#equation-la-se) can now be\n", "written more conveniently as\n", "\n", "\n", "\n", "$$\n", "y = Ax \\tag{3}\n", "$$\n", "\n", "The problem we face is to determine a vector $ x \\in \\mathbb R ^k $ that solves [(3)](#equation-la-se2), taking $ y $ and $ A $ as given\n", "\n", "This is a special case of a more general problem: Find an $ x $ such that $ y = f(x) $\n", "\n", "Given an arbitrary function $ f $ and a $ y $, is there always an $ x $ such that $ y = f(x) $?\n", "\n", "If so, is it always unique?\n", "\n", "The answer to both these questions is negative, as the next figure shows" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "hide-output": false, "html-class": "collapse" }, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f(x) = 0.6cos(4x) + 1.3\n", "grid = range(-2, 2, length = 100)\n", "y_min, y_max = extrema( f(x) for x in grid )\n", "plt1 = plot(f, xlim = (-2, 2), label = \"f\")\n", "hline!(plt1, [f(0.5)], linestyle = :dot, linewidth = 2, label = \"\")\n", "vline!(plt1, [-1.07, -0.5, 0.5, 1.07], linestyle = :dot, linewidth = 2, label = \"\")\n", "plot!(plt1, fill(0, 2), [y_min y_min; y_max y_max], lw = 3, color = :blue,\n", " label = [\"range of f\" \"\"])\n", "plt2 = plot(f, xlim = (-2, 2), label = \"f\")\n", "hline!(plt2, [2], linestyle = :dot, linewidth = 2, label = \"\")\n", "plot!(plt2, fill(0, 2), [y_min y_min; y_max y_max], lw = 3, color = :blue,\n", " label = [\"range of f\" \"\"])\n", "plot(plt1, plt2, layout = (2, 1), ylim = (0, 3.5))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the first plot there are multiple solutions, as the function is not one-to-one, while\n", "in the second there are no solutions, since $ y $ lies outside the range of $ f $\n", "\n", "Can we impose conditions on $ A $ in [(3)](#equation-la-se2) that rule out these problems?\n", "\n", "In this context, the most important thing to recognize about the expression\n", "$ Ax $ is that it corresponds to a linear combination of the columns of $ A $\n", "\n", "In particular, if $ a_1, \\ldots, a_k $ are the columns of $ A $, then\n", "\n", "$$\n", "Ax = x_1 a_1 + \\cdots + x_k a_k\n", "$$\n", "\n", "Hence the range of $ f(x) = Ax $ is exactly the span of the columns of $ A $\n", "\n", "We want the range to be large, so that it contains arbitrary $ y $\n", "\n", "As you might recall, the condition that we want for the span to be large is [linear independence](#la-li)\n", "\n", "A happy fact is that linear independence of the columns of $ A $ also gives us uniqueness\n", "\n", "Indeed, it follows from our [earlier discussion](#la-unique-reps) that if $ \\{a_1, \\ldots, a_k\\} $ are linearly independent and $ y = Ax = x_1 a_1 + \\cdots + x_k a_k $, then no $ z \\not= x $ satisfies $ y = Az $" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The $ n \\times n $ Case\n", "\n", "Let’s discuss some more details, starting with the case where $ A $ is $ n \\times n $\n", "\n", "This is the familiar case where the number of unknowns equals the number of equations\n", "\n", "For arbitrary $ y \\in \\mathbb R ^n $, we hope to find a unique $ x \\in \\mathbb R ^n $ such that $ y = Ax $\n", "\n", "In view of the observations immediately above, if the columns of $ A $ are\n", "linearly independent, then their span, and hence the range of $ f(x) =\n", "Ax $, is all of $ \\mathbb R ^n $\n", "\n", "Hence there always exists an $ x $ such that $ y = Ax $\n", "\n", "Moreover, the solution is unique\n", "\n", "In particular, the following are equivalent\n", "\n", "1. The columns of $ A $ are linearly independent \n", "1. For any $ y \\in \\mathbb R ^n $, the equation $ y = Ax $ has a unique solution \n", "\n", "\n", "The property of having linearly independent columns is sometimes expressed as having *full column rank*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Inverse Matrices\n", "\n", "\n", "\n", "Can we give some sort of expression for the solution?\n", "\n", "If $ y $ and $ A $ are scalar with $ A \\not= 0 $, then the\n", "solution is $ x = A^{-1} y $\n", "\n", "A similar expression is available in the matrix case\n", "\n", "In particular, if square matrix $ A $ has full column rank, then it possesses a multiplicative\n", "*inverse matrix* $ A^{-1} $, with the property that $ A A^{-1} = A^{-1} A = I $\n", "\n", "As a consequence, if we pre-multiply both sides of $ y = Ax $ by $ A^{-1} $, we get $ x = A^{-1} y $\n", "\n", "This is the solution that we’re looking for" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Determinants\n", "\n", "\n", "\n", "Another quick comment about square matrices is that to every such matrix we\n", "assign a unique number called the *determinant* of the matrix — you can find\n", "the expression for it [here](https://en.wikipedia.org/wiki/Determinant)\n", "\n", "If the determinant of $ A $ is not zero, then we say that $ A $ is\n", "*nonsingular*\n", "\n", "Perhaps the most important fact about determinants is that $ A $ is nonsingular if and only if $ A $ is of full column rank\n", "\n", "This gives us a useful one-number summary of whether or not a square matrix can be\n", "inverted" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### More Rows than Columns\n", "\n", "This is the $ n \\times k $ case with $ n > k $\n", "\n", "This case is very important in many settings, not least in the setting of linear regression (where $ n $ is the number of observations, and $ k $ is the number of explanatory variables)\n", "\n", "Given arbitrary $ y \\in \\mathbb R ^n $, we seek an $ x \\in \\mathbb R ^k $ such that $ y = Ax $\n", "\n", "In this setting, existence of a solution is highly unlikely\n", "\n", "Without much loss of generality, let’s go over the intuition focusing on the case where the columns of\n", "$ A $ are linearly independent\n", "\n", "It follows that the span of the columns of $ A $ is a $ k $-dimensional subspace of $ \\mathbb R ^n $\n", "\n", "This span is very “unlikely” to contain arbitrary $ y \\in \\mathbb R ^n $\n", "\n", "To see why, recall the [figure above](#la-3dvec), where $ k=2 $ and $ n=3 $\n", "\n", "Imagine an arbitrarily chosen $ y \\in \\mathbb R ^3 $, located somewhere in that three dimensional space\n", "\n", "What’s the likelihood that $ y $ lies in the span of $ \\{a_1, a_2\\} $ (i.e., the two dimensional plane through these points)?\n", "\n", "In a sense it must be very small, since this plane has zero “thickness”\n", "\n", "As a result, in the $ n > k $ case we usually give up on existence\n", "\n", "However, we can still seek a best approximation, for example an\n", "$ x $ that makes the distance $ \\| y - Ax\\| $ as small as possible\n", "\n", "To solve this problem, one can use either calculus or the theory of orthogonal\n", "projections\n", "\n", "The solution is known to be $ \\hat x = (A'A)^{-1}A'y $ — see for example\n", "chapter 3 of these notes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### More Columns than Rows\n", "\n", "This is the $ n \\times k $ case with $ n < k $, so there are fewer\n", "equations than unknowns\n", "\n", "In this case there are either no solutions or infinitely many — in other words, uniqueness never holds\n", "\n", "For example, consider the case where $ k=3 $ and $ n=2 $\n", "\n", "Thus, the columns of $ A $ consists of 3 vectors in $ \\mathbb R ^2 $\n", "\n", "This set can never be linearly independent, since it is possible to find two vectors that span\n", "$ \\mathbb R ^2 $\n", "\n", "(For example, use the canonical basis vectors)\n", "\n", "It follows that one column is a linear combination of the other two\n", "\n", "For example, let’s say that $ a_1 = \\alpha a_2 + \\beta a_3 $\n", "\n", "Then if $ y = Ax = x_1 a_1 + x_2 a_2 + x_3 a_3 $, we can also write\n", "\n", "$$\n", "y\n", "= x_1 (\\alpha a_2 + \\beta a_3) + x_2 a_2 + x_3 a_3\n", "= (x_1 \\alpha + x_2) a_2 + (x_1 \\beta + x_3) a_3\n", "$$\n", "\n", "In other words, uniqueness fails" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Linear Equations with Julia\n", "\n", "Here’s an illustration of how to solve linear equations with Julia’s built-in linear algebra facilities" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "hide-output": false }, "outputs": [], "source": [ "A = [1.0 2.0; 3.0 4.0];" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "hide-output": false }, "outputs": [], "source": [ "y = ones(2, 1); # A column vector" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "-2.0" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "det(A)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "2×2 Array{Float64,2}:\n", " -2.0 1.0\n", " 1.5 -0.5" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A_inv = inv(A)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "2×1 Array{Float64,2}:\n", " -0.9999999999999998\n", " 0.9999999999999999" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = A_inv * y # solution" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "2×1 Array{Float64,2}:\n", " 1.0 \n", " 1.0000000000000004" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A * x # should equal y (a vector of ones)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "2×1 Array{Float64,2}:\n", " -1.0\n", " 1.0" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A \\ y # produces the same solution" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Observe how we can solve for $ x = A^{-1} y $ by either via `inv(A) * y`, or using `A \\ y`\n", "\n", "The latter method is preferred because it automatically selects the best algorithm for the problem based on the types of `A` and `y`\n", "\n", "If `A` is not square then `A \\ y` returns the least squares solution $ \\hat x = (A'A)^{-1}A'y $\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Eigenvalues and Eigenvectors\n", "\n", "\n", "\n", "Let $ A $ be an $ n \\times n $ square matrix\n", "\n", "If $ \\lambda $ is scalar and $ v $ is a non-zero vector in $ \\mathbb R ^n $ such that\n", "\n", "$$\n", "A v = \\lambda v\n", "$$\n", "\n", "then we say that $ \\lambda $ is an *eigenvalue* of $ A $, and\n", "$ v $ is an *eigenvector*\n", "\n", "Thus, an eigenvector of $ A $ is a vector such that when the map $ f(x) = Ax $ is applied, $ v $ is merely scaled\n", "\n", "The next figure shows two eigenvectors (blue arrows) and their images under $ A $ (red arrows)\n", "\n", "As expected, the image $ Av $ of each $ v $ is just a scaled version of the original" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "hide-output": false, "html-class": "collapse" }, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A = [1 2\n", " 2 1]\n", "evals, evecs = eigen(A)\n", "\n", "a1, a2 = evals\n", "eig_1 = [0 0; evecs[:,1]']\n", "eig_2 = [0 0; evecs[:,2]']\n", "x = range(-5, 5, length = 10)\n", "y = -x\n", "\n", "plot(eig_1[:, 2], a1 * eig_2[:, 2], arrow = true, color = :red,\n", " legend = :none, xlims = (-3, 3), ylims = (-3, 3), xticks = -3:3, yticks = -3:3,\n", " framestyle = :origin)\n", "plot!(a2 * eig_1[:, 2], a2 * eig_2, arrow = true, color = :red)\n", "plot!(eig_1, eig_2, arrow = true, color = :blue)\n", "plot!(x, y, color = :blue, lw = 0.4, alpha = 0.6)\n", "plot!(x, x, color = :blue, lw = 0.4, alpha = 0.6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The eigenvalue equation is equivalent to $ (A - \\lambda I) v = 0 $, and\n", "this has a nonzero solution $ v $ only when the columns of $ A -\n", "\\lambda I $ are linearly dependent\n", "\n", "This in turn is equivalent to stating that the determinant is zero\n", "\n", "Hence to find all eigenvalues, we can look for $ \\lambda $ such that the\n", "determinant of $ A - \\lambda I $ is zero\n", "\n", "This problem can be expressed as one of solving for the roots of a polynomial\n", "in $ \\lambda $ of degree $ n $\n", "\n", "This in turn implies the existence of $ n $ solutions in the complex\n", "plane, although some might be repeated\n", "\n", "Some nice facts about the eigenvalues of a square matrix $ A $ are as follows\n", "\n", "1. The determinant of $ A $ equals the product of the eigenvalues \n", "1. The trace of $ A $ (the sum of the elements on the principal diagonal) equals the sum of the eigenvalues \n", "1. If $ A $ is symmetric, then all of its eigenvalues are real \n", "1. If $ A $ is invertible and $ \\lambda_1, \\ldots, \\lambda_n $ are its eigenvalues, then the eigenvalues of $ A^{-1} $ are $ 1/\\lambda_1, \\ldots, 1/\\lambda_n $ \n", "\n", "\n", "A corollary of the first statement is that a matrix is invertible if and only if all its eigenvalues are nonzero\n", "\n", "Using Julia, we can solve for the eigenvalues and eigenvectors of a matrix as\n", "follows" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "hide-output": false }, "outputs": [], "source": [ "A = [1.0 2.0; 2.0 1.0];" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "hide-output": false }, "outputs": [], "source": [ "evals, evecs = eigen(A);" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "2-element Array{Float64,1}:\n", " -1.0\n", " 3.0" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "evals" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "2×2 Array{Float64,2}:\n", " -0.707107 0.707107\n", " 0.707107 0.707107" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "evecs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that the *columns* of `evecs` are the eigenvectors\n", "\n", "Since any scalar multiple of an eigenvector is an eigenvector with the same\n", "eigenvalue (check it), the eig routine normalizes the length of each eigenvector\n", "to one" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Generalized Eigenvalues\n", "\n", "It is sometimes useful to consider the *generalized eigenvalue problem*, which, for given\n", "matrices $ A $ and $ B $, seeks generalized eigenvalues\n", "$ \\lambda $ and eigenvectors $ v $ such that\n", "\n", "$$\n", "A v = \\lambda B v\n", "$$\n", "\n", "This can be solved in Julia via `eigen(A, B)`\n", "\n", "Of course, if $ B $ is square and invertible, then we can treat the\n", "generalized eigenvalue problem as an ordinary eigenvalue problem $ B^{-1}\n", "A v = \\lambda v $, but this is not always the case" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Further Topics\n", "\n", "We round out our discussion by briefly mentioning several other important\n", "topics" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Series Expansions\n", "\n", "\n", "\n", "Recall the usual summation formula for a geometric progression, which states\n", "that if $ |a| < 1 $, then $ \\sum_{k=0}^{\\infty} a^k = (1 - a)^{-1} $\n", "\n", "A generalization of this idea exists in the matrix setting\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Matrix Norms\n", "\n", "\n", "\n", "Let $ A $ be a square matrix, and let\n", "\n", "$$\n", "\\| A \\| := \\max_{\\| x \\| = 1} \\| A x \\|\n", "$$\n", "\n", "The norms on the right-hand side are ordinary vector norms, while the norm on\n", "the left-hand side is a *matrix norm* — in this case, the so-called\n", "*spectral norm*\n", "\n", "For example, for a square matrix $ S $, the condition $ \\| S \\| < 1 $ means that $ S $ is *contractive*, in the sense that it pulls all vectors towards the origin [1]\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Neumann’s Theorem\n", "\n", "\n", "\n", "Let $ A $ be a square matrix and let $ A^k := A A^{k-1} $ with $ A^1 := A $\n", "\n", "In other words, $ A^k $ is the $ k $-th power of $ A $\n", "\n", "Neumann’s theorem states the following: If $ \\| A^k \\| < 1 $ for some\n", "$ k \\in \\mathbb{N} $, then $ I - A $ is invertible, and\n", "\n", "\n", "\n", "$$\n", "(I - A)^{-1} = \\sum_{k=0}^{\\infty} A^k \\tag{4}\n", "$$\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Spectral Radius\n", "\n", "\n", "\n", "A result known as Gelfand’s formula tells us that, for any square matrix $ A $,\n", "\n", "$$\n", "\\rho(A) = \\lim_{k \\to \\infty} \\| A^k \\|^{1/k}\n", "$$\n", "\n", "Here $ \\rho(A) $ is the *spectral radius*, defined as $ \\max_i |\\lambda_i| $, where $ \\{\\lambda_i\\}_i $ is the set of eigenvalues of $ A $\n", "\n", "As a consequence of Gelfand’s formula, if all eigenvalues are strictly less than one in modulus,\n", "there exists a $ k $ with $ \\| A^k \\| < 1 $\n", "\n", "In which case [(4)](#equation-la-neumann) is valid" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Positive Definite Matrices\n", "\n", "\n", "\n", "Let $ A $ be a symmetric $ n \\times n $ matrix\n", "\n", "We say that $ A $ is\n", "\n", "1. *positive definite* if $ x' A x > 0 $ for every $ x \\in \\mathbb R ^n \\setminus \\{0\\} $ \n", "1. *positive semi-definite* or *nonnegative definite* if $ x' A x \\geq 0 $ for every $ x \\in \\mathbb R ^n $ \n", "\n", "\n", "Analogous definitions exist for negative definite and negative semi-definite matrices\n", "\n", "It is notable that if $ A $ is positive definite, then all of its eigenvalues\n", "are strictly positive, and hence $ A $ is invertible (with positive\n", "definite inverse)\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Differentiating Linear and Quadratic forms\n", "\n", "\n", "\n", "The following formulas are useful in many economic contexts. Let\n", "\n", "- $ z, x $ and $ a $ all be $ n \\times 1 $ vectors \n", "- $ A $ be an $ n \\times n $ matrix \n", "- $ B $ be an $ m \\times n $ matrix and $ y $ be an $ m \\times 1 $ vector \n", "\n", "\n", "Then\n", "\n", "1. $ \\frac{\\partial a' x}{\\partial x} = a $ \n", "1. $ \\frac{\\partial A x}{\\partial x} = A' $ \n", "1. $ \\frac{\\partial x'A x}{\\partial x} = (A + A') x $ \n", "1. $ \\frac{\\partial y'B z}{\\partial y} = B z $ \n", "1. $ \\frac{\\partial y'B z}{\\partial B} = y z' $ \n", "\n", "\n", "Exercise 1 below asks you to apply these formulas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Further Reading\n", "\n", "The documentation of the linear algebra features built into Julia can be found [here](https://docs.julialang.org/en/stable/manual/linear-algebra/)\n", "\n", "Chapters 2 and 3 of the [Econometric Theory](http://www.johnstachurski.net/emet.html) contains\n", "a discussion of linear algebra along the same lines as above, with solved exercises\n", "\n", "If you don’t mind a slightly abstract approach, a nice intermediate-level text on linear algebra\n", "is [[Janich94]](https://lectures.quantecon.org/zreferences.html#janich1994)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercises" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 1\n", "\n", "Let $ x $ be a given $ n \\times 1 $ vector and consider the problem\n", "\n", "$$\n", "v(x) = \\max_{y,u} \\left\\{ - y'P y - u' Q u \\right\\}\n", "$$\n", "\n", "subject to the linear constraint\n", "\n", "$$\n", "y = A x + B u\n", "$$\n", "\n", "Here\n", "\n", "- $ P $ is an $ n \\times n $ matrix and $ Q $ is an $ m \\times m $ matrix \n", "- $ A $ is an $ n \\times n $ matrix and $ B $ is an $ n \\times m $ matrix \n", "- both $ P $ and $ Q $ are symmetric and positive semidefinite \n", "\n", "\n", "(What must the dimensions of $ y $ and $ u $ be to make this a well-posed problem?)\n", "\n", "One way to solve the problem is to form the Lagrangian\n", "\n", "$$\n", "\\mathcal L = - y' P y - u' Q u + \\lambda' \\left[A x + B u - y\\right]\n", "$$\n", "\n", "where $ \\lambda $ is an $ n \\times 1 $ vector of Lagrange multipliers\n", "\n", "Try applying the formulas given above for differentiating quadratic and linear forms to obtain the first-order conditions for maximizing $ \\mathcal L $ with respect to $ y, u $ and minimizing it with respect to $ \\lambda $\n", "\n", "Show that these conditions imply that\n", "\n", "1. $ \\lambda = - 2 P y $ \n", "1. The optimizing choice of $ u $ satisfies $ u = - (Q + B' P B)^{-1} B' P A x $ \n", "1. The function $ v $ satisfies $ v(x) = - x' \\tilde P x $ where $ \\tilde P = A' P A - A'P B (Q + B'P B)^{-1} B' P A $ \n", "\n", "\n", "As we will see, in economic contexts Lagrange multipliers often are shadow prices\n", "\n", ">**Note**\n", ">\n", ">If we don’t care about the Lagrange multipliers, we can substitute the constraint into the objective function, and then just maximize $ -(Ax + Bu)'P (Ax + Bu) - u' Q u $ with respect to $ u $. You can verify that this leads to the same maximizer." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Solutions\n", "\n", "Thanks to [Willem Hekman](https://qutech.nl/person/willem-hekman/) and Guanlong Ren\n", "for providing this solution." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 1\n", "\n", "We have an optimization problem:\n", "\n", "$$\n", "v(x) = \\max_{y,u} \\{ -y'Py - u'Qu \\}\n", "$$\n", "\n", "s.t.\n", "\n", "$$\n", "y = Ax + Bu\n", "$$\n", "\n", "with primitives\n", "\n", "- $ P $ be a symmetric and positive semidefinite $ n \\times n $\n", " matrix. \n", "- $ Q $ be a symmetric and positive semidefinite $ m \\times m $\n", " matrix. \n", "- $ A $ an $ n \\times n $ matrix. \n", "- $ B $ an $ n \\times m $ matrix. \n", "\n", "\n", "The associated Lagrangian is :\n", "\n", "$$\n", "L = -y'Py - u'Qu + \\lambda' \\lbrack Ax + Bu - y \\rbrack\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 1.\n", "\n", "Differentiating Lagrangian equation w.r.t y and setting its derivative\n", "equal to zero yields\n", "\n", "$$\n", "\\frac{ \\partial L}{\\partial y} = - (P + P') y - \\lambda = - 2 P y - \\lambda = 0 \\:,\n", "$$\n", "\n", "since P is symmetric.\n", "\n", "Accordingly, the first-order condition for maximizing L w.r.t. y implies\n", "\n", "$$\n", "\\lambda = -2 Py \\:.\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2.\n", "\n", "Differentiating Lagrangian equation w.r.t. u and setting its derivative\n", "equal to zero yields\n", "\n", "$$\n", "\\frac{ \\partial L}{\\partial u} = - (Q + Q') u - B'\\lambda = - 2Qu + B'\\lambda = 0 \\:.\n", "$$\n", "\n", "Substituting $ \\lambda = -2 P y $ gives\n", "\n", "$$\n", "Qu + B'Py = 0 \\:.\n", "$$\n", "\n", "Substituting the linear constraint $ y = Ax + Bu $ into above\n", "equation gives\n", "\n", "$$\n", "Qu + B'P(Ax + Bu) = 0\n", "$$\n", "\n", "$$\n", "(Q + B'PB)u + B'PAx = 0\n", "$$\n", "\n", "which is the first-order condition for maximizing L w.r.t. u.\n", "\n", "Thus, the optimal choice of u must satisfy\n", "\n", "$$\n", "u = -(Q + B'PB)^{-1}B'PAx \\:,\n", "$$\n", "\n", "which follows from the definition of the first-oder conditions for\n", "Lagrangian equation." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 3.\n", "\n", "Rewriting our problem by substituting the constraint into the objective\n", "function, we get\n", "\n", "$$\n", "v(x) = \\max_{u} \\{ -(Ax+ Bu)'P(Ax+Bu) - u'Qu \\} \\:.\n", "$$\n", "\n", "Since we know the optimal choice of u satisfies \\$ u = -(Q +\n", "B’PB)^{-1}B’PAx \\$, then\n", "\n", "$$\n", "v(x) = -(Ax+ B u)'P(Ax+B u) - u'Q u \\,\\,\\,\\, with \\,\\,\\,\\, u = -(Q + B'PB)^{-1}B'PAx\n", "$$\n", "\n", "To evaluate the function\n", "\n", "$$\n", "\\begin{align}\n", "v(x) &= -(Ax+ B u)'P(Ax+Bu) - u'Q u \\\\\n", "&= -(x'A' + u'B')P(Ax+Bu) - u'Q u \\\\\n", "&= - x'A'PAx - u'B'PAx - x'A'PBu - u'B'PBu - u'Qu \\\\\n", "&= - x'A'PAx - 2u'B'PAx - u'(Q + B'PB) u\n", "\\end{align}\n", "$$\n", "\n", "For simplicity, denote by $ S := (Q + B'PB)^{-1} B'PA $, then \\$ u =\n", "-Sx\\$.\n", "\n", "Regarding the second term $ - 2u'B'PAx $,\n", "\n", "$$\n", "\\begin{align}\n", "- 2u'B'PAx &= -2 x'S'B'PAx \\\\\n", "& = 2 x'A'PB( Q + B'PB)^{-1} B'PAx\n", "\\end{align}\n", "$$\n", "\n", "Notice that the term $ (Q + B'PB)^{-1} $ is symmetric as both P and Q\n", "are symmetric.\n", "\n", "Regarding the third term $ - u'(Q + B'PB) u $,\n", "\n", "$$\n", "\\begin{align}\n", "- u'(Q + B'PB) u &= - x'S' (Q + B'PB)Sx \\\\\n", "&= -x'A'PB(Q + B'PB)^{-1}B'PAx\n", "\\end{align}\n", "$$\n", "\n", "Hence, the summation of second and third terms is\n", "$ x'A'PB(Q + B'PB)^{-1}B'PAx $.\n", "\n", "This implies that\n", "\n", "$$\n", "\\begin{align}\n", " v(x) &= - x'A'PAx - 2u'B'PAx - u'(Q + B'PB) u\\\\\n", " &= - x'A'PAx + x'A'PB(Q + B'PB)^{-1}B'PAx \\\\\n", " &= -x'[A'PA - A'PB(Q + B'PB)^{-1}B'PA] x\n", "\\end{align}\n", "$$\n", "\n", "Therefore, the solution to the optimization problem\n", "$ v(x) = -x' \\tilde{P}x $ follows the above result by denoting\n", "$ \\tilde{P} := A'PA - A'PB(Q + B'PB)^{-1}B'PA $." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Footnotes**\n", "\n", "

[1] Suppose that $ \\|S \\| < 1 $. Take any nonzero vector $ x $, and let $ r := \\|x\\| $. We have $ \\| Sx \\| = r \\| S (x/r) \\| \\leq r \\| S \\| < r = \\| x\\| $. Hence every point is pulled towards the origin." ] } ], "metadata": { "filename": "linear_algebra.rst", "kernelspec": { "display_name": "Julia 1.2", "language": "julia", "name": "julia-1.2" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.2.0" }, "title": "Linear Algebra" }, "nbformat": 4, "nbformat_minor": 2 }