Skip to content

Instantly share code, notes, and snippets.

@tobydriscoll
Last active July 25, 2022 17:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save tobydriscoll/8d87997704e9fd400e96ea860d9f6a34 to your computer and use it in GitHub Desktop.
Save tobydriscoll/8d87997704e9fd400e96ea860d9f6a34 to your computer and use it in GitHub Desktop.
Trefethen & Bau lecture notes in MATLAB
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Lecture 4: Singular value decomposition"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Geometric interpretation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The SVD has many possible interpretations and uses. We can visualize the geometry of the SVD using the same 2D picture used to illustrate the induced 2-norm."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\niFjC/weki7dh+zjn+QAAAABJRU5ErkJggg==\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"A = [-2 0; -1 3];\n",
"t = linspace(0,2*pi,300);\n",
"x1 = cos(t); x2 = sin(t);\n",
"x = [x1;x2]; Ax = A*x;\n",
"subplot(121), scatter(x1,x2,4,t,'.'), axis equal, axis off, title('x')\n",
"subplot(122), scatter(Ax(1,:),Ax(2,:),4,t,'.'), axis equal, axis off, title('Ax')\n",
"colormap(hsv)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The **left singular vectors** and their associated **singular values** are found from the major and minor axes of the ellipse. "
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"sigma =\n",
"\n",
" 3.2566 1.8424\n",
"\n",
"\n",
"U =\n",
"\n",
" 0.2883 0.9558\n",
" 0.9576 -0.2939\n"
]
}
],
"source": [
"normAx = sqrt( sum(Ax.^2,1) ); % 2-norms of all the vectors\n",
"[sigma1,k1] = max(normAx); [sigma2,k2] = min(normAx);\n",
"sigma = [ sigma1 sigma2 ]\n",
"U = [ Ax(:,k1)/sigma1 Ax(:,k2)/sigma2 ]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The **right singular vectors** are the pre-images of those vectors on the ellipse."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"V =\n",
"\n",
" -0.4694 -0.8805\n",
" 0.8830 -0.4740\n"
]
}
],
"source": [
"V = [ x(:,k1) x(:,k2) ]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nGYWsEWhBTxVElaU2MwA8H41zBujTMVKLOysxIlxMGPILXkMiIt/ZLbA3omsRQlbD3oiQoKxk+3sp\nrrgXf4zDD/fj4kWM50pupeAIiYh8p4nEsCSEGjF8CWzb0LMTF7PR04ieRj+/kLEKnS3YFI9Te9F6\nFF0W3NuMMQmsRorCERIR+Y3dCvsxtPweI5NxrgCT9sO6CVGF6DFjuM6L83RbAeDMXzAiCp+8iEnp\naD2KSemYmIZwb85D8sKCREQB0W1ASAJOZ2PMkzi1EFGF6KjFxRSEJ8NSi0mP4vR6xBaisRjj7kPD\nKsTfB+PvMCYZZ2sxLh3n6zEuHSOiMCYNI7QYoRX930OBx/2QiCggQhIAYEIlAFzWDLsVo+/E+b0I\n1SPUBACdJvRY0WlCiBZjkhGRhJjFGH8jvncnwjgMUiWOkIiISBK4qIGIiCSBBYmIiCSBBYmIiCSB\nBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmI\niCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSB\nBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmI\niCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSB\nBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmI\niCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSB\nBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCSBBYmIiCTh/wNxsgiuMeF8nQAAAABJ\nRU5ErkJggg==\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"subplot(121), scatter(x1,x2,4,t,'.'), axis equal, axis off, title('x')\n",
"hold on, plot([0 0; V(1,:)],[0 0; V(2,:)], 'k' )\n",
"text(1.2*V(1,:),1.2*V(2,:),{'v_1','v_2'})\n",
"subplot(122), scatter(Ax(1,:),Ax(2,:),4,t,'.'), axis equal, axis off, title('Ax')\n",
"hold on, plot([0 0; U(1,:).*sigma],[0 0; U(2,:).*sigma], 'k' )\n",
"text(1.1*U(1,:).*sigma,1.1*U(2,:).*sigma,{'\\sigma_1 u_1','\\sigma_2 u_2'})\n",
"colormap(hsv)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Having searched over only a finite number of vectors, we have approximately (up to choices of signs in the singular vectors) found the SVD of this matrix."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"U =\n",
"\n",
" 0.2898 0.9571\n",
" 0.9571 -0.2898\n",
"\n",
"\n",
"S =\n",
"\n",
" 3.2566 0\n",
" 0 1.8424\n",
"\n",
"\n",
"V =\n",
"\n",
" -0.4719 -0.8817\n",
" 0.8817 -0.4719\n"
]
}
],
"source": [
"[U,S,V] = svd(A)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Full versus thin"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the case of a rectangular matrix, some of the SVD is essentially dead weight. We consider (as always in this text) the case with $m>n$, a tall and skinny matrix. The range of $A$ can have at most only $n$ dimensions. The last $m-n$ columns of $U$ therefore describe the remainder of $\\mathbb{C}^m$ in which the range is embedded (i.e., the orthogonal complement). That description can be changed without affecting the matrix at all.\n",
"\n",
"Algebraically, we have \n",
"\n",
"$$U = \\bigl[ U_1 \\: U_2 \\bigr], \\qquad S = \\begin{bmatrix} S_1 \\\\ 0 \\end{bmatrix},$$\n",
"\n",
"where the breaks occur after $n$ columns in $U$ and $n$ rows in $S$. Therefore $US=U_1S_1$, and we change nothing by replacing the SVD with $U_1S_1V^*$. The book calls this the **reduced SVD**, though it is also called the **thin SVD**. "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"U =\n",
"\n",
" -4.2591e-01 -4.2726e-01 -1.9420e-01 7.7352e-01\n",
" -3.6192e-01 1.8280e-01 9.0498e-01 1.2889e-01\n",
" -6.8998e-01 -3.6876e-01 -1.1424e-01 -6.1229e-01\n",
" -4.5994e-01 8.0501e-01 -3.6090e-01 1.0080e-01\n",
"\n",
"\n",
"S =\n",
"\n",
" 1.8437e+00 0 0\n",
" 0 7.1187e-01 0\n",
" 0 0 1.7062e-01\n",
" 0 0 0\n",
"\n",
"\n",
"V =\n",
"\n",
" -5.8697e-01 -7.8890e-01 1.8195e-01\n",
" -6.6113e-01 3.3734e-01 -6.7016e-01\n",
" -4.6731e-01 5.1366e-01 7.1957e-01\n",
"\n",
"\n",
"U1 =\n",
"\n",
" -4.2591e-01 -4.2726e-01 -1.9420e-01\n",
" -3.6192e-01 1.8280e-01 9.0498e-01\n",
" -6.8998e-01 -3.6876e-01 -1.1424e-01\n",
" -4.5994e-01 8.0501e-01 -3.6090e-01\n",
"\n",
"\n",
"S1 =\n",
"\n",
" 1.8437e+00 0 0\n",
" 0 7.1187e-01 0\n",
" 0 0 1.7062e-01\n",
"\n",
"\n",
"V =\n",
"\n",
" -5.8697e-01 -7.8890e-01 1.8195e-01\n",
" -6.6113e-01 3.3734e-01 -6.7016e-01\n",
" -4.6731e-01 5.1366e-01 7.1957e-01\n"
]
}
],
"source": [
"A = rand(4,3); \n",
"[U,S,V] = svd(A) % full SVD\n",
"[U1,S1,V] = svd(A,0) % thin SVD"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The price we pay is that while the columns of $U_1$ are orthonormal, we can't call it a unitary matrix because it isn't square. Take note:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ans =\n",
"\n",
" 1.0000 0.0000 0.0000\n",
" 0.0000 1.0000 -0.0000\n",
" 0.0000 -0.0000 1.0000\n",
"\n",
"\n",
"ans =\n",
"\n",
" 0.6637 0.2461 0.0184 -0.1936 0.3450 0.0761\n",
" 0.2461 0.3066 -0.0103 0.3264 0.2112 -0.0286\n",
" 0.0184 -0.0103 0.4509 0.0661 -0.0694 0.4878\n",
" -0.1936 0.3264 0.0661 0.8162 0.0367 -0.0168\n",
" 0.3450 0.2112 -0.0694 0.0367 0.2232 -0.0599\n",
" 0.0761 -0.0286 0.4878 -0.0168 -0.0599 0.5394\n"
]
}
],
"source": [
"U1'*U1 % n by n identity\n",
"U1*U1' % NOT the m by m identity"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We'll discuss the significance of $U_1U_1^*$ in due course."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Matlab",
"language": "matlab",
"name": "matlab"
},
"language_info": {
"codemirror_mode": "octave",
"file_extension": ".m",
"help_links": [
{
"text": "MetaKernel Magics",
"url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md"
}
],
"mimetype": "text/x-octave",
"name": "matlab",
"version": "0.11.0"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment