diff --git a/HW4/README.md b/HW4/README.md new file mode 100644 index 0000000..7f04a9a --- /dev/null +++ b/HW4/README.md @@ -0,0 +1,37 @@ +# Homework #3 +## due 3/1/17 by 11:59pm + + +1. Use your repository 'roots_and_optimization'. Document all the HW4 work under the +heading `# Homework #4` in your `README.md` file + + a. Create a function called 'collar_potential_energy' that computes the total + potential energy of a collar connected to a spring and sliding on a rod. As shown in + the figure given a position, xc, and angle, theta: + + ![Collar-mass on an inclined rod](collar_mass.png) + + The spring is unstretched when x_C=0.5 m. The potential energy due to gravity is: + + PE_g=m x_C\*g\*sin(theta) + + where m=0.5 kg, and g is the acceleration due to gravity, + + and the potential energy due to the spring is: + + PE_s=1/2\*K \*(DL)^2 + + where DL = 0.5 - sqrt(0.5^2+(0.5-x_C)^2) and K=30 N/m. + + b. Use the `goldmin.m` function to solve for the minimum potential energy at xc when + theta=0. *create an anonymous function with `@(x) collar_potential_energy(x,theta)` in + the input for goldmin. Be sure to include the script that solves for xc* + + c. Create a for-loop that solves for the minimum potential energy position, xc, at a + given angle, theta, for theta = 0..90 degrees. + + d. Include a plot of xc vs theta. `plot(theta,xc)` with + + `![Steady-state position of collar on rod at angle theta](plot.png)` + +3. Commit your changes to your repository. Sync your local repository with github. diff --git a/HW4/collar_mass.png b/HW4/collar_mass.png new file mode 100644 index 0000000..f9b2836 Binary files /dev/null and b/HW4/collar_mass.png differ diff --git a/HW4/collar_mass.svg b/HW4/collar_mass.svg new file mode 100644 index 0000000..cc18c3d --- /dev/null +++ b/HW4/collar_mass.svg @@ -0,0 +1,270 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + xc + + + + + + + + 𝝷 + + + L0=0.5m + + diff --git a/README.md b/README.md index 73ca14a..c7011f5 100644 --- a/README.md +++ b/README.md @@ -79,10 +79,10 @@ general, I will not post homework solutions. | |2/16|8|Linear Algebra| |6|2/21|9|Linear systems: Gauss elimination| | |2/23|10|Linear Systems: LU factorization| -|7|2/28||Midterm Review| -| |3/2||Midterm| -|8|3/7|11|Linear Systems: Error analysis| -| |3/9|13|Eigenvalues| +|7|2/28|11|Linear Systems: Error analysis| +| |3/2|12|Eigenvalues| +|8|3/7|1-10 |Midterm Review| +| |3/9|1-10|Midterm| |9|3/14| N/A |Spring Break!| | |3/16| N/A |Spring Break!| |10|3/21|12|Linear Systems: Iterative methods| diff --git a/lecture_09/mass_springs.png b/lecture_09/mass_springs.png new file mode 100644 index 0000000..d0dc65c Binary files /dev/null and b/lecture_09/mass_springs.png differ diff --git a/lecture_09/octave-workspace b/lecture_09/octave-workspace new file mode 100644 index 0000000..f7e8b2b Binary files /dev/null and b/lecture_09/octave-workspace differ diff --git a/lecture_10/.ipynb_checkpoints/lecture_10-checkpoint.ipynb b/lecture_10/.ipynb_checkpoints/lecture_10-checkpoint.ipynb new file mode 100644 index 0000000..2fd6442 --- /dev/null +++ b/lecture_10/.ipynb_checkpoints/lecture_10-checkpoint.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lecture_10/GaussNaive.m b/lecture_10/GaussNaive.m new file mode 100644 index 0000000..d8c60d3 --- /dev/null +++ b/lecture_10/GaussNaive.m @@ -0,0 +1,25 @@ +function [x,Aug] = GaussNaive(A,y) +% GaussNaive: naive Gauss elimination +% x = GaussNaive(A,b): Gauss elimination without pivoting. +% input: +% A = coefficient matrix +% y = right hand side vector +% output: +% x = solution vector +[m,n] = size(A); +if m~=n, error('Matrix A must be square'); end +nb = n+1; +Aug = [A y]; +% forward elimination +for k = 1:n-1 + for i = k+1:n + factor = Aug(i,k)/Aug(k,k); + Aug(i,k:nb) = Aug(i,k:nb)-factor*Aug(k,k:nb); + end +end +% back substitution +x = zeros(n,1); +x(n) = Aug(n,nb)/Aug(n,n); +for i = n-1:-1:1 + x(i) = (Aug(i,nb)-Aug(i,i+1:n)*x(i+1:n))/Aug(i,i); +end diff --git a/lecture_10/GaussPivot.m b/lecture_10/GaussPivot.m new file mode 100644 index 0000000..20df9e8 --- /dev/null +++ b/lecture_10/GaussPivot.m @@ -0,0 +1,33 @@ +function [x,Aug,npivots] = GaussPivot(A,b) +% GaussPivot: Gauss elimination pivoting +% x = GaussPivot(A,b): Gauss elimination with pivoting. +% input: +% A = coefficient matrix +% b = right hand side vector +% output: +% x = solution vector +[m,n]=size(A); +if m~=n, error('Matrix A must be square'); end +nb=n+1; +Aug=[A b]; +npivots=0; % initially no pivots used +% forward elimination +for k = 1:n-1 + % partial pivoting + [big,i]=max(abs(Aug(k:n,k))); + ipr=i+k-1; + if ipr~=k + npivots=npivots+1; % if the max is not the current index ipr, pivot count + Aug([k,ipr],:)=Aug([ipr,k],:); + end + for i = k+1:n + factor=Aug(i,k)/Aug(k,k); + Aug(i,k:nb)=Aug(i,k:nb)-factor*Aug(k,k:nb); + end +end +% back substitution +x=zeros(n,1); +x(n)=Aug(n,nb)/Aug(n,n); +for i = n-1:-1:1 + x(i)=(Aug(i,nb)-Aug(i,i+1:n)*x(i+1:n))/Aug(i,i); +end diff --git a/lecture_10/Tridiag.m b/lecture_10/Tridiag.m new file mode 100644 index 0000000..ac4ec9b --- /dev/null +++ b/lecture_10/Tridiag.m @@ -0,0 +1,22 @@ +function x = Tridiag(e,f,g,r) +% Tridiag: Tridiagonal equation solver banded system +% x = Tridiag(e,f,g,r): Tridiagonal system solver. +% input: +% e = subdiagonal vector +% f = diagonal vector +% g = superdiagonal vector +% r = right hand side vector +% output: +% x = solution vector +n=length(f); +% forward elimination +for k = 2:n + factor = e(k)/f(k-1); + f(k) = f(k) - factor*g(k-1); + r(k) = r(k) - factor*r(k-1); +end +% back substitution +x(n) = r(n)/f(n); +for k = n-1:-1:1 + x(k) = (r(k)-g(k)*x(k+1))/f(k); +end diff --git a/lecture_10/lecture_10.aux b/lecture_10/lecture_10.aux new file mode 100644 index 0000000..d8d4c62 --- /dev/null +++ b/lecture_10/lecture_10.aux @@ -0,0 +1,40 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\providecommand \oddpage@label [2]{} +\@writefile{toc}{\contentsline {section}{\numberline {1}Gauss Elimination}{1}{section.1}} +\newlabel{gauss-elimination}{{1}{1}{Gauss Elimination}{section.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.0.1}Solving sets of equations with matrix operations}{1}{subsubsection.1.0.1}} +\newlabel{solving-sets-of-equations-with-matrix-operations}{{1.0.1}{1}{Solving sets of equations with matrix operations}{subsubsection.1.0.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Gauss elimination}{4}{subsection.1.1}} +\newlabel{gauss-elimination}{{1.1}{4}{Gauss elimination}{subsection.1.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.1.1}Solving sets of equations systematically}{4}{subsubsection.1.1.1}} +\newlabel{solving-sets-of-equations-systematically}{{1.1.1}{4}{Solving sets of equations systematically}{subsubsection.1.1.1}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Springs-masses\relax }}{4}{figure.caption.1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Automate Gauss Elimination}{6}{subsection.1.2}} +\newlabel{automate-gauss-elimination}{{1.2}{6}{Automate Gauss Elimination}{subsection.1.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.3}Problem (Diagonal element is zero)}{7}{subsection.1.3}} +\newlabel{problem-diagonal-element-is-zero}{{1.3}{7}{Problem (Diagonal element is zero)}{subsection.1.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.3.1}Spring-Mass System again}{9}{subsubsection.1.3.1}} +\newlabel{spring-mass-system-again}{{1.3.1}{9}{Spring-Mass System again}{subsubsection.1.3.1}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Springs-masses\relax }}{9}{figure.caption.2}} +\gdef \LT@i {\LT@entry + {2}{61.69104pt}\LT@entry + {1}{261.39424pt}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.4}Tridiagonal matrix}{10}{subsection.1.4}} +\newlabel{tridiagonal-matrix}{{1.4}{10}{Tridiagonal matrix}{subsection.1.4}{}} diff --git a/lecture_10/lecture_10.bbl b/lecture_10/lecture_10.bbl new file mode 100644 index 0000000..e69de29 diff --git a/lecture_10/lecture_10.blg b/lecture_10/lecture_10.blg new file mode 100644 index 0000000..36b5e7a --- /dev/null +++ b/lecture_10/lecture_10.blg @@ -0,0 +1,48 @@ +This is BibTeX, Version 0.99d (TeX Live 2015/Debian) +Capacity: max_strings=35307, hash_size=35307, hash_prime=30011 +The top-level auxiliary file: lecture_10.aux +I found no \citation commands---while reading file lecture_10.aux +I found no \bibdata command---while reading file lecture_10.aux +I found no \bibstyle command---while reading file lecture_10.aux +You've used 0 entries, + 0 wiz_defined-function locations, + 83 strings with 494 characters, +and the built_in function-call counts, 0 in all, are: += -- 0 +> -- 0 +< -- 0 ++ -- 0 +- -- 0 +* -- 0 +:= -- 0 +add.period$ -- 0 +call.type$ -- 0 +change.case$ -- 0 +chr.to.int$ -- 0 +cite$ -- 0 +duplicate$ -- 0 +empty$ -- 0 +format.name$ -- 0 +if$ -- 0 +int.to.chr$ -- 0 +int.to.str$ -- 0 +missing$ -- 0 +newline$ -- 0 +num.names$ -- 0 +pop$ -- 0 +preamble$ -- 0 +purify$ -- 0 +quote$ -- 0 +skip$ -- 0 +stack$ -- 0 +substring$ -- 0 +swap$ -- 0 +text.length$ -- 0 +text.prefix$ -- 0 +top$ -- 0 +type$ -- 0 +warning$ -- 0 +while$ -- 0 +width$ -- 0 +write$ -- 0 +(There were 3 error messages) diff --git a/lecture_10/lecture_10.ipynb b/lecture_10/lecture_10.ipynb new file mode 100644 index 0000000..46d4f00 --- /dev/null +++ b/lecture_10/lecture_10.ipynb @@ -0,0 +1,1685 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "setdefaults" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Gauss Elimination\n", + "### Solving sets of equations with matrix operations\n", + "\n", + "The number of dimensions of a matrix indicate the degrees of freedom of the system you are solving. \n", + "\n", + "If you have a set of known output, $y_{1},~y_{2},~...y_{N}$ and a set of equations that\n", + "relate unknown inputs, $x_{1},~x_{2},~...x_{N}$, then these can be written in a vector\n", + "matrix format as:\n", + "\n", + "$y=Ax$\n", + "\n", + "Consider a problem with 2 DOF:\n", + "\n", + "$x_{1}+3x_{2}=1$\n", + "\n", + "$2x_{1}+x_{2}=1$\n", + "\n", + "$\\left[ \\begin{array}{cc}\n", + "1 & 3 \\\\\n", + "2 & 1 \\end{array} \\right]\n", + "\\left[\\begin{array}{c} \n", + "x_{1} \\\\ \n", + "x_{2} \\end{array}\\right]=\n", + "\\left[\\begin{array}{c} \n", + "1 \\\\\n", + "1\\end{array}\\right]$\n", + "\n", + "The solution for $x_{1}$ and $x_{2}$ is the intersection of two lines:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t-4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t6\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-6\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t6\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t8\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tgnuplot_plot_2a\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x21=[-2:2];\n", + "x11=1-3*x21;\n", + "x21=[-2:2];\n", + "x22=1-2*x21;\n", + "plot(x11,x21,x21,x22)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 0.40000\n", + " 0.20000\n", + "\n" + ] + } + ], + "source": [ + "A=[1,3;2,1]; y=[1;1];\n", + "A\\y % matlab's Ax=y solution for x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For a $3\\times3$ matrix, the solution is the intersection of the 3 planes.\n", + "\n", + "$10x_{1}+2x_{2}+x_{3}=1$\n", + "\n", + "$2x_{1}+x_{2}+x_{3}=1$\n", + "\n", + "$x_{1}+2x_{2}+10x_{3}=1$\n", + "\n", + "$\\left[ \\begin{array}{cc}\n", + "10 & 2 & 1\\\\\n", + "2 & 1 & 1 \\\\\n", + "1 & 2 & 10\\end{array} \\right]\n", + "\\left[\\begin{array}{c} \n", + "x_{1} \\\\ \n", + "x_{2} \\\\\n", + "x_{3} \\end{array}\\right]=\n", + "\\left[\\begin{array}{c} \n", + "1 \\\\\n", + "1 \\\\\n", + "1\\end{array}\\right]$" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-2\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-1.5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-1\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-0.5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t0.5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t1.5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-2\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-1.5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-1\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-0.5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t0.5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t1.5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-30\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-20\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t-10\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t10\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\t30\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\tx3\n", + "\t\n", + "\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n", + "\t\n", + "\tgnuplot_plot_2a\n", + "\n", + "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n", + "\t\n", + "\tgnuplot_plot_3a\n", + "\n", + "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n", + "\t\n", + "\tgnuplot_plot_4a\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\t\t\n", + "\t\tx1\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\tx2\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\tx3\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "N=25;\n", + "x11=linspace(-2,2,N);\n", + "x12=linspace(-2,2,N);\n", + "[X11,X12]=meshgrid(x11,x12);\n", + "X13=1-10*X11-2*X12;\n", + "\n", + "x21=linspace(-2,2,N);\n", + "x22=linspace(-2,2,N);\n", + "[X21,X22]=meshgrid(x21,x22);\n", + "X23=1-2*X11-X22;\n", + "\n", + "x31=linspace(-2,2,N);\n", + "x32=linspace(-2,2,N);\n", + "[X31,X32]=meshgrid(x31,x32);\n", + "X33=1/10*(1-X31-2*X32);\n", + "\n", + "mesh(X11,X12,X13);\n", + "hold on;\n", + "mesh(X21,X22,X23)\n", + "mesh(X31,X32,X33)\n", + "x=[10,2, 1;2,1, 1; 1, 2, 10]\\[1;1;1];\n", + "plot3(x(1),x(2),x(3),'o')\n", + "xlabel('x1')\n", + "ylabel('x2')\n", + "zlabel('x3')\n", + "view(10,45)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After 3 DOF problems, the solutions are described as *hyperplane* intersections. Which are even harder to visualize" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Gauss elimination\n", + "### Solving sets of equations systematically\n", + "\n", + "$\\left[ \\begin{array}{ccc|c}\n", + " & A & & y \\\\\n", + "10 & 2 & 1 & 1\\\\\n", + "2 & 1 & 1 & 1 \\\\\n", + "1 & 2 & 10 & 1\\end{array} \n", + "\\right] $\n", + "\n", + "Ay(2,:)-Ay(1,:)/5 = ([2 1 1 1]-1/5[10 2 1 1])\n", + "\n", + "$\\left[ \\begin{array}{ccc|c}\n", + " & A & & y \\\\\n", + "10 & 2 & 1 & 1\\\\\n", + "0 & 3/5 & 4/5 & 4/5 \\\\\n", + "1 & 2 & 10 & 1\\end{array} \n", + "\\right] $\n", + "\n", + "Ay(3,:)-Ay(1,:)/10 = ([1 2 10 1]-1/10[10 2 1 1])\n", + "\n", + "$\\left[ \\begin{array}{ccc|c}\n", + " & A & & y \\\\\n", + "10 & 2 & 1 & 1\\\\\n", + "0 & 3/5 & 4/5 & 4/5 \\\\\n", + "0 & 1.8 & 9.9 & 0.9\\end{array} \n", + "\\right] $\n", + "\n", + "Ay(3,:)-1.8\\*5/3\\*Ay(2,:) = ([0 1.8 9.9 0.9]-3\\*[0 3/5 4/5 4/5])\n", + "\n", + "$\\left[ \\begin{array}{ccc|c}\n", + " & A & & y \\\\\n", + "10 & 2 & 1 & 1\\\\\n", + "0 & 3/5 & 4/5 & 4/5 \\\\\n", + "0 & 0 & 7.5 & -1.5\\end{array} \n", + "\\right] $\n", + "\n", + "now, $7.5x_{3}=-1.5$ so $x_{3}=-\\frac{1}{5}$\n", + "\n", + "then, $3/5x_{2}+4/5(-1/5)=1$ so $x_{2}=\\frac{8}{5}$\n", + "\n", + "finally, $10x_{1}+2(8/5)+1(-\\frac{1}{5})=1$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Consider the problem again from the intro to Linear Algebra, 4 masses are connected in series to 4 springs with K=10 N/m. What are the final positions of the masses? \n", + "\n", + "![Springs-masses](../lecture_09/mass_springs.svg)\n", + "\n", + "The masses haves the following amounts, 1, 2, 3, and 4 kg for masses 1-4. Using a FBD for each mass:\n", + "\n", + "$m_{1}g+k(x_{2}-x_{1})-kx_{1}=0$\n", + "\n", + "$m_{2}g+k(x_{3}-x_{2})-k(x_{2}-x_{1})=0$\n", + "\n", + "$m_{3}g+k(x_{4}-x_{3})-k(x_{3}-x_{2})=0$\n", + "\n", + "$m_{4}g-k(x_{4}-x_{3})=0$\n", + "\n", + "in matrix form:\n", + "\n", + "$\\left[ \\begin{array}{cccc}\n", + "2k & -k & 0 & 0 \\\\\n", + "-k & 2k & -k & 0 \\\\\n", + "0 & -k & 2k & -k \\\\\n", + "0 & 0 & -k & k \\end{array} \\right]\n", + "\\left[ \\begin{array}{c}\n", + "x_{1} \\\\\n", + "x_{2} \\\\\n", + "x_{3} \\\\\n", + "x_{4} \\end{array} \\right]=\n", + "\\left[ \\begin{array}{c}\n", + "m_{1}g \\\\\n", + "m_{2}g \\\\\n", + "m_{3}g \\\\\n", + "m_{4}g \\end{array} \\right]$" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "K =\n", + "\n", + " 20 -10 0 0\n", + " -10 20 -10 0\n", + " 0 -10 20 -10\n", + " 0 0 -10 10\n", + "\n", + "y =\n", + "\n", + " 9.8100\n", + " 19.6200\n", + " 29.4300\n", + " 39.2400\n", + "\n" + ] + } + ], + "source": [ + "k=10; % N/m\n", + "m1=1; % kg\n", + "m2=2;\n", + "m3=3;\n", + "m4=4;\n", + "g=9.81; % m/s^2\n", + "K=[2*k -k 0 0; -k 2*k -k 0; 0 -k 2*k -k; 0 0 -k k]\n", + "y=[m1*g;m2*g;m3*g;m4*g]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "K1 =\n", + "\n", + " 20.00000 -10.00000 0.00000 0.00000 9.81000\n", + " 0.00000 15.00000 -10.00000 0.00000 24.52500\n", + " 0.00000 -10.00000 20.00000 -10.00000 29.43000\n", + " 0.00000 0.00000 -10.00000 10.00000 39.24000\n", + "\n" + ] + } + ], + "source": [ + "K1=[K y];\n", + "K1(2,:)=K1(1,:)/2+K1(2,:)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "K2 =\n", + "\n", + " 20.00000 -10.00000 0.00000 0.00000 9.81000\n", + " 0.00000 15.00000 -10.00000 0.00000 24.52500\n", + " 0.00000 0.00000 13.33333 -10.00000 45.78000\n", + " 0.00000 0.00000 -10.00000 10.00000 39.24000\n", + "\n" + ] + } + ], + "source": [ + "K2=K1;\n", + "K2(3,:)=K1(2,:)*2/3+K1(3,:)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "K2 =\n", + "\n", + " 20.00000 -10.00000 0.00000 0.00000 9.81000\n", + " 0.00000 15.00000 -10.00000 0.00000 24.52500\n", + " 0.00000 0.00000 13.33333 -10.00000 45.78000\n", + " 0.00000 0.00000 0.00000 2.50000 73.57500\n", + "\n" + ] + } + ], + "source": [ + "K2(4,:)=-K2(3,:)*K2(4,3)/K2(3,3)+K2(4,:)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x4 = 29.430\n", + "x3 = 25.506\n", + "x2 = 18.639\n", + "x1 = 9.8100\n" + ] + } + ], + "source": [ + "yp=K2(:,5);\n", + "x4=yp(4)/K2(4,4)\n", + "x3=(yp(3)+10*x4)/K2(3,3)\n", + "x2=(yp(2)+10*x3)/K2(2,2)\n", + "x1=(yp(1)+10*x2)/K2(1,1)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 9.8100\n", + " 18.6390\n", + " 25.5060\n", + " 29.4300\n", + "\n" + ] + } + ], + "source": [ + "K\\y" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Automate Gauss Elimination\n", + "\n", + "We can automate Gauss elimination with a function whose input is A and y:\n", + "\n", + "`x=GaussNaive(A,y)`" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x =\n", + "\n", + " 9.8100\n", + " 18.6390\n", + " 25.5060\n", + " 29.4300\n", + "\n" + ] + } + ], + "source": [ + "x=GaussNaive(K,y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Problem (Diagonal element is zero)\n", + "\n", + "If a diagonal element is 0 or very small either:\n", + "\n", + "1. no solution found\n", + "2. errors are introduced \n", + "\n", + "Therefore, we would want to pivot before applying Gauss elimination\n", + "\n", + "Consider:\n", + "\n", + "(a) $\\left[ \\begin{array}{cccc}\n", + "0 & 2 & 3 \\\\\n", + "4 & 6 & 7 \\\\\n", + "2 & -3 & 6 \\end{array} \\right]\n", + "\\left[ \\begin{array}{c}\n", + "x_{1} \\\\\n", + "x_{2} \\\\\n", + "x_{3} \\end{array} \\right]=\n", + "\\left[ \\begin{array}{c}\n", + "8 \\\\\n", + "-3 \\\\\n", + "5\\end{array} \\right]$\n", + "\n", + "(b) $\\left[ \\begin{array}{cccc}\n", + "0.0003 & 3.0000 \\\\\n", + "1.0000 & 1.0000 \\end{array} \\right]\n", + "\\left[ \\begin{array}{c}\n", + "x_{1} \\\\\n", + "x_{2} \\end{array} \\right]=\n", + "\\left[ \\begin{array}{c}\n", + "2.0001 \\\\\n", + "1.0000 \\end{array} \\right]$" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "warning: division by zero\n", + "warning: called from\n", + " GaussNaive at line 16 column 12\n", + "warning: division by zero\n", + "warning: division by zero\n", + "ans =\n", + "\n", + " NaN\n", + " NaN\n", + " NaN\n", + "\n", + "ans =\n", + "\n", + " -5.423913\n", + " 0.021739\n", + " 2.652174\n", + "\n" + ] + } + ], + "source": [ + "format short\n", + "Aa=[0,2,3;4,6,7;2,-3,6]; ya=[8;-3;5];\n", + "GaussNaive(Aa,ya)\n", + "Aa\\ya" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x =\n", + "\n", + " -5.423913\n", + " 0.021739\n", + " 2.652174\n", + "\n", + "Aug =\n", + "\n", + " 4.00000 6.00000 7.00000 -3.00000\n", + " 0.00000 -6.00000 2.50000 6.50000\n", + " 0.00000 0.00000 3.83333 10.16667\n", + "\n", + "npivots = 2\n" + ] + } + ], + "source": [ + "[x,Aug,npivots]=GaussPivot(Aa,ya)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 0.325665420556713\n", + " 0.666666666666667\n", + "\n", + "ans =\n", + "\n", + " 0.333333333333333\n", + " 0.666666666666667\n", + "\n" + ] + } + ], + "source": [ + "format long\n", + "Ab=[0.3E-13,3.0000;1.0000,1.0000];yb=[2+0.1e-13;1.0000];\n", + "GaussNaive(Ab,yb)\n", + "Ab\\yb" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x =\n", + "\n", + " 0.333333333333333\n", + " 0.666666666666667\n", + "\n", + "Aug =\n", + "\n", + " 1.000000000000000 1.000000000000000 1.000000000000000\n", + " 0.000000000000000 2.999999999999970 1.999999999999980\n", + "\n", + "npivots = 1\n", + "ans =\n", + "\n", + " 0.333333333333333\n", + " 0.666666666666667\n", + "\n" + ] + } + ], + "source": [ + "[x,Aug,npivots]=GaussPivot(Ab,yb)\n", + "Ab\\yb\n", + "format short" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans = -3.0000\n", + "ans = 3.0000\n" + ] + } + ], + "source": [ + "% determinant is (-1)^(number_of_pivots)*diagonal_elements\n", + "det(Ab)\n", + "Aug(1,1)*Aug(2,2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Spring-Mass System again\n", + "Now, 4 masses are connected in series to 4 springs with $K_{1}$=10 N/m, $K_{2}$=5 N/m, \n", + "$K_{3}$=2 N/m \n", + "and $K_{4}$=1 N/m. What are the final positions of the masses? \n", + "\n", + "![Springs-masses](../lecture_09/mass_springs.svg)\n", + "\n", + "The masses have the following amounts, 1, 2, 3, and 4 kg for masses 1-4. Using a FBD for each mass:\n", + "\n", + "$m_{1}g+k_{2}(x_{2}-x_{1})-k_{1}x_{1}=0$\n", + "\n", + "$m_{2}g+k_{3}(x_{3}-x_{2})-k_{2}(x_{2}-x_{1})=0$\n", + "\n", + "$m_{3}g+k_{4}(x_{4}-x_{3})-k_{3}(x_{3}-x_{2})=0$\n", + "\n", + "$m_{4}g-k_{4}(x_{4}-x_{3})=0$\n", + "\n", + "in matrix form:\n", + "\n", + "$\\left[ \\begin{array}{cccc}\n", + "k_1+k_2 & -k_2 & 0 & 0 \\\\\n", + "-k_2 & k_2+k_3 & -k_3 & 0 \\\\\n", + "0 & -k_3 & k_3+k_4 & -k_4 \\\\\n", + "0 & 0 & -k_4 & k_4 \\end{array} \\right]\n", + "\\left[ \\begin{array}{c}\n", + "x_{1} \\\\\n", + "x_{2} \\\\\n", + "x_{3} \\\\\n", + "x_{4} \\end{array} \\right]=\n", + "\\left[ \\begin{array}{c}\n", + "m_{1}g \\\\\n", + "m_{2}g \\\\\n", + "m_{3}g \\\\\n", + "m_{4}g \\end{array} \\right]$" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "K =\n", + "\n", + " 15 -5 0 0\n", + " -5 7 -2 0\n", + " 0 -2 3 -1\n", + " 0 0 -1 1\n", + "\n", + "y =\n", + "\n", + " 9.8100\n", + " 19.6200\n", + " 29.4300\n", + " 39.2400\n", + "\n" + ] + } + ], + "source": [ + "k1=10; k2=5;k3=2;k4=1; % N/m\n", + "m1=1; % kg\n", + "m2=2;\n", + "m3=3;\n", + "m4=4;\n", + "g=9.81; % m/s^2\n", + "K=[k1+k2 -k2 0 0; -k2, k2+k3, -k3 0; 0 -k3, k3+k4, -k4; 0 0 -k4 k4]\n", + "y=[m1*g;m2*g;m3*g;m4*g]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tridiagonal matrix\n", + "\n", + "This matrix, K, could be rewritten as 3 vectors e, f and g\n", + "\n", + "$e=\\left[ \\begin{array}{c}\n", + "0 \\\\\n", + "-5 \\\\\n", + "-2 \\\\\n", + "-1 \\end{array} \\right]$\n", + "\n", + "$f=\\left[ \\begin{array}{c}\n", + "15 \\\\\n", + "7 \\\\\n", + "3 \\\\\n", + "1 \\end{array} \\right]$\n", + "\n", + "$g=\\left[ \\begin{array}{c}\n", + "-5 \\\\\n", + "-2 \\\\\n", + "-1 \\\\\n", + "0 \\end{array} \\right]$\n", + "\n", + "Where all other components are 0 and the length of the vectors are n and the first component of e and the last component of g are zero\n", + "\n", + "`e(1)=0` \n", + "\n", + "`g(end)=0`\n", + "\n", + "No need to pivot and number of calculations reduced enormously.\n", + "\n", + "|method |Number of Floating point operations for n$\\times$n-matrix|\n", + "|----------------|---------|\n", + "| Gauss | n-cubed |\n", + "| Tridiagonal | n |" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 9.8100 27.4680 61.8030 101.0430\n", + "\n", + "ans =\n", + "\n", + " 9.8100\n", + " 27.4680\n", + " 61.8030\n", + " 101.0430\n", + "\n" + ] + } + ], + "source": [ + "e=[0;-5;-2;-1];\n", + "g=[-5;-2;-1;0];\n", + "f=[15;7;3;1];\n", + "Tridiag(e,f,g,y)\n", + "K\\y\n" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "% tic ... t=toc \n", + "% is Matlab timer used for debugging programs\n", + "t_GE = zeros(1,100);\n", + "t_GE_tridiag = zeros(1,100);\n", + "t_TD = zeros(1,100);\n", + "%for n = 1:200\n", + "for n=1:100\n", + " A = rand(n,n);\n", + " e = rand(n,1); e(1)=0;\n", + " f = rand(n,1);\n", + " g = rand(n,1); g(end)=0;\n", + " Atd=diag(f, 0) - diag(e(2:n), -1) - diag(g(1:n-1), 1);\n", + " b = rand(n,1);\n", + " tic;\n", + " x = GaussPivot(A,b);\n", + " t_GE(n) = toc;\n", + " tic;\n", + " x = A\\b;\n", + " t_GE_tridiag(n) = toc;\n", + " tic;\n", + " x = Tridiag(e,f,g,b);\n", + " t_TD(n) = toc;\n", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t10-1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t101\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t102\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\ttime (s)\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\tnumber of elements\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\tGauss elim\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\tGauss elim\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tMatlab \\\n", + "\n", + "\t\n", + "\t\tMatlab \n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tTriDiag\n", + "\n", + "\t\n", + "\t\tTriDiag\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "n=1:100;\n", + "loglog(n,t_GE,n,t_TD,n,t_GE_tridiag)\n", + "legend('Gauss elim','Matlab \\','TriDiag')\n", + "xlabel('number of elements')\n", + "ylabel('time (s)')" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x =\n", + "\n", + " 9.8100\n", + " 27.4680\n", + " 61.8030\n", + " 101.0430\n", + "\n", + "Aug =\n", + "\n", + " 15.00000 -5.00000 0.00000 0.00000 9.81000\n", + " 0.00000 5.33333 -2.00000 0.00000 22.89000\n", + " 0.00000 0.00000 2.25000 -1.00000 38.01375\n", + " 0.00000 0.00000 0.00000 0.55556 56.13500\n", + "\n", + "npivots = 0\n" + ] + } + ], + "source": [ + "[x,Aug,npivots]=GaussPivot(K,y)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A =\n", + "\n", + " 15.00000 -5.00000 0.00000 0.00000\n", + " 0.00000 5.33333 -2.00000 0.00000\n", + " 0.00000 0.00000 2.25000 -1.00000\n", + " 0.00000 0.00000 0.00000 0.55556\n", + "\n" + ] + } + ], + "source": [ + "A=Aug(1:4,1:4)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans = 100.00\n", + "detA = 100.00\n" + ] + } + ], + "source": [ + "det(A)\n", + "detA=A(1,1)*A(2,2)*A(3,3)*A(4,4)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Octave", + "language": "octave", + "name": "octave" + }, + "language_info": { + "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": "octave", + "version": "0.19.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lecture_10/lecture_10.log b/lecture_10/lecture_10.log new file mode 100644 index 0000000..9e3113d --- /dev/null +++ b/lecture_10/lecture_10.log @@ -0,0 +1,871 @@ +This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015/Debian) (preloaded format=pdflatex 2017.1.11) 21 FEB 2017 11:46 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**lecture_10.tex +(./lecture_10.tex +LaTeX2e <2016/02/01> +Babel <3.9q> and hyphenation patterns for 81 language(s) loaded. +(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls +Document Class: article 2014/09/29 v1.4h Standard LaTeX document class +(/usr/share/texlive/texmf-dist/tex/latex/base/size11.clo +File: size11.clo 2014/09/29 v1.4h Standard LaTeX file (size option) +) +\c@part=\count79 +\c@section=\count80 +\c@subsection=\count81 +\c@subsubsection=\count82 +\c@paragraph=\count83 +\c@subparagraph=\count84 +\c@figure=\count85 +\c@table=\count86 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\bibindent=\dimen102 +) +(/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty +Package: fontenc 2005/09/27 v1.99g Standard LaTeX package + +(/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.def +File: t1enc.def 2005/09/27 v1.99g Standard LaTeX file +LaTeX Font Info: Redeclaring font encoding T1 on input line 48. +)) +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/mathpazo.sty +Package: mathpazo 2005/04/12 PSNFSS-v9.2a Palatino w/ Pazo Math (D.Puga, WaS) +\symupright=\mathgroup4 +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks14 +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2016/01/03 v1.0q Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2016/01/03 v1.10 sin cos tan (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/graphics.cfg +File: graphics.cfg 2010/04/23 v1.9 graphics configuration of TeX Live +) +Package graphics Info: Driver file: pdftex.def on input line 95. + +(/usr/share/texlive/texmf-dist/tex/latex/pdftex-def/pdftex.def +File: pdftex.def 2011/05/27 v0.06d Graphics/color for pdfTeX + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty +Package: infwarerr 2010/04/08 v1.3 Providing info/warning/error messages (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +Package: ltxcmds 2011/11/09 v1.22 LaTeX kernel commands for general use (HO) +) +\Gread@gobject=\count87 +)) +\Gin@req@height=\dimen103 +\Gin@req@width=\dimen104 +) +(/usr/share/texlive/texmf-dist/tex/latex/caption/caption.sty +Package: caption 2016/02/21 v3.3-144 Customizing captions (AR) + +(/usr/share/texlive/texmf-dist/tex/latex/caption/caption3.sty +Package: caption3 2016/02/04 v1.7-139 caption3 kernel (AR) +Package caption3 Info: TeX engine: e-TeX on input line 67. +\captionmargin=\dimen105 +\captionmargin@=\dimen106 +\captionwidth=\dimen107 +\caption@tempdima=\dimen108 +\caption@indent=\dimen109 +\caption@parindent=\dimen110 +\caption@hangindent=\dimen111 +) +\c@ContinuedFloat=\count88 +) +(/usr/share/texlive/texmf-dist/tex/latex/adjustbox/adjustbox.sty +Package: adjustbox 2012/05/21 v1.0 Adjusting TeX boxes (trim, clip, ...) + +(/usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty +Package: xkeyval 2014/12/03 v2.7a package option processing (HA) + +(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex +(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkvutils.tex +\XKV@toks=\toks15 +\XKV@tempa@toks=\toks16 +) +\XKV@depth=\count89 +File: xkeyval.tex 2014/12/03 v2.7a key=value parser (HA) +)) +(/usr/share/texlive/texmf-dist/tex/latex/adjustbox/adjcalc.sty +Package: adjcalc 2012/05/16 v1.1 Provides advanced setlength with multiple back +-ends (calc, etex, pgfmath) +) +(/usr/share/texlive/texmf-dist/tex/latex/adjustbox/trimclip.sty +Package: trimclip 2012/05/16 v1.0 Trim and clip general TeX material + +(/usr/share/texlive/texmf-dist/tex/latex/collectbox/collectbox.sty +Package: collectbox 2012/05/17 v0.4b Collect macro arguments as boxes +\collectedbox=\box26 +) +\tc@llx=\dimen112 +\tc@lly=\dimen113 +\tc@urx=\dimen114 +\tc@ury=\dimen115 +Package trimclip Info: Using driver 'tc-pdftex.def'. + +(/usr/share/texlive/texmf-dist/tex/latex/adjustbox/tc-pdftex.def +File: tc-pdftex.def 2012/05/13 v1.0 Clipping driver for pdftex +)) +\adjbox@Width=\dimen116 +\adjbox@Height=\dimen117 +\adjbox@Depth=\dimen118 +\adjbox@Totalheight=\dimen119 + +(/usr/share/texlive/texmf-dist/tex/latex/ifoddpage/ifoddpage.sty +Package: ifoddpage 2011/09/13 v1.0 Conditionals for odd/even page detection +\c@checkoddpage=\count90 +) +(/usr/share/texlive/texmf-dist/tex/latex/varwidth/varwidth.sty +Package: varwidth 2009/03/30 ver 0.92; Variable-width minipages +\@vwid@box=\box27 +\sift@deathcycles=\count91 +\@vwid@loff=\dimen120 +\@vwid@roff=\dimen121 +)) +(/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2007/01/21 v2.11 LaTeX color extensions (UK) + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/color.cfg +File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive +) +Package xcolor Info: Driver file: pdftex.def on input line 225. +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1337. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1341. +Package xcolor Info: Model `RGB' extended on input line 1353. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1355. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1356. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1357. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1358. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1359. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1360. +) +(/usr/share/texlive/texmf-dist/tex/latex/tools/enumerate.sty +Package: enumerate 2015/07/23 v3.00 enumerate extensions (DPC) +\@enLab=\toks17 +) +(/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty +Package: geometry 2010/09/12 v5.6 Page Geometry + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty +Package: ifpdf 2011/01/30 v2.3 Provides the ifpdf switch (HO) +Package ifpdf Info: pdfTeX in PDF mode is detected. +) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty +Package: ifvtex 2010/03/01 v1.5 Detect VTeX and its facilities (HO) +Package ifvtex Info: VTeX not detected. +) +(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty +Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional +) +\Gm@cnth=\count92 +\Gm@cntv=\count93 +\c@Gm@tempcnt=\count94 +\Gm@bindingoffset=\dimen122 +\Gm@wd@mp=\dimen123 +\Gm@odd@mp=\dimen124 +\Gm@even@mp=\dimen125 +\Gm@layoutwidth=\dimen126 +\Gm@layoutheight=\dimen127 +\Gm@layouthoffset=\dimen128 +\Gm@layoutvoffset=\dimen129 +\Gm@dimlist=\toks18 +) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty +Package: amsmath 2016/03/03 v2.15a AMS math features +\@mathmargin=\skip43 + +For additional information on amsmath, use the `?' option. +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty +Package: amstext 2000/06/29 v2.01 AMS text + +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty +File: amsgen.sty 1999/11/30 v2.0 generic functions +\@emptytoks=\toks19 +\ex@=\dimen130 +)) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty +Package: amsbsy 1999/11/29 v1.2d Bold Symbols +\pmbraise@=\dimen131 +) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty +Package: amsopn 1999/12/14 v2.01 operator names +) +\inf@bad=\count95 +LaTeX Info: Redefining \frac on input line 199. +\uproot@=\count96 +\leftroot@=\count97 +LaTeX Info: Redefining \overline on input line 297. +\classnum@=\count98 +\DOTSCASE@=\count99 +LaTeX Info: Redefining \ldots on input line 394. +LaTeX Info: Redefining \dots on input line 397. +LaTeX Info: Redefining \cdots on input line 518. +\Mathstrutbox@=\box28 +\strutbox@=\box29 +\big@size=\dimen132 +LaTeX Font Info: Redeclaring font encoding OML on input line 630. +LaTeX Font Info: Redeclaring font encoding OMS on input line 631. +\macc@depth=\count100 +\c@MaxMatrixCols=\count101 +\dotsspace@=\muskip10 +\c@parentequation=\count102 +\dspbrk@lvl=\count103 +\tag@help=\toks20 +\row@=\count104 +\column@=\count105 +\maxfields@=\count106 +\andhelp@=\toks21 +\eqnshift@=\dimen133 +\alignsep@=\dimen134 +\tagshift@=\dimen135 +\tagwidth@=\dimen136 +\totwidth@=\dimen137 +\lineht@=\dimen138 +\@envbody=\toks22 +\multlinegap=\skip44 +\multlinetaggap=\skip45 +\mathdisplay@stack=\toks23 +LaTeX Info: Redefining \[ on input line 2735. +LaTeX Info: Redefining \] on input line 2736. +) +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty +Package: amssymb 2013/01/14 v3.01 AMS font symbols + +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty +Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support +\symAMSa=\mathgroup5 +\symAMSb=\mathgroup6 +LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' +(Font) U/euf/m/n --> U/euf/b/n on input line 106. +)) +(/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty +Package: textcomp 2005/09/27 v1.99g Standard LaTeX package +Package textcomp Info: Sub-encoding information: +(textcomp) 5 = only ISO-Adobe without \textcurrency +(textcomp) 4 = 5 + \texteuro +(textcomp) 3 = 4 + \textohm +(textcomp) 2 = 3 + \textestimated + \textcurrency +(textcomp) 1 = TS1 - \textcircled - \t +(textcomp) 0 = TS1 (full) +(textcomp) Font families with sub-encoding setting implement +(textcomp) only a restricted character set as indicated. +(textcomp) Family '?' is the default used for unknown fonts. +(textcomp) See the documentation for details. +Package textcomp Info: Setting ? sub-encoding to TS1/1 on input line 79. + +(/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.def +File: ts1enc.def 2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file +) +LaTeX Info: Redefining \oldstylenums on input line 334. +Package textcomp Info: Setting cmr sub-encoding to TS1/0 on input line 349. +Package textcomp Info: Setting cmss sub-encoding to TS1/0 on input line 350. +Package textcomp Info: Setting cmtt sub-encoding to TS1/0 on input line 351. +Package textcomp Info: Setting cmvtt sub-encoding to TS1/0 on input line 352. +Package textcomp Info: Setting cmbr sub-encoding to TS1/0 on input line 353. +Package textcomp Info: Setting cmtl sub-encoding to TS1/0 on input line 354. +Package textcomp Info: Setting ccr sub-encoding to TS1/0 on input line 355. +Package textcomp Info: Setting ptm sub-encoding to TS1/4 on input line 356. +Package textcomp Info: Setting pcr sub-encoding to TS1/4 on input line 357. +Package textcomp Info: Setting phv sub-encoding to TS1/4 on input line 358. +Package textcomp Info: Setting ppl sub-encoding to TS1/3 on input line 359. +Package textcomp Info: Setting pag sub-encoding to TS1/4 on input line 360. +Package textcomp Info: Setting pbk sub-encoding to TS1/4 on input line 361. +Package textcomp Info: Setting pnc sub-encoding to TS1/4 on input line 362. +Package textcomp Info: Setting pzc sub-encoding to TS1/4 on input line 363. +Package textcomp Info: Setting bch sub-encoding to TS1/4 on input line 364. +Package textcomp Info: Setting put sub-encoding to TS1/5 on input line 365. +Package textcomp Info: Setting uag sub-encoding to TS1/5 on input line 366. +Package textcomp Info: Setting ugq sub-encoding to TS1/5 on input line 367. +Package textcomp Info: Setting ul8 sub-encoding to TS1/4 on input line 368. +Package textcomp Info: Setting ul9 sub-encoding to TS1/4 on input line 369. +Package textcomp Info: Setting augie sub-encoding to TS1/5 on input line 370. +Package textcomp Info: Setting dayrom sub-encoding to TS1/3 on input line 371. +Package textcomp Info: Setting dayroms sub-encoding to TS1/3 on input line 372. + +Package textcomp Info: Setting pxr sub-encoding to TS1/0 on input line 373. +Package textcomp Info: Setting pxss sub-encoding to TS1/0 on input line 374. +Package textcomp Info: Setting pxtt sub-encoding to TS1/0 on input line 375. +Package textcomp Info: Setting txr sub-encoding to TS1/0 on input line 376. +Package textcomp Info: Setting txss sub-encoding to TS1/0 on input line 377. +Package textcomp Info: Setting txtt sub-encoding to TS1/0 on input line 378. +Package textcomp Info: Setting lmr sub-encoding to TS1/0 on input line 379. +Package textcomp Info: Setting lmdh sub-encoding to TS1/0 on input line 380. +Package textcomp Info: Setting lmss sub-encoding to TS1/0 on input line 381. +Package textcomp Info: Setting lmssq sub-encoding to TS1/0 on input line 382. +Package textcomp Info: Setting lmvtt sub-encoding to TS1/0 on input line 383. +Package textcomp Info: Setting lmtt sub-encoding to TS1/0 on input line 384. +Package textcomp Info: Setting qhv sub-encoding to TS1/0 on input line 385. +Package textcomp Info: Setting qag sub-encoding to TS1/0 on input line 386. +Package textcomp Info: Setting qbk sub-encoding to TS1/0 on input line 387. +Package textcomp Info: Setting qcr sub-encoding to TS1/0 on input line 388. +Package textcomp Info: Setting qcs sub-encoding to TS1/0 on input line 389. +Package textcomp Info: Setting qpl sub-encoding to TS1/0 on input line 390. +Package textcomp Info: Setting qtm sub-encoding to TS1/0 on input line 391. +Package textcomp Info: Setting qzc sub-encoding to TS1/0 on input line 392. +Package textcomp Info: Setting qhvc sub-encoding to TS1/0 on input line 393. +Package textcomp Info: Setting futs sub-encoding to TS1/4 on input line 394. +Package textcomp Info: Setting futx sub-encoding to TS1/4 on input line 395. +Package textcomp Info: Setting futj sub-encoding to TS1/4 on input line 396. +Package textcomp Info: Setting hlh sub-encoding to TS1/3 on input line 397. +Package textcomp Info: Setting hls sub-encoding to TS1/3 on input line 398. +Package textcomp Info: Setting hlst sub-encoding to TS1/3 on input line 399. +Package textcomp Info: Setting hlct sub-encoding to TS1/5 on input line 400. +Package textcomp Info: Setting hlx sub-encoding to TS1/5 on input line 401. +Package textcomp Info: Setting hlce sub-encoding to TS1/5 on input line 402. +Package textcomp Info: Setting hlcn sub-encoding to TS1/5 on input line 403. +Package textcomp Info: Setting hlcw sub-encoding to TS1/5 on input line 404. +Package textcomp Info: Setting hlcf sub-encoding to TS1/5 on input line 405. +Package textcomp Info: Setting pplx sub-encoding to TS1/3 on input line 406. +Package textcomp Info: Setting pplj sub-encoding to TS1/3 on input line 407. +Package textcomp Info: Setting ptmx sub-encoding to TS1/4 on input line 408. +Package textcomp Info: Setting ptmj sub-encoding to TS1/4 on input line 409. +) +(/usr/share/texlive/texmf-dist/tex/latex/upquote/upquote.sty +Package: upquote 2012/04/19 v1.3 upright-quote and grave-accent glyphs in verba +tim +) +(/usr/share/texlive/texmf-dist/tex/latex/eurosym/eurosym.sty +Package: eurosym 1998/08/06 v1.1 European currency symbol ``Euro'' +\@eurobox=\box30 +) +(/usr/share/texlive/texmf-dist/tex/latex/ucs/ucs.sty +Package: ucs 2013/05/11 v2.2 UCS: Unicode input support + +(/usr/share/texlive/texmf-dist/tex/latex/ucs/data/uni-global.def +File: uni-global.def 2013/05/13 UCS: Unicode global data +) +\uc@secondtry=\count107 +\uc@combtoks=\toks24 +\uc@combtoksb=\toks25 +\uc@temptokena=\toks26 +) +(/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty +Package: inputenc 2015/03/17 v1.2c Input encoding file +\inpenc@prehook=\toks27 +\inpenc@posthook=\toks28 + +(/usr/share/texlive/texmf-dist/tex/latex/ucs/utf8x.def +File: utf8x.def 2004/10/17 UCS: Input encoding UTF-8 +)) +(/usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +Package: fancyvrb 2008/02/07 + +Style option: `fancyvrb' v2.7a, with DG/SPQR fixes, and firstline=lastline fix +<2008/02/07> (tvz) +\FV@CodeLineNo=\count108 +\FV@InFile=\read1 +\FV@TabBox=\box31 +\c@FancyVerbLine=\count109 +\FV@StepNumber=\count110 +\FV@OutFile=\write3 +) +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grffile.sty +Package: grffile 2012/04/05 v1.16 Extended file name support for graphics (HO) + +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty +Package: kvoptions 2011/06/30 v3.11 Key value format for package options (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty +Package: kvsetkeys 2012/04/25 v1.16 Key value parser (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty +Package: etexcmds 2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty +Package: ifluatex 2010/03/01 v1.3 Provides the ifluatex switch (HO) +Package ifluatex Info: LuaTeX not detected. +) +Package etexcmds Info: Could not find \expanded. +(etexcmds) That can mean that you are not using pdfTeX 1.50 or +(etexcmds) that some package has redefined \expanded. +(etexcmds) In the latter case, load this package earlier. +))) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty +Package: pdftexcmds 2011/11/29 v0.20 Utility functions of pdfTeX for LuaTeX (HO +) +Package pdftexcmds Info: LuaTeX not detected. +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +) +Package grffile Info: Option `multidot' is set to `true'. +Package grffile Info: Option `extendedchars' is set to `false'. +Package grffile Info: Option `space' is set to `true'. +Package grffile Info: \Gin@ii of package `graphicx' fixed on input line 486. +) +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +Package: hyperref 2012/11/06 v6.83m Hypertext links for LaTeX + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +Package: hobsub-hyperref 2012/05/28 v1.13 Bundle oberdiek, subset hyperref (HO) + + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty +Package: hobsub-generic 2012/05/28 v1.13 Bundle oberdiek, subset generic (HO) +Package: hobsub 2012/05/28 v1.13 Construct package bundles (HO) +Package hobsub Info: Skipping package `infwarerr' (already loaded). +Package hobsub Info: Skipping package `ltxcmds' (already loaded). +Package hobsub Info: Skipping package `ifluatex' (already loaded). +Package hobsub Info: Skipping package `ifvtex' (already loaded). +Package: intcalc 2007/09/27 v1.1 Expandable calculations with integers (HO) +Package hobsub Info: Skipping package `ifpdf' (already loaded). +Package hobsub Info: Skipping package `etexcmds' (already loaded). +Package hobsub Info: Skipping package `kvsetkeys' (already loaded). +Package: kvdefinekeys 2011/04/07 v1.3 Define keys (HO) +Package hobsub Info: Skipping package `pdftexcmds' (already loaded). +Package: pdfescape 2011/11/25 v1.13 Implements pdfTeX's escape features (HO) +Package: bigintcalc 2012/04/08 v1.3 Expandable calculations on big integers (HO +) +Package: bitset 2011/01/30 v1.1 Handle bit-vector datatype (HO) +Package: uniquecounter 2011/01/30 v1.2 Provide unlimited unique counter (HO) +) +Package hobsub Info: Skipping package `hobsub' (already loaded). +Package: letltxmacro 2010/09/02 v1.4 Let assignment for LaTeX macros (HO) +Package: hopatch 2012/05/28 v1.2 Wrapper for package hooks (HO) +Package: xcolor-patch 2011/01/30 xcolor patch +Package: atveryend 2011/06/30 v1.8 Hooks at the very end of document (HO) +Package atveryend Info: \enddocument detected (standard20110627). +Package: atbegshi 2011/10/05 v1.16 At begin shipout hook (HO) +Package: refcount 2011/10/16 v3.4 Data extraction from label references (HO) +Package: hycolor 2011/01/30 v1.7 Color options for hyperref/bookmark (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty +Package: auxhook 2011/03/04 v1.3 Hooks for auxiliary files (HO) +) +\@linkdim=\dimen139 +\Hy@linkcounter=\count111 +\Hy@pagecounter=\count112 + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +File: pd1enc.def 2012/11/06 v6.83m Hyperref: PDFDocEncoding definition (HO) +) +\Hy@SavedSpaceFactor=\count113 + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg +File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive +) +Package hyperref Info: Hyper figures OFF on input line 4443. +Package hyperref Info: Link nesting OFF on input line 4448. +Package hyperref Info: Hyper index ON on input line 4451. +Package hyperref Info: Plain pages OFF on input line 4458. +Package hyperref Info: Backreferencing OFF on input line 4463. +Package hyperref Info: Implicit mode ON; LaTeX internals redefined. +Package hyperref Info: Bookmarks ON on input line 4688. +\c@Hy@tempcnt=\count114 + +(/usr/share/texlive/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip11 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +LaTeX Info: Redefining \url on input line 5041. +\XeTeXLinkMargin=\dimen140 +\Fld@menulength=\count115 +\Field@Width=\dimen141 +\Fld@charsize=\dimen142 +Package hyperref Info: Hyper figures OFF on input line 6295. +Package hyperref Info: Link nesting OFF on input line 6300. +Package hyperref Info: Hyper index ON on input line 6303. +Package hyperref Info: backreferencing OFF on input line 6310. +Package hyperref Info: Link coloring OFF on input line 6315. +Package hyperref Info: Link coloring with OCG OFF on input line 6320. +Package hyperref Info: PDF/A mode OFF on input line 6325. +LaTeX Info: Redefining \ref on input line 6365. +LaTeX Info: Redefining \pageref on input line 6369. +\Hy@abspage=\count116 +\c@Item=\count117 +\c@Hfootnote=\count118 +) + +Package hyperref Message: Driver (autodetected): hpdftex. + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def +File: hpdftex.def 2012/11/06 v6.83m Hyperref driver for pdfTeX +\Fld@listcount=\count119 +\c@bookmark@seq@number=\count120 + +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty +Package: rerunfilecheck 2011/04/15 v1.7 Rerun checks for auxiliary files (HO) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 +82. +) +\Hy@SectionHShift=\skip46 +) +(/usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty +Package: longtable 2014/10/28 v4.11 Multi-page Table package (DPC) +\LTleft=\skip47 +\LTright=\skip48 +\LTpre=\skip49 +\LTpost=\skip50 +\LTchunksize=\count121 +\LTcapwidth=\dimen143 +\LT@head=\box32 +\LT@firsthead=\box33 +\LT@foot=\box34 +\LT@lastfoot=\box35 +\LT@cols=\count122 +\LT@rows=\count123 +\c@LT@tables=\count124 +\c@LT@chunks=\count125 +\LT@p@ftn=\toks29 +) +(/usr/share/texlive/texmf-dist/tex/latex/booktabs/booktabs.sty +Package: booktabs 2005/04/14 v1.61803 publication quality tables +\heavyrulewidth=\dimen144 +\lightrulewidth=\dimen145 +\cmidrulewidth=\dimen146 +\belowrulesep=\dimen147 +\belowbottomsep=\dimen148 +\aboverulesep=\dimen149 +\abovetopsep=\dimen150 +\cmidrulesep=\dimen151 +\cmidrulekern=\dimen152 +\defaultaddspace=\dimen153 +\@cmidla=\count126 +\@cmidlb=\count127 +\@aboverulesep=\dimen154 +\@belowrulesep=\dimen155 +\@thisruleclass=\count128 +\@lastruleclass=\count129 +\@thisrulewidth=\dimen156 +) +(/usr/share/texlive/texmf-dist/tex/latex/enumitem/enumitem.sty +Package: enumitem 2011/09/28 v3.5.2 Customized lists +\labelindent=\skip51 +\enit@outerparindent=\dimen157 +\enit@toks=\toks30 +\enit@inbox=\box36 +\enitdp@description=\count130 +) +(/usr/share/texlive/texmf-dist/tex/generic/ulem/ulem.sty +\UL@box=\box37 +\UL@hyphenbox=\box38 +\UL@skip=\skip52 +\UL@hook=\toks31 +\UL@height=\dimen158 +\UL@pe=\count131 +\UL@pixel=\dimen159 +\ULC@box=\box39 +Package: ulem 2012/05/18 +\ULdepth=\dimen160 +) +Package hyperref Info: Option `breaklinks' set `true' on input line 264. +Package hyperref Info: Option `colorlinks' set `true' on input line 264. + (./lecture_10.aux + +LaTeX Warning: Label `gauss-elimination' multiply defined. + +) +\openout1 = `lecture_10.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 271. +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 271. +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 271. +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 271. +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 271. +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 271. +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 271. +LaTeX Font Info: Try loading font information for TS1+cmr on input line 271. + + (/usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd +File: ts1cmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions +) +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 271. +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Try loading font information for T1+ppl on input line 271. + +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ppl.fd +File: t1ppl.fd 2001/06/04 font definitions for T1/ppl. +) +(/usr/share/texlive/texmf-dist/tex/context/base/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count132 +\scratchdimen=\dimen161 +\scratchbox=\box40 +\nofMPsegments=\count133 +\nofMParguments=\count134 +\everyMPshowfont=\toks32 +\MPscratchCnt=\count135 +\MPscratchDim=\dimen162 +\MPnumerator=\count136 +\makeMPintoPDFobject=\count137 +\everyMPtoPDFconversion=\toks33 +) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty +Package: epstopdf-base 2010/02/09 v2.5 Base part for package epstopdf + +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty +Package: grfext 2010/08/19 v1.1 Manage graphics extensions (HO) +) +Package grfext Info: Graphics extension search list: +(grfext) [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE +G,.JBIG2,.JB2,.eps] +(grfext) \AppendGraphicsExtensions on input line 452. + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +Package caption Info: Begin \AtBeginDocument code. +Package caption Info: hyperref package is loaded. +Package caption Info: longtable package is loaded. + +(/usr/share/texlive/texmf-dist/tex/latex/caption/ltcaption.sty +Package: ltcaption 2013/06/09 v1.4-94 longtable captions (AR) +) +Package caption Info: End \AtBeginDocument code. + +*geometry* driver: auto-detecting +*geometry* detected driver: pdftex +*geometry* verbose mode - [ preamble ] result: +* driver: pdftex +* paper: +* layout: +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* modes: +* h-part:(L,W,R)=(72.26999pt, 469.75502pt, 72.26999pt) +* v-part:(T,H,B)=(72.26999pt, 650.43001pt, 72.26999pt) +* \paperwidth=614.295pt +* \paperheight=794.96999pt +* \textwidth=469.75502pt +* \textheight=650.43001pt +* \oddsidemargin=0.0pt +* \evensidemargin=0.0pt +* \topmargin=-37.0pt +* \headheight=12.0pt +* \headsep=25.0pt +* \topskip=11.0pt +* \footskip=30.0pt +* \marginparwidth=59.0pt +* \marginparsep=10.0pt +* \columnsep=10.0pt +* \skip\footins=10.0pt plus 4.0pt minus 2.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumnfalse +* \@twosidefalse +* \@mparswitchfalse +* \@reversemarginfalse +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +(/usr/share/texlive/texmf-dist/tex/latex/ucs/ucsencs.def +File: ucsencs.def 2011/01/21 Fixes to fontencodings LGR, T3 +) +\AtBeginShipoutBox=\box41 +Package hyperref Info: Link coloring ON on input line 271. + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty +Package: nameref 2012/10/27 v2.43 Cross-referencing by name of section + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty +Package: gettitlestring 2010/12/03 v1.4 Cleanup title references (HO) +) +\c@section@level=\count138 +) +LaTeX Info: Redefining \ref on input line 271. +LaTeX Info: Redefining \pageref on input line 271. +LaTeX Info: Redefining \nameref on input line 271. + +(./lecture_10.out) (./lecture_10.out) +\@outlinefile=\write4 +\openout4 = `lecture_10.out'. + +LaTeX Font Info: Try loading font information for OT1+ppl on input line 275. + + +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1ppl.fd +File: ot1ppl.fd 2001/06/04 font definitions for OT1/ppl. +) +LaTeX Font Info: Try loading font information for OML+zplm on input line 275 +. + +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/omlzplm.fd +File: omlzplm.fd 2002/09/08 Fontinst v1.914 font definitions for OML/zplm. +) +LaTeX Font Info: Try loading font information for OMS+zplm on input line 275 +. + +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/omszplm.fd +File: omszplm.fd 2002/09/08 Fontinst v1.914 font definitions for OMS/zplm. +) +LaTeX Font Info: Try loading font information for OMX+zplm on input line 275 +. + +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/omxzplm.fd +File: omxzplm.fd 2002/09/08 Fontinst v1.914 font definitions for OMX/zplm. +) +LaTeX Font Info: Try loading font information for OT1+zplm on input line 275 +. + +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1zplm.fd +File: ot1zplm.fd 2002/09/08 Fontinst v1.914 font definitions for OT1/zplm. +) +LaTeX Font Info: Font shape `U/msa/m/n' will be +(Font) scaled to size 12.50409pt on input line 275. +LaTeX Font Info: Font shape `U/msa/m/n' will be +(Font) scaled to size 9.37807pt on input line 275. +LaTeX Font Info: Font shape `U/msa/m/n' will be +(Font) scaled to size 7.29405pt on input line 275. +LaTeX Font Info: Font shape `U/msb/m/n' will be +(Font) scaled to size 12.50409pt on input line 275. +LaTeX Font Info: Font shape `U/msb/m/n' will be +(Font) scaled to size 9.37807pt on input line 275. +LaTeX Font Info: Font shape `U/msb/m/n' will be +(Font) scaled to size 7.29405pt on input line 275. + + +LaTeX Warning: No \author given. + +LaTeX Font Info: Try loading font information for T1+cmtt on input line 279. + +(/usr/share/texlive/texmf-dist/tex/latex/base/t1cmtt.fd +File: t1cmtt.fd 2014/09/29 v2.5h Standard LaTeX font definitions +) +LaTeX Font Info: Font shape `T1/ppl/bx/n' in size <14.4> not available +(Font) Font shape `T1/ppl/b/n' tried instead on input line 287. +LaTeX Font Info: Font shape `T1/ppl/bx/n' in size <10.95> not available +(Font) Font shape `T1/ppl/b/n' tried instead on input line 290. + + +Package hyperref Warning: Difference (2) between bookmark levels is greater +(hyperref) than one, level fixed on input line 290. + +LaTeX Font Info: Font shape `U/msa/m/n' will be +(Font) scaled to size 11.40997pt on input line 295. +LaTeX Font Info: Font shape `U/msa/m/n' will be +(Font) scaled to size 8.33606pt on input line 295. +LaTeX Font Info: Font shape `U/msa/m/n' will be +(Font) scaled to size 6.25204pt on input line 295. +LaTeX Font Info: Font shape `U/msb/m/n' will be +(Font) scaled to size 11.40997pt on input line 295. +LaTeX Font Info: Font shape `U/msb/m/n' will be +(Font) scaled to size 8.33606pt on input line 295. +LaTeX Font Info: Font shape `U/msb/m/n' will be +(Font) scaled to size 6.25204pt on input line 295. + +File: lecture_10_files/lecture_10_3_0.pdf Graphic file (type pdf) + + +Package pdftex.def Info: lecture_10_files/lecture_10_3_0.pdf used on input line + 321. +(pdftex.def) Requested size: 449.6789pt x 337.25917pt. + [1 + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] +Underfull \hbox (badness 10000) in paragraph at lines 323--324 + + [] + +LaTeX Font Info: Try loading font information for TS1+cmtt on input line 327 +. +(/usr/share/texlive/texmf-dist/tex/latex/base/ts1cmtt.fd +File: ts1cmtt.fd 2014/09/29 v2.5h Standard LaTeX font definitions +) [2 <./lecture_10_files/lecture_10_3_0.pdf>] + +File: lecture_10_files/lecture_10_6_0.pdf Graphic file (type pdf) + + +Package pdftex.def Info: lecture_10_files/lecture_10_6_0.pdf used on input line + 382. +(pdftex.def) Requested size: 449.6789pt x 337.25917pt. + +Underfull \hbox (badness 10000) in paragraph at lines 384--385 + + [] + +[3 <./lecture_10_files/lecture_10_6_0.pdf>] +LaTeX Font Info: Font shape `T1/ppl/bx/n' in size <12> not available +(Font) Font shape `T1/ppl/b/n' tried instead on input line 389. + + +! LaTeX Error: Unknown graphics extension: .svg. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.444 ...egraphics{../lecture_09/mass_springs.svg} + +? +[4] [5] [6] [7] [8] + +! LaTeX Error: Unknown graphics extension: .svg. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.735 ...egraphics{../lecture_09/mass_springs.svg} + +? +[9] [10] +LaTeX Font Info: Font shape `T1/cmtt/bx/n' in size <10.95> not available +(Font) Font shape `T1/cmtt/m/n' tried instead on input line 843. + +File: lecture_10_files/lecture_10_29_0.pdf Graphic file (type pdf) + + +Package pdftex.def Info: lecture_10_files/lecture_10_29_0.pdf used on input lin +e 871. +(pdftex.def) Requested size: 449.6789pt x 337.25917pt. + [11] +Underfull \hbox (badness 10000) in paragraph at lines 873--874 + + [] + +[12 <./lecture_10_files/lecture_10_29_0.pdf>] +Package atveryend Info: Empty hook `BeforeClearDocument' on input line 933. + [13] +Package atveryend Info: Empty hook `AfterLastShipout' on input line 933. + (./lecture_10.aux) +Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 933. +Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 933. +Package rerunfilecheck Info: File `lecture_10.out' has not changed. +(rerunfilecheck) Checksum: F41F49C8B1F4406369908EBDD24F2572;629. + + +LaTeX Warning: There were multiply-defined labels. + +Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 933. + ) +Here is how much of TeX's memory you used: + 10943 strings out of 493029 + 163805 string characters out of 6136234 + 273063 words of memory out of 5000000 + 14226 multiletter control sequences out of 15000+600000 + 35779 words of font info for 91 fonts, out of 8000000 for 9000 + 1141 hyphenation exceptions out of 8191 + 36i,8n,77p,494b,465s stack positions out of 5000i,500n,10000p,200000b,80000s +{/usr/share/texmf/fonts/enc/dvips/cm-super/cm-super-ts1.enc}{/usr/share/texli +ve/texmf-dist/fonts/enc/dvips/base/8r.enc}{/usr/share/texmf/fonts/enc/dvips/cm- +super/cm-super-t1.enc} +Output written on lecture_10.pdf (13 pages, 190161 bytes). +PDF statistics: + 176 PDF objects out of 1000 (max. 8388607) + 142 compressed objects within 2 object streams + 29 named destinations out of 1000 (max. 500000) + 80 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/lecture_10/lecture_10.md b/lecture_10/lecture_10.md new file mode 100644 index 0000000..dd426e0 --- /dev/null +++ b/lecture_10/lecture_10.md @@ -0,0 +1,593 @@ + + +```octave +%plot --format svg +``` + + +```octave +setdefaults +``` + +# Gauss Elimination +### Solving sets of equations with matrix operations + +The number of dimensions of a matrix indicate the degrees of freedom of the system you are solving. + +If you have a set of known output, $y_{1},~y_{2},~...y_{N}$ and a set of equations that +relate unknown inputs, $x_{1},~x_{2},~...x_{N}$, then these can be written in a vector +matrix format as: + +$y=Ax$ + +Consider a problem with 2 DOF: + +$x_{1}+3x_{2}=1$ + +$2x_{1}+x_{2}=1$ + +$\left[ \begin{array}{cc} +1 & 3 \\ +2 & 1 \end{array} \right] +\left[\begin{array}{c} +x_{1} \\ +x_{2} \end{array}\right]= +\left[\begin{array}{c} +1 \\ +1\end{array}\right]$ + +The solution for $x_{1}$ and $x_{2}$ is the intersection of two lines: + + +```octave +x21=[-2:2]; +x11=1-3*x21; +x21=[-2:2]; +x22=1-2*x21; +plot(x11,x21,x21,x22) +``` + + +![svg](lecture_10_files/lecture_10_3_0.svg) + + +For a 3$\times$3 matrix, the solution is the intersection of the 3 planes. + +$10x_{1}+2x_{2}+x_{3}=1$ + +$2x_{1}+x_{2}+x_{3}=1$ + +$x_{1}+2x_{2}+10x_{3}=1$ + +$\left[ \begin{array}{cc} +10 & 2 & 1\\ +2 & 1 & 1 \\ +1 & 2 & 10\end{array} \right] +\left[\begin{array}{c} +x_{1} \\ +x_{2} \\ +x_{3} \end{array}\right]= +\left[\begin{array}{c} +1 \\ +1 \\ +1\end{array}\right]$ + + +```octave +x11=linspace(-2,2,5); +x12=linspace(-2,2,5); +[X11,X12]=meshgrid(x11,x12); +X13=1-10*X11-2*X22; + +x21=linspace(-2,2,5); +x22=linspace(-2,2,5); +[X21,X22]=meshgrid(x21,x22); +X23=1-2*X11-X22; + +x31=linspace(-2,2,5); +x32=linspace(-2,2,5); +[X31,X32]=meshgrid(x31,x32); +X33=1/10*(1-X31-2*X32); + +mesh(X11,X12,X13); +hold on; +mesh(X21,X22,X23) +mesh(X31,X32,X33) +x=[10,2, 1;2,1, 1; 1, 2, 10]\[1;1;1]; +plot3(x(1),x(2),x(3),'o') +view(45,45) +``` + + +![svg](lecture_10_files/lecture_10_5_0.svg) + + +After 3 DOF problems, the solutions are described as *hyperplane* intersections. Which are even harder to visualize + +## Gauss elimination +### Solving sets of equations systematically + +$\left[ \begin{array}{ccc|c} + & A & & y \\ +10 & 2 & 1 & 1\\ +2 & 1 & 1 & 1 \\ +1 & 2 & 10 & 1\end{array} +\right] $ + +Ay(2,:)-Ay(1,:)/5 = ([2 1 1 1]-1/5[10 2 1 1]) + +$\left[ \begin{array}{ccc|c} + & A & & y \\ +10 & 2 & 1 & 1\\ +0 & 3/5 & 4/5 & 4/5 \\ +1 & 2 & 10 & 1\end{array} +\right] $ + +Ay(3,:)-Ay(1,:)/10 = ([1 2 10 1]-1/10[10 2 1 1]) + +$\left[ \begin{array}{ccc|c} + & A & & y \\ +10 & 2 & 1 & 1\\ +0 & 3/5 & 4/5 & 4/5 \\ +0 & 1.8 & 9.9 & 0.9\end{array} +\right] $ + +Ay(3,:)-1.8\*5/3\*Ay(2,:) = ([0 1.8 9.9 0.9]-3\*[0 3/5 4/5 4/5]) + +$\left[ \begin{array}{ccc|c} + & A & & y \\ +10 & 2 & 1 & 1\\ +0 & 3/5 & 4/5 & 4/5 \\ +0 & 0 & 7.5 & -1.5\end{array} +\right] $ + +now, $7.5x_{3}=-1.5$ so $x_{3}=-\frac{1}{5}$ + +then, $3/5x_{2}+4/5(-1/5)=1$ so $x_{2}=\frac{8}{5}$ + +finally, $10x_{1}+2(8/5) + +Consider the problem again from the intro to Linear Algebra, 4 masses are connected in series to 4 springs with K=10 N/m. What are the final positions of the masses? + +![Springs-masses](../lecture_09/mass_springs.svg) + +The masses haves the following amounts, 1, 2, 3, and 4 kg for masses 1-4. Using a FBD for each mass: + +$m_{1}g+k(x_{2}-x_{1})-kx_{1}=0$ + +$m_{2}g+k(x_{3}-x_{2})-k(x_{2}-x_{1})=0$ + +$m_{3}g+k(x_{4}-x_{3})-k(x_{3}-x_{2})=0$ + +$m_{4}g-k(x_{4}-x_{3})=0$ + +in matrix form: + +$\left[ \begin{array}{cccc} +2k & -k & 0 & 0 \\ +-k & 2k & -k & 0 \\ +0 & -k & 2k & -k \\ +0 & 0 & -k & k \end{array} \right] +\left[ \begin{array}{c} +x_{1} \\ +x_{2} \\ +x_{3} \\ +x_{4} \end{array} \right]= +\left[ \begin{array}{c} +m_{1}g \\ +m_{2}g \\ +m_{3}g \\ +m_{4}g \end{array} \right]$ + + +```octave +k=10; % N/m +m1=1; % kg +m2=2; +m3=3; +m4=4; +g=9.81; % m/s^2 +K=[2*k -k 0 0; -k 2*k -k 0; 0 -k 2*k -k; 0 0 -k k] +y=[m1*g;m2*g;m3*g;m4*g] +``` + + K = + + 20 -10 0 0 + -10 20 -10 0 + 0 -10 20 -10 + 0 0 -10 10 + + y = + + 9.8100 + 19.6200 + 29.4300 + 39.2400 + + + + +```octave +K1=[K y]; +K1(2,:)=K1(1,:)/2+K1(2,:) +``` + + K1 = + + 20.00000 -10.00000 0.00000 0.00000 9.81000 + 0.00000 15.00000 -10.00000 0.00000 24.52500 + 0.00000 -10.00000 20.00000 -10.00000 29.43000 + 0.00000 0.00000 -10.00000 10.00000 39.24000 + + + + +```octave +K2=K1; +K2(3,:)=K1(2,:)*2/3+K1(3,:) + +``` + + K2 = + + 20.00000 -10.00000 0.00000 0.00000 9.81000 + 0.00000 15.00000 -10.00000 0.00000 24.52500 + 0.00000 0.00000 13.33333 -10.00000 45.78000 + 0.00000 0.00000 -10.00000 10.00000 39.24000 + + + + +```octave +K2(4,:)=-K2(3,:)*K2(4,3)/K2(3,3)+K2(4,:) +``` + + K2 = + + 20.00000 -10.00000 0.00000 0.00000 9.81000 + 0.00000 15.00000 -10.00000 0.00000 24.52500 + 0.00000 0.00000 13.33333 -10.00000 45.78000 + 0.00000 0.00000 0.00000 2.50000 73.57500 + + + + +```octave +yp=K2(:,5); +x4=yp(4)/K2(4,4) +x3=(yp(3)+10*x4)/K2(3,3) +x2=(yp(2)+10*x3)/K2(2,2) +x1=(yp(1)+10*x2)/K2(1,1) +``` + + x4 = 29.430 + x3 = 25.506 + x2 = 18.639 + x1 = 9.8100 + + + +```octave +K\y +``` + + ans = + + 9.8100 + 18.6390 + 25.5060 + 29.4300 + + + +## Automate Gauss Elimination + +We can automate Gauss elimination with a function whose input is A and y: + +`x=GaussNaive(A,y)` + + +```octave +x=GaussNaive(K,y) +``` + + x = + + 9.8100 + 18.6390 + 25.5060 + 29.4300 + + + +## Problem (Diagonal element is zero) + +If a diagonal element is 0 or very small either: + +1. no solution found +2. errors are introduced + +Therefore, we would want to pivot before applying Gauss elimination + +Consider: + +(a) $\left[ \begin{array}{cccc} +0 & 2 & 3 \\ +4 & 6 & 7 \\ +2 & -3 & 6 \end{array} \right] +\left[ \begin{array}{c} +x_{1} \\ +x_{2} \\ +x_{3} \end{array} \right]= +\left[ \begin{array}{c} +8 \\ +-3 \\ +5\end{array} \right]$ + +(b) $\left[ \begin{array}{cccc} +0.0003 & 3.0000 \\ +1.0000 & 1.0000 \end{array} \right] +\left[ \begin{array}{c} +x_{1} \\ +x_{2} \end{array} \right]= +\left[ \begin{array}{c} +2.0001 \\ +1.0000 \end{array} \right]$ + + +```octave +format short +Aa=[0,2,3;4,6,7;2,-3,6]; ya=[8;-3;5]; +GaussNaive(Aa,ya) +Aa\ya +``` + + warning: division by zero + warning: called from + GaussNaive at line 16 column 12 + warning: division by zero + warning: division by zero + ans = + + NaN + NaN + NaN + + ans = + + -5.423913 + 0.021739 + 2.652174 + + + + +```octave +[x,Aug,npivots]=GaussPivot(Aa,ya) +``` + + x = + + -5.423913 + 0.021739 + 2.652174 + + Aug = + + 4.00000 6.00000 7.00000 -3.00000 + 0.00000 -6.00000 2.50000 6.50000 + 0.00000 0.00000 3.83333 10.16667 + + npivots = 2 + + + +```octave +format long +Ab=[0.3E-13,3.0000;1.0000,1.0000];yb=[2+0.1e-13;1.0000]; +GaussNaive(Ab,yb) +Ab\yb +``` + + ans = + + 0.325665420556713 + 0.666666666666667 + + ans = + + 0.333333333333333 + 0.666666666666667 + + + + +```octave +[x,Aug,npivots]=GaussPivot(Ab,yb) +Ab\yb +format short +``` + + x = + + 0.333333333333333 + 0.666666666666667 + + Aug = + + 1.000000000000000 1.000000000000000 1.000000000000000 + 0.000000000000000 2.999999999999970 1.999999999999980 + + npivots = 1 + ans = + + 0.333333333333333 + 0.666666666666667 + + + +### Spring-Mass System again +Now, 4 masses are connected in series to 4 springs with $K_{1}$=10 N/m, $K_{2}$=5 N/m, +$K_{3}$=2 N/m +and $K_{4}$=1 N/m. What are the final positions of the masses? + +![Springs-masses](../lecture_09/mass_springs.svg) + +The masses have the following amounts, 1, 2, 3, and 4 kg for masses 1-4. Using a FBD for each mass: + +$m_{1}g+k_{2}(x_{2}-x_{1})-k_{1}x_{1}=0$ + +$m_{2}g+k_{3}(x_{3}-x_{2})-k_{2}(x_{2}-x_{1})=0$ + +$m_{3}g+k_{4}(x_{4}-x_{3})-k_{3}(x_{3}-x_{2})=0$ + +$m_{4}g-k_{4}(x_{4}-x_{3})=0$ + +in matrix form: + +$\left[ \begin{array}{cccc} +k_1+k_2 & -k_2 & 0 & 0 \\ +-k_2 & k_2+k_3 & -k_3 & 0 \\ +0 & -k_3 & k_3+k_4 & -k_4 \\ +0 & 0 & -k_4 & k_4 \end{array} \right] +\left[ \begin{array}{c} +x_{1} \\ +x_{2} \\ +x_{3} \\ +x_{4} \end{array} \right]= +\left[ \begin{array}{c} +m_{1}g \\ +m_{2}g \\ +m_{3}g \\ +m_{4}g \end{array} \right]$ + + +```octave +k1=10; k2=5;k3=2;k4=1; % N/m +m1=1; % kg +m2=2; +m3=3; +m4=4; +g=9.81; % m/s^2 +K=[k1+k2 -k2 0 0; -k2, k2+k3, -k3 0; 0 -k3, k3+k4, -k4; 0 0 -k4 k4] +y=[m1*g;m2*g;m3*g;m4*g] +``` + + K = + + 15 -5 0 0 + -5 7 -2 0 + 0 -2 3 -1 + 0 0 -1 1 + + y = + + 9.8100 + 19.6200 + 29.4300 + 39.2400 + + + +## Tridiagonal matrix + +This matrix, K, could be rewritten as 3 vectors e, f and g + +$e=\left[ \begin{array}{c} +0 \\ +-5 \\ +-2 \\ +-1 \end{array} \right]$ + +$f=\left[ \begin{array}{c} +15 \\ +7 \\ +3 \\ +1 \end{array} \right]$ + +$g=\left[ \begin{array}{c} +-5 \\ +-2 \\ +-1 \\ +0 \end{array} \right]$ + +Where all other components are 0 and the length of the vectors are n and the first component of e and the last component of g are zero + +`e(1)=0` + +`g(end)=0` + +No need to pivot and number of calculations reduced enormously. + +|method |Number of Floating point operations for n$\times$n-matrix| +|----------------|---------| +| Naive Gauss | n-cubed | +| Tridiagonal | n | + + +```octave +e=[0;-5;-2;-1]; +g=[-5;-2;-1;0]; +f=[15;7;3;1]; +Tridiag(e,f,g,y) + +``` + + ans = + + 9.8100 27.4680 61.8030 101.0430 + + + + +```octave +% tic ... t=toc +% is Matlab timer used for debugging programs +t_GE = zeros(1,100); +t_GE_tridiag = zeros(1,100); +t_TD = zeros(1,100); +for n = 1:200 + A = rand(n,n); + e = rand(n,1); e(1)=0; + f = rand(n,1); + g = rand(n,1); g(end)=0; + Atd=diag(f, 0) - diag(e(2:n), -1) - diag(g(1:n-1), 1); + b = rand(n,1); + tic; + x = GaussPivot(A,b); + t_GE(n) = toc; + tic; + x = GaussPivot(Atd,b); + t_GE_tridiag(n) = toc; + tic; + x = Tridiag(e,f,g,b); + t_TD(n) = toc; +end +``` + + +```octave +n=1:200; +loglog(n,t_GE,n,t_TD,n,t_GE_tridiag) +xlabel('number of elements') +ylabel('time (s)') +``` + + +![svg](lecture_10_files/lecture_10_27_0.svg) + + + +```octave +plot(t_TD) +``` + + +![svg](lecture_10_files/lecture_10_28_0.svg) + + + +```octave + +``` diff --git a/lecture_10/lecture_10.out b/lecture_10/lecture_10.out new file mode 100644 index 0000000..cb5b517 --- /dev/null +++ b/lecture_10/lecture_10.out @@ -0,0 +1,8 @@ +\BOOKMARK [1][-]{section.1}{Gauss Elimination}{}% 1 +\BOOKMARK [2][-]{subsubsection.1.0.1}{Solving sets of equations with matrix operations}{section.1}% 2 +\BOOKMARK [2][-]{subsection.1.1}{Gauss elimination}{section.1}% 3 +\BOOKMARK [3][-]{subsubsection.1.1.1}{Solving sets of equations systematically}{subsection.1.1}% 4 +\BOOKMARK [2][-]{subsection.1.2}{Automate Gauss Elimination}{section.1}% 5 +\BOOKMARK [2][-]{subsection.1.3}{Problem \(Diagonal element is zero\)}{section.1}% 6 +\BOOKMARK [3][-]{subsubsection.1.3.1}{Spring-Mass System again}{subsection.1.3}% 7 +\BOOKMARK [2][-]{subsection.1.4}{Tridiagonal matrix}{section.1}% 8 diff --git a/lecture_10/lecture_10.pdf b/lecture_10/lecture_10.pdf new file mode 100644 index 0000000..d75909f Binary files /dev/null and b/lecture_10/lecture_10.pdf differ diff --git a/lecture_10/lecture_10.tex b/lecture_10/lecture_10.tex new file mode 100644 index 0000000..633c945 --- /dev/null +++ b/lecture_10/lecture_10.tex @@ -0,0 +1,933 @@ + +% Default to the notebook output style + + + + +% Inherit from the specified cell style. + + + + + +\documentclass[11pt]{article} + + + + \usepackage[T1]{fontenc} + % Nicer default font (+ math font) than Computer Modern for most use cases + \usepackage{mathpazo} + + % Basic figure setup, for now with no caption control since it's done + % automatically by Pandoc (which extracts ![](path) syntax from Markdown). + \usepackage{graphicx} + % We will generate all images so they have a width \maxwidth. This means + % that they will get their normal width if they fit onto the page, but + % are scaled down if they would overflow the margins. + \makeatletter + \def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth + \else\Gin@nat@width\fi} + \makeatother + \let\Oldincludegraphics\includegraphics + % Set max figure width to be 80% of text width, for now hardcoded. + \renewcommand{\includegraphics}[1]{\Oldincludegraphics[width=.8\maxwidth]{#1}} + % Ensure that by default, figures have no caption (until we provide a + % proper Figure object with a Caption API and a way to capture that + % in the conversion process - todo). + \usepackage{caption} + \DeclareCaptionLabelFormat{nolabel}{} + \captionsetup{labelformat=nolabel} + + \usepackage{adjustbox} % Used to constrain images to a maximum size + \usepackage{xcolor} % Allow colors to be defined + \usepackage{enumerate} % Needed for markdown enumerations to work + \usepackage{geometry} % Used to adjust the document margins + \usepackage{amsmath} % Equations + \usepackage{amssymb} % Equations + \usepackage{textcomp} % defines textquotesingle + % Hack from http://tex.stackexchange.com/a/47451/13684: + \AtBeginDocument{% + \def\PYZsq{\textquotesingle}% Upright quotes in Pygmentized code + } + \usepackage{upquote} % Upright quotes for verbatim code + \usepackage{eurosym} % defines \euro + \usepackage[mathletters]{ucs} % Extended unicode (utf-8) support + \usepackage[utf8x]{inputenc} % Allow utf-8 characters in the tex document + \usepackage{fancyvrb} % verbatim replacement that allows latex + \usepackage{grffile} % extends the file name processing of package graphics + % to support a larger range + % The hyperref package gives us a pdf with properly built + % internal navigation ('pdf bookmarks' for the table of contents, + % internal cross-reference links, web links for URLs, etc.) + \usepackage{hyperref} + \usepackage{longtable} % longtable support required by pandoc >1.10 + \usepackage{booktabs} % table support for pandoc > 1.12.2 + \usepackage[inline]{enumitem} % IRkernel/repr support (it uses the enumerate* environment) + \usepackage[normalem]{ulem} % ulem is needed to support strikethroughs (\sout) + % normalem makes italics be italics, not underlines + + + + + % Colors for the hyperref package + \definecolor{urlcolor}{rgb}{0,.145,.698} + \definecolor{linkcolor}{rgb}{.71,0.21,0.01} + \definecolor{citecolor}{rgb}{.12,.54,.11} + + % ANSI colors + \definecolor{ansi-black}{HTML}{3E424D} + \definecolor{ansi-black-intense}{HTML}{282C36} + \definecolor{ansi-red}{HTML}{E75C58} + \definecolor{ansi-red-intense}{HTML}{B22B31} + \definecolor{ansi-green}{HTML}{00A250} + \definecolor{ansi-green-intense}{HTML}{007427} + \definecolor{ansi-yellow}{HTML}{DDB62B} + \definecolor{ansi-yellow-intense}{HTML}{B27D12} + \definecolor{ansi-blue}{HTML}{208FFB} + \definecolor{ansi-blue-intense}{HTML}{0065CA} + \definecolor{ansi-magenta}{HTML}{D160C4} + \definecolor{ansi-magenta-intense}{HTML}{A03196} + \definecolor{ansi-cyan}{HTML}{60C6C8} + \definecolor{ansi-cyan-intense}{HTML}{258F8F} + \definecolor{ansi-white}{HTML}{C5C1B4} + \definecolor{ansi-white-intense}{HTML}{A1A6B2} + + % commands and environments needed by pandoc snippets + % extracted from the output of `pandoc -s` + \providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} + \DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}} + % Add ',fontsize=\small' for more characters per line + \newenvironment{Shaded}{}{} + \newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} + \newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{{#1}}} + \newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} + \newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} + \newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} + \newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} + \newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} + \newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{{#1}}}} + \newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{{#1}}} + \newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}} + \newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{{#1}}} + \newcommand{\RegionMarkerTok}[1]{{#1}} + \newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}} + \newcommand{\NormalTok}[1]{{#1}} + + % Additional commands for more recent versions of Pandoc + \newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{{#1}}} + \newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} + \newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} + \newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{{#1}}} + \newcommand{\ImportTok}[1]{{#1}} + \newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{{#1}}}} + \newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} + \newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} + \newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{{#1}}} + \newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} + \newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{{#1}}} + \newcommand{\BuiltInTok}[1]{{#1}} + \newcommand{\ExtensionTok}[1]{{#1}} + \newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{{#1}}} + \newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{{#1}}} + \newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} + \newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} + + + % Define a nice break command that doesn't care if a line doesn't already + % exist. + \def\br{\hspace*{\fill} \\* } + % Math Jax compatability definitions + \def\gt{>} + \def\lt{<} + % Document parameters + \title{lecture\_10} + + + + + % Pygments definitions + +\makeatletter +\def\PY@reset{\let\PY@it=\relax \let\PY@bf=\relax% + \let\PY@ul=\relax \let\PY@tc=\relax% + \let\PY@bc=\relax \let\PY@ff=\relax} +\def\PY@tok#1{\csname PY@tok@#1\endcsname} +\def\PY@toks#1+{\ifx\relax#1\empty\else% + \PY@tok{#1}\expandafter\PY@toks\fi} +\def\PY@do#1{\PY@bc{\PY@tc{\PY@ul{% + \PY@it{\PY@bf{\PY@ff{#1}}}}}}} +\def\PY#1#2{\PY@reset\PY@toks#1+\relax+\PY@do{#2}} + +\expandafter\def\csname PY@tok@gd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}} +\expandafter\def\csname PY@tok@gu\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}} +\expandafter\def\csname PY@tok@gt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}} +\expandafter\def\csname PY@tok@gs\endcsname{\let\PY@bf=\textbf} +\expandafter\def\csname PY@tok@gr\endcsname{\def\PY@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}} +\expandafter\def\csname PY@tok@cm\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} +\expandafter\def\csname PY@tok@vg\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} +\expandafter\def\csname PY@tok@vi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} +\expandafter\def\csname PY@tok@mh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@cs\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} +\expandafter\def\csname PY@tok@ge\endcsname{\let\PY@it=\textit} +\expandafter\def\csname PY@tok@vc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} +\expandafter\def\csname PY@tok@il\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@go\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}} +\expandafter\def\csname PY@tok@cp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.74,0.48,0.00}{##1}}} +\expandafter\def\csname PY@tok@gi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}} +\expandafter\def\csname PY@tok@gh\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}} +\expandafter\def\csname PY@tok@ni\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.60,0.60,0.60}{##1}}} +\expandafter\def\csname PY@tok@nl\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.63,0.00}{##1}}} +\expandafter\def\csname PY@tok@nn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} +\expandafter\def\csname PY@tok@no\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.00,0.00}{##1}}} +\expandafter\def\csname PY@tok@na\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.49,0.56,0.16}{##1}}} +\expandafter\def\csname PY@tok@nb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@nc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} +\expandafter\def\csname PY@tok@nd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}} +\expandafter\def\csname PY@tok@ne\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.82,0.25,0.23}{##1}}} +\expandafter\def\csname PY@tok@nf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} +\expandafter\def\csname PY@tok@si\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}} +\expandafter\def\csname PY@tok@s2\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@nt\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@nv\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} +\expandafter\def\csname PY@tok@s1\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@ch\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} +\expandafter\def\csname PY@tok@m\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@gp\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}} +\expandafter\def\csname PY@tok@sh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@ow\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}} +\expandafter\def\csname PY@tok@sx\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@bp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@c1\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} +\expandafter\def\csname PY@tok@o\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@kc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@c\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} +\expandafter\def\csname PY@tok@mf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@err\endcsname{\def\PY@bc##1{\setlength{\fboxsep}{0pt}\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}} +\expandafter\def\csname PY@tok@mb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@ss\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} +\expandafter\def\csname PY@tok@sr\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}} +\expandafter\def\csname PY@tok@mo\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@kd\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@mi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@kn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@cpf\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} +\expandafter\def\csname PY@tok@kr\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@s\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@kp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@w\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}} +\expandafter\def\csname PY@tok@kt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.69,0.00,0.25}{##1}}} +\expandafter\def\csname PY@tok@sc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@sb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@k\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@se\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.13}{##1}}} +\expandafter\def\csname PY@tok@sd\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} + +\def\PYZbs{\char`\\} +\def\PYZus{\char`\_} +\def\PYZob{\char`\{} +\def\PYZcb{\char`\}} +\def\PYZca{\char`\^} +\def\PYZam{\char`\&} +\def\PYZlt{\char`\<} +\def\PYZgt{\char`\>} +\def\PYZsh{\char`\#} +\def\PYZpc{\char`\%} +\def\PYZdl{\char`\$} +\def\PYZhy{\char`\-} +\def\PYZsq{\char`\'} +\def\PYZdq{\char`\"} +\def\PYZti{\char`\~} +% for compatibility with earlier versions +\def\PYZat{@} +\def\PYZlb{[} +\def\PYZrb{]} +\makeatother + + + % Exact colors from NB + \definecolor{incolor}{rgb}{0.0, 0.0, 0.5} + \definecolor{outcolor}{rgb}{0.545, 0.0, 0.0} + + + + + % Prevent overflowing lines due to hard-to-break entities + \sloppy + % Setup hyperref package + \hypersetup{ + breaklinks=true, % so long urls are correctly broken across lines + colorlinks=true, + urlcolor=urlcolor, + linkcolor=linkcolor, + citecolor=citecolor, + } + % Slightly bigger margins than the latex defaults + + \geometry{verbose,tmargin=1in,bmargin=1in,lmargin=1in,rmargin=1in} + + + + \begin{document} + + + \maketitle + + + + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}1}]:} \PY{c}{\PYZpc{}plot \PYZhy{}\PYZhy{}format svg} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}2}]:} \PY{n}{setdefaults} +\end{Verbatim} + + \section{Gauss Elimination}\label{gauss-elimination} + +\subsubsection{Solving sets of equations with matrix +operations}\label{solving-sets-of-equations-with-matrix-operations} + +The number of dimensions of a matrix indicate the degrees of freedom of +the system you are solving. + +If you have a set of known output, \(y_{1},~y_{2},~...y_{N}\) and a set +of equations that relate unknown inputs, \(x_{1},~x_{2},~...x_{N}\), +then these can be written in a vector matrix format as: + +\(y=Ax\) + +Consider a problem with 2 DOF: + +\(x_{1}+3x_{2}=1\) + +\(2x_{1}+x_{2}=1\) + +\(\left[ \begin{array}{cc} 1 & 3 \\ 2 & 1 \end{array} \right] \left[\begin{array}{c} x_{1} \\ x_{2} \end{array}\right]= \left[\begin{array}{c} 1 \\ 1\end{array}\right]\) + +The solution for \(x_{1}\) and \(x_{2}\) is the intersection of two +lines: + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}3}]:} \PY{n}{x21}\PY{p}{=}\PY{p}{[}\PY{o}{\PYZhy{}}\PY{l+m+mi}{2}\PY{p}{:}\PY{l+m+mi}{2}\PY{p}{]}\PY{p}{;} + \PY{n}{x11}\PY{p}{=}\PY{l+m+mi}{1}\PY{o}{\PYZhy{}}\PY{l+m+mi}{3}\PY{o}{*}\PY{n}{x21}\PY{p}{;} + \PY{n}{x21}\PY{p}{=}\PY{p}{[}\PY{o}{\PYZhy{}}\PY{l+m+mi}{2}\PY{p}{:}\PY{l+m+mi}{2}\PY{p}{]}\PY{p}{;} + \PY{n}{x22}\PY{p}{=}\PY{l+m+mi}{1}\PY{o}{\PYZhy{}}\PY{l+m+mi}{2}\PY{o}{*}\PY{n}{x21}\PY{p}{;} + \PY{n+nb}{plot}\PY{p}{(}\PY{n}{x11}\PY{p}{,}\PY{n}{x21}\PY{p}{,}\PY{n}{x21}\PY{p}{,}\PY{n}{x22}\PY{p}{)} +\end{Verbatim} + + \begin{center} + \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{lecture_10_files/lecture_10_3_0.pdf} + \end{center} + { \hspace*{\fill} \\} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}4}]:} \PY{n}{A}\PY{p}{=}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{;}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{]}\PY{p}{;} \PY{n}{y}\PY{p}{=}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{;}\PY{l+m+mi}{1}\PY{p}{]}\PY{p}{;} + \PY{n}{A}\PY{o}{\PYZbs{}}\PY{n}{y} \PY{c}{\PYZpc{} matlab\PYZsq{}s Ax=y solution for x} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +ans = + + 0.40000 + 0.20000 + + + \end{Verbatim} + + For a \(3\times3\) matrix, the solution is the intersection of the 3 +planes. + +\(10x_{1}+2x_{2}+x_{3}=1\) + +\(2x_{1}+x_{2}+x_{3}=1\) + +\(x_{1}+2x_{2}+10x_{3}=1\) + +$\left[ \begin{array}{ccc} 10 & 2 & 1\\ 2 & 1 & 1 \\ 1 & 2 & 10\end{array} \right] + \left[\begin{array}{c} x_{1} \\ x_{2} \\ x_{3} \end{array}\right]= + \left[\begin{array}{c} 1 \\ 1 \\ 1\end{array}\right]$ + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}9}]:} \PY{n}{N}\PY{p}{=}\PY{l+m+mi}{25}\PY{p}{;} + \PY{n}{x11}\PY{p}{=}\PY{n+nb}{linspace}\PY{p}{(}\PY{o}{\PYZhy{}}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{,}\PY{n}{N}\PY{p}{)}\PY{p}{;} + \PY{n}{x12}\PY{p}{=}\PY{n+nb}{linspace}\PY{p}{(}\PY{o}{\PYZhy{}}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{,}\PY{n}{N}\PY{p}{)}\PY{p}{;} + \PY{p}{[}\PY{n}{X11}\PY{p}{,}\PY{n}{X12}\PY{p}{]}\PY{p}{=}\PY{n+nb}{meshgrid}\PY{p}{(}\PY{n}{x11}\PY{p}{,}\PY{n}{x12}\PY{p}{)}\PY{p}{;} + \PY{n}{X13}\PY{p}{=}\PY{l+m+mi}{1}\PY{o}{\PYZhy{}}\PY{l+m+mi}{10}\PY{o}{*}\PY{n}{X11}\PY{o}{\PYZhy{}}\PY{l+m+mi}{2}\PY{o}{*}\PY{n}{X12}\PY{p}{;} + + \PY{n}{x21}\PY{p}{=}\PY{n+nb}{linspace}\PY{p}{(}\PY{o}{\PYZhy{}}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{,}\PY{n}{N}\PY{p}{)}\PY{p}{;} + \PY{n}{x22}\PY{p}{=}\PY{n+nb}{linspace}\PY{p}{(}\PY{o}{\PYZhy{}}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{,}\PY{n}{N}\PY{p}{)}\PY{p}{;} + \PY{p}{[}\PY{n}{X21}\PY{p}{,}\PY{n}{X22}\PY{p}{]}\PY{p}{=}\PY{n+nb}{meshgrid}\PY{p}{(}\PY{n}{x21}\PY{p}{,}\PY{n}{x22}\PY{p}{)}\PY{p}{;} + \PY{n}{X23}\PY{p}{=}\PY{l+m+mi}{1}\PY{o}{\PYZhy{}}\PY{l+m+mi}{2}\PY{o}{*}\PY{n}{X11}\PY{o}{\PYZhy{}}\PY{n}{X22}\PY{p}{;} + + \PY{n}{x31}\PY{p}{=}\PY{n+nb}{linspace}\PY{p}{(}\PY{o}{\PYZhy{}}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{,}\PY{n}{N}\PY{p}{)}\PY{p}{;} + \PY{n}{x32}\PY{p}{=}\PY{n+nb}{linspace}\PY{p}{(}\PY{o}{\PYZhy{}}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{,}\PY{n}{N}\PY{p}{)}\PY{p}{;} + \PY{p}{[}\PY{n}{X31}\PY{p}{,}\PY{n}{X32}\PY{p}{]}\PY{p}{=}\PY{n+nb}{meshgrid}\PY{p}{(}\PY{n}{x31}\PY{p}{,}\PY{n}{x32}\PY{p}{)}\PY{p}{;} + \PY{n}{X33}\PY{p}{=}\PY{l+m+mi}{1}\PY{o}{/}\PY{l+m+mi}{10}\PY{o}{*}\PY{p}{(}\PY{l+m+mi}{1}\PY{o}{\PYZhy{}}\PY{n}{X31}\PY{o}{\PYZhy{}}\PY{l+m+mi}{2}\PY{o}{*}\PY{n}{X32}\PY{p}{)}\PY{p}{;} + + \PY{n+nb}{mesh}\PY{p}{(}\PY{n}{X11}\PY{p}{,}\PY{n}{X12}\PY{p}{,}\PY{n}{X13}\PY{p}{)}\PY{p}{;} + \PY{n+nb}{hold} \PY{n}{on}\PY{p}{;} + \PY{n+nb}{mesh}\PY{p}{(}\PY{n}{X21}\PY{p}{,}\PY{n}{X22}\PY{p}{,}\PY{n}{X23}\PY{p}{)} + \PY{n+nb}{mesh}\PY{p}{(}\PY{n}{X31}\PY{p}{,}\PY{n}{X32}\PY{p}{,}\PY{n}{X33}\PY{p}{)} + \PY{n}{x}\PY{p}{=}\PY{p}{[}\PY{l+m+mi}{10}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{,} \PY{l+m+mi}{1}\PY{p}{;}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{,} \PY{l+m+mi}{1}\PY{p}{;} \PY{l+m+mi}{1}\PY{p}{,} \PY{l+m+mi}{2}\PY{p}{,} \PY{l+m+mi}{10}\PY{p}{]}\PY{o}{\PYZbs{}}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{;}\PY{l+m+mi}{1}\PY{p}{;}\PY{l+m+mi}{1}\PY{p}{]}\PY{p}{;} + \PY{n}{plot3}\PY{p}{(}\PY{n}{x}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{,}\PY{n}{x}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{,}\PY{n}{x}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{)}\PY{p}{,}\PY{l+s}{\PYZsq{}}\PY{l+s}{o\PYZsq{}}\PY{p}{)} + \PY{n+nb}{xlabel}\PY{p}{(}\PY{l+s}{\PYZsq{}}\PY{l+s}{x1\PYZsq{}}\PY{p}{)} + \PY{n+nb}{ylabel}\PY{p}{(}\PY{l+s}{\PYZsq{}}\PY{l+s}{x2\PYZsq{}}\PY{p}{)} + \PY{n+nb}{zlabel}\PY{p}{(}\PY{l+s}{\PYZsq{}}\PY{l+s}{x3\PYZsq{}}\PY{p}{)} + \PY{n+nb}{view}\PY{p}{(}\PY{l+m+mi}{10}\PY{p}{,}\PY{l+m+mi}{45}\PY{p}{)} +\end{Verbatim} + + \begin{center} + \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{lecture_10_files/lecture_10_6_0.pdf} + \end{center} + { \hspace*{\fill} \\} + + After 3 DOF problems, the solutions are described as \emph{hyperplane} +intersections. Which are even harder to visualize + + \subsection{Gauss elimination}\label{gauss-elimination} + +\subsubsection{Solving sets of equations +systematically}\label{solving-sets-of-equations-systematically} + +$\left[ +\begin{array}{ccc|c} + & A & & y \\ +10 & 2 & 1 & 1\\ +2 & 1 & 1 & 1 \\ +1 & 2 & 10 & 1\end{array} +\right] $ + +Ay(2,:)-Ay(1,:)/5 = ({[}2 1 1 1{]}-1/5{[}10 2 1 1{]}) + +$\left[ +\begin{array}{ccc|c} + & A & & y \\ +10 & 2 & 1 & 1\\ +0 & 3/5 & 4/5 & 4/5 \\ +1 & 2 & 10 & 1\end{array} +\right] $ + +Ay(3,:)-Ay(1,:)/10 = ({[}1 2 10 1{]}-1/10{[}10 2 1 1{]}) + +$\left[ +\begin{array}{ccc|c} + & A & & y \\ +10 & 2 & 1 & 1\\ +0 & 3/5 & 4/5 & 4/5 \\ +0 & 1.8 & 9.9 & 0.9\end{array} +\right] $ + +Ay(3,:)-1.8*5/3*Ay(2,:) = ({[}0 1.8 9.9 0.9{]}-3*{[}0 3/5 4/5 4/5{]}) + +$\left[ +\begin{array}{ccc|c} + & A & & y \\ +10 & 2 & 1 & 1\\ +0 & 3/5 & 4/5 & 4/5 \\ +0 & 0 & 7.5 & -1.5\end{array} +\right]$ + +now, \(7.5x_{3}=-1.5\) so \(x_{3}=-\frac{1}{5}\) + +then, \(3/5x_{2}+4/5(-1/5)=1\) so \(x_{2}=\frac{8}{5}\) + +finally, \(10x_{1}+2(8/5)+1(-\frac{1}{5})=1\) + + Consider the problem again from the intro to Linear Algebra, 4 masses +are connected in series to 4 springs with K=10 N/m. What are the final +positions of the masses? + +\begin{figure}[htbp] +\centering +\includegraphics{../lecture_09/mass_springs.svg} +\caption{Springs-masses} +\end{figure} + +The masses haves the following amounts, 1, 2, 3, and 4 kg for masses +1-4. Using a FBD for each mass: + +\(m_{1}g+k(x_{2}-x_{1})-kx_{1}=0\) + +\(m_{2}g+k(x_{3}-x_{2})-k(x_{2}-x_{1})=0\) + +\(m_{3}g+k(x_{4}-x_{3})-k(x_{3}-x_{2})=0\) + +\(m_{4}g-k(x_{4}-x_{3})=0\) + +in matrix form: + +\(\left[ \begin{array}{cccc} 2k & -k & 0 & 0 \\ -k & 2k & -k & 0 \\ 0 & -k & 2k & -k \\ 0 & 0 & -k & k \end{array} \right] \left[ \begin{array}{c} x_{1} \\ x_{2} \\ x_{3} \\ x_{4} \end{array} \right]= \left[ \begin{array}{c} m_{1}g \\ m_{2}g \\ m_{3}g \\ m_{4}g \end{array} \right]\) + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}10}]:} \PY{n}{k}\PY{p}{=}\PY{l+m+mi}{10}\PY{p}{;} \PY{c}{\PYZpc{} N/m} + \PY{n}{m1}\PY{p}{=}\PY{l+m+mi}{1}\PY{p}{;} \PY{c}{\PYZpc{} kg} + \PY{n}{m2}\PY{p}{=}\PY{l+m+mi}{2}\PY{p}{;} + \PY{n}{m3}\PY{p}{=}\PY{l+m+mi}{3}\PY{p}{;} + \PY{n}{m4}\PY{p}{=}\PY{l+m+mi}{4}\PY{p}{;} + \PY{n}{g}\PY{p}{=}\PY{l+m+mf}{9.81}\PY{p}{;} \PY{c}{\PYZpc{} m/s\PYZca{}2} + \PY{n}{K}\PY{p}{=}\PY{p}{[}\PY{l+m+mi}{2}\PY{o}{*}\PY{n}{k} \PY{o}{\PYZhy{}}\PY{n}{k} \PY{l+m+mi}{0} \PY{l+m+mi}{0}\PY{p}{;} \PY{o}{\PYZhy{}}\PY{n}{k} \PY{l+m+mi}{2}\PY{o}{*}\PY{n}{k} \PY{o}{\PYZhy{}}\PY{n}{k} \PY{l+m+mi}{0}\PY{p}{;} \PY{l+m+mi}{0} \PY{o}{\PYZhy{}}\PY{n}{k} \PY{l+m+mi}{2}\PY{o}{*}\PY{n}{k} \PY{o}{\PYZhy{}}\PY{n}{k}\PY{p}{;} \PY{l+m+mi}{0} \PY{l+m+mi}{0} \PY{o}{\PYZhy{}}\PY{n}{k} \PY{n}{k}\PY{p}{]} + \PY{n}{y}\PY{p}{=}\PY{p}{[}\PY{n}{m1}\PY{o}{*}\PY{n}{g}\PY{p}{;}\PY{n}{m2}\PY{o}{*}\PY{n}{g}\PY{p}{;}\PY{n}{m3}\PY{o}{*}\PY{n}{g}\PY{p}{;}\PY{n}{m4}\PY{o}{*}\PY{n}{g}\PY{p}{]} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +K = + + 20 -10 0 0 + -10 20 -10 0 + 0 -10 20 -10 + 0 0 -10 10 + +y = + + 9.8100 + 19.6200 + 29.4300 + 39.2400 + + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}11}]:} \PY{n}{K1}\PY{p}{=}\PY{p}{[}\PY{n}{K} \PY{n}{y}\PY{p}{]}\PY{p}{;} + \PY{n}{K1}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{p}{:}\PY{p}{)}\PY{p}{=}\PY{n}{K1}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{p}{:}\PY{p}{)}\PY{o}{/}\PY{l+m+mi}{2}\PY{o}{+}\PY{n}{K1}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{p}{:}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +K1 = + + 20.00000 -10.00000 0.00000 0.00000 9.81000 + 0.00000 15.00000 -10.00000 0.00000 24.52500 + 0.00000 -10.00000 20.00000 -10.00000 29.43000 + 0.00000 0.00000 -10.00000 10.00000 39.24000 + + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}12}]:} \PY{n}{K2}\PY{p}{=}\PY{n}{K1}\PY{p}{;} + \PY{n}{K2}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{p}{:}\PY{p}{)}\PY{p}{=}\PY{n}{K1}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{p}{:}\PY{p}{)}\PY{o}{*}\PY{l+m+mi}{2}\PY{o}{/}\PY{l+m+mi}{3}\PY{o}{+}\PY{n}{K1}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{p}{:}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +K2 = + + 20.00000 -10.00000 0.00000 0.00000 9.81000 + 0.00000 15.00000 -10.00000 0.00000 24.52500 + 0.00000 0.00000 13.33333 -10.00000 45.78000 + 0.00000 0.00000 -10.00000 10.00000 39.24000 + + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}13}]:} \PY{n}{K2}\PY{p}{(}\PY{l+m+mi}{4}\PY{p}{,}\PY{p}{:}\PY{p}{)}\PY{p}{=}\PY{o}{\PYZhy{}}\PY{n}{K2}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{p}{:}\PY{p}{)}\PY{o}{*}\PY{n}{K2}\PY{p}{(}\PY{l+m+mi}{4}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{)}\PY{o}{/}\PY{n}{K2}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{)}\PY{o}{+}\PY{n}{K2}\PY{p}{(}\PY{l+m+mi}{4}\PY{p}{,}\PY{p}{:}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +K2 = + + 20.00000 -10.00000 0.00000 0.00000 9.81000 + 0.00000 15.00000 -10.00000 0.00000 24.52500 + 0.00000 0.00000 13.33333 -10.00000 45.78000 + 0.00000 0.00000 0.00000 2.50000 73.57500 + + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}14}]:} \PY{n}{yp}\PY{p}{=}\PY{n}{K2}\PY{p}{(}\PY{p}{:}\PY{p}{,}\PY{l+m+mi}{5}\PY{p}{)}\PY{p}{;} + \PY{n}{x4}\PY{p}{=}\PY{n}{yp}\PY{p}{(}\PY{l+m+mi}{4}\PY{p}{)}\PY{o}{/}\PY{n}{K2}\PY{p}{(}\PY{l+m+mi}{4}\PY{p}{,}\PY{l+m+mi}{4}\PY{p}{)} + \PY{n}{x3}\PY{p}{=}\PY{p}{(}\PY{n}{yp}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{)}\PY{o}{+}\PY{l+m+mi}{10}\PY{o}{*}\PY{n}{x4}\PY{p}{)}\PY{o}{/}\PY{n}{K2}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{)} + \PY{n}{x2}\PY{p}{=}\PY{p}{(}\PY{n}{yp}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{)}\PY{o}{+}\PY{l+m+mi}{10}\PY{o}{*}\PY{n}{x3}\PY{p}{)}\PY{o}{/}\PY{n}{K2}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)} + \PY{n}{x1}\PY{p}{=}\PY{p}{(}\PY{n}{yp}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{)}\PY{o}{+}\PY{l+m+mi}{10}\PY{o}{*}\PY{n}{x2}\PY{p}{)}\PY{o}{/}\PY{n}{K2}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +x4 = 29.430 +x3 = 25.506 +x2 = 18.639 +x1 = 9.8100 + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}15}]:} \PY{n}{K}\PY{o}{\PYZbs{}}\PY{n}{y} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +ans = + + 9.8100 + 18.6390 + 25.5060 + 29.4300 + + + \end{Verbatim} + + \subsection{Automate Gauss +Elimination}\label{automate-gauss-elimination} + +We can automate Gauss elimination with a function whose input is A and +y: + +\texttt{x=GaussNaive(A,y)} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}16}]:} \PY{n}{x}\PY{p}{=}\PY{n}{GaussNaive}\PY{p}{(}\PY{n}{K}\PY{p}{,}\PY{n}{y}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +x = + + 9.8100 + 18.6390 + 25.5060 + 29.4300 + + + \end{Verbatim} + + \subsection{Problem (Diagonal element is +zero)}\label{problem-diagonal-element-is-zero} + +If a diagonal element is 0 or very small either: + +\begin{enumerate} +\def\labelenumi{\arabic{enumi}.} +\tightlist +\item + no solution found +\item + errors are introduced +\end{enumerate} + +Therefore, we would want to pivot before applying Gauss elimination + +Consider: + +\begin{enumerate} +\def\labelenumi{(\alph{enumi})} +\item + \(\left[ \begin{array}{cccc} 0 & 2 & 3 \\ 4 & 6 & 7 \\ 2 & -3 & 6 \end{array} \right] \left[ \begin{array}{c} x_{1} \\ x_{2} \\ x_{3} \end{array} \right]= \left[ \begin{array}{c} 8 \\ -3 \\ 5\end{array} \right]\) +\item + \(\left[ \begin{array}{cccc} 0.0003 & 3.0000 \\ 1.0000 & 1.0000 \end{array} \right] \left[ \begin{array}{c} x_{1} \\ x_{2} \end{array} \right]= \left[ \begin{array}{c} 2.0001 \\ 1.0000 \end{array} \right]\) +\end{enumerate} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}17}]:} \PY{n}{format} \PY{n}{short} + \PY{n}{Aa}\PY{p}{=}\PY{p}{[}\PY{l+m+mi}{0}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{;}\PY{l+m+mi}{4}\PY{p}{,}\PY{l+m+mi}{6}\PY{p}{,}\PY{l+m+mi}{7}\PY{p}{;}\PY{l+m+mi}{2}\PY{p}{,}\PY{o}{\PYZhy{}}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{6}\PY{p}{]}\PY{p}{;} \PY{n}{ya}\PY{p}{=}\PY{p}{[}\PY{l+m+mi}{8}\PY{p}{;}\PY{o}{\PYZhy{}}\PY{l+m+mi}{3}\PY{p}{;}\PY{l+m+mi}{5}\PY{p}{]}\PY{p}{;} + \PY{n}{GaussNaive}\PY{p}{(}\PY{n}{Aa}\PY{p}{,}\PY{n}{ya}\PY{p}{)} + \PY{n}{Aa}\PY{o}{\PYZbs{}}\PY{n}{ya} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +warning: division by zero +warning: called from + GaussNaive at line 16 column 12 +warning: division by zero +warning: division by zero +ans = + + NaN + NaN + NaN + +ans = + + -5.423913 + 0.021739 + 2.652174 + + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}32}]:} \PY{p}{[}\PY{n}{x}\PY{p}{,}\PY{n}{Aug}\PY{p}{,}\PY{n}{npivots}\PY{p}{]}\PY{p}{=}\PY{n}{GaussPivot}\PY{p}{(}\PY{n}{Aa}\PY{p}{,}\PY{n}{ya}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +x = + + -5.423913 + 0.021739 + 2.652174 + +Aug = + + 4.00000 6.00000 7.00000 -3.00000 + 0.00000 -6.00000 2.50000 6.50000 + 0.00000 0.00000 3.83333 10.16667 + +npivots = 2 + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}33}]:} \PY{n}{format} \PY{n}{long} + \PY{n}{Ab}\PY{p}{=}\PY{p}{[}\PY{l+m+mf}{0.3E\PYZhy{}13}\PY{p}{,}\PY{l+m+mf}{3.0000}\PY{p}{;}\PY{l+m+mf}{1.0000}\PY{p}{,}\PY{l+m+mf}{1.0000}\PY{p}{]}\PY{p}{;}\PY{n}{yb}\PY{p}{=}\PY{p}{[}\PY{l+m+mi}{2}\PY{o}{+}\PY{l+m+mf}{0.1e\PYZhy{}13}\PY{p}{;}\PY{l+m+mf}{1.0000}\PY{p}{]}\PY{p}{;} + \PY{n}{GaussNaive}\PY{p}{(}\PY{n}{Ab}\PY{p}{,}\PY{n}{yb}\PY{p}{)} + \PY{n}{Ab}\PY{o}{\PYZbs{}}\PY{n}{yb} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +ans = + + 0.325665420556713 + 0.666666666666667 + +ans = + + 0.333333333333333 + 0.666666666666667 + + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}34}]:} \PY{p}{[}\PY{n}{x}\PY{p}{,}\PY{n}{Aug}\PY{p}{,}\PY{n}{npivots}\PY{p}{]}\PY{p}{=}\PY{n}{GaussPivot}\PY{p}{(}\PY{n}{Ab}\PY{p}{,}\PY{n}{yb}\PY{p}{)} + \PY{n}{Ab}\PY{o}{\PYZbs{}}\PY{n}{yb} + \PY{n}{format} \PY{n}{short} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +x = + + 0.333333333333333 + 0.666666666666667 + +Aug = + + 1.000000000000000 1.000000000000000 1.000000000000000 + 0.000000000000000 2.999999999999970 1.999999999999980 + +npivots = 1 +ans = + + 0.333333333333333 + 0.666666666666667 + + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}36}]:} \PY{c}{\PYZpc{} determinant is (\PYZhy{}1)\PYZca{}(number\PYZus{}of\PYZus{}pivots)*diagonal\PYZus{}elements} + \PY{n+nb}{det}\PY{p}{(}\PY{n}{Ab}\PY{p}{)} + \PY{n}{Aug}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{o}{*}\PY{n}{Aug}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +ans = -3.0000 +ans = 3.0000 + + \end{Verbatim} + + \subsubsection{Spring-Mass System again}\label{spring-mass-system-again} + +Now, 4 masses are connected in series to 4 springs with \(K_{1}\)=10 +N/m, \(K_{2}\)=5 N/m, \(K_{3}\)=2 N/m and \(K_{4}\)=1 N/m. What are the +final positions of the masses? + +\begin{figure}[htbp] +\centering +\includegraphics{../lecture_09/mass_springs.svg} +\caption{Springs-masses} +\end{figure} + +The masses have the following amounts, 1, 2, 3, and 4 kg for masses 1-4. +Using a FBD for each mass: + +\(m_{1}g+k_{2}(x_{2}-x_{1})-k_{1}x_{1}=0\) + +\(m_{2}g+k_{3}(x_{3}-x_{2})-k_{2}(x_{2}-x_{1})=0\) + +\(m_{3}g+k_{4}(x_{4}-x_{3})-k_{3}(x_{3}-x_{2})=0\) + +\(m_{4}g-k_{4}(x_{4}-x_{3})=0\) + +in matrix form: + +\(\left[ \begin{array}{cccc} k_1+k_2 & -k_2 & 0 & 0 \\ -k_2 & k_2+k_3 & -k_3 & 0 \\ 0 & -k_3 & k_3+k_4 & -k_4 \\ 0 & 0 & -k_4 & k_4 \end{array} \right] \left[ \begin{array}{c} x_{1} \\ x_{2} \\ x_{3} \\ x_{4} \end{array} \right]= \left[ \begin{array}{c} m_{1}g \\ m_{2}g \\ m_{3}g \\ m_{4}g \end{array} \right]\) + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}24}]:} \PY{n}{k1}\PY{p}{=}\PY{l+m+mi}{10}\PY{p}{;} \PY{n}{k2}\PY{p}{=}\PY{l+m+mi}{5}\PY{p}{;}\PY{n}{k3}\PY{p}{=}\PY{l+m+mi}{2}\PY{p}{;}\PY{n}{k4}\PY{p}{=}\PY{l+m+mi}{1}\PY{p}{;} \PY{c}{\PYZpc{} N/m} + \PY{n}{m1}\PY{p}{=}\PY{l+m+mi}{1}\PY{p}{;} \PY{c}{\PYZpc{} kg} + \PY{n}{m2}\PY{p}{=}\PY{l+m+mi}{2}\PY{p}{;} + \PY{n}{m3}\PY{p}{=}\PY{l+m+mi}{3}\PY{p}{;} + \PY{n}{m4}\PY{p}{=}\PY{l+m+mi}{4}\PY{p}{;} + \PY{n}{g}\PY{p}{=}\PY{l+m+mf}{9.81}\PY{p}{;} \PY{c}{\PYZpc{} m/s\PYZca{}2} + \PY{n}{K}\PY{p}{=}\PY{p}{[}\PY{n}{k1}\PY{o}{+}\PY{n}{k2} \PY{o}{\PYZhy{}}\PY{n}{k2} \PY{l+m+mi}{0} \PY{l+m+mi}{0}\PY{p}{;} \PY{o}{\PYZhy{}}\PY{n}{k2}\PY{p}{,} \PY{n}{k2}\PY{o}{+}\PY{n}{k3}\PY{p}{,} \PY{o}{\PYZhy{}}\PY{n}{k3} \PY{l+m+mi}{0}\PY{p}{;} \PY{l+m+mi}{0} \PY{o}{\PYZhy{}}\PY{n}{k3}\PY{p}{,} \PY{n}{k3}\PY{o}{+}\PY{n}{k4}\PY{p}{,} \PY{o}{\PYZhy{}}\PY{n}{k4}\PY{p}{;} \PY{l+m+mi}{0} \PY{l+m+mi}{0} \PY{o}{\PYZhy{}}\PY{n}{k4} \PY{n}{k4}\PY{p}{]} + \PY{n}{y}\PY{p}{=}\PY{p}{[}\PY{n}{m1}\PY{o}{*}\PY{n}{g}\PY{p}{;}\PY{n}{m2}\PY{o}{*}\PY{n}{g}\PY{p}{;}\PY{n}{m3}\PY{o}{*}\PY{n}{g}\PY{p}{;}\PY{n}{m4}\PY{o}{*}\PY{n}{g}\PY{p}{]} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +K = + + 15 -5 0 0 + -5 7 -2 0 + 0 -2 3 -1 + 0 0 -1 1 + +y = + + 9.8100 + 19.6200 + 29.4300 + 39.2400 + + + \end{Verbatim} + + \subsection{Tridiagonal matrix}\label{tridiagonal-matrix} + +This matrix, K, could be rewritten as 3 vectors e, f and g + +\(e=\left[ \begin{array}{c} 0 \\ -5 \\ -2 \\ -1 \end{array} \right]\) + +\(f=\left[ \begin{array}{c} 15 \\ 7 \\ 3 \\ 1 \end{array} \right]\) + +\(g=\left[ \begin{array}{c} -5 \\ -2 \\ -1 \\ 0 \end{array} \right]\) + +Where all other components are 0 and the length of the vectors are n and +the first component of e and the last component of g are zero + +\texttt{e(1)=0} + +\texttt{g(end)=0} + +No need to pivot and number of calculations reduced enormously. + +\begin{longtable}[c]{@{}ll@{}} +\toprule +method & Number of Floating point operations for +n\(\times\)n-matrix\tabularnewline +\midrule +\endhead +Gauss & n-cubed\tabularnewline +Tridiagonal & n\tabularnewline +\bottomrule +\end{longtable} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}25}]:} \PY{n+nb}{e}\PY{p}{=}\PY{p}{[}\PY{l+m+mi}{0}\PY{p}{;}\PY{o}{\PYZhy{}}\PY{l+m+mi}{5}\PY{p}{;}\PY{o}{\PYZhy{}}\PY{l+m+mi}{2}\PY{p}{;}\PY{o}{\PYZhy{}}\PY{l+m+mi}{1}\PY{p}{]}\PY{p}{;} + \PY{n}{g}\PY{p}{=}\PY{p}{[}\PY{o}{\PYZhy{}}\PY{l+m+mi}{5}\PY{p}{;}\PY{o}{\PYZhy{}}\PY{l+m+mi}{2}\PY{p}{;}\PY{o}{\PYZhy{}}\PY{l+m+mi}{1}\PY{p}{;}\PY{l+m+mi}{0}\PY{p}{]}\PY{p}{;} + \PY{n}{f}\PY{p}{=}\PY{p}{[}\PY{l+m+mi}{15}\PY{p}{;}\PY{l+m+mi}{7}\PY{p}{;}\PY{l+m+mi}{3}\PY{p}{;}\PY{l+m+mi}{1}\PY{p}{]}\PY{p}{;} + \PY{n}{Tridiag}\PY{p}{(}\PY{n+nb}{e}\PY{p}{,}\PY{n}{f}\PY{p}{,}\PY{n}{g}\PY{p}{,}\PY{n}{y}\PY{p}{)} + \PY{n}{K}\PY{o}{\PYZbs{}}\PY{n}{y} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +ans = + + 9.8100 27.4680 61.8030 101.0430 + +ans = + + 9.8100 + 27.4680 + 61.8030 + 101.0430 + + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}26}]:} \PY{c}{\PYZpc{} tic ... t=toc } + \PY{c}{\PYZpc{} is Matlab timer used for debugging programs} + \PY{n}{t\PYZus{}GE} \PY{p}{=} \PY{n+nb}{zeros}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{100}\PY{p}{)}\PY{p}{;} + \PY{n}{t\PYZus{}GE\PYZus{}tridiag} \PY{p}{=} \PY{n+nb}{zeros}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{100}\PY{p}{)}\PY{p}{;} + \PY{n}{t\PYZus{}TD} \PY{p}{=} \PY{n+nb}{zeros}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{100}\PY{p}{)}\PY{p}{;} + \PY{c}{\PYZpc{}for n = 1:200} + \PY{k}{for} \PY{n}{n}\PY{p}{=}\PY{l+m+mi}{1}\PY{p}{:}\PY{l+m+mi}{100} + \PY{n}{A} \PY{p}{=} \PY{n+nb}{rand}\PY{p}{(}\PY{n}{n}\PY{p}{,}\PY{n}{n}\PY{p}{)}\PY{p}{;} + \PY{n+nb}{e} \PY{p}{=} \PY{n+nb}{rand}\PY{p}{(}\PY{n}{n}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} \PY{n+nb}{e}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{=}\PY{l+m+mi}{0}\PY{p}{;} + \PY{n}{f} \PY{p}{=} \PY{n+nb}{rand}\PY{p}{(}\PY{n}{n}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} + \PY{n}{g} \PY{p}{=} \PY{n+nb}{rand}\PY{p}{(}\PY{n}{n}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} \PY{n}{g}\PY{p}{(}\PY{k}{end}\PY{p}{)}\PY{p}{=}\PY{l+m+mi}{0}\PY{p}{;} + \PY{n}{Atd}\PY{p}{=}\PY{n+nb}{diag}\PY{p}{(}\PY{n}{f}\PY{p}{,} \PY{l+m+mi}{0}\PY{p}{)} \PY{o}{\PYZhy{}} \PY{n+nb}{diag}\PY{p}{(}\PY{n+nb}{e}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{:}\PY{n}{n}\PY{p}{)}\PY{p}{,} \PY{o}{\PYZhy{}}\PY{l+m+mi}{1}\PY{p}{)} \PY{o}{\PYZhy{}} \PY{n+nb}{diag}\PY{p}{(}\PY{n}{g}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{:}\PY{n}{n}\PY{o}{\PYZhy{}}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{,} \PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} + \PY{n}{b} \PY{p}{=} \PY{n+nb}{rand}\PY{p}{(}\PY{n}{n}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} + \PY{n+nb}{tic}\PY{p}{;} + \PY{n}{x} \PY{p}{=} \PY{n}{GaussPivot}\PY{p}{(}\PY{n}{A}\PY{p}{,}\PY{n}{b}\PY{p}{)}\PY{p}{;} + \PY{n}{t\PYZus{}GE}\PY{p}{(}\PY{n}{n}\PY{p}{)} \PY{p}{=} \PY{n+nb}{toc}\PY{p}{;} + \PY{n+nb}{tic}\PY{p}{;} + \PY{n}{x} \PY{p}{=} \PY{n}{A}\PY{o}{\PYZbs{}}\PY{n}{b}\PY{p}{;} + \PY{n}{t\PYZus{}GE\PYZus{}tridiag}\PY{p}{(}\PY{n}{n}\PY{p}{)} \PY{p}{=} \PY{n+nb}{toc}\PY{p}{;} + \PY{n+nb}{tic}\PY{p}{;} + \PY{n}{x} \PY{p}{=} \PY{n}{Tridiag}\PY{p}{(}\PY{n+nb}{e}\PY{p}{,}\PY{n}{f}\PY{p}{,}\PY{n}{g}\PY{p}{,}\PY{n}{b}\PY{p}{)}\PY{p}{;} + \PY{n}{t\PYZus{}TD}\PY{p}{(}\PY{n}{n}\PY{p}{)} \PY{p}{=} \PY{n+nb}{toc}\PY{p}{;} + \PY{k}{end} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}28}]:} \PY{n}{n}\PY{p}{=}\PY{l+m+mi}{1}\PY{p}{:}\PY{l+m+mi}{100}\PY{p}{;} + \PY{n+nb}{loglog}\PY{p}{(}\PY{n}{n}\PY{p}{,}\PY{n}{t\PYZus{}GE}\PY{p}{,}\PY{n}{n}\PY{p}{,}\PY{n}{t\PYZus{}TD}\PY{p}{,}\PY{n}{n}\PY{p}{,}\PY{n}{t\PYZus{}GE\PYZus{}tridiag}\PY{p}{)} + \PY{n+nb}{legend}\PY{p}{(}\PY{l+s}{\PYZsq{}}\PY{l+s}{Gauss elim\PYZsq{}}\PY{p}{,}\PY{l+s}{\PYZsq{}}\PY{l+s}{Matlab \PYZbs{}\PYZsq{}}\PY{p}{,}\PY{l+s}{\PYZsq{}}\PY{l+s}{TriDiag\PYZsq{}}\PY{p}{)} + \PY{n+nb}{xlabel}\PY{p}{(}\PY{l+s}{\PYZsq{}}\PY{l+s}{number of elements\PYZsq{}}\PY{p}{)} + \PY{n+nb}{ylabel}\PY{p}{(}\PY{l+s}{\PYZsq{}}\PY{l+s}{time (s)\PYZsq{}}\PY{p}{)} +\end{Verbatim} + + \begin{center} + \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{lecture_10_files/lecture_10_29_0.pdf} + \end{center} + { \hspace*{\fill} \\} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}29}]:} \PY{p}{[}\PY{n}{x}\PY{p}{,}\PY{n}{Aug}\PY{p}{,}\PY{n}{npivots}\PY{p}{]}\PY{p}{=}\PY{n}{GaussPivot}\PY{p}{(}\PY{n}{K}\PY{p}{,}\PY{n}{y}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +x = + + 9.8100 + 27.4680 + 61.8030 + 101.0430 + +Aug = + + 15.00000 -5.00000 0.00000 0.00000 9.81000 + 0.00000 5.33333 -2.00000 0.00000 22.89000 + 0.00000 0.00000 2.25000 -1.00000 38.01375 + 0.00000 0.00000 0.00000 0.55556 56.13500 + +npivots = 0 + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}30}]:} \PY{n}{A}\PY{p}{=}\PY{n}{Aug}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{:}\PY{l+m+mi}{4}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{:}\PY{l+m+mi}{4}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +A = + + 15.00000 -5.00000 0.00000 0.00000 + 0.00000 5.33333 -2.00000 0.00000 + 0.00000 0.00000 2.25000 -1.00000 + 0.00000 0.00000 0.00000 0.55556 + + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}31}]:} \PY{n+nb}{det}\PY{p}{(}\PY{n}{A}\PY{p}{)} + \PY{n}{detA}\PY{p}{=}\PY{n}{A}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{o}{*}\PY{n}{A}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{o}{*}\PY{n}{A}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{)}\PY{o}{*}\PY{n}{A}\PY{p}{(}\PY{l+m+mi}{4}\PY{p}{,}\PY{l+m+mi}{4}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +ans = 100.00 +detA = 100.00 + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor} }]:} +\end{Verbatim} + + + % Add a bibliography block to the postdoc + + + + \end{document} diff --git a/lecture_10/lecture_10_files/lecture_10_27_0.pdf b/lecture_10/lecture_10_files/lecture_10_27_0.pdf new file mode 100644 index 0000000..8606584 Binary files /dev/null and b/lecture_10/lecture_10_files/lecture_10_27_0.pdf differ diff --git a/lecture_10/lecture_10_files/lecture_10_27_0.svg b/lecture_10/lecture_10_files/lecture_10_27_0.svg new file mode 100644 index 0000000..ddf2410 --- /dev/null +++ b/lecture_10/lecture_10_files/lecture_10_27_0.svg @@ -0,0 +1,129 @@ + + +Gnuplot +Produced by GNUPLOT 5.0 patchlevel 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 10-4 + + + + + 10-3 + + + + + 10-2 + + + + + 10-1 + + + + + 100 + + + + + 100 + + + + + 101 + + + + + 102 + + + + + 103 + + + + + + + + + time (s) + + + + + number of elements + + + + + gnuplot_plot_1a + + + + + + gnuplot_plot_2a + + + + gnuplot_plot_3a + + + + + + + + + + + + + \ No newline at end of file diff --git a/lecture_10/lecture_10_files/lecture_10_28_0.svg b/lecture_10/lecture_10_files/lecture_10_28_0.svg new file mode 100644 index 0000000..548cda9 --- /dev/null +++ b/lecture_10/lecture_10_files/lecture_10_28_0.svg @@ -0,0 +1,123 @@ + + +Gnuplot +Produced by GNUPLOT 5.0 patchlevel 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0.0034 + + + + + 0.0036 + + + + + 0.0038 + + + + + 0.004 + + + + + 0.0042 + + + + + 0.0044 + + + + + 0.9 + + + + + 0.95 + + + + + 1 + + + + + 1.05 + + + + + 1.1 + + + + + + + + + gnuplot_plot_1a + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lecture_10/lecture_10_files/lecture_10_29_0.pdf b/lecture_10/lecture_10_files/lecture_10_29_0.pdf new file mode 100644 index 0000000..20bdd51 Binary files /dev/null and b/lecture_10/lecture_10_files/lecture_10_29_0.pdf differ diff --git a/lecture_10/lecture_10_files/lecture_10_29_0.svg b/lecture_10/lecture_10_files/lecture_10_29_0.svg new file mode 100644 index 0000000..eb8af2c --- /dev/null +++ b/lecture_10/lecture_10_files/lecture_10_29_0.svg @@ -0,0 +1,148 @@ + + +Gnuplot +Produced by GNUPLOT 5.0 patchlevel 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 10-5 + + + + + 10-4 + + + + + 10-3 + + + + + 10-2 + + + + + 10-1 + + + + + 100 + + + + + 100 + + + + + 101 + + + + + 102 + + + + + + + + + time (s) + + + + + number of elements + + + + + + + + + Gauss elim + + + + + Gauss elim + + + + + + Matlab \ + + + Matlab + + + + + + TriDiag + + + TriDiag + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lecture_10/lecture_10_files/lecture_10_3_0.pdf b/lecture_10/lecture_10_files/lecture_10_3_0.pdf new file mode 100644 index 0000000..5ebf43a Binary files /dev/null and b/lecture_10/lecture_10_files/lecture_10_3_0.pdf differ diff --git a/lecture_10/lecture_10_files/lecture_10_3_0.svg b/lecture_10/lecture_10_files/lecture_10_3_0.svg new file mode 100644 index 0000000..62b5e17 --- /dev/null +++ b/lecture_10/lecture_10_files/lecture_10_3_0.svg @@ -0,0 +1,140 @@ + + +Gnuplot +Produced by GNUPLOT 5.0 patchlevel 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -4 + + + + + -2 + + + + + 0 + + + + + 2 + + + + + 4 + + + + + 6 + + + + + -6 + + + + + -4 + + + + + -2 + + + + + 0 + + + + + 2 + + + + + 4 + + + + + 6 + + + + + 8 + + + + + + + + + gnuplot_plot_1a + + + + + + gnuplot_plot_2a + + + + + + + + + + + + + \ No newline at end of file diff --git a/lecture_10/lecture_10_files/lecture_10_5_0.svg b/lecture_10/lecture_10_files/lecture_10_5_0.svg new file mode 100644 index 0000000..9d2a214 --- /dev/null +++ b/lecture_10/lecture_10_files/lecture_10_5_0.svg @@ -0,0 +1,377 @@ + + +Gnuplot +Produced by GNUPLOT 5.0 patchlevel 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -2 + + + + + + + + + + + -1.5 + + + + + + + + + + + -1 + + + + + + + + + + + -0.5 + + + + + + + + + + + 0 + + + + + + + + + + + 0.5 + + + + + + + + + + + 1 + + + + + + + + + + + 1.5 + + + + + + + + + + + 2 + + + + + + + + + + + -2 + + + + + + + + + + + -1.5 + + + + + + + + + + + -1 + + + + + + + + + + + -0.5 + + + + + + + + + + + 0 + + + + + + + + + + + 0.5 + + + + + + + + + + + 1 + + + + + + + + + + + 1.5 + + + + + + + + + + + 2 + + + + + + + + + + + -30 + + + + + + + + + + + + + -20 + + + + + + + + + + + + + -10 + + + + + + + + + + + + + 0 + + + + + + + + + + + + + 10 + + + + + + + + + + + + + 20 + + + + + + + + + + + + + 30 + + + + + + + gnuplot_plot_1a + + + + + + gnuplot_plot_2a + + + + gnuplot_plot_3a + + + + gnuplot_plot_4a + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lecture_10/lecture_10_files/lecture_10_5_1.pdf b/lecture_10/lecture_10_files/lecture_10_5_1.pdf new file mode 100644 index 0000000..4da2561 Binary files /dev/null and b/lecture_10/lecture_10_files/lecture_10_5_1.pdf differ diff --git a/lecture_10/lecture_10_files/lecture_10_5_1.svg b/lecture_10/lecture_10_files/lecture_10_5_1.svg new file mode 100644 index 0000000..70e0f6a --- /dev/null +++ b/lecture_10/lecture_10_files/lecture_10_5_1.svg @@ -0,0 +1,322 @@ + + +Gnuplot +Produced by GNUPLOT 5.0 patchlevel 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -2 + + + + + + + + + -1.5 + + + + + + + + + -1 + + + + + + + + + -0.5 + + + + + + + + + 0 + + + + + + + + + 0.5 + + + + + + + + + 1 + + + + + + + + + 1.5 + + + + + + + + + 2 + + + + + + + + + -2 + + + + + + + + + -1.5 + + + + + + + + + -1 + + + + + + + + + -0.5 + + + + + + + + + 0 + + + + + + + + + 0.5 + + + + + + + + + 1 + + + + + + + + + 1.5 + + + + + + + + + 2 + + + + + + + -6 + + + + + + + + + -4 + + + + + + + + + -2 + + + + + + + + + 0 + + + + + + + + + 2 + + + + + + + + + 4 + + + + + + + + + 6 + + + + + + + + + 8 + + + + + + + gnuplot_plot_1a + + + + + + gnuplot_plot_2a + + + + gnuplot_plot_3a + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lecture_10/lecture_10_files/lecture_10_6_0.pdf b/lecture_10/lecture_10_files/lecture_10_6_0.pdf new file mode 100644 index 0000000..53b6aa0 Binary files /dev/null and b/lecture_10/lecture_10_files/lecture_10_6_0.pdf differ diff --git a/lecture_10/lecture_10_files/lecture_10_6_0.svg b/lecture_10/lecture_10_files/lecture_10_6_0.svg new file mode 100644 index 0000000..73465c0 --- /dev/null +++ b/lecture_10/lecture_10_files/lecture_10_6_0.svg @@ -0,0 +1,397 @@ + + +Gnuplot +Produced by GNUPLOT 5.0 patchlevel 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -2 + + + + + + + + + + + -1.5 + + + + + + + + + + + -1 + + + + + + + + + + + -0.5 + + + + + + + + + + + 0 + + + + + + + + + + + 0.5 + + + + + + + + + + + 1 + + + + + + + + + + + 1.5 + + + + + + + + + + + 2 + + + + + + + + + + + -2 + + + + + + + + + + + -1.5 + + + + + + + + + + + -1 + + + + + + + + + + + -0.5 + + + + + + + + + + + 0 + + + + + + + + + + + 0.5 + + + + + + + + + + + 1 + + + + + + + + + + + 1.5 + + + + + + + + + + + 2 + + + + + + + + + + + -30 + + + + + + + + + + + + + -20 + + + + + + + + + + + + + -10 + + + + + + + + + + + + + 0 + + + + + + + + + + + + + 10 + + + + + + + + + + + + + 20 + + + + + + + + + + + + + 30 + + + + + + + x3 + + + + + gnuplot_plot_1a + + + + + + gnuplot_plot_2a + + + + gnuplot_plot_3a + + + + gnuplot_plot_4a + + + + + + + + + + + + + + + x1 + + + + + x2 + + + + + x3 + + + + + + \ No newline at end of file diff --git a/lecture_10/nohup.out b/lecture_10/nohup.out new file mode 100644 index 0000000..e69de29 diff --git a/lecture_10/octave-workspace b/lecture_10/octave-workspace new file mode 100644 index 0000000..8a9aba2 Binary files /dev/null and b/lecture_10/octave-workspace differ diff --git a/lecture_11/.ipynb_checkpoints/lecture_11-checkpoint.ipynb b/lecture_11/.ipynb_checkpoints/lecture_11-checkpoint.ipynb new file mode 100644 index 0000000..e2aa425 --- /dev/null +++ b/lecture_11/.ipynb_checkpoints/lecture_11-checkpoint.ipynb @@ -0,0 +1,699 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "setdefaults" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What is the determinant of A?\n", + "\n", + "$A=\\left[ \\begin{array}{ccc}\n", + "10 & 2 & 1 \\\\\n", + "0 & 1 & 1 \\\\\n", + "0 & 0 & 10\\end{array} \\right]$\n", + "\n", + "![responses to determinant of A](det_A.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# LU Decomposition\n", + "### efficient storage of matrices for solutions\n", + "\n", + "Considering the same solution set:\n", + "\n", + "$y=Ax$\n", + "\n", + "Assume that we can perform Gauss elimination and achieve this formula:\n", + "\n", + "$Ux=d$ \n", + "\n", + "Where, $U$ is an upper triangular matrix that we derived from Gauss elimination and $d$ is the set of dependent variables after Gauss elimination. \n", + "\n", + "Assume there is a lower triangular matrix, $L$, with ones on the diagonal and same dimensions of $U$ and the following is true:\n", + "\n", + "$L(Ux-d)=Ax-y=0$\n", + "\n", + "Now, $Ax=LUx$, so $A=LU$, and $y=Ld$.\n", + "\n", + "$2x_{1}+x_{2}=1$\n", + "\n", + "$x_{1}+3x_{2}=1$\n", + "\n", + "\n", + "$\\left[ \\begin{array}{cc}\n", + "2 & 1 \\\\\n", + "1 & 3 \\end{array} \\right]\n", + "\\left[\\begin{array}{c} \n", + "x_{1} \\\\ \n", + "x_{2} \\end{array}\\right]=\n", + "\\left[\\begin{array}{c} \n", + "1 \\\\\n", + "1\\end{array}\\right]$\n", + "\n", + "f21=0.5\n", + "\n", + "A(2,1)=1-1 = 0 \n", + "\n", + "A(2,2)=3-0.5=2.5\n", + "\n", + "y(2)=1-0.5=0.5\n", + "\n", + "$L(Ux-d)=\n", + "\\left[ \\begin{array}{cc}\n", + "1 & 0 \\\\\n", + "0.5 & 1 \\end{array} \\right]\n", + "\\left(\\left[ \\begin{array}{cc}\n", + "2 & 1 \\\\\n", + "0 & 2.5 \\end{array} \\right]\n", + "\\left[\\begin{array}{c} \n", + "x_{1} \\\\ \n", + "x_{2} \\end{array}\\right]-\n", + "\\left[\\begin{array}{c} \n", + "1 \\\\\n", + "0.5\\end{array}\\right]\\right)=0$\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A =\n", + "\n", + " 2 1\n", + " 1 3\n", + "\n", + "L =\n", + "\n", + " 1.00000 0.00000\n", + " 0.50000 1.00000\n", + "\n", + "U =\n", + "\n", + " 2.00000 1.00000\n", + " 0.00000 2.50000\n", + "\n", + "ans =\n", + "\n", + " 2 1\n", + " 1 3\n", + "\n", + "d =\n", + "\n", + " 1.00000\n", + " 0.50000\n", + "\n", + "y =\n", + "\n", + " 1\n", + " 1\n", + "\n" + ] + } + ], + "source": [ + "A=[2,1;1,3]\n", + "L=[1,0;0.5,1]\n", + "U=[2,1;0,2.5]\n", + "L*U\n", + "\n", + "d=[1;0.5]\n", + "y=L*d" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Pivoting for LU factorization\n", + "\n", + "LU factorization uses the same method as Gauss elimination so it is also necessary to perform partial pivoting when creating the lower and upper triangular matrices. \n", + "\n", + "Matlab and Octave use pivoting in the command \n", + "\n", + "`[L,U,P]=lu(A)`\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'lu' is a built-in function from the file libinterp/corefcn/lu.cc\n", + "\n", + " -- Built-in Function: [L, U] = lu (A)\n", + " -- Built-in Function: [L, U, P] = lu (A)\n", + " -- Built-in Function: [L, U, P, Q] = lu (S)\n", + " -- Built-in Function: [L, U, P, Q, R] = lu (S)\n", + " -- Built-in Function: [...] = lu (S, THRES)\n", + " -- Built-in Function: Y = lu (...)\n", + " -- Built-in Function: [...] = lu (..., \"vector\")\n", + " Compute the LU decomposition of A.\n", + "\n", + " If A is full subroutines from LAPACK are used and if A is sparse\n", + " then UMFPACK is used.\n", + "\n", + " The result is returned in a permuted form, according to the\n", + " optional return value P. For example, given the matrix 'a = [1, 2;\n", + " 3, 4]',\n", + "\n", + " [l, u, p] = lu (A)\n", + "\n", + " returns\n", + "\n", + " l =\n", + "\n", + " 1.00000 0.00000\n", + " 0.33333 1.00000\n", + "\n", + " u =\n", + "\n", + " 3.00000 4.00000\n", + " 0.00000 0.66667\n", + "\n", + " p =\n", + "\n", + " 0 1\n", + " 1 0\n", + "\n", + " The matrix is not required to be square.\n", + "\n", + " When called with two or three output arguments and a spare input\n", + " matrix, 'lu' does not attempt to perform sparsity preserving column\n", + " permutations. Called with a fourth output argument, the sparsity\n", + " preserving column transformation Q is returned, such that 'P * A *\n", + " Q = L * U'.\n", + "\n", + " Called with a fifth output argument and a sparse input matrix, 'lu'\n", + " attempts to use a scaling factor R on the input matrix such that 'P\n", + " * (R \\ A) * Q = L * U'. This typically leads to a sparser and more\n", + " stable factorization.\n", + "\n", + " An additional input argument THRES, that defines the pivoting\n", + " threshold can be given. THRES can be a scalar, in which case it\n", + " defines the UMFPACK pivoting tolerance for both symmetric and\n", + " unsymmetric cases. If THRES is a 2-element vector, then the first\n", + " element defines the pivoting tolerance for the unsymmetric UMFPACK\n", + " pivoting strategy and the second for the symmetric strategy. By\n", + " default, the values defined by 'spparms' are used ([0.1, 0.001]).\n", + "\n", + " Given the string argument \"vector\", 'lu' returns the values of P\n", + " and Q as vector values, such that for full matrix, 'A (P,:) = L *\n", + " U', and 'R(P,:) * A (:, Q) = L * U'.\n", + "\n", + " With two output arguments, returns the permuted forms of the upper\n", + " and lower triangular matrices, such that 'A = L * U'. With one\n", + " output argument Y, then the matrix returned by the LAPACK routines\n", + " is returned. If the input matrix is sparse then the matrix L is\n", + " embedded into U to give a return value similar to the full case.\n", + " For both full and sparse matrices, 'lu' loses the permutation\n", + " information.\n", + "\n", + " See also: luupdate, ilu, chol, hess, qr, qz, schur, svd.\n", + "\n", + "Additional help for built-in functions and operators is\n", + "available in the online version of the manual. Use the command\n", + "'doc ' to search the manual index.\n", + "\n", + "Help and information about Octave is also available on the WWW\n", + "at http://www.octave.org and via the help@octave.org\n", + "mailing list.\n" + ] + } + ], + "source": [ + "help lu" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t5e-05\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.0001\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.00015\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.0002\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.00025\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.0003\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t40\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t60\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t80\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\tLU decomp\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\tLU decomp\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tOctave \\\\\n", + "\n", + "\t\n", + "\t\tOctave \\\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "% time LU solution vs backslash\n", + "t_lu=zeros(100,1);\n", + "t_bs=zeros(100,1);\n", + "for N=1:100\n", + " A=rand(N,N);\n", + " y=rand(N,1);\n", + " [L,U,P]=lu(A);\n", + "\n", + " tic; d=L\\y; x=U\\d; t_lu(N)=toc;\n", + "\n", + " tic; x=A\\y; t_bs(N)=toc;\n", + "end\n", + "plot([1:100],t_lu,[1:100],t_bs) \n", + "legend('LU decomp','Octave \\\\')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Consider the problem again from the intro to Linear Algebra, 4 masses are connected in series to 4 springs with K=10 N/m. What are the final positions of the masses? \n", + "\n", + "![Springs-masses](../lecture_09/mass_springs.svg)\n", + "\n", + "The masses haves the following amounts, 1, 2, 3, and 4 kg for masses 1-4. Using a FBD for each mass:\n", + "\n", + "$m_{1}g+k(x_{2}-x_{1})-kx_{1}=0$\n", + "\n", + "$m_{2}g+k(x_{3}-x_{2})-k(x_{2}-x_{1})=0$\n", + "\n", + "$m_{3}g+k(x_{4}-x_{3})-k(x_{3}-x_{2})=0$\n", + "\n", + "$m_{4}g-k(x_{4}-x_{3})=0$\n", + "\n", + "in matrix form:\n", + "\n", + "$\\left[ \\begin{array}{cccc}\n", + "2k & -k & 0 & 0 \\\\\n", + "-k & 2k & -k & 0 \\\\\n", + "0 & -k & 2k & -k \\\\\n", + "0 & 0 & -k & k \\end{array} \\right]\n", + "\\left[ \\begin{array}{c}\n", + "x_{1} \\\\\n", + "x_{2} \\\\\n", + "x_{3} \\\\\n", + "x_{4} \\end{array} \\right]=\n", + "\\left[ \\begin{array}{c}\n", + "m_{1}g \\\\\n", + "m_{2}g \\\\\n", + "m_{3}g \\\\\n", + "m_{4}g \\end{array} \\right]$" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "K =\n", + "\n", + " 20 -10 0 0\n", + " -10 20 -10 0\n", + " 0 -10 20 -10\n", + " 0 0 -10 10\n", + "\n", + "y =\n", + "\n", + " 9.8100\n", + " 19.6200\n", + " 29.4300\n", + " 39.2400\n", + "\n" + ] + } + ], + "source": [ + "k=10; % N/m\n", + "m1=1; % kg\n", + "m2=2;\n", + "m3=3;\n", + "m4=4;\n", + "g=9.81; % m/s^2\n", + "K=[2*k -k 0 0; -k 2*k -k 0; 0 -k 2*k -k; 0 0 -k k]\n", + "y=[m1*g;m2*g;m3*g;m4*g]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This matrix, K, is symmetric. \n", + "\n", + "`K(i,j)==K(j,i)`\n", + "\n", + "Now we can use,\n", + "\n", + "## Cholesky Factorization\n", + "\n", + "We can decompose the matrix, K into two matrices, $U$ and $U^{T}$, where\n", + "\n", + "$K=U^{T}U$\n", + "\n", + "each of the components of U can be calculated with the following equations:\n", + "\n", + "$u_{ii}=\\sqrt{a_{ii}-\\sum_{k=1}^{i-1}u_{ki}^{2}}$\n", + "\n", + "$u_{ij}=\\frac{a_{ij}-\\sum_{k=1}^{i-1}u_{ki}u_{kj}}{u_{ii}}$\n", + "\n", + "so for K" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "K =\n", + "\n", + " 20 -10 0 0\n", + " -10 20 -10 0\n", + " 0 -10 20 -10\n", + " 0 0 -10 10\n", + "\n" + ] + } + ], + "source": [ + "K" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "u11 = 4.4721\n", + "u12 = -2.2361\n", + "u13 = 0\n", + "u14 = 0\n", + "u22 = 3.8730\n", + "u23 = -2.5820\n", + "u24 = 0\n", + "u33 = 3.6515\n", + "u34 = -2.7386\n", + "u44 = 1.5811\n", + "U =\n", + "\n", + " 4.47214 -2.23607 0.00000 0.00000\n", + " 0.00000 3.87298 -2.58199 0.00000\n", + " 0.00000 0.00000 3.65148 -2.73861\n", + " 0.00000 0.00000 0.00000 1.58114\n", + "\n" + ] + } + ], + "source": [ + "u11=sqrt(K(1,1))\n", + "u12=(K(1,2))/u11\n", + "u13=(K(1,3))/u11\n", + "u14=(K(1,4))/u11\n", + "u22=sqrt(K(2,2)-u12^2)\n", + "u23=(K(2,3)-u12*u13)/u22\n", + "u24=(K(2,4)-u12*u14)/u22\n", + "u33=sqrt(K(3,3)-u13^2-u23^2)\n", + "u34=(K(3,4)-u13*u14-u23*u24)/u33\n", + "u44=sqrt(K(4,4)-u14^2-u24^2-u34^2)\n", + "U=[u11,u12,u13,u14;0,u22,u23,u24;0,0,u33,u34;0,0,0,u44]" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 20.00000 -10.00000 0.00000 0.00000\n", + " -10.00000 20.00000 -10.00000 0.00000\n", + " 0.00000 -10.00000 20.00000 -10.00000\n", + " 0.00000 0.00000 -10.00000 10.00000\n", + "\n" + ] + } + ], + "source": [ + "U'*U" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "average time spent for Cholesky factored solution = 1.623154e-05+/-1.166726e-05\n", + "average time spent for backslash solution = 1.675844e-05+/-1.187234e-05\n" + ] + } + ], + "source": [ + "% time solution for Cholesky vs backslash\n", + "t_chol=zeros(1000,1);\n", + "t_bs=zeros(1000,1);\n", + "for i=1:1000\n", + " tic; d=U'*y; x=U\\d; t_chol(i)=toc;\n", + " tic; x=K\\y; t_bs(i)=toc;\n", + "end\n", + "fprintf('average time spent for Cholesky factored solution = %e+/-%e',mean(t_chol),std(t_chol))\n", + "\n", + "fprintf('average time spent for backslash solution = %e+/-%e',mean(t_bs),std(t_bs))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Octave", + "language": "octave", + "name": "octave" + }, + "language_info": { + "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": "octave", + "version": "0.19.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lecture_11/LU_naive.m b/lecture_11/LU_naive.m new file mode 100644 index 0000000..92efde6 --- /dev/null +++ b/lecture_11/LU_naive.m @@ -0,0 +1,27 @@ +function [L, U] = LU_naive(A) +% GaussNaive: naive Gauss elimination +% x = GaussNaive(A,b): Gauss elimination without pivoting. +% input: +% A = coefficient matrix +% y = right hand side vector +% output: +% x = solution vector +[m,n] = size(A); +if m~=n, error('Matrix A must be square'); end +nb = n; +L=diag(ones(n,1)); +U=A; +% forward elimination +for k = 1:n-1 + for i = k+1:n + fik = U(i,k)/U(k,k); + L(i,k)=fik; + U(i,k:nb) = U(i,k:nb)-fik*U(k,k:nb); + end +end +%% back substitution +%x = zeros(n,1); +%x(n) = Aug(n,nb)/Aug(n,n); +%for i = n-1:-1:1 +% x(i) = (Aug(i,nb)-Aug(i,i+1:n)*x(i+1:n))/Aug(i,i); +%end diff --git a/lecture_11/LU_pivot.m b/lecture_11/LU_pivot.m new file mode 100644 index 0000000..37abb26 --- /dev/null +++ b/lecture_11/LU_pivot.m @@ -0,0 +1,36 @@ +function [L,U,P] = LU_pivot(A) +% GaussPivot: Gauss elimination pivoting +% x = GaussPivot(A,b): Gauss elimination with pivoting. +% input: +% A = coefficient matrix +% b = right hand side vector +% output: +% x = solution vector +[m,n]=size(A); +if m~=n, error('Matrix A must be square'); end +nb = n; +L=diag(ones(n,1)); +U=A; +P=diag(ones(n,1)); +% forward elimination +for k = 1:n-1 + % partial pivoting + [big,i]=max(abs(U(k:n,k))); + ipr=i+k-1; + if ipr~=k + P([k,ipr],:)=P([ipr,k],:); % if the max is not the current index ipr, pivot count + %L([k,ipr],:)=L([ipr,k],:); + %U([k,ipr],:)=U([ipr,k],:); + end + for i = k+1:n + fik=U(i,k)/U(k,k); + L(i,k)=fik; + U(i,k:nb)=U(i,k:nb)-fik*U(k,k:nb); + end +end +% back substitution +%x=zeros(n,1); +%x(n)=Aug(n,nb)/Aug(n,n); +%for i = n-1:-1:1 +% x(i)=(Aug(i,nb)-Aug(i,i+1:n)*x(i+1:n))/Aug(i,i); +%end diff --git a/lecture_11/det_A.png b/lecture_11/det_A.png new file mode 100644 index 0000000..50f6ac1 Binary files /dev/null and b/lecture_11/det_A.png differ diff --git a/lecture_11/lecture_11.aux b/lecture_11/lecture_11.aux new file mode 100644 index 0000000..a9c4771 --- /dev/null +++ b/lecture_11/lecture_11.aux @@ -0,0 +1,38 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\providecommand \oddpage@label [2]{} +\@writefile{toc}{\contentsline {subsection}{\numberline {0.1}My question from last class}{1}{subsection.0.1}} +\newlabel{my-question-from-last-class}{{0.1}{1}{My question from last class}{subsection.0.1}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces responses to determinant of A\relax }}{1}{figure.caption.1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {0.2}Your questions from last class}{1}{subsection.0.2}} +\newlabel{your-questions-from-last-class}{{0.2}{1}{Your questions from last class}{subsection.0.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {0.3}Midterm preference}{2}{subsection.0.3}} +\newlabel{midterm-preference}{{0.3}{2}{Midterm preference}{subsection.0.3}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces responses to midterm date\relax }}{2}{figure.caption.2}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {0.3.1}Midterm Questions}{2}{subsubsection.0.3.1}} +\newlabel{midterm-questions}{{0.3.1}{2}{Midterm Questions}{subsubsection.0.3.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {1}LU Decomposition}{2}{section.1}} +\newlabel{lu-decomposition}{{1}{2}{LU Decomposition}{section.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.0.1}efficient storage of matrices for solutions}{2}{subsubsection.1.0.1}} +\newlabel{efficient-storage-of-matrices-for-solutions}{{1.0.1}{2}{efficient storage of matrices for solutions}{subsubsection.1.0.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Pivoting for LU factorization}{4}{subsection.1.1}} +\newlabel{pivoting-for-lu-factorization}{{1.1}{4}{Pivoting for LU factorization}{subsection.1.1}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Springs-masses\relax }}{7}{figure.caption.3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Cholesky Factorization}{8}{subsection.1.2}} +\newlabel{cholesky-factorization}{{1.2}{8}{Cholesky Factorization}{subsection.1.2}{}} diff --git a/lecture_11/lecture_11.bbl b/lecture_11/lecture_11.bbl new file mode 100644 index 0000000..e69de29 diff --git a/lecture_11/lecture_11.blg b/lecture_11/lecture_11.blg new file mode 100644 index 0000000..f6400af --- /dev/null +++ b/lecture_11/lecture_11.blg @@ -0,0 +1,48 @@ +This is BibTeX, Version 0.99d (TeX Live 2015/Debian) +Capacity: max_strings=35307, hash_size=35307, hash_prime=30011 +The top-level auxiliary file: lecture_11.aux +I found no \citation commands---while reading file lecture_11.aux +I found no \bibdata command---while reading file lecture_11.aux +I found no \bibstyle command---while reading file lecture_11.aux +You've used 0 entries, + 0 wiz_defined-function locations, + 83 strings with 494 characters, +and the built_in function-call counts, 0 in all, are: += -- 0 +> -- 0 +< -- 0 ++ -- 0 +- -- 0 +* -- 0 +:= -- 0 +add.period$ -- 0 +call.type$ -- 0 +change.case$ -- 0 +chr.to.int$ -- 0 +cite$ -- 0 +duplicate$ -- 0 +empty$ -- 0 +format.name$ -- 0 +if$ -- 0 +int.to.chr$ -- 0 +int.to.str$ -- 0 +missing$ -- 0 +newline$ -- 0 +num.names$ -- 0 +pop$ -- 0 +preamble$ -- 0 +purify$ -- 0 +quote$ -- 0 +skip$ -- 0 +stack$ -- 0 +substring$ -- 0 +swap$ -- 0 +text.length$ -- 0 +text.prefix$ -- 0 +top$ -- 0 +type$ -- 0 +warning$ -- 0 +while$ -- 0 +width$ -- 0 +write$ -- 0 +(There were 3 error messages) diff --git a/lecture_11/lecture_11.ipynb b/lecture_11/lecture_11.ipynb new file mode 100644 index 0000000..41f1870 --- /dev/null +++ b/lecture_11/lecture_11.ipynb @@ -0,0 +1,758 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "setdefaults" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## My question from last class \n", + "\n", + "$A=\\left[ \\begin{array}{ccc}\n", + "10 & 2 & 1 \\\\\n", + "0 & 1 & 1 \\\\\n", + "0 & 0 & 10\\end{array} \\right]$\n", + "\n", + "![responses to determinant of A](det_A.png)\n", + "\n", + "## Your questions from last class\n", + "\n", + "1. Need more linear algebra review\n", + " \n", + " -We will keep doing Linear Algebra, try the practice problems in 'linear_algebra'\n", + "\n", + "2. How do I do HW3? \n", + " \n", + " -demo today\n", + "\n", + "3. For hw4 is the spring constant (K) suppose to be given? \n", + " \n", + " -yes, its 30 N/m\n", + " \n", + "4. Deapool or Joker?\n", + "\n", + "\n", + "## Midterm preference\n", + "\n", + "![responses to midterm date](midterm_date.png)\n", + "\n", + "### Midterm Questions\n", + "\n", + "1. Notes allowed\n", + " \n", + " -no\n", + "\n", + "2. Will there be a review/study sheet\n", + "\n", + " -yes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# LU Decomposition\n", + "### efficient storage of matrices for solutions\n", + "\n", + "Considering the same solution set:\n", + "\n", + "$y=Ax$\n", + "\n", + "Assume that we can perform Gauss elimination and achieve this formula:\n", + "\n", + "$Ux=d$ \n", + "\n", + "Where, $U$ is an upper triangular matrix that we derived from Gauss elimination and $d$ is the set of dependent variables after Gauss elimination. \n", + "\n", + "Assume there is a lower triangular matrix, $L$, with ones on the diagonal and same dimensions of $U$ and the following is true:\n", + "\n", + "$L(Ux-d)=Ax-y=0$\n", + "\n", + "Now, $Ax=LUx$, so $A=LU$, and $y=Ld$.\n", + "\n", + "$2x_{1}+x_{2}=1$\n", + "\n", + "$x_{1}+3x_{2}=1$\n", + "\n", + "\n", + "$\\left[ \\begin{array}{cc}\n", + "2 & 1 \\\\\n", + "1 & 3 \\end{array} \\right]\n", + "\\left[\\begin{array}{c} \n", + "x_{1} \\\\ \n", + "x_{2} \\end{array}\\right]=\n", + "\\left[\\begin{array}{c} \n", + "1 \\\\\n", + "1\\end{array}\\right]$\n", + "\n", + "f21=0.5\n", + "\n", + "A(2,1)=1-1 = 0 \n", + "\n", + "A(2,2)=3-0.5=2.5\n", + "\n", + "y(2)=1-0.5=0.5\n", + "\n", + "$L(Ux-d)=\n", + "\\left[ \\begin{array}{cc}\n", + "1 & 0 \\\\\n", + "0.5 & 1 \\end{array} \\right]\n", + "\\left(\\left[ \\begin{array}{cc}\n", + "2 & 1 \\\\\n", + "0 & 2.5 \\end{array} \\right]\n", + "\\left[\\begin{array}{c} \n", + "x_{1} \\\\ \n", + "x_{2} \\end{array}\\right]-\n", + "\\left[\\begin{array}{c} \n", + "1 \\\\\n", + "0.5\\end{array}\\right]\\right)=0$\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A =\n", + "\n", + " 2 1\n", + " 1 3\n", + "\n", + "L =\n", + "\n", + " 1.00000 0.00000\n", + " 0.50000 1.00000\n", + "\n", + "U =\n", + "\n", + " 2.00000 1.00000\n", + " 0.00000 2.50000\n", + "\n", + "ans =\n", + "\n", + " 2 1\n", + " 1 3\n", + "\n", + "d =\n", + "\n", + " 1.00000\n", + " 0.50000\n", + "\n", + "y =\n", + "\n", + " 1\n", + " 1\n", + "\n" + ] + } + ], + "source": [ + "A=[2,1;1,3]\n", + "L=[1,0;0.5,1]\n", + "U=[2,1;0,2.5]\n", + "L*U\n", + "\n", + "d=[1;0.5]\n", + "y=L*d" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans = 5.0000\n", + "ans = 1\n", + "ans = 5\n", + "ans = 5\n", + "ans = 5.0000\n" + ] + } + ], + "source": [ + "% what is the determinant of L, U and A?\n", + "\n", + "det(A)\n", + "det(L)\n", + "det(U)\n", + "det(L)*det(U)\n", + "det(L*U)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Pivoting for LU factorization\n", + "\n", + "LU factorization uses the same method as Gauss elimination so it is also necessary to perform partial pivoting when creating the lower and upper triangular matrices. \n", + "\n", + "Matlab and Octave use pivoting in the command \n", + "\n", + "`[L,U,P]=lu(A)`\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'lu' is a built-in function from the file libinterp/corefcn/lu.cc\n", + "\n", + " -- Built-in Function: [L, U] = lu (A)\n", + " -- Built-in Function: [L, U, P] = lu (A)\n", + " -- Built-in Function: [L, U, P, Q] = lu (S)\n", + " -- Built-in Function: [L, U, P, Q, R] = lu (S)\n", + " -- Built-in Function: [...] = lu (S, THRES)\n", + " -- Built-in Function: Y = lu (...)\n", + " -- Built-in Function: [...] = lu (..., \"vector\")\n", + " Compute the LU decomposition of A.\n", + "\n", + " If A is full subroutines from LAPACK are used and if A is sparse\n", + " then UMFPACK is used.\n", + "\n", + " The result is returned in a permuted form, according to the\n", + " optional return value P. For example, given the matrix 'a = [1, 2;\n", + " 3, 4]',\n", + "\n", + " [l, u, p] = lu (A)\n", + "\n", + " returns\n", + "\n", + " l =\n", + "\n", + " 1.00000 0.00000\n", + " 0.33333 1.00000\n", + "\n", + " u =\n", + "\n", + " 3.00000 4.00000\n", + " 0.00000 0.66667\n", + "\n", + " p =\n", + "\n", + " 0 1\n", + " 1 0\n", + "\n", + " The matrix is not required to be square.\n", + "\n", + " When called with two or three output arguments and a spare input\n", + " matrix, 'lu' does not attempt to perform sparsity preserving column\n", + " permutations. Called with a fourth output argument, the sparsity\n", + " preserving column transformation Q is returned, such that 'P * A *\n", + " Q = L * U'.\n", + "\n", + " Called with a fifth output argument and a sparse input matrix, 'lu'\n", + " attempts to use a scaling factor R on the input matrix such that 'P\n", + " * (R \\ A) * Q = L * U'. This typically leads to a sparser and more\n", + " stable factorization.\n", + "\n", + " An additional input argument THRES, that defines the pivoting\n", + " threshold can be given. THRES can be a scalar, in which case it\n", + " defines the UMFPACK pivoting tolerance for both symmetric and\n", + " unsymmetric cases. If THRES is a 2-element vector, then the first\n", + " element defines the pivoting tolerance for the unsymmetric UMFPACK\n", + " pivoting strategy and the second for the symmetric strategy. By\n", + " default, the values defined by 'spparms' are used ([0.1, 0.001]).\n", + "\n", + " Given the string argument \"vector\", 'lu' returns the values of P\n", + " and Q as vector values, such that for full matrix, 'A (P,:) = L *\n", + " U', and 'R(P,:) * A (:, Q) = L * U'.\n", + "\n", + " With two output arguments, returns the permuted forms of the upper\n", + " and lower triangular matrices, such that 'A = L * U'. With one\n", + " output argument Y, then the matrix returned by the LAPACK routines\n", + " is returned. If the input matrix is sparse then the matrix L is\n", + " embedded into U to give a return value similar to the full case.\n", + " For both full and sparse matrices, 'lu' loses the permutation\n", + " information.\n", + "\n", + " See also: luupdate, ilu, chol, hess, qr, qz, schur, svd.\n", + "\n", + "Additional help for built-in functions and operators is\n", + "available in the online version of the manual. Use the command\n", + "'doc ' to search the manual index.\n", + "\n", + "Help and information about Octave is also available on the WWW\n", + "at http://www.octave.org and via the help@octave.org\n", + "mailing list.\n" + ] + } + ], + "source": [ + "help lu" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.0005\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.001\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.0015\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.002\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t40\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t60\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t80\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\tLU decomp\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\tLU decomp\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tOctave \\\\\n", + "\n", + "\t\n", + "\t\tOctave \\\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "% time LU solution vs backslash\n", + "t_lu=zeros(100,1);\n", + "t_bs=zeros(100,1);\n", + "for N=1:100\n", + " A=rand(N,N);\n", + " y=rand(N,1);\n", + " [L,U,P]=lu(A);\n", + "\n", + " tic; d=inv(L)*y; x=inv(U)*d; t_lu(N)=toc;\n", + "\n", + " tic; x=inv(A)*y; t_bs(N)=toc;\n", + "end\n", + "plot([1:100],t_lu,[1:100],t_bs) \n", + "legend('LU decomp','Octave \\\\')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Consider the problem again from the intro to Linear Algebra, 4 masses are connected in series to 4 springs with K=10 N/m. What are the final positions of the masses? \n", + "\n", + "![Springs-masses](../lecture_09/mass_springs.svg)\n", + "\n", + "The masses haves the following amounts, 1, 2, 3, and 4 kg for masses 1-4. Using a FBD for each mass:\n", + "\n", + "$m_{1}g+k(x_{2}-x_{1})-kx_{1}=0$\n", + "\n", + "$m_{2}g+k(x_{3}-x_{2})-k(x_{2}-x_{1})=0$\n", + "\n", + "$m_{3}g+k(x_{4}-x_{3})-k(x_{3}-x_{2})=0$\n", + "\n", + "$m_{4}g-k(x_{4}-x_{3})=0$\n", + "\n", + "in matrix form:\n", + "\n", + "$\\left[ \\begin{array}{cccc}\n", + "2k & -k & 0 & 0 \\\\\n", + "-k & 2k & -k & 0 \\\\\n", + "0 & -k & 2k & -k \\\\\n", + "0 & 0 & -k & k \\end{array} \\right]\n", + "\\left[ \\begin{array}{c}\n", + "x_{1} \\\\\n", + "x_{2} \\\\\n", + "x_{3} \\\\\n", + "x_{4} \\end{array} \\right]=\n", + "\\left[ \\begin{array}{c}\n", + "m_{1}g \\\\\n", + "m_{2}g \\\\\n", + "m_{3}g \\\\\n", + "m_{4}g \\end{array} \\right]$" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "K =\n", + "\n", + " 20 -10 0 0\n", + " -10 20 -10 0\n", + " 0 -10 20 -10\n", + " 0 0 -10 10\n", + "\n", + "y =\n", + "\n", + " 9.8100\n", + " 19.6200\n", + " 29.4300\n", + " 39.2400\n", + "\n" + ] + } + ], + "source": [ + "k=10; % N/m\n", + "m1=1; % kg\n", + "m2=2;\n", + "m3=3;\n", + "m4=4;\n", + "g=9.81; % m/s^2\n", + "K=[2*k -k 0 0; -k 2*k -k 0; 0 -k 2*k -k; 0 0 -k k]\n", + "y=[m1*g;m2*g;m3*g;m4*g]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This matrix, K, is symmetric. \n", + "\n", + "`K(i,j)==K(j,i)`\n", + "\n", + "Now we can use,\n", + "\n", + "## Cholesky Factorization\n", + "\n", + "We can decompose the matrix, K into two matrices, $U$ and $U^{T}$, where\n", + "\n", + "$K=U^{T}U$\n", + "\n", + "each of the components of U can be calculated with the following equations:\n", + "\n", + "$u_{ii}=\\sqrt{a_{ii}-\\sum_{k=1}^{i-1}u_{ki}^{2}}$\n", + "\n", + "$u_{ij}=\\frac{a_{ij}-\\sum_{k=1}^{i-1}u_{ki}u_{kj}}{u_{ii}}$\n", + "\n", + "so for K" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "K =\n", + "\n", + " 20 -10 0 0\n", + " -10 20 -10 0\n", + " 0 -10 20 -10\n", + " 0 0 -10 10\n", + "\n" + ] + } + ], + "source": [ + "K" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "u11 = 4.4721\n", + "u12 = -2.2361\n", + "u13 = 0\n", + "u14 = 0\n", + "u22 = 3.8730\n", + "u23 = -2.5820\n", + "u24 = 0\n", + "u33 = 3.6515\n", + "u34 = -2.7386\n", + "u44 = 1.5811\n", + "U =\n", + "\n", + " 4.47214 -2.23607 0.00000 0.00000\n", + " 0.00000 3.87298 -2.58199 0.00000\n", + " 0.00000 0.00000 3.65148 -2.73861\n", + " 0.00000 0.00000 0.00000 1.58114\n", + "\n" + ] + } + ], + "source": [ + "u11=sqrt(K(1,1))\n", + "u12=(K(1,2))/u11\n", + "u13=(K(1,3))/u11\n", + "u14=(K(1,4))/u11\n", + "u22=sqrt(K(2,2)-u12^2)\n", + "u23=(K(2,3)-u12*u13)/u22\n", + "u24=(K(2,4)-u12*u14)/u22\n", + "u33=sqrt(K(3,3)-u13^2-u23^2)\n", + "u34=(K(3,4)-u13*u14-u23*u24)/u33\n", + "u44=sqrt(K(4,4)-u14^2-u24^2-u34^2)\n", + "U=[u11,u12,u13,u14;0,u22,u23,u24;0,0,u33,u34;0,0,0,u44]" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 1 1 1 1\n", + " 1 1 1 1\n", + " 1 1 1 1\n", + " 1 1 1 1\n", + "\n" + ] + } + ], + "source": [ + "(U'*U)'==U'*U" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "average time spent for Cholesky factored solution = 1.465964e-05+/-9.806001e-06\n", + "average time spent for backslash solution = 1.555967e-05+/-1.048561e-05\n" + ] + } + ], + "source": [ + "% time solution for Cholesky vs backslash\n", + "t_chol=zeros(1000,1);\n", + "t_bs=zeros(1000,1);\n", + "for i=1:1000\n", + " tic; d=U'*y; x=U\\d; t_chol(i)=toc;\n", + " tic; x=K\\y; t_bs(i)=toc;\n", + "end\n", + "fprintf('average time spent for Cholesky factored solution = %e+/-%e',mean(t_chol),std(t_chol))\n", + "\n", + "fprintf('average time spent for backslash solution = %e+/-%e',mean(t_bs),std(t_bs))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Octave", + "language": "octave", + "name": "octave" + }, + "language_info": { + "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": "octave", + "version": "0.19.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lecture_11/lecture_11.log b/lecture_11/lecture_11.log new file mode 100644 index 0000000..981cd40 --- /dev/null +++ b/lecture_11/lecture_11.log @@ -0,0 +1,839 @@ +This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015/Debian) (preloaded format=pdflatex 2017.1.11) 27 FEB 2017 11:55 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**lecture_11.tex +(./lecture_11.tex +LaTeX2e <2016/02/01> +Babel <3.9q> and hyphenation patterns for 81 language(s) loaded. +(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls +Document Class: article 2014/09/29 v1.4h Standard LaTeX document class +(/usr/share/texlive/texmf-dist/tex/latex/base/size11.clo +File: size11.clo 2014/09/29 v1.4h Standard LaTeX file (size option) +) +\c@part=\count79 +\c@section=\count80 +\c@subsection=\count81 +\c@subsubsection=\count82 +\c@paragraph=\count83 +\c@subparagraph=\count84 +\c@figure=\count85 +\c@table=\count86 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\bibindent=\dimen102 +) +(/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty +Package: fontenc 2005/09/27 v1.99g Standard LaTeX package + +(/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.def +File: t1enc.def 2005/09/27 v1.99g Standard LaTeX file +LaTeX Font Info: Redeclaring font encoding T1 on input line 48. +)) +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/mathpazo.sty +Package: mathpazo 2005/04/12 PSNFSS-v9.2a Palatino w/ Pazo Math (D.Puga, WaS) +\symupright=\mathgroup4 +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks14 +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2016/01/03 v1.0q Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2016/01/03 v1.10 sin cos tan (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/graphics.cfg +File: graphics.cfg 2010/04/23 v1.9 graphics configuration of TeX Live +) +Package graphics Info: Driver file: pdftex.def on input line 95. + +(/usr/share/texlive/texmf-dist/tex/latex/pdftex-def/pdftex.def +File: pdftex.def 2011/05/27 v0.06d Graphics/color for pdfTeX + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty +Package: infwarerr 2010/04/08 v1.3 Providing info/warning/error messages (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +Package: ltxcmds 2011/11/09 v1.22 LaTeX kernel commands for general use (HO) +) +\Gread@gobject=\count87 +)) +\Gin@req@height=\dimen103 +\Gin@req@width=\dimen104 +) +(/usr/share/texlive/texmf-dist/tex/latex/caption/caption.sty +Package: caption 2016/02/21 v3.3-144 Customizing captions (AR) + +(/usr/share/texlive/texmf-dist/tex/latex/caption/caption3.sty +Package: caption3 2016/02/04 v1.7-139 caption3 kernel (AR) +Package caption3 Info: TeX engine: e-TeX on input line 67. +\captionmargin=\dimen105 +\captionmargin@=\dimen106 +\captionwidth=\dimen107 +\caption@tempdima=\dimen108 +\caption@indent=\dimen109 +\caption@parindent=\dimen110 +\caption@hangindent=\dimen111 +) +\c@ContinuedFloat=\count88 +) +(/usr/share/texlive/texmf-dist/tex/latex/adjustbox/adjustbox.sty +Package: adjustbox 2012/05/21 v1.0 Adjusting TeX boxes (trim, clip, ...) + +(/usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty +Package: xkeyval 2014/12/03 v2.7a package option processing (HA) + +(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex +(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkvutils.tex +\XKV@toks=\toks15 +\XKV@tempa@toks=\toks16 +) +\XKV@depth=\count89 +File: xkeyval.tex 2014/12/03 v2.7a key=value parser (HA) +)) +(/usr/share/texlive/texmf-dist/tex/latex/adjustbox/adjcalc.sty +Package: adjcalc 2012/05/16 v1.1 Provides advanced setlength with multiple back +-ends (calc, etex, pgfmath) +) +(/usr/share/texlive/texmf-dist/tex/latex/adjustbox/trimclip.sty +Package: trimclip 2012/05/16 v1.0 Trim and clip general TeX material + +(/usr/share/texlive/texmf-dist/tex/latex/collectbox/collectbox.sty +Package: collectbox 2012/05/17 v0.4b Collect macro arguments as boxes +\collectedbox=\box26 +) +\tc@llx=\dimen112 +\tc@lly=\dimen113 +\tc@urx=\dimen114 +\tc@ury=\dimen115 +Package trimclip Info: Using driver 'tc-pdftex.def'. + +(/usr/share/texlive/texmf-dist/tex/latex/adjustbox/tc-pdftex.def +File: tc-pdftex.def 2012/05/13 v1.0 Clipping driver for pdftex +)) +\adjbox@Width=\dimen116 +\adjbox@Height=\dimen117 +\adjbox@Depth=\dimen118 +\adjbox@Totalheight=\dimen119 + +(/usr/share/texlive/texmf-dist/tex/latex/ifoddpage/ifoddpage.sty +Package: ifoddpage 2011/09/13 v1.0 Conditionals for odd/even page detection +\c@checkoddpage=\count90 +) +(/usr/share/texlive/texmf-dist/tex/latex/varwidth/varwidth.sty +Package: varwidth 2009/03/30 ver 0.92; Variable-width minipages +\@vwid@box=\box27 +\sift@deathcycles=\count91 +\@vwid@loff=\dimen120 +\@vwid@roff=\dimen121 +)) +(/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2007/01/21 v2.11 LaTeX color extensions (UK) + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/color.cfg +File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive +) +Package xcolor Info: Driver file: pdftex.def on input line 225. +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1337. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1341. +Package xcolor Info: Model `RGB' extended on input line 1353. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1355. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1356. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1357. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1358. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1359. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1360. +) +(/usr/share/texlive/texmf-dist/tex/latex/tools/enumerate.sty +Package: enumerate 2015/07/23 v3.00 enumerate extensions (DPC) +\@enLab=\toks17 +) +(/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty +Package: geometry 2010/09/12 v5.6 Page Geometry + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty +Package: ifpdf 2011/01/30 v2.3 Provides the ifpdf switch (HO) +Package ifpdf Info: pdfTeX in PDF mode is detected. +) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty +Package: ifvtex 2010/03/01 v1.5 Detect VTeX and its facilities (HO) +Package ifvtex Info: VTeX not detected. +) +(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty +Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional +) +\Gm@cnth=\count92 +\Gm@cntv=\count93 +\c@Gm@tempcnt=\count94 +\Gm@bindingoffset=\dimen122 +\Gm@wd@mp=\dimen123 +\Gm@odd@mp=\dimen124 +\Gm@even@mp=\dimen125 +\Gm@layoutwidth=\dimen126 +\Gm@layoutheight=\dimen127 +\Gm@layouthoffset=\dimen128 +\Gm@layoutvoffset=\dimen129 +\Gm@dimlist=\toks18 +) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty +Package: amsmath 2016/03/03 v2.15a AMS math features +\@mathmargin=\skip43 + +For additional information on amsmath, use the `?' option. +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty +Package: amstext 2000/06/29 v2.01 AMS text + +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty +File: amsgen.sty 1999/11/30 v2.0 generic functions +\@emptytoks=\toks19 +\ex@=\dimen130 +)) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty +Package: amsbsy 1999/11/29 v1.2d Bold Symbols +\pmbraise@=\dimen131 +) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty +Package: amsopn 1999/12/14 v2.01 operator names +) +\inf@bad=\count95 +LaTeX Info: Redefining \frac on input line 199. +\uproot@=\count96 +\leftroot@=\count97 +LaTeX Info: Redefining \overline on input line 297. +\classnum@=\count98 +\DOTSCASE@=\count99 +LaTeX Info: Redefining \ldots on input line 394. +LaTeX Info: Redefining \dots on input line 397. +LaTeX Info: Redefining \cdots on input line 518. +\Mathstrutbox@=\box28 +\strutbox@=\box29 +\big@size=\dimen132 +LaTeX Font Info: Redeclaring font encoding OML on input line 630. +LaTeX Font Info: Redeclaring font encoding OMS on input line 631. +\macc@depth=\count100 +\c@MaxMatrixCols=\count101 +\dotsspace@=\muskip10 +\c@parentequation=\count102 +\dspbrk@lvl=\count103 +\tag@help=\toks20 +\row@=\count104 +\column@=\count105 +\maxfields@=\count106 +\andhelp@=\toks21 +\eqnshift@=\dimen133 +\alignsep@=\dimen134 +\tagshift@=\dimen135 +\tagwidth@=\dimen136 +\totwidth@=\dimen137 +\lineht@=\dimen138 +\@envbody=\toks22 +\multlinegap=\skip44 +\multlinetaggap=\skip45 +\mathdisplay@stack=\toks23 +LaTeX Info: Redefining \[ on input line 2735. +LaTeX Info: Redefining \] on input line 2736. +) +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty +Package: amssymb 2013/01/14 v3.01 AMS font symbols + +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty +Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support +\symAMSa=\mathgroup5 +\symAMSb=\mathgroup6 +LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' +(Font) U/euf/m/n --> U/euf/b/n on input line 106. +)) +(/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty +Package: textcomp 2005/09/27 v1.99g Standard LaTeX package +Package textcomp Info: Sub-encoding information: +(textcomp) 5 = only ISO-Adobe without \textcurrency +(textcomp) 4 = 5 + \texteuro +(textcomp) 3 = 4 + \textohm +(textcomp) 2 = 3 + \textestimated + \textcurrency +(textcomp) 1 = TS1 - \textcircled - \t +(textcomp) 0 = TS1 (full) +(textcomp) Font families with sub-encoding setting implement +(textcomp) only a restricted character set as indicated. +(textcomp) Family '?' is the default used for unknown fonts. +(textcomp) See the documentation for details. +Package textcomp Info: Setting ? sub-encoding to TS1/1 on input line 79. + +(/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.def +File: ts1enc.def 2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file +) +LaTeX Info: Redefining \oldstylenums on input line 334. +Package textcomp Info: Setting cmr sub-encoding to TS1/0 on input line 349. +Package textcomp Info: Setting cmss sub-encoding to TS1/0 on input line 350. +Package textcomp Info: Setting cmtt sub-encoding to TS1/0 on input line 351. +Package textcomp Info: Setting cmvtt sub-encoding to TS1/0 on input line 352. +Package textcomp Info: Setting cmbr sub-encoding to TS1/0 on input line 353. +Package textcomp Info: Setting cmtl sub-encoding to TS1/0 on input line 354. +Package textcomp Info: Setting ccr sub-encoding to TS1/0 on input line 355. +Package textcomp Info: Setting ptm sub-encoding to TS1/4 on input line 356. +Package textcomp Info: Setting pcr sub-encoding to TS1/4 on input line 357. +Package textcomp Info: Setting phv sub-encoding to TS1/4 on input line 358. +Package textcomp Info: Setting ppl sub-encoding to TS1/3 on input line 359. +Package textcomp Info: Setting pag sub-encoding to TS1/4 on input line 360. +Package textcomp Info: Setting pbk sub-encoding to TS1/4 on input line 361. +Package textcomp Info: Setting pnc sub-encoding to TS1/4 on input line 362. +Package textcomp Info: Setting pzc sub-encoding to TS1/4 on input line 363. +Package textcomp Info: Setting bch sub-encoding to TS1/4 on input line 364. +Package textcomp Info: Setting put sub-encoding to TS1/5 on input line 365. +Package textcomp Info: Setting uag sub-encoding to TS1/5 on input line 366. +Package textcomp Info: Setting ugq sub-encoding to TS1/5 on input line 367. +Package textcomp Info: Setting ul8 sub-encoding to TS1/4 on input line 368. +Package textcomp Info: Setting ul9 sub-encoding to TS1/4 on input line 369. +Package textcomp Info: Setting augie sub-encoding to TS1/5 on input line 370. +Package textcomp Info: Setting dayrom sub-encoding to TS1/3 on input line 371. +Package textcomp Info: Setting dayroms sub-encoding to TS1/3 on input line 372. + +Package textcomp Info: Setting pxr sub-encoding to TS1/0 on input line 373. +Package textcomp Info: Setting pxss sub-encoding to TS1/0 on input line 374. +Package textcomp Info: Setting pxtt sub-encoding to TS1/0 on input line 375. +Package textcomp Info: Setting txr sub-encoding to TS1/0 on input line 376. +Package textcomp Info: Setting txss sub-encoding to TS1/0 on input line 377. +Package textcomp Info: Setting txtt sub-encoding to TS1/0 on input line 378. +Package textcomp Info: Setting lmr sub-encoding to TS1/0 on input line 379. +Package textcomp Info: Setting lmdh sub-encoding to TS1/0 on input line 380. +Package textcomp Info: Setting lmss sub-encoding to TS1/0 on input line 381. +Package textcomp Info: Setting lmssq sub-encoding to TS1/0 on input line 382. +Package textcomp Info: Setting lmvtt sub-encoding to TS1/0 on input line 383. +Package textcomp Info: Setting lmtt sub-encoding to TS1/0 on input line 384. +Package textcomp Info: Setting qhv sub-encoding to TS1/0 on input line 385. +Package textcomp Info: Setting qag sub-encoding to TS1/0 on input line 386. +Package textcomp Info: Setting qbk sub-encoding to TS1/0 on input line 387. +Package textcomp Info: Setting qcr sub-encoding to TS1/0 on input line 388. +Package textcomp Info: Setting qcs sub-encoding to TS1/0 on input line 389. +Package textcomp Info: Setting qpl sub-encoding to TS1/0 on input line 390. +Package textcomp Info: Setting qtm sub-encoding to TS1/0 on input line 391. +Package textcomp Info: Setting qzc sub-encoding to TS1/0 on input line 392. +Package textcomp Info: Setting qhvc sub-encoding to TS1/0 on input line 393. +Package textcomp Info: Setting futs sub-encoding to TS1/4 on input line 394. +Package textcomp Info: Setting futx sub-encoding to TS1/4 on input line 395. +Package textcomp Info: Setting futj sub-encoding to TS1/4 on input line 396. +Package textcomp Info: Setting hlh sub-encoding to TS1/3 on input line 397. +Package textcomp Info: Setting hls sub-encoding to TS1/3 on input line 398. +Package textcomp Info: Setting hlst sub-encoding to TS1/3 on input line 399. +Package textcomp Info: Setting hlct sub-encoding to TS1/5 on input line 400. +Package textcomp Info: Setting hlx sub-encoding to TS1/5 on input line 401. +Package textcomp Info: Setting hlce sub-encoding to TS1/5 on input line 402. +Package textcomp Info: Setting hlcn sub-encoding to TS1/5 on input line 403. +Package textcomp Info: Setting hlcw sub-encoding to TS1/5 on input line 404. +Package textcomp Info: Setting hlcf sub-encoding to TS1/5 on input line 405. +Package textcomp Info: Setting pplx sub-encoding to TS1/3 on input line 406. +Package textcomp Info: Setting pplj sub-encoding to TS1/3 on input line 407. +Package textcomp Info: Setting ptmx sub-encoding to TS1/4 on input line 408. +Package textcomp Info: Setting ptmj sub-encoding to TS1/4 on input line 409. +) +(/usr/share/texlive/texmf-dist/tex/latex/upquote/upquote.sty +Package: upquote 2012/04/19 v1.3 upright-quote and grave-accent glyphs in verba +tim +) +(/usr/share/texlive/texmf-dist/tex/latex/eurosym/eurosym.sty +Package: eurosym 1998/08/06 v1.1 European currency symbol ``Euro'' +\@eurobox=\box30 +) +(/usr/share/texlive/texmf-dist/tex/latex/ucs/ucs.sty +Package: ucs 2013/05/11 v2.2 UCS: Unicode input support + +(/usr/share/texlive/texmf-dist/tex/latex/ucs/data/uni-global.def +File: uni-global.def 2013/05/13 UCS: Unicode global data +) +\uc@secondtry=\count107 +\uc@combtoks=\toks24 +\uc@combtoksb=\toks25 +\uc@temptokena=\toks26 +) +(/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty +Package: inputenc 2015/03/17 v1.2c Input encoding file +\inpenc@prehook=\toks27 +\inpenc@posthook=\toks28 + +(/usr/share/texlive/texmf-dist/tex/latex/ucs/utf8x.def +File: utf8x.def 2004/10/17 UCS: Input encoding UTF-8 +)) +(/usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +Package: fancyvrb 2008/02/07 + +Style option: `fancyvrb' v2.7a, with DG/SPQR fixes, and firstline=lastline fix +<2008/02/07> (tvz) +\FV@CodeLineNo=\count108 +\FV@InFile=\read1 +\FV@TabBox=\box31 +\c@FancyVerbLine=\count109 +\FV@StepNumber=\count110 +\FV@OutFile=\write3 +) +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grffile.sty +Package: grffile 2012/04/05 v1.16 Extended file name support for graphics (HO) + +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty +Package: kvoptions 2011/06/30 v3.11 Key value format for package options (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty +Package: kvsetkeys 2012/04/25 v1.16 Key value parser (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty +Package: etexcmds 2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty +Package: ifluatex 2010/03/01 v1.3 Provides the ifluatex switch (HO) +Package ifluatex Info: LuaTeX not detected. +) +Package etexcmds Info: Could not find \expanded. +(etexcmds) That can mean that you are not using pdfTeX 1.50 or +(etexcmds) that some package has redefined \expanded. +(etexcmds) In the latter case, load this package earlier. +))) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty +Package: pdftexcmds 2011/11/29 v0.20 Utility functions of pdfTeX for LuaTeX (HO +) +Package pdftexcmds Info: LuaTeX not detected. +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +) +Package grffile Info: Option `multidot' is set to `true'. +Package grffile Info: Option `extendedchars' is set to `false'. +Package grffile Info: Option `space' is set to `true'. +Package grffile Info: \Gin@ii of package `graphicx' fixed on input line 486. +) +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +Package: hyperref 2012/11/06 v6.83m Hypertext links for LaTeX + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +Package: hobsub-hyperref 2012/05/28 v1.13 Bundle oberdiek, subset hyperref (HO) + + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty +Package: hobsub-generic 2012/05/28 v1.13 Bundle oberdiek, subset generic (HO) +Package: hobsub 2012/05/28 v1.13 Construct package bundles (HO) +Package hobsub Info: Skipping package `infwarerr' (already loaded). +Package hobsub Info: Skipping package `ltxcmds' (already loaded). +Package hobsub Info: Skipping package `ifluatex' (already loaded). +Package hobsub Info: Skipping package `ifvtex' (already loaded). +Package: intcalc 2007/09/27 v1.1 Expandable calculations with integers (HO) +Package hobsub Info: Skipping package `ifpdf' (already loaded). +Package hobsub Info: Skipping package `etexcmds' (already loaded). +Package hobsub Info: Skipping package `kvsetkeys' (already loaded). +Package: kvdefinekeys 2011/04/07 v1.3 Define keys (HO) +Package hobsub Info: Skipping package `pdftexcmds' (already loaded). +Package: pdfescape 2011/11/25 v1.13 Implements pdfTeX's escape features (HO) +Package: bigintcalc 2012/04/08 v1.3 Expandable calculations on big integers (HO +) +Package: bitset 2011/01/30 v1.1 Handle bit-vector datatype (HO) +Package: uniquecounter 2011/01/30 v1.2 Provide unlimited unique counter (HO) +) +Package hobsub Info: Skipping package `hobsub' (already loaded). +Package: letltxmacro 2010/09/02 v1.4 Let assignment for LaTeX macros (HO) +Package: hopatch 2012/05/28 v1.2 Wrapper for package hooks (HO) +Package: xcolor-patch 2011/01/30 xcolor patch +Package: atveryend 2011/06/30 v1.8 Hooks at the very end of document (HO) +Package atveryend Info: \enddocument detected (standard20110627). +Package: atbegshi 2011/10/05 v1.16 At begin shipout hook (HO) +Package: refcount 2011/10/16 v3.4 Data extraction from label references (HO) +Package: hycolor 2011/01/30 v1.7 Color options for hyperref/bookmark (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty +Package: auxhook 2011/03/04 v1.3 Hooks for auxiliary files (HO) +) +\@linkdim=\dimen139 +\Hy@linkcounter=\count111 +\Hy@pagecounter=\count112 + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +File: pd1enc.def 2012/11/06 v6.83m Hyperref: PDFDocEncoding definition (HO) +) +\Hy@SavedSpaceFactor=\count113 + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg +File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive +) +Package hyperref Info: Hyper figures OFF on input line 4443. +Package hyperref Info: Link nesting OFF on input line 4448. +Package hyperref Info: Hyper index ON on input line 4451. +Package hyperref Info: Plain pages OFF on input line 4458. +Package hyperref Info: Backreferencing OFF on input line 4463. +Package hyperref Info: Implicit mode ON; LaTeX internals redefined. +Package hyperref Info: Bookmarks ON on input line 4688. +\c@Hy@tempcnt=\count114 + +(/usr/share/texlive/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip11 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +LaTeX Info: Redefining \url on input line 5041. +\XeTeXLinkMargin=\dimen140 +\Fld@menulength=\count115 +\Field@Width=\dimen141 +\Fld@charsize=\dimen142 +Package hyperref Info: Hyper figures OFF on input line 6295. +Package hyperref Info: Link nesting OFF on input line 6300. +Package hyperref Info: Hyper index ON on input line 6303. +Package hyperref Info: backreferencing OFF on input line 6310. +Package hyperref Info: Link coloring OFF on input line 6315. +Package hyperref Info: Link coloring with OCG OFF on input line 6320. +Package hyperref Info: PDF/A mode OFF on input line 6325. +LaTeX Info: Redefining \ref on input line 6365. +LaTeX Info: Redefining \pageref on input line 6369. +\Hy@abspage=\count116 +\c@Item=\count117 +\c@Hfootnote=\count118 +) + +Package hyperref Message: Driver (autodetected): hpdftex. + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def +File: hpdftex.def 2012/11/06 v6.83m Hyperref driver for pdfTeX +\Fld@listcount=\count119 +\c@bookmark@seq@number=\count120 + +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty +Package: rerunfilecheck 2011/04/15 v1.7 Rerun checks for auxiliary files (HO) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 +82. +) +\Hy@SectionHShift=\skip46 +) +(/usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty +Package: longtable 2014/10/28 v4.11 Multi-page Table package (DPC) +\LTleft=\skip47 +\LTright=\skip48 +\LTpre=\skip49 +\LTpost=\skip50 +\LTchunksize=\count121 +\LTcapwidth=\dimen143 +\LT@head=\box32 +\LT@firsthead=\box33 +\LT@foot=\box34 +\LT@lastfoot=\box35 +\LT@cols=\count122 +\LT@rows=\count123 +\c@LT@tables=\count124 +\c@LT@chunks=\count125 +\LT@p@ftn=\toks29 +) +(/usr/share/texlive/texmf-dist/tex/latex/booktabs/booktabs.sty +Package: booktabs 2005/04/14 v1.61803 publication quality tables +\heavyrulewidth=\dimen144 +\lightrulewidth=\dimen145 +\cmidrulewidth=\dimen146 +\belowrulesep=\dimen147 +\belowbottomsep=\dimen148 +\aboverulesep=\dimen149 +\abovetopsep=\dimen150 +\cmidrulesep=\dimen151 +\cmidrulekern=\dimen152 +\defaultaddspace=\dimen153 +\@cmidla=\count126 +\@cmidlb=\count127 +\@aboverulesep=\dimen154 +\@belowrulesep=\dimen155 +\@thisruleclass=\count128 +\@lastruleclass=\count129 +\@thisrulewidth=\dimen156 +) +(/usr/share/texlive/texmf-dist/tex/latex/enumitem/enumitem.sty +Package: enumitem 2011/09/28 v3.5.2 Customized lists +\labelindent=\skip51 +\enit@outerparindent=\dimen157 +\enit@toks=\toks30 +\enit@inbox=\box36 +\enitdp@description=\count130 +) +(/usr/share/texlive/texmf-dist/tex/generic/ulem/ulem.sty +\UL@box=\box37 +\UL@hyphenbox=\box38 +\UL@skip=\skip52 +\UL@hook=\toks31 +\UL@height=\dimen158 +\UL@pe=\count131 +\UL@pixel=\dimen159 +\ULC@box=\box39 +Package: ulem 2012/05/18 +\ULdepth=\dimen160 +) +Package hyperref Info: Option `breaklinks' set `true' on input line 264. +Package hyperref Info: Option `colorlinks' set `true' on input line 264. + (./lecture_11.aux) +\openout1 = `lecture_11.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 271. +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 271. +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 271. +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 271. +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 271. +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 271. +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 271. +LaTeX Font Info: Try loading font information for TS1+cmr on input line 271. + + +(/usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd +File: ts1cmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions +) +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 271. +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Try loading font information for T1+ppl on input line 271. + +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ppl.fd +File: t1ppl.fd 2001/06/04 font definitions for T1/ppl. +) +(/usr/share/texlive/texmf-dist/tex/context/base/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count132 +\scratchdimen=\dimen161 +\scratchbox=\box40 +\nofMPsegments=\count133 +\nofMParguments=\count134 +\everyMPshowfont=\toks32 +\MPscratchCnt=\count135 +\MPscratchDim=\dimen162 +\MPnumerator=\count136 +\makeMPintoPDFobject=\count137 +\everyMPtoPDFconversion=\toks33 +) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty +Package: epstopdf-base 2010/02/09 v2.5 Base part for package epstopdf + +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty +Package: grfext 2010/08/19 v1.1 Manage graphics extensions (HO) +) +Package grfext Info: Graphics extension search list: +(grfext) [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE +G,.JBIG2,.JB2,.eps] +(grfext) \AppendGraphicsExtensions on input line 452. + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +Package caption Info: Begin \AtBeginDocument code. +Package caption Info: hyperref package is loaded. +Package caption Info: longtable package is loaded. + +(/usr/share/texlive/texmf-dist/tex/latex/caption/ltcaption.sty +Package: ltcaption 2013/06/09 v1.4-94 longtable captions (AR) +) +Package caption Info: End \AtBeginDocument code. + +*geometry* driver: auto-detecting +*geometry* detected driver: pdftex +*geometry* verbose mode - [ preamble ] result: +* driver: pdftex +* paper: +* layout: +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* modes: +* h-part:(L,W,R)=(72.26999pt, 469.75502pt, 72.26999pt) +* v-part:(T,H,B)=(72.26999pt, 650.43001pt, 72.26999pt) +* \paperwidth=614.295pt +* \paperheight=794.96999pt +* \textwidth=469.75502pt +* \textheight=650.43001pt +* \oddsidemargin=0.0pt +* \evensidemargin=0.0pt +* \topmargin=-37.0pt +* \headheight=12.0pt +* \headsep=25.0pt +* \topskip=11.0pt +* \footskip=30.0pt +* \marginparwidth=59.0pt +* \marginparsep=10.0pt +* \columnsep=10.0pt +* \skip\footins=10.0pt plus 4.0pt minus 2.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumnfalse +* \@twosidefalse +* \@mparswitchfalse +* \@reversemarginfalse +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +(/usr/share/texlive/texmf-dist/tex/latex/ucs/ucsencs.def +File: ucsencs.def 2011/01/21 Fixes to fontencodings LGR, T3 +) +\AtBeginShipoutBox=\box41 +Package hyperref Info: Link coloring ON on input line 271. + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty +Package: nameref 2012/10/27 v2.43 Cross-referencing by name of section + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty +Package: gettitlestring 2010/12/03 v1.4 Cleanup title references (HO) +) +\c@section@level=\count138 +) +LaTeX Info: Redefining \ref on input line 271. +LaTeX Info: Redefining \pageref on input line 271. +LaTeX Info: Redefining \nameref on input line 271. + +(./lecture_11.out) (./lecture_11.out) +\@outlinefile=\write4 +\openout4 = `lecture_11.out'. + +LaTeX Font Info: Try loading font information for OT1+ppl on input line 275. + + +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1ppl.fd +File: ot1ppl.fd 2001/06/04 font definitions for OT1/ppl. +) +LaTeX Font Info: Try loading font information for OML+zplm on input line 275 +. + +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/omlzplm.fd +File: omlzplm.fd 2002/09/08 Fontinst v1.914 font definitions for OML/zplm. +) +LaTeX Font Info: Try loading font information for OMS+zplm on input line 275 +. + +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/omszplm.fd +File: omszplm.fd 2002/09/08 Fontinst v1.914 font definitions for OMS/zplm. +) +LaTeX Font Info: Try loading font information for OMX+zplm on input line 275 +. + +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/omxzplm.fd +File: omxzplm.fd 2002/09/08 Fontinst v1.914 font definitions for OMX/zplm. +) +LaTeX Font Info: Try loading font information for OT1+zplm on input line 275 +. + +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1zplm.fd +File: ot1zplm.fd 2002/09/08 Fontinst v1.914 font definitions for OT1/zplm. +) +LaTeX Font Info: Font shape `U/msa/m/n' will be +(Font) scaled to size 12.50409pt on input line 275. +LaTeX Font Info: Font shape `U/msa/m/n' will be +(Font) scaled to size 9.37807pt on input line 275. +LaTeX Font Info: Font shape `U/msa/m/n' will be +(Font) scaled to size 7.29405pt on input line 275. +LaTeX Font Info: Font shape `U/msb/m/n' will be +(Font) scaled to size 12.50409pt on input line 275. +LaTeX Font Info: Font shape `U/msb/m/n' will be +(Font) scaled to size 9.37807pt on input line 275. +LaTeX Font Info: Font shape `U/msb/m/n' will be +(Font) scaled to size 7.29405pt on input line 275. + + +LaTeX Warning: No \author given. + +LaTeX Font Info: Try loading font information for T1+cmtt on input line 279. + +(/usr/share/texlive/texmf-dist/tex/latex/base/t1cmtt.fd +File: t1cmtt.fd 2014/09/29 v2.5h Standard LaTeX font definitions +) +LaTeX Font Info: Font shape `T1/ppl/bx/n' in size <12> not available +(Font) Font shape `T1/ppl/b/n' tried instead on input line 288. +LaTeX Font Info: Font shape `U/msa/m/n' will be +(Font) scaled to size 11.40997pt on input line 290. +LaTeX Font Info: Font shape `U/msa/m/n' will be +(Font) scaled to size 8.33606pt on input line 290. +LaTeX Font Info: Font shape `U/msa/m/n' will be +(Font) scaled to size 6.25204pt on input line 290. +LaTeX Font Info: Font shape `U/msb/m/n' will be +(Font) scaled to size 11.40997pt on input line 290. +LaTeX Font Info: Font shape `U/msb/m/n' will be +(Font) scaled to size 8.33606pt on input line 290. +LaTeX Font Info: Font shape `U/msb/m/n' will be +(Font) scaled to size 6.25204pt on input line 290. + + +File: det_A.png Graphic file (type png) + +Package pdftex.def Info: det_A.png used on input line 294. +(pdftex.def) Requested size: 375.80544pt x 202.3582pt. + [1 + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map} <./det_A.png>] + +File: midterm_date.png Graphic file (type png) + +Package pdftex.def Info: midterm_date.png used on input line 324. +(pdftex.def) Requested size: 375.80544pt x 171.71808pt. +LaTeX Font Info: Font shape `T1/ppl/bx/n' in size <10.95> not available +(Font) Font shape `T1/ppl/b/n' tried instead on input line 328. +LaTeX Font Info: Font shape `T1/ppl/bx/n' in size <14.4> not available +(Font) Font shape `T1/ppl/b/n' tried instead on input line 342. + + +Package hyperref Warning: Difference (2) between bookmark levels is greater +(hyperref) than one, level fixed on input line 345. + +[2 <./midterm_date.png>] [3] +LaTeX Font Info: Try loading font information for TS1+cmtt on input line 461 +. + +(/usr/share/texlive/texmf-dist/tex/latex/base/ts1cmtt.fd +File: ts1cmtt.fd 2014/09/29 v2.5h Standard LaTeX font definitions +) [4] [5] +LaTeX Font Info: Font shape `T1/cmtt/bx/n' in size <10.95> not available +(Font) Font shape `T1/cmtt/m/n' tried instead on input line 547. + + +File: lecture_11_files/lecture_11_8_0.pdf Graphic file (type pdf) + + +Package pdftex.def Info: lecture_11_files/lecture_11_8_0.pdf used on input line + 561. +(pdftex.def) Requested size: 449.6789pt x 337.25917pt. + +Underfull \hbox (badness 10000) in paragraph at lines 563--564 + + [] + +<../lecture_09/mass_springs.png, id=80, 112.42pt x 190.7125pt> +File: ../lecture_09/mass_springs.png Graphic file (type png) + + +Package pdftex.def Info: ../lecture_09/mass_springs.png used on input line 571. + +(pdftex.def) Requested size: 89.93611pt x 152.576pt. + [6 <./lecture_11_files/lecture_11_8_0.pdf>] [7 <../lecture_09/mass_springs.png +>] [8] +Package atveryend Info: Empty hook `BeforeClearDocument' on input line 734. + [9] +Package atveryend Info: Empty hook `AfterLastShipout' on input line 734. + (./lecture_11.aux) +Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 734. +Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 734. +Package rerunfilecheck Info: File `lecture_11.out' has not changed. +(rerunfilecheck) Checksum: 41743ED7C91140C56E53FBD51DB19D65;568. +Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 734. + ) +Here is how much of TeX's memory you used: + 10955 strings out of 493029 + 163773 string characters out of 6136234 + 268999 words of memory out of 5000000 + 14228 multiletter control sequences out of 15000+600000 + 39052 words of font info for 103 fonts, out of 8000000 for 9000 + 1141 hyphenation exceptions out of 8191 + 36i,9n,77p,460b,465s stack positions out of 5000i,500n,10000p,200000b,80000s +{/usr/share/texmf/fonts/enc/dvips/cm-super/cm-super-ts1.enc}{/usr/share/texli +ve/texmf-dist/fonts/enc/dvips/base/8r.enc}{/usr/share/texmf/fonts/enc/dvips/cm- +super/cm-super-t1.enc} +Output written on lecture_11.pdf (9 pages, 191934 bytes). +PDF statistics: + 152 PDF objects out of 1000 (max. 8388607) + 121 compressed objects within 2 object streams + 27 named destinations out of 1000 (max. 500000) + 85 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/lecture_11/lecture_11.out b/lecture_11/lecture_11.out new file mode 100644 index 0000000..481e738 --- /dev/null +++ b/lecture_11/lecture_11.out @@ -0,0 +1,8 @@ +\BOOKMARK [2][-]{subsection.0.1}{My question from last class}{}% 1 +\BOOKMARK [2][-]{subsection.0.2}{Your questions from last class}{}% 2 +\BOOKMARK [2][-]{subsection.0.3}{Midterm preference}{}% 3 +\BOOKMARK [3][-]{subsubsection.0.3.1}{Midterm Questions}{subsection.0.3}% 4 +\BOOKMARK [1][-]{section.1}{LU Decomposition}{}% 5 +\BOOKMARK [2][-]{subsubsection.1.0.1}{efficient storage of matrices for solutions}{section.1}% 6 +\BOOKMARK [2][-]{subsection.1.1}{Pivoting for LU factorization}{section.1}% 7 +\BOOKMARK [2][-]{subsection.1.2}{Cholesky Factorization}{section.1}% 8 diff --git a/lecture_11/lecture_11.pdf b/lecture_11/lecture_11.pdf new file mode 100644 index 0000000..9fa1342 Binary files /dev/null and b/lecture_11/lecture_11.pdf differ diff --git a/lecture_11/lecture_11.tex b/lecture_11/lecture_11.tex new file mode 100644 index 0000000..318852d --- /dev/null +++ b/lecture_11/lecture_11.tex @@ -0,0 +1,734 @@ + +% Default to the notebook output style + + + + +% Inherit from the specified cell style. + + + + + +\documentclass[11pt]{article} + + + + \usepackage[T1]{fontenc} + % Nicer default font (+ math font) than Computer Modern for most use cases + \usepackage{mathpazo} + + % Basic figure setup, for now with no caption control since it's done + % automatically by Pandoc (which extracts ![](path) syntax from Markdown). + \usepackage{graphicx} + % We will generate all images so they have a width \maxwidth. This means + % that they will get their normal width if they fit onto the page, but + % are scaled down if they would overflow the margins. + \makeatletter + \def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth + \else\Gin@nat@width\fi} + \makeatother + \let\Oldincludegraphics\includegraphics + % Set max figure width to be 80% of text width, for now hardcoded. + \renewcommand{\includegraphics}[1]{\Oldincludegraphics[width=.8\maxwidth]{#1}} + % Ensure that by default, figures have no caption (until we provide a + % proper Figure object with a Caption API and a way to capture that + % in the conversion process - todo). + \usepackage{caption} + \DeclareCaptionLabelFormat{nolabel}{} + \captionsetup{labelformat=nolabel} + + \usepackage{adjustbox} % Used to constrain images to a maximum size + \usepackage{xcolor} % Allow colors to be defined + \usepackage{enumerate} % Needed for markdown enumerations to work + \usepackage{geometry} % Used to adjust the document margins + \usepackage{amsmath} % Equations + \usepackage{amssymb} % Equations + \usepackage{textcomp} % defines textquotesingle + % Hack from http://tex.stackexchange.com/a/47451/13684: + \AtBeginDocument{% + \def\PYZsq{\textquotesingle}% Upright quotes in Pygmentized code + } + \usepackage{upquote} % Upright quotes for verbatim code + \usepackage{eurosym} % defines \euro + \usepackage[mathletters]{ucs} % Extended unicode (utf-8) support + \usepackage[utf8x]{inputenc} % Allow utf-8 characters in the tex document + \usepackage{fancyvrb} % verbatim replacement that allows latex + \usepackage{grffile} % extends the file name processing of package graphics + % to support a larger range + % The hyperref package gives us a pdf with properly built + % internal navigation ('pdf bookmarks' for the table of contents, + % internal cross-reference links, web links for URLs, etc.) + \usepackage{hyperref} + \usepackage{longtable} % longtable support required by pandoc >1.10 + \usepackage{booktabs} % table support for pandoc > 1.12.2 + \usepackage[inline]{enumitem} % IRkernel/repr support (it uses the enumerate* environment) + \usepackage[normalem]{ulem} % ulem is needed to support strikethroughs (\sout) + % normalem makes italics be italics, not underlines + + + + + % Colors for the hyperref package + \definecolor{urlcolor}{rgb}{0,.145,.698} + \definecolor{linkcolor}{rgb}{.71,0.21,0.01} + \definecolor{citecolor}{rgb}{.12,.54,.11} + + % ANSI colors + \definecolor{ansi-black}{HTML}{3E424D} + \definecolor{ansi-black-intense}{HTML}{282C36} + \definecolor{ansi-red}{HTML}{E75C58} + \definecolor{ansi-red-intense}{HTML}{B22B31} + \definecolor{ansi-green}{HTML}{00A250} + \definecolor{ansi-green-intense}{HTML}{007427} + \definecolor{ansi-yellow}{HTML}{DDB62B} + \definecolor{ansi-yellow-intense}{HTML}{B27D12} + \definecolor{ansi-blue}{HTML}{208FFB} + \definecolor{ansi-blue-intense}{HTML}{0065CA} + \definecolor{ansi-magenta}{HTML}{D160C4} + \definecolor{ansi-magenta-intense}{HTML}{A03196} + \definecolor{ansi-cyan}{HTML}{60C6C8} + \definecolor{ansi-cyan-intense}{HTML}{258F8F} + \definecolor{ansi-white}{HTML}{C5C1B4} + \definecolor{ansi-white-intense}{HTML}{A1A6B2} + + % commands and environments needed by pandoc snippets + % extracted from the output of `pandoc -s` + \providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} + \DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}} + % Add ',fontsize=\small' for more characters per line + \newenvironment{Shaded}{}{} + \newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} + \newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{{#1}}} + \newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} + \newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} + \newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} + \newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} + \newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} + \newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{{#1}}}} + \newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{{#1}}} + \newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}} + \newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{{#1}}} + \newcommand{\RegionMarkerTok}[1]{{#1}} + \newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}} + \newcommand{\NormalTok}[1]{{#1}} + + % Additional commands for more recent versions of Pandoc + \newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{{#1}}} + \newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} + \newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} + \newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{{#1}}} + \newcommand{\ImportTok}[1]{{#1}} + \newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{{#1}}}} + \newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} + \newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} + \newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{{#1}}} + \newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} + \newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{{#1}}} + \newcommand{\BuiltInTok}[1]{{#1}} + \newcommand{\ExtensionTok}[1]{{#1}} + \newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{{#1}}} + \newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{{#1}}} + \newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} + \newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} + + + % Define a nice break command that doesn't care if a line doesn't already + % exist. + \def\br{\hspace*{\fill} \\* } + % Math Jax compatability definitions + \def\gt{>} + \def\lt{<} + % Document parameters + \title{lecture\_11} + + + + + % Pygments definitions + +\makeatletter +\def\PY@reset{\let\PY@it=\relax \let\PY@bf=\relax% + \let\PY@ul=\relax \let\PY@tc=\relax% + \let\PY@bc=\relax \let\PY@ff=\relax} +\def\PY@tok#1{\csname PY@tok@#1\endcsname} +\def\PY@toks#1+{\ifx\relax#1\empty\else% + \PY@tok{#1}\expandafter\PY@toks\fi} +\def\PY@do#1{\PY@bc{\PY@tc{\PY@ul{% + \PY@it{\PY@bf{\PY@ff{#1}}}}}}} +\def\PY#1#2{\PY@reset\PY@toks#1+\relax+\PY@do{#2}} + +\expandafter\def\csname PY@tok@gd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}} +\expandafter\def\csname PY@tok@gu\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}} +\expandafter\def\csname PY@tok@gt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}} +\expandafter\def\csname PY@tok@gs\endcsname{\let\PY@bf=\textbf} +\expandafter\def\csname PY@tok@gr\endcsname{\def\PY@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}} +\expandafter\def\csname PY@tok@cm\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} +\expandafter\def\csname PY@tok@vg\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} +\expandafter\def\csname PY@tok@vi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} +\expandafter\def\csname PY@tok@mh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@cs\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} +\expandafter\def\csname PY@tok@ge\endcsname{\let\PY@it=\textit} +\expandafter\def\csname PY@tok@vc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} +\expandafter\def\csname PY@tok@il\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@go\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}} +\expandafter\def\csname PY@tok@cp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.74,0.48,0.00}{##1}}} +\expandafter\def\csname PY@tok@gi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}} +\expandafter\def\csname PY@tok@gh\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}} +\expandafter\def\csname PY@tok@ni\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.60,0.60,0.60}{##1}}} +\expandafter\def\csname PY@tok@nl\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.63,0.00}{##1}}} +\expandafter\def\csname PY@tok@nn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} +\expandafter\def\csname PY@tok@no\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.00,0.00}{##1}}} +\expandafter\def\csname PY@tok@na\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.49,0.56,0.16}{##1}}} +\expandafter\def\csname PY@tok@nb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@nc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} +\expandafter\def\csname PY@tok@nd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}} +\expandafter\def\csname PY@tok@ne\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.82,0.25,0.23}{##1}}} +\expandafter\def\csname PY@tok@nf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} +\expandafter\def\csname PY@tok@si\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}} +\expandafter\def\csname PY@tok@s2\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@nt\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@nv\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} +\expandafter\def\csname PY@tok@s1\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@ch\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} +\expandafter\def\csname PY@tok@m\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@gp\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}} +\expandafter\def\csname PY@tok@sh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@ow\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}} +\expandafter\def\csname PY@tok@sx\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@bp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@c1\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} +\expandafter\def\csname PY@tok@o\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@kc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@c\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} +\expandafter\def\csname PY@tok@mf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@err\endcsname{\def\PY@bc##1{\setlength{\fboxsep}{0pt}\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}} +\expandafter\def\csname PY@tok@mb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@ss\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} +\expandafter\def\csname PY@tok@sr\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}} +\expandafter\def\csname PY@tok@mo\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@kd\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@mi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@kn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@cpf\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} +\expandafter\def\csname PY@tok@kr\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@s\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@kp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@w\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}} +\expandafter\def\csname PY@tok@kt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.69,0.00,0.25}{##1}}} +\expandafter\def\csname PY@tok@sc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@sb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@k\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@se\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.13}{##1}}} +\expandafter\def\csname PY@tok@sd\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} + +\def\PYZbs{\char`\\} +\def\PYZus{\char`\_} +\def\PYZob{\char`\{} +\def\PYZcb{\char`\}} +\def\PYZca{\char`\^} +\def\PYZam{\char`\&} +\def\PYZlt{\char`\<} +\def\PYZgt{\char`\>} +\def\PYZsh{\char`\#} +\def\PYZpc{\char`\%} +\def\PYZdl{\char`\$} +\def\PYZhy{\char`\-} +\def\PYZsq{\char`\'} +\def\PYZdq{\char`\"} +\def\PYZti{\char`\~} +% for compatibility with earlier versions +\def\PYZat{@} +\def\PYZlb{[} +\def\PYZrb{]} +\makeatother + + + % Exact colors from NB + \definecolor{incolor}{rgb}{0.0, 0.0, 0.5} + \definecolor{outcolor}{rgb}{0.545, 0.0, 0.0} + + + + + % Prevent overflowing lines due to hard-to-break entities + \sloppy + % Setup hyperref package + \hypersetup{ + breaklinks=true, % so long urls are correctly broken across lines + colorlinks=true, + urlcolor=urlcolor, + linkcolor=linkcolor, + citecolor=citecolor, + } + % Slightly bigger margins than the latex defaults + + \geometry{verbose,tmargin=1in,bmargin=1in,lmargin=1in,rmargin=1in} + + + + \begin{document} + + + \maketitle + + + + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}1}]:} \PY{c}{\PYZpc{}plot \PYZhy{}\PYZhy{}format svg} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}2}]:} \PY{n}{setdefaults} +\end{Verbatim} + + \subsection{My question from last +class}\label{my-question-from-last-class} + +\(A=\left[ \begin{array}{ccc} 10 & 2 & 1 \\ 0 & 1 & 1 \\ 0 & 0 & 10\end{array} \right]\) + +\begin{figure}[htbp] +\centering +\includegraphics{det_A.png} +\caption{responses to determinant of A} +\end{figure} + +\subsection{Your questions from last +class}\label{your-questions-from-last-class} + +\begin{enumerate} +\def\labelenumi{\arabic{enumi}.} +\item + Need more linear algebra review + + -We will keep doing Linear Algebra, try the practice problems in + 'linear\_algebra' +\item + How do I do HW3? + + -demo today +\item + For hw4 is the spring constant (K) suppose to be given? + + -yes, its 30 N/m +\item + Deapool or Joker? +\end{enumerate} + +\subsection{Midterm preference}\label{midterm-preference} + +\begin{figure}[htbp] +\centering +\includegraphics{midterm_date.png} +\caption{responses to midterm date} +\end{figure} + +\subsubsection{Midterm Questions}\label{midterm-questions} + +\begin{enumerate} +\def\labelenumi{\arabic{enumi}.} +\item + Notes allowed + + -no +\item + Will there be a review/study sheet + + -yes +\end{enumerate} + + \section{LU Decomposition}\label{lu-decomposition} + +\subsubsection{efficient storage of matrices for +solutions}\label{efficient-storage-of-matrices-for-solutions} + +Considering the same solution set: + +\(y=Ax\) + +Assume that we can perform Gauss elimination and achieve this formula: + +\(Ux=d\) + +Where, \(U\) is an upper triangular matrix that we derived from Gauss +elimination and \(d\) is the set of dependent variables after Gauss +elimination. + +Assume there is a lower triangular matrix, \(L\), with ones on the +diagonal and same dimensions of \(U\) and the following is true: + +\(L(Ux-d)=Ax-y=0\) + +Now, \(Ax=LUx\), so \(A=LU\), and \(y=Ld\). + +\(2x_{1}+x_{2}=1\) + +\(x_{1}+3x_{2}=1\) + +\(\left[ \begin{array}{cc} 2 & 1 \\ 1 & 3 \end{array} \right] \left[\begin{array}{c} x_{1} \\ x_{2} \end{array}\right]= \left[\begin{array}{c} 1 \\ 1\end{array}\right]\) + +f21=0.5 + +A(2,1)=1-1 = 0 + +A(2,2)=3-0.5=2.5 + +y(2)=1-0.5=0.5 + +\(L(Ux-d)= \left[ \begin{array}{cc} 1 & 0 \\ 0.5 & 1 \end{array} \right] \left(\left[ \begin{array}{cc} 2 & 1 \\ 0 & 2.5 \end{array} \right] \left[\begin{array}{c} x_{1} \\ x_{2} \end{array}\right]- \left[\begin{array}{c} 1 \\ 0.5\end{array}\right]\right)=0\) + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}3}]:} \PY{n}{A}\PY{p}{=}\PY{p}{[}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{;}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{]} + \PY{n}{L}\PY{p}{=}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{0}\PY{p}{;}\PY{l+m+mf}{0.5}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{]} + \PY{n}{U}\PY{p}{=}\PY{p}{[}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{;}\PY{l+m+mi}{0}\PY{p}{,}\PY{l+m+mf}{2.5}\PY{p}{]} + \PY{n}{L}\PY{o}{*}\PY{n}{U} + + \PY{n}{d}\PY{p}{=}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{;}\PY{l+m+mf}{0.5}\PY{p}{]} + \PY{n}{y}\PY{p}{=}\PY{n}{L}\PY{o}{*}\PY{n}{d} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +A = + + 2 1 + 1 3 + +L = + + 1.00000 0.00000 + 0.50000 1.00000 + +U = + + 2.00000 1.00000 + 0.00000 2.50000 + +ans = + + 2 1 + 1 3 + +d = + + 1.00000 + 0.50000 + +y = + + 1 + 1 + + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}5}]:} \PY{c}{\PYZpc{} what is the determinant of L, U and A?} + + \PY{n+nb}{det}\PY{p}{(}\PY{n}{A}\PY{p}{)} + \PY{n+nb}{det}\PY{p}{(}\PY{n}{L}\PY{p}{)} + \PY{n+nb}{det}\PY{p}{(}\PY{n}{U}\PY{p}{)} + \PY{n+nb}{det}\PY{p}{(}\PY{n}{L}\PY{p}{)}\PY{o}{*}\PY{n+nb}{det}\PY{p}{(}\PY{n}{U}\PY{p}{)} + \PY{n+nb}{det}\PY{p}{(}\PY{n}{L}\PY{o}{*}\PY{n}{U}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +ans = 5.0000 +ans = 1 +ans = 5 +ans = 5 +ans = 5.0000 + + \end{Verbatim} + + \subsection{Pivoting for LU +factorization}\label{pivoting-for-lu-factorization} + +LU factorization uses the same method as Gauss elimination so it is also +necessary to perform partial pivoting when creating the lower and upper +triangular matrices. + +Matlab and Octave use pivoting in the command + +\texttt{{[}L,U,P{]}=lu(A)} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}4}]:} \PY{n}{help} \PY{n+nb}{lu} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +'lu' is a built-in function from the file libinterp/corefcn/lu.cc + + -- Built-in Function: [L, U] = lu (A) + -- Built-in Function: [L, U, P] = lu (A) + -- Built-in Function: [L, U, P, Q] = lu (S) + -- Built-in Function: [L, U, P, Q, R] = lu (S) + -- Built-in Function: [{\ldots}] = lu (S, THRES) + -- Built-in Function: Y = lu ({\ldots}) + -- Built-in Function: [{\ldots}] = lu ({\ldots}, "vector") + Compute the LU decomposition of A. + + If A is full subroutines from LAPACK are used and if A is sparse + then UMFPACK is used. + + The result is returned in a permuted form, according to the + optional return value P. For example, given the matrix 'a = [1, 2; + 3, 4]', + + [l, u, p] = lu (A) + + returns + + l = + + 1.00000 0.00000 + 0.33333 1.00000 + + u = + + 3.00000 4.00000 + 0.00000 0.66667 + + p = + + 0 1 + 1 0 + + The matrix is not required to be square. + + When called with two or three output arguments and a spare input + matrix, 'lu' does not attempt to perform sparsity preserving column + permutations. Called with a fourth output argument, the sparsity + preserving column transformation Q is returned, such that 'P * A * + Q = L * U'. + + Called with a fifth output argument and a sparse input matrix, 'lu' + attempts to use a scaling factor R on the input matrix such that 'P + * (R \textbackslash{} A) * Q = L * U'. This typically leads to a sparser and more + stable factorization. + + An additional input argument THRES, that defines the pivoting + threshold can be given. THRES can be a scalar, in which case it + defines the UMFPACK pivoting tolerance for both symmetric and + unsymmetric cases. If THRES is a 2-element vector, then the first + element defines the pivoting tolerance for the unsymmetric UMFPACK + pivoting strategy and the second for the symmetric strategy. By + default, the values defined by 'spparms' are used ([0.1, 0.001]). + + Given the string argument "vector", 'lu' returns the values of P + and Q as vector values, such that for full matrix, 'A (P,:) = L * + U', and 'R(P,:) * A (:, Q) = L * U'. + + With two output arguments, returns the permuted forms of the upper + and lower triangular matrices, such that 'A = L * U'. With one + output argument Y, then the matrix returned by the LAPACK routines + is returned. If the input matrix is sparse then the matrix L is + embedded into U to give a return value similar to the full case. + For both full and sparse matrices, 'lu' loses the permutation + information. + + See also: luupdate, ilu, chol, hess, qr, qz, schur, svd. + +Additional help for built-in functions and operators is +available in the online version of the manual. Use the command +'doc ' to search the manual index. + +Help and information about Octave is also available on the WWW +at http://www.octave.org and via the help@octave.org +mailing list. + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}9}]:} \PY{c}{\PYZpc{} time LU solution vs backslash} + \PY{n}{t\PYZus{}lu}\PY{p}{=}\PY{n+nb}{zeros}\PY{p}{(}\PY{l+m+mi}{100}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} + \PY{n}{t\PYZus{}bs}\PY{p}{=}\PY{n+nb}{zeros}\PY{p}{(}\PY{l+m+mi}{100}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} + \PY{k}{for} \PY{n}{N}\PY{p}{=}\PY{l+m+mi}{1}\PY{p}{:}\PY{l+m+mi}{100} + \PY{n}{A}\PY{p}{=}\PY{n+nb}{rand}\PY{p}{(}\PY{n}{N}\PY{p}{,}\PY{n}{N}\PY{p}{)}\PY{p}{;} + \PY{n}{y}\PY{p}{=}\PY{n+nb}{rand}\PY{p}{(}\PY{n}{N}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} + \PY{p}{[}\PY{n}{L}\PY{p}{,}\PY{n}{U}\PY{p}{,}\PY{n}{P}\PY{p}{]}\PY{p}{=}\PY{n+nb}{lu}\PY{p}{(}\PY{n}{A}\PY{p}{)}\PY{p}{;} + + \PY{n+nb}{tic}\PY{p}{;} \PY{n}{d}\PY{p}{=}\PY{n+nb}{inv}\PY{p}{(}\PY{n}{L}\PY{p}{)}\PY{o}{*}\PY{n}{y}\PY{p}{;} \PY{n}{x}\PY{p}{=}\PY{n+nb}{inv}\PY{p}{(}\PY{n}{U}\PY{p}{)}\PY{o}{*}\PY{n}{d}\PY{p}{;} \PY{n}{t\PYZus{}lu}\PY{p}{(}\PY{n}{N}\PY{p}{)}\PY{p}{=}\PY{n+nb}{toc}\PY{p}{;} + + \PY{n+nb}{tic}\PY{p}{;} \PY{n}{x}\PY{p}{=}\PY{n+nb}{inv}\PY{p}{(}\PY{n}{A}\PY{p}{)}\PY{o}{*}\PY{n}{y}\PY{p}{;} \PY{n}{t\PYZus{}bs}\PY{p}{(}\PY{n}{N}\PY{p}{)}\PY{p}{=}\PY{n+nb}{toc}\PY{p}{;} + \PY{k}{end} + \PY{n+nb}{plot}\PY{p}{(}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{:}\PY{l+m+mi}{100}\PY{p}{]}\PY{p}{,}\PY{n}{t\PYZus{}lu}\PY{p}{,}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{:}\PY{l+m+mi}{100}\PY{p}{]}\PY{p}{,}\PY{n}{t\PYZus{}bs}\PY{p}{)} + \PY{n+nb}{legend}\PY{p}{(}\PY{l+s}{\PYZsq{}}\PY{l+s}{LU decomp\PYZsq{}}\PY{p}{,}\PY{l+s}{\PYZsq{}}\PY{l+s}{Octave \PYZbs{}\PYZbs{}\PYZsq{}}\PY{p}{)} +\end{Verbatim} + + \begin{center} + \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{lecture_11_files/lecture_11_8_0.pdf} + \end{center} + { \hspace*{\fill} \\} + + Consider the problem again from the intro to Linear Algebra, 4 masses +are connected in series to 4 springs with K=10 N/m. What are the final +positions of the masses? + +\begin{figure}[htbp] +\centering +\includegraphics{../lecture_09/mass_springs.png} +\caption{Springs-masses} +\end{figure} + +The masses haves the following amounts, 1, 2, 3, and 4 kg for masses +1-4. Using a FBD for each mass: + +\(m_{1}g+k(x_{2}-x_{1})-kx_{1}=0\) + +\(m_{2}g+k(x_{3}-x_{2})-k(x_{2}-x_{1})=0\) + +\(m_{3}g+k(x_{4}-x_{3})-k(x_{3}-x_{2})=0\) + +\(m_{4}g-k(x_{4}-x_{3})=0\) + +in matrix form: + +\(\left[ \begin{array}{cccc} 2k & -k & 0 & 0 \\ -k & 2k & -k & 0 \\ 0 & -k & 2k & -k \\ 0 & 0 & -k & k \end{array} \right] \left[ \begin{array}{c} x_{1} \\ x_{2} \\ x_{3} \\ x_{4} \end{array} \right]= \left[ \begin{array}{c} m_{1}g \\ m_{2}g \\ m_{3}g \\ m_{4}g \end{array} \right]\) + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}10}]:} \PY{n}{k}\PY{p}{=}\PY{l+m+mi}{10}\PY{p}{;} \PY{c}{\PYZpc{} N/m} + \PY{n}{m1}\PY{p}{=}\PY{l+m+mi}{1}\PY{p}{;} \PY{c}{\PYZpc{} kg} + \PY{n}{m2}\PY{p}{=}\PY{l+m+mi}{2}\PY{p}{;} + \PY{n}{m3}\PY{p}{=}\PY{l+m+mi}{3}\PY{p}{;} + \PY{n}{m4}\PY{p}{=}\PY{l+m+mi}{4}\PY{p}{;} + \PY{n}{g}\PY{p}{=}\PY{l+m+mf}{9.81}\PY{p}{;} \PY{c}{\PYZpc{} m/s\PYZca{}2} + \PY{n}{K}\PY{p}{=}\PY{p}{[}\PY{l+m+mi}{2}\PY{o}{*}\PY{n}{k} \PY{o}{\PYZhy{}}\PY{n}{k} \PY{l+m+mi}{0} \PY{l+m+mi}{0}\PY{p}{;} \PY{o}{\PYZhy{}}\PY{n}{k} \PY{l+m+mi}{2}\PY{o}{*}\PY{n}{k} \PY{o}{\PYZhy{}}\PY{n}{k} \PY{l+m+mi}{0}\PY{p}{;} \PY{l+m+mi}{0} \PY{o}{\PYZhy{}}\PY{n}{k} \PY{l+m+mi}{2}\PY{o}{*}\PY{n}{k} \PY{o}{\PYZhy{}}\PY{n}{k}\PY{p}{;} \PY{l+m+mi}{0} \PY{l+m+mi}{0} \PY{o}{\PYZhy{}}\PY{n}{k} \PY{n}{k}\PY{p}{]} + \PY{n}{y}\PY{p}{=}\PY{p}{[}\PY{n}{m1}\PY{o}{*}\PY{n}{g}\PY{p}{;}\PY{n}{m2}\PY{o}{*}\PY{n}{g}\PY{p}{;}\PY{n}{m3}\PY{o}{*}\PY{n}{g}\PY{p}{;}\PY{n}{m4}\PY{o}{*}\PY{n}{g}\PY{p}{]} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +K = + + 20 -10 0 0 + -10 20 -10 0 + 0 -10 20 -10 + 0 0 -10 10 + +y = + + 9.8100 + 19.6200 + 29.4300 + 39.2400 + + + \end{Verbatim} + + This matrix, K, is symmetric. + +\texttt{K(i,j)==K(j,i)} + +Now we can use, + +\subsection{Cholesky Factorization}\label{cholesky-factorization} + +We can decompose the matrix, K into two matrices, \(U\) and \(U^{T}\), +where + +\(K=U^{T}U\) + +each of the components of U can be calculated with the following +equations: + +\(u_{ii}=\sqrt{a_{ii}-\sum_{k=1}^{i-1}u_{ki}^{2}}\) + +\(u_{ij}=\frac{a_{ij}-\sum_{k=1}^{i-1}u_{ki}u_{kj}}{u_{ii}}\) + +so for K + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}11}]:} \PY{n}{K} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +K = + + 20 -10 0 0 + -10 20 -10 0 + 0 -10 20 -10 + 0 0 -10 10 + + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}12}]:} \PY{n}{u11}\PY{p}{=}\PY{n+nb}{sqrt}\PY{p}{(}\PY{n}{K}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{)} + \PY{n}{u12}\PY{p}{=}\PY{p}{(}\PY{n}{K}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{)}\PY{o}{/}\PY{n}{u11} + \PY{n}{u13}\PY{p}{=}\PY{p}{(}\PY{n}{K}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{)}\PY{p}{)}\PY{o}{/}\PY{n}{u11} + \PY{n}{u14}\PY{p}{=}\PY{p}{(}\PY{n}{K}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{4}\PY{p}{)}\PY{p}{)}\PY{o}{/}\PY{n}{u11} + \PY{n}{u22}\PY{p}{=}\PY{n+nb}{sqrt}\PY{p}{(}\PY{n}{K}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{o}{\PYZhy{}}\PY{n}{u12}\PYZca{}\PY{l+m+mi}{2}\PY{p}{)} + \PY{n}{u23}\PY{p}{=}\PY{p}{(}\PY{n}{K}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{)}\PY{o}{\PYZhy{}}\PY{n}{u12}\PY{o}{*}\PY{n}{u13}\PY{p}{)}\PY{o}{/}\PY{n}{u22} + \PY{n}{u24}\PY{p}{=}\PY{p}{(}\PY{n}{K}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{4}\PY{p}{)}\PY{o}{\PYZhy{}}\PY{n}{u12}\PY{o}{*}\PY{n}{u14}\PY{p}{)}\PY{o}{/}\PY{n}{u22} + \PY{n}{u33}\PY{p}{=}\PY{n+nb}{sqrt}\PY{p}{(}\PY{n}{K}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{)}\PY{o}{\PYZhy{}}\PY{n}{u13}\PYZca{}\PY{l+m+mi}{2}\PY{o}{\PYZhy{}}\PY{n}{u23}\PYZca{}\PY{l+m+mi}{2}\PY{p}{)} + \PY{n}{u34}\PY{p}{=}\PY{p}{(}\PY{n}{K}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{4}\PY{p}{)}\PY{o}{\PYZhy{}}\PY{n}{u13}\PY{o}{*}\PY{n}{u14}\PY{o}{\PYZhy{}}\PY{n}{u23}\PY{o}{*}\PY{n}{u24}\PY{p}{)}\PY{o}{/}\PY{n}{u33} + \PY{n}{u44}\PY{p}{=}\PY{n+nb}{sqrt}\PY{p}{(}\PY{n}{K}\PY{p}{(}\PY{l+m+mi}{4}\PY{p}{,}\PY{l+m+mi}{4}\PY{p}{)}\PY{o}{\PYZhy{}}\PY{n}{u14}\PYZca{}\PY{l+m+mi}{2}\PY{o}{\PYZhy{}}\PY{n}{u24}\PYZca{}\PY{l+m+mi}{2}\PY{o}{\PYZhy{}}\PY{n}{u34}\PYZca{}\PY{l+m+mi}{2}\PY{p}{)} + \PY{n}{U}\PY{p}{=}\PY{p}{[}\PY{n}{u11}\PY{p}{,}\PY{n}{u12}\PY{p}{,}\PY{n}{u13}\PY{p}{,}\PY{n}{u14}\PY{p}{;}\PY{l+m+mi}{0}\PY{p}{,}\PY{n}{u22}\PY{p}{,}\PY{n}{u23}\PY{p}{,}\PY{n}{u24}\PY{p}{;}\PY{l+m+mi}{0}\PY{p}{,}\PY{l+m+mi}{0}\PY{p}{,}\PY{n}{u33}\PY{p}{,}\PY{n}{u34}\PY{p}{;}\PY{l+m+mi}{0}\PY{p}{,}\PY{l+m+mi}{0}\PY{p}{,}\PY{l+m+mi}{0}\PY{p}{,}\PY{n}{u44}\PY{p}{]} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +u11 = 4.4721 +u12 = -2.2361 +u13 = 0 +u14 = 0 +u22 = 3.8730 +u23 = -2.5820 +u24 = 0 +u33 = 3.6515 +u34 = -2.7386 +u44 = 1.5811 +U = + + 4.47214 -2.23607 0.00000 0.00000 + 0.00000 3.87298 -2.58199 0.00000 + 0.00000 0.00000 3.65148 -2.73861 + 0.00000 0.00000 0.00000 1.58114 + + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}17}]:} \PY{p}{(}\PY{n}{U}\PY{o}{\PYZsq{}}\PY{o}{*}\PY{n}{U}\PY{p}{)}\PY{o}{\PYZsq{}}\PY{o}{==}\PY{n}{U}\PY{o}{\PYZsq{}}\PY{o}{*}\PY{n}{U} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +ans = + + 1 1 1 1 + 1 1 1 1 + 1 1 1 1 + 1 1 1 1 + + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}18}]:} \PY{c}{\PYZpc{} time solution for Cholesky vs backslash} + \PY{n}{t\PYZus{}chol}\PY{p}{=}\PY{n+nb}{zeros}\PY{p}{(}\PY{l+m+mi}{1000}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} + \PY{n}{t\PYZus{}bs}\PY{p}{=}\PY{n+nb}{zeros}\PY{p}{(}\PY{l+m+mi}{1000}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} + \PY{k}{for} \PY{n}{i}\PY{p}{=}\PY{l+m+mi}{1}\PY{p}{:}\PY{l+m+mi}{1000} + \PY{n+nb}{tic}\PY{p}{;} \PY{n}{d}\PY{p}{=}\PY{n}{U}\PY{o}{\PYZsq{}}\PY{o}{*}\PY{n}{y}\PY{p}{;} \PY{n}{x}\PY{p}{=}\PY{n}{U}\PY{o}{\PYZbs{}}\PY{n}{d}\PY{p}{;} \PY{n}{t\PYZus{}chol}\PY{p}{(}\PY{n}{i}\PY{p}{)}\PY{p}{=}\PY{n+nb}{toc}\PY{p}{;} + \PY{n+nb}{tic}\PY{p}{;} \PY{n}{x}\PY{p}{=}\PY{n}{K}\PY{o}{\PYZbs{}}\PY{n}{y}\PY{p}{;} \PY{n}{t\PYZus{}bs}\PY{p}{(}\PY{n}{i}\PY{p}{)}\PY{p}{=}\PY{n+nb}{toc}\PY{p}{;} + \PY{k}{end} + \PY{n+nb}{fprintf}\PY{p}{(}\PY{l+s}{\PYZsq{}}\PY{l+s}{average time spent for Cholesky factored solution = \PYZpc{}e+/\PYZhy{}\PYZpc{}e\PYZsq{}}\PY{p}{,}\PY{n+nb}{mean}\PY{p}{(}\PY{n}{t\PYZus{}chol}\PY{p}{)}\PY{p}{,}\PY{n+nb}{std}\PY{p}{(}\PY{n}{t\PYZus{}chol}\PY{p}{)}\PY{p}{)} + + \PY{n+nb}{fprintf}\PY{p}{(}\PY{l+s}{\PYZsq{}}\PY{l+s}{average time spent for backslash solution = \PYZpc{}e+/\PYZhy{}\PYZpc{}e\PYZsq{}}\PY{p}{,}\PY{n+nb}{mean}\PY{p}{(}\PY{n}{t\PYZus{}bs}\PY{p}{)}\PY{p}{,}\PY{n+nb}{std}\PY{p}{(}\PY{n}{t\PYZus{}bs}\PY{p}{)}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +average time spent for Cholesky factored solution = 1.465964e-05+/-9.806001e-06 +average time spent for backslash solution = 1.555967e-05+/-1.048561e-05 + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor} }]:} +\end{Verbatim} + + + % Add a bibliography block to the postdoc + + + + \end{document} diff --git a/lecture_11/lecture_11_files/lecture_11_6_0.pdf b/lecture_11/lecture_11_files/lecture_11_6_0.pdf new file mode 100644 index 0000000..40e3f28 Binary files /dev/null and b/lecture_11/lecture_11_files/lecture_11_6_0.pdf differ diff --git a/lecture_11/lecture_11_files/lecture_11_6_0.svg b/lecture_11/lecture_11_files/lecture_11_6_0.svg new file mode 100644 index 0000000..bb1f18d --- /dev/null +++ b/lecture_11/lecture_11_files/lecture_11_6_0.svg @@ -0,0 +1,149 @@ + + +Gnuplot +Produced by GNUPLOT 5.0 patchlevel 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + 5e-05 + + + + + 0.0001 + + + + + 0.00015 + + + + + 0.0002 + + + + + 0.00025 + + + + + 0.0003 + + + + + 0 + + + + + 20 + + + + + 40 + + + + + 60 + + + + + 80 + + + + + 100 + + + + + + + + + + + + + LU decomp + + + + + LU decomp + + + + + + Octave \\ + + + Octave \ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lecture_11/lecture_11_files/lecture_11_8_0.pdf b/lecture_11/lecture_11_files/lecture_11_8_0.pdf new file mode 100644 index 0000000..7f562c6 Binary files /dev/null and b/lecture_11/lecture_11_files/lecture_11_8_0.pdf differ diff --git a/lecture_11/lecture_11_files/lecture_11_8_0.svg b/lecture_11/lecture_11_files/lecture_11_8_0.svg new file mode 100644 index 0000000..37a1c3f --- /dev/null +++ b/lecture_11/lecture_11_files/lecture_11_8_0.svg @@ -0,0 +1,139 @@ + + +Gnuplot +Produced by GNUPLOT 5.0 patchlevel 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + 0.0005 + + + + + 0.001 + + + + + 0.0015 + + + + + 0.002 + + + + + 0 + + + + + 20 + + + + + 40 + + + + + 60 + + + + + 80 + + + + + 100 + + + + + + + + + + + + + LU decomp + + + + + LU decomp + + + + + + Octave \\ + + + Octave \ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lecture_11/mass_springs.png b/lecture_11/mass_springs.png new file mode 100644 index 0000000..259a333 Binary files /dev/null and b/lecture_11/mass_springs.png differ diff --git a/lecture_11/mass_springs.svg b/lecture_11/mass_springs.svg new file mode 100644 index 0000000..2bec8a4 --- /dev/null +++ b/lecture_11/mass_springs.svg @@ -0,0 +1,214 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + m1 + m2 + m3 + + + m4 + + + + + + + + + diff --git a/lecture_11/midterm_date.png b/lecture_11/midterm_date.png new file mode 100644 index 0000000..4dd0663 Binary files /dev/null and b/lecture_11/midterm_date.png differ diff --git a/lecture_11/nohup.out b/lecture_11/nohup.out new file mode 100644 index 0000000..838862f --- /dev/null +++ b/lecture_11/nohup.out @@ -0,0 +1,2 @@ + +(evince:15386): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to allocate widget with width -71 and height 20 diff --git a/lecture_11/octave-workspace b/lecture_11/octave-workspace new file mode 100644 index 0000000..8c437bb Binary files /dev/null and b/lecture_11/octave-workspace differ diff --git a/lecture_12/.ipynb_checkpoints/lecture_12-checkpoint.ipynb b/lecture_12/.ipynb_checkpoints/lecture_12-checkpoint.ipynb new file mode 100644 index 0000000..1332b29 --- /dev/null +++ b/lecture_12/.ipynb_checkpoints/lecture_12-checkpoint.ipynb @@ -0,0 +1,1483 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "setdefaults" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## My question from last class \n", + "\n", + "\n", + "## Your questions from last class\n", + "\n", + "1. Need more linear algebra review\n", + " \n", + " -We will keep doing Linear Algebra, try the practice problems in 'linear_algebra'\n", + "\n", + "2. How do I do HW3? \n", + " \n", + " -demo today\n", + "\n", + "3. For hw4 is the spring constant (K) suppose to be given? \n", + " \n", + " -yes, its 30 N/m\n", + " \n", + "4. Deapool or Joker?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Matrix Inverse and Condition\n", + "\n", + "\n", + "Considering the same solution set:\n", + "\n", + "$y=Ax$\n", + "\n", + "If we know that $A^{-1}A=I$, then \n", + "\n", + "$A^{-1}y=A^{-1}Ax=x$\n", + "\n", + "so \n", + "\n", + "$x=A^{-1}y$\n", + "\n", + "Where, $A^{-1}$ is the inverse of matrix $A$.\n", + "\n", + "$2x_{1}+x_{2}=1$\n", + "\n", + "$x_{1}+3x_{2}=1$\n", + "\n", + "$Ax=y$\n", + "\n", + "$\\left[ \\begin{array}{cc}\n", + "2 & 1 \\\\\n", + "1 & 3 \\end{array} \\right]\n", + "\\left[\\begin{array}{c} \n", + "x_{1} \\\\ \n", + "x_{2} \\end{array}\\right]=\n", + "\\left[\\begin{array}{c} \n", + "1 \\\\\n", + "1\\end{array}\\right]$\n", + "\n", + "$A^{-1}=\\frac{1}{2*3-1*1}\\left[ \\begin{array}{cc}\n", + "3 & 1 \\\\\n", + "-1 & 2 \\end{array} \\right]=\n", + "\\left[ \\begin{array}{cc}\n", + "3/5 & -1/5 \\\\\n", + "-1/5 & 2/5 \\end{array} \\right]$\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A =\n", + "\n", + " 2 1\n", + " 1 3\n", + "\n", + "invA =\n", + "\n", + " 0.60000 -0.20000\n", + " -0.20000 0.40000\n", + "\n", + "ans =\n", + "\n", + " 1.00000 0.00000\n", + " 0.00000 1.00000\n", + "\n", + "ans =\n", + "\n", + " 1.00000 0.00000\n", + " 0.00000 1.00000\n", + "\n" + ] + } + ], + "source": [ + "A=[2,1;1,3]\n", + "invA=1/5*[3,-1;-1,2]\n", + "\n", + "A*invA\n", + "invA*A" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "How did we know the inverse of A? \n", + "\n", + "for 2$\\times$2 matrices, it is always:\n", + "\n", + "$A=\\left[ \\begin{array}{cc}\n", + "A_{11} & A_{12} \\\\\n", + "A_{21} & A_{22} \\end{array} \\right]$\n", + "\n", + "$A^{-1}=\\frac{1}{det(A)}\\left[ \\begin{array}{cc}\n", + "A_{22} & -A_{12} \\\\\n", + "-A_{21} & A_{11} \\end{array} \\right]$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$AA^{-1}=\\frac{1}{A_{11}A_{22}-A_{21}A_{12}}\\left[ \\begin{array}{cc}\n", + "A_{11}A_{22}-A_{21}A_{12} & -A_{11}A_{12}+A_{12}A_{11} \\\\\n", + "A_{21}A_{22}-A_{22}A_{21} & -A_{21}A_{12}+A_{22}A_{11} \\end{array} \\right]\n", + "=\\left[ \\begin{array}{cc}\n", + "1 & 0 \\\\\n", + "0 & 1 \\end{array} \\right]$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What about bigger matrices?\n", + "\n", + "We can use the LU-decomposition\n", + "\n", + "$A=LU$\n", + "\n", + "$A^{-1}=(LU)^{-1}=U^{-1}L^{-1}$\n", + "\n", + "if we divide $A^{-1}$ into n-column vectors, $a_{n}$, then\n", + "\n", + "$Aa_{1}=\\left[\\begin{array}{c} \n", + "1 \\\\ \n", + "0 \\\\ \n", + "\\vdots \\\\\n", + "0 \\end{array} \\right]$\n", + "$Aa_{2}=\\left[\\begin{array}{c} \n", + "0 \\\\ \n", + "1 \\\\ \n", + "\\vdots \\\\\n", + "0 \\end{array} \\right]$\n", + "$Aa_{n}=\\left[\\begin{array}{c} \n", + "0 \\\\ \n", + "0 \\\\ \n", + "\\vdots \\\\\n", + "1 \\end{array} \\right]$\n", + "\n", + "\n", + "Which we can solve for each $a_{n}$ with LU-decomposition, knowing the lower and upper triangular decompositions, then \n", + "\n", + "$A^{-1}=\\left[ \\begin{array}{cccc}\n", + "| & | & & | \\\\\n", + "a_{1} & a_{2} & \\cdots & a_{3} \\\\\n", + "| & | & & | \\end{array} \\right]$\n", + "\n", + "\n", + "$Ld_{1}=\\left[\\begin{array}{c} \n", + "1 \\\\ \n", + "0 \\\\ \n", + "\\vdots \\\\\n", + "0 \\end{array} \\right]$\n", + "$;~Ua_{1}=d_{1}$\n", + "\n", + "$Ld_{2}=\\left[\\begin{array}{c} \n", + "0 \\\\ \n", + "1 \\\\ \n", + "\\vdots \\\\\n", + "0 \\end{array} \\right]$\n", + "$;~Ua_{2}=d_{2}$\n", + "\n", + "$Ld_{n}=\\left[\\begin{array}{c} \n", + "0 \\\\ \n", + "1 \\\\ \n", + "\\vdots \\\\\n", + "n \\end{array} \\right]$\n", + "$;~Ua_{n}=d_{n}$\n", + "\n", + "Consider the following matrix:\n", + "\n", + "$A=\\left[ \\begin{array}{ccc}\n", + "2 & -1 & 0\\\\\n", + "-1 & 2 & -1\\\\\n", + "0 & -1 & 1 \\end{array} \\right]$\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A =\n", + "\n", + " 2 -1 0\n", + " -1 2 -1\n", + " 0 -1 1\n", + "\n", + "U =\n", + "\n", + " 2.00000 -1.00000 0.00000\n", + " 0.00000 1.50000 -1.00000\n", + " 0.00000 -1.00000 1.00000\n", + "\n", + "L =\n", + "\n", + " 1.00000 0.00000 0.00000\n", + " -0.50000 1.00000 0.00000\n", + " 0.00000 0.00000 1.00000\n", + "\n" + ] + } + ], + "source": [ + "A=[2,-1,0;-1,2,-1;0,-1,1]\n", + "U=A;\n", + "L=eye(3,3);\n", + "U(2,:)=U(2,:)-U(2,1)/U(1,1)*U(1,:)\n", + "L(2,1)=A(2,1)/A(1,1)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "L =\n", + "\n", + " 1.00000 0.00000 0.00000\n", + " -0.50000 1.00000 0.00000\n", + " 0.00000 -0.66667 1.00000\n", + "\n", + "U =\n", + "\n", + " 2.00000 -1.00000 0.00000\n", + " 0.00000 1.50000 -1.00000\n", + " 0.00000 0.00000 0.33333\n", + "\n" + ] + } + ], + "source": [ + "L(3,2)=U(3,2)/U(2,2)\n", + "U(3,:)=U(3,:)-U(3,2)/U(2,2)*U(2,:)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now solve for $d_1$ then $a_1$, $d_2$ then $a_2$, and $d_3$ then $a_{3}$\n", + "\n", + "$Ld_{1}=\\left[\\begin{array}{c} \n", + "1 \\\\ \n", + "0 \\\\ \n", + "\\vdots \\\\\n", + "0 \\end{array} \\right]$\n", + "$;~Ua_{1}=d_{1}$" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "d1 =\n", + "\n", + " 1.00000\n", + " 0.50000\n", + " 0.33333\n", + "\n" + ] + } + ], + "source": [ + "d1=zeros(3,1);\n", + "d1(1)=1;\n", + "d1(2)=0-L(2,1)*d1(1);\n", + "d1(3)=0-L(3,1)*d1(1)-L(3,2)*d1(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a1 =\n", + "\n", + " 1.00000\n", + " 1.00000\n", + " 1.00000\n", + "\n" + ] + } + ], + "source": [ + "a1=zeros(3,1);\n", + "a1(3)=d1(3)/U(3,3);\n", + "a1(2)=1/U(2,2)*(d1(2)-U(2,3)*a1(3));\n", + "a1(1)=1/U(1,1)*(d1(1)-U(1,2)*a1(2)-U(1,3)*a1(3))" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "d2 =\n", + "\n", + " 0.00000\n", + " 1.00000\n", + " 0.66667\n", + "\n" + ] + } + ], + "source": [ + "d2=zeros(3,1);\n", + "d2(1)=0;\n", + "d2(2)=1-L(2,1)*d2(1);\n", + "d2(3)=0-L(3,1)*d2(1)-L(3,2)*d2(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a2 =\n", + "\n", + " 1.0000\n", + " 2.0000\n", + " 2.0000\n", + "\n" + ] + } + ], + "source": [ + "a2=zeros(3,1);\n", + "a2(3)=d2(3)/U(3,3);\n", + "a2(2)=1/U(2,2)*(d2(2)-U(2,3)*a2(3));\n", + "a2(1)=1/U(1,1)*(d2(1)-U(1,2)*a2(2)-U(1,3)*a2(3))" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "d3 =\n", + "\n", + " 0\n", + " 0\n", + " 1\n", + "\n" + ] + } + ], + "source": [ + "d3=zeros(3,1);\n", + "d3(1)=0;\n", + "d3(2)=0-L(2,1)*d3(1);\n", + "d3(3)=1-L(3,1)*d3(1)-L(3,2)*d3(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a3 =\n", + "\n", + " 1.00000\n", + " 2.00000\n", + " 3.00000\n", + "\n" + ] + } + ], + "source": [ + "a3=zeros(3,1);\n", + "a3(3)=d3(3)/U(3,3);\n", + "a3(2)=1/U(2,2)*(d3(2)-U(2,3)*a3(3));\n", + "a3(1)=1/U(1,1)*(d3(1)-U(1,2)*a3(2)-U(1,3)*a3(3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Final solution for $A^{-1}$ is $[a_{1}~a_{2}~a_{3}]$" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invA =\n", + "\n", + " 1.00000 1.00000 1.00000\n", + " 1.00000 2.00000 2.00000\n", + " 1.00000 2.00000 3.00000\n", + "\n", + "ans =\n", + "\n", + " 1.00000 0.00000 0.00000\n", + " 0.00000 1.00000 -0.00000\n", + " -0.00000 -0.00000 1.00000\n", + "\n" + ] + } + ], + "source": [ + "invA=[a1,a2,a3]\n", + "A*invA" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now the solution of $x$ to $Ax=y$ is $x=A^{-1}y$" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "y =\n", + "\n", + " 1\n", + " 2\n", + " 3\n", + "\n", + "x =\n", + "\n", + " 6.0000\n", + " 11.0000\n", + " 14.0000\n", + "\n", + "xbs =\n", + "\n", + " 6.0000\n", + " 11.0000\n", + " 14.0000\n", + "\n", + "ans =\n", + "\n", + " -3.5527e-15\n", + " -8.8818e-15\n", + " -1.0658e-14\n", + "\n", + "ans = 2.2204e-16\n" + ] + } + ], + "source": [ + "y=[1;2;3]\n", + "x=invA*y\n", + "xbs=A\\y\n", + "x-xbs\n", + "eps" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.0005\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.001\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.0015\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.002\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t40\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t60\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t80\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\tinversion\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\tinversion\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tbackslash\n", + "\n", + "\t\n", + "\t\tbackslash\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tmultiplication\n", + "\n", + "\t\n", + "\t\tmultiplication\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "N=100;\n", + "n=[1:N];\n", + "t_inv=zeros(N,1);\n", + "t_bs=zeros(N,1);\n", + "t_mult=zeros(N,1);\n", + "for i=1:N\n", + " A=rand(i,i);\n", + " tic\n", + " invA=inv(A);\n", + " t_inv(i)=toc;\n", + " b=rand(i,1);\n", + " tic;\n", + " x=A\\b;\n", + " t_bs(i)=toc;\n", + " tic;\n", + " x=invA*b;\n", + " t_mult(i)=toc;\n", + "end\n", + "plot(n,t_inv,n,t_bs,n,t_mult)\n", + "axis([0 100 0 0.002])\n", + "legend('inversion','backslash','multiplication','Location','NorthWest')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Condition of a matrix \n", + "### *just checked in to see what condition my condition was in*\n", + "### Matrix norms\n", + "\n", + "The Euclidean norm of a vector is measure of the magnitude (in 3D this would be: $|x|=\\sqrt{x_{1}^{2}+x_{2}^{2}+x_{3}^{2}}$) in general the equation is:\n", + "\n", + "$||x||_{e}=\\sqrt{\\sum_{i=1}^{n}x_{i}^{2}}$\n", + "\n", + "For a matrix, A, the same norm is called the Frobenius norm:\n", + "\n", + "$||A||_{f}=\\sqrt{\\sum_{i=1}^{n}\\sum_{i=1}^{m}A_{i,j}^{2}}$\n", + "\n", + "In general we can calculate any $p$-norm where\n", + "\n", + "$||A||_{p}=\\sqrt{\\sum_{i=1}^{n}\\sum_{i=1}^{m}A_{i,j}^{p}}$\n", + "\n", + "so the p=1, 1-norm is \n", + "\n", + "$||A||_{1}=\\sqrt{\\sum_{i=1}^{n}\\sum_{i=1}^{m}A_{i,j}^{1}}=\\sum_{i=1}^{n}\\sum_{i=1}^{m}|A_{i,j}|$\n", + "\n", + "$||A||_{\\infty}=\\sqrt{\\sum_{i=1}^{n}\\sum_{i=1}^{m}A_{i,j}^{\\infty}}=\\max_{1\\le i \\le n}\\sum_{j=1}^{m}|A_{i,j}|$\n", + "\n", + "### Condition of Matrix\n", + "\n", + "The matrix condition is the product of \n", + "\n", + "$Cond(A) = ||A||\\cdot||A^{-1}||$ \n", + "\n", + "So each norm will have a different condition number, but the limit is $Cond(A)\\ge 1$\n", + "\n", + "An estimate of the rounding error is based on the condition of A:\n", + "\n", + "$\\frac{||\\Delta x||}{x} \\le Cond(A) \\frac{||\\Delta A||}{||A||}$\n", + "\n", + "So if the coefficients of A have accuracy to $10^{-t}\n", + "\n", + "and the condition of A, $Cond(A)=10^{c}$\n", + "\n", + "then the solution for x can have rounding errors up to $10^{c-t}$\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A =\n", + "\n", + " 1.00000 0.50000 0.33333\n", + " 0.50000 0.33333 0.25000\n", + " 0.33333 0.25000 0.20000\n", + "\n", + "L =\n", + "\n", + " 1.00000 0.00000 0.00000\n", + " 0.50000 1.00000 0.00000\n", + " 0.33333 1.00000 1.00000\n", + "\n", + "U =\n", + "\n", + " 1.00000 0.50000 0.33333\n", + " 0.00000 0.08333 0.08333\n", + " 0.00000 -0.00000 0.00556\n", + "\n" + ] + } + ], + "source": [ + "A=[1,1/2,1/3;1/2,1/3,1/4;1/3,1/4,1/5]\n", + "[L,U]=LU_naive(A)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "invA=" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A =\n", + "\n", + " 2 1\n", + " 1 3\n", + "\n", + "L =\n", + "\n", + " 1.00000 0.00000\n", + " 0.50000 1.00000\n", + "\n", + "U =\n", + "\n", + " 2.00000 1.00000\n", + " 0.00000 2.50000\n", + "\n", + "ans =\n", + "\n", + " 2 1\n", + " 1 3\n", + "\n", + "d =\n", + "\n", + " 1.00000\n", + " 0.50000\n", + "\n", + "y =\n", + "\n", + " 1\n", + " 1\n", + "\n" + ] + } + ], + "source": [ + "A=[2,1;1,3]\n", + "L=[1,0;0.5,1]\n", + "U=[2,1;0,2.5]\n", + "L*U\n", + "\n", + "d=[1;0.5]\n", + "y=L*d" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans = 5.0000\n", + "ans = 1\n", + "ans = 5\n", + "ans = 5\n", + "ans = 5.0000\n" + ] + } + ], + "source": [ + "% what is the determinant of L, U and A?\n", + "\n", + "det(A)\n", + "det(L)\n", + "det(U)\n", + "det(L)*det(U)\n", + "det(L*U)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Pivoting for LU factorization\n", + "\n", + "LU factorization uses the same method as Gauss elimination so it is also necessary to perform partial pivoting when creating the lower and upper triangular matrices. \n", + "\n", + "Matlab and Octave use pivoting in the command \n", + "\n", + "`[L,U,P]=lu(A)`\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'lu' is a built-in function from the file libinterp/corefcn/lu.cc\n", + "\n", + " -- Built-in Function: [L, U] = lu (A)\n", + " -- Built-in Function: [L, U, P] = lu (A)\n", + " -- Built-in Function: [L, U, P, Q] = lu (S)\n", + " -- Built-in Function: [L, U, P, Q, R] = lu (S)\n", + " -- Built-in Function: [...] = lu (S, THRES)\n", + " -- Built-in Function: Y = lu (...)\n", + " -- Built-in Function: [...] = lu (..., \"vector\")\n", + " Compute the LU decomposition of A.\n", + "\n", + " If A is full subroutines from LAPACK are used and if A is sparse\n", + " then UMFPACK is used.\n", + "\n", + " The result is returned in a permuted form, according to the\n", + " optional return value P. For example, given the matrix 'a = [1, 2;\n", + " 3, 4]',\n", + "\n", + " [l, u, p] = lu (A)\n", + "\n", + " returns\n", + "\n", + " l =\n", + "\n", + " 1.00000 0.00000\n", + " 0.33333 1.00000\n", + "\n", + " u =\n", + "\n", + " 3.00000 4.00000\n", + " 0.00000 0.66667\n", + "\n", + " p =\n", + "\n", + " 0 1\n", + " 1 0\n", + "\n", + " The matrix is not required to be square.\n", + "\n", + " When called with two or three output arguments and a spare input\n", + " matrix, 'lu' does not attempt to perform sparsity preserving column\n", + " permutations. Called with a fourth output argument, the sparsity\n", + " preserving column transformation Q is returned, such that 'P * A *\n", + " Q = L * U'.\n", + "\n", + " Called with a fifth output argument and a sparse input matrix, 'lu'\n", + " attempts to use a scaling factor R on the input matrix such that 'P\n", + " * (R \\ A) * Q = L * U'. This typically leads to a sparser and more\n", + " stable factorization.\n", + "\n", + " An additional input argument THRES, that defines the pivoting\n", + " threshold can be given. THRES can be a scalar, in which case it\n", + " defines the UMFPACK pivoting tolerance for both symmetric and\n", + " unsymmetric cases. If THRES is a 2-element vector, then the first\n", + " element defines the pivoting tolerance for the unsymmetric UMFPACK\n", + " pivoting strategy and the second for the symmetric strategy. By\n", + " default, the values defined by 'spparms' are used ([0.1, 0.001]).\n", + "\n", + " Given the string argument \"vector\", 'lu' returns the values of P\n", + " and Q as vector values, such that for full matrix, 'A (P,:) = L *\n", + " U', and 'R(P,:) * A (:, Q) = L * U'.\n", + "\n", + " With two output arguments, returns the permuted forms of the upper\n", + " and lower triangular matrices, such that 'A = L * U'. With one\n", + " output argument Y, then the matrix returned by the LAPACK routines\n", + " is returned. If the input matrix is sparse then the matrix L is\n", + " embedded into U to give a return value similar to the full case.\n", + " For both full and sparse matrices, 'lu' loses the permutation\n", + " information.\n", + "\n", + " See also: luupdate, ilu, chol, hess, qr, qz, schur, svd.\n", + "\n", + "Additional help for built-in functions and operators is\n", + "available in the online version of the manual. Use the command\n", + "'doc ' to search the manual index.\n", + "\n", + "Help and information about Octave is also available on the WWW\n", + "at http://www.octave.org and via the help@octave.org\n", + "mailing list.\n" + ] + } + ], + "source": [ + "help lu" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.0005\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.001\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.0015\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.002\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t40\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t60\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t80\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\tLU decomp\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\tLU decomp\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tOctave \\\\\n", + "\n", + "\t\n", + "\t\tOctave \\\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "% time LU solution vs backslash\n", + "t_lu=zeros(100,1);\n", + "t_bs=zeros(100,1);\n", + "for N=1:100\n", + " A=rand(N,N);\n", + " y=rand(N,1);\n", + " [L,U,P]=lu(A);\n", + "\n", + " tic; d=inv(L)*y; x=inv(U)*d; t_lu(N)=toc;\n", + "\n", + " tic; x=inv(A)*y; t_bs(N)=toc;\n", + "end\n", + "plot([1:100],t_lu,[1:100],t_bs) \n", + "legend('LU decomp','Octave \\\\')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Consider the problem again from the intro to Linear Algebra, 4 masses are connected in series to 4 springs with K=10 N/m. What are the final positions of the masses? \n", + "\n", + "![Springs-masses](../lecture_09/mass_springs.svg)\n", + "\n", + "The masses haves the following amounts, 1, 2, 3, and 4 kg for masses 1-4. Using a FBD for each mass:\n", + "\n", + "$m_{1}g+k(x_{2}-x_{1})-kx_{1}=0$\n", + "\n", + "$m_{2}g+k(x_{3}-x_{2})-k(x_{2}-x_{1})=0$\n", + "\n", + "$m_{3}g+k(x_{4}-x_{3})-k(x_{3}-x_{2})=0$\n", + "\n", + "$m_{4}g-k(x_{4}-x_{3})=0$\n", + "\n", + "in matrix form:\n", + "\n", + "$\\left[ \\begin{array}{cccc}\n", + "2k & -k & 0 & 0 \\\\\n", + "-k & 2k & -k & 0 \\\\\n", + "0 & -k & 2k & -k \\\\\n", + "0 & 0 & -k & k \\end{array} \\right]\n", + "\\left[ \\begin{array}{c}\n", + "x_{1} \\\\\n", + "x_{2} \\\\\n", + "x_{3} \\\\\n", + "x_{4} \\end{array} \\right]=\n", + "\\left[ \\begin{array}{c}\n", + "m_{1}g \\\\\n", + "m_{2}g \\\\\n", + "m_{3}g \\\\\n", + "m_{4}g \\end{array} \\right]$" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "K =\n", + "\n", + " 20 -10 0 0\n", + " -10 20 -10 0\n", + " 0 -10 20 -10\n", + " 0 0 -10 10\n", + "\n", + "y =\n", + "\n", + " 9.8100\n", + " 19.6200\n", + " 29.4300\n", + " 39.2400\n", + "\n" + ] + } + ], + "source": [ + "k=10; % N/m\n", + "m1=1; % kg\n", + "m2=2;\n", + "m3=3;\n", + "m4=4;\n", + "g=9.81; % m/s^2\n", + "K=[2*k -k 0 0; -k 2*k -k 0; 0 -k 2*k -k; 0 0 -k k]\n", + "y=[m1*g;m2*g;m3*g;m4*g]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This matrix, K, is symmetric. \n", + "\n", + "`K(i,j)==K(j,i)`\n", + "\n", + "Now we can use,\n", + "\n", + "## Cholesky Factorization\n", + "\n", + "We can decompose the matrix, K into two matrices, $U$ and $U^{T}$, where\n", + "\n", + "$K=U^{T}U$\n", + "\n", + "each of the components of U can be calculated with the following equations:\n", + "\n", + "$u_{ii}=\\sqrt{a_{ii}-\\sum_{k=1}^{i-1}u_{ki}^{2}}$\n", + "\n", + "$u_{ij}=\\frac{a_{ij}-\\sum_{k=1}^{i-1}u_{ki}u_{kj}}{u_{ii}}$\n", + "\n", + "so for K" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "K =\n", + "\n", + " 20 -10 0 0\n", + " -10 20 -10 0\n", + " 0 -10 20 -10\n", + " 0 0 -10 10\n", + "\n" + ] + } + ], + "source": [ + "K" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "u11 = 4.4721\n", + "u12 = -2.2361\n", + "u13 = 0\n", + "u14 = 0\n", + "u22 = 3.8730\n", + "u23 = -2.5820\n", + "u24 = 0\n", + "u33 = 3.6515\n", + "u34 = -2.7386\n", + "u44 = 1.5811\n", + "U =\n", + "\n", + " 4.47214 -2.23607 0.00000 0.00000\n", + " 0.00000 3.87298 -2.58199 0.00000\n", + " 0.00000 0.00000 3.65148 -2.73861\n", + " 0.00000 0.00000 0.00000 1.58114\n", + "\n" + ] + } + ], + "source": [ + "u11=sqrt(K(1,1))\n", + "u12=(K(1,2))/u11\n", + "u13=(K(1,3))/u11\n", + "u14=(K(1,4))/u11\n", + "u22=sqrt(K(2,2)-u12^2)\n", + "u23=(K(2,3)-u12*u13)/u22\n", + "u24=(K(2,4)-u12*u14)/u22\n", + "u33=sqrt(K(3,3)-u13^2-u23^2)\n", + "u34=(K(3,4)-u13*u14-u23*u24)/u33\n", + "u44=sqrt(K(4,4)-u14^2-u24^2-u34^2)\n", + "U=[u11,u12,u13,u14;0,u22,u23,u24;0,0,u33,u34;0,0,0,u44]" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 1 1 1 1\n", + " 1 1 1 1\n", + " 1 1 1 1\n", + " 1 1 1 1\n", + "\n" + ] + } + ], + "source": [ + "(U'*U)'==U'*U" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "average time spent for Cholesky factored solution = 1.465964e-05+/-9.806001e-06\n", + "average time spent for backslash solution = 1.555967e-05+/-1.048561e-05\n" + ] + } + ], + "source": [ + "% time solution for Cholesky vs backslash\n", + "t_chol=zeros(1000,1);\n", + "t_bs=zeros(1000,1);\n", + "for i=1:1000\n", + " tic; d=U'*y; x=U\\d; t_chol(i)=toc;\n", + " tic; x=K\\y; t_bs(i)=toc;\n", + "end\n", + "fprintf('average time spent for Cholesky factored solution = %e+/-%e',mean(t_chol),std(t_chol))\n", + "\n", + "fprintf('average time spent for backslash solution = %e+/-%e',mean(t_bs),std(t_bs))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Octave", + "language": "octave", + "name": "octave" + }, + "language_info": { + "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": "octave", + "version": "0.19.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lecture_12/LU_naive.m b/lecture_12/LU_naive.m new file mode 100644 index 0000000..92efde6 --- /dev/null +++ b/lecture_12/LU_naive.m @@ -0,0 +1,27 @@ +function [L, U] = LU_naive(A) +% GaussNaive: naive Gauss elimination +% x = GaussNaive(A,b): Gauss elimination without pivoting. +% input: +% A = coefficient matrix +% y = right hand side vector +% output: +% x = solution vector +[m,n] = size(A); +if m~=n, error('Matrix A must be square'); end +nb = n; +L=diag(ones(n,1)); +U=A; +% forward elimination +for k = 1:n-1 + for i = k+1:n + fik = U(i,k)/U(k,k); + L(i,k)=fik; + U(i,k:nb) = U(i,k:nb)-fik*U(k,k:nb); + end +end +%% back substitution +%x = zeros(n,1); +%x(n) = Aug(n,nb)/Aug(n,n); +%for i = n-1:-1:1 +% x(i) = (Aug(i,nb)-Aug(i,i+1:n)*x(i+1:n))/Aug(i,i); +%end diff --git a/lecture_12/chol_pre.png b/lecture_12/chol_pre.png new file mode 100644 index 0000000..67d2493 Binary files /dev/null and b/lecture_12/chol_pre.png differ diff --git a/lecture_12/det_L.png b/lecture_12/det_L.png new file mode 100644 index 0000000..aaac5a2 Binary files /dev/null and b/lecture_12/det_L.png differ diff --git a/lecture_12/lecture_12.aux b/lecture_12/lecture_12.aux new file mode 100644 index 0000000..4aa3a49 --- /dev/null +++ b/lecture_12/lecture_12.aux @@ -0,0 +1,38 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\providecommand \oddpage@label [2]{} +\@writefile{toc}{\contentsline {subsection}{\numberline {0.1}My question from last class}{2}{subsection.0.1}} +\newlabel{my-question-from-last-class}{{0.1}{2}{My question from last class}{subsection.0.1}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces q1\relax }}{2}{figure.caption.1}} +\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces q2\relax }}{3}{figure.caption.2}} +\@writefile{toc}{\contentsline {subsection}{\numberline {0.2}Your questions from last class}{3}{subsection.0.2}} +\newlabel{your-questions-from-last-class}{{0.2}{3}{Your questions from last class}{subsection.0.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {1}Matrix Inverse and Condition}{3}{section.1}} +\newlabel{matrix-inverse-and-condition}{{1}{3}{Matrix Inverse and Condition}{section.1}{}} +\newlabel{note-on-solving-for-a-1-column-1}{{1}{5}{\texorpdfstring {Note on solving for \(A^{-1}\) column 1}{Note on solving for A\^{}\{-1\} column 1}}{section*.3}{}} +\@writefile{toc}{\contentsline {paragraph}{Note on solving for \(A^{-1}\) column 1}{5}{section*.3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Condition of a matrix}{10}{subsection.1.1}} +\newlabel{condition-of-a-matrix}{{1.1}{10}{Condition of a matrix}{subsection.1.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.1.1}\emph {just checked in to see what condition my condition was in}}{10}{subsubsection.1.1.1}} +\newlabel{just-checked-in-to-see-what-condition-my-condition-was-in}{{1.1.1}{10}{\texorpdfstring {\emph {just checked in to see what condition my condition was in}}{just checked in to see what condition my condition was in}}{subsubsection.1.1.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.1.2}Matrix norms}{10}{subsubsection.1.1.2}} +\newlabel{matrix-norms}{{1.1.2}{10}{Matrix norms}{subsubsection.1.1.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.1.3}Condition of Matrix}{11}{subsubsection.1.1.3}} +\newlabel{condition-of-matrix}{{1.1.3}{11}{Condition of Matrix}{subsubsection.1.1.3}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Springs-masses\relax }}{13}{figure.caption.4}} diff --git a/lecture_12/lecture_12.bbl b/lecture_12/lecture_12.bbl new file mode 100644 index 0000000..e69de29 diff --git a/lecture_12/lecture_12.blg b/lecture_12/lecture_12.blg new file mode 100644 index 0000000..beafcd1 --- /dev/null +++ b/lecture_12/lecture_12.blg @@ -0,0 +1,48 @@ +This is BibTeX, Version 0.99d (TeX Live 2015/Debian) +Capacity: max_strings=35307, hash_size=35307, hash_prime=30011 +The top-level auxiliary file: lecture_12.aux +I found no \citation commands---while reading file lecture_12.aux +I found no \bibdata command---while reading file lecture_12.aux +I found no \bibstyle command---while reading file lecture_12.aux +You've used 0 entries, + 0 wiz_defined-function locations, + 83 strings with 494 characters, +and the built_in function-call counts, 0 in all, are: += -- 0 +> -- 0 +< -- 0 ++ -- 0 +- -- 0 +* -- 0 +:= -- 0 +add.period$ -- 0 +call.type$ -- 0 +change.case$ -- 0 +chr.to.int$ -- 0 +cite$ -- 0 +duplicate$ -- 0 +empty$ -- 0 +format.name$ -- 0 +if$ -- 0 +int.to.chr$ -- 0 +int.to.str$ -- 0 +missing$ -- 0 +newline$ -- 0 +num.names$ -- 0 +pop$ -- 0 +preamble$ -- 0 +purify$ -- 0 +quote$ -- 0 +skip$ -- 0 +stack$ -- 0 +substring$ -- 0 +swap$ -- 0 +text.length$ -- 0 +text.prefix$ -- 0 +top$ -- 0 +type$ -- 0 +warning$ -- 0 +while$ -- 0 +width$ -- 0 +write$ -- 0 +(There were 3 error messages) diff --git a/lecture_12/lecture_12.ipynb b/lecture_12/lecture_12.ipynb new file mode 100644 index 0000000..41f1959 --- /dev/null +++ b/lecture_12/lecture_12.ipynb @@ -0,0 +1,1248 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "setdefaults" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A =\n", + "\n", + " 0.447394 0.357071 0.720915 0.499926\n", + " 0.648313 0.323276 0.521677 0.288345\n", + " 0.084982 0.581513 0.466420 0.142342\n", + " 0.576580 0.658089 0.916987 0.923165\n", + "\n", + "L =\n", + "\n", + " 1.00000 0.00000 0.00000 0.00000\n", + " 0.13108 1.00000 0.00000 0.00000\n", + " 0.69009 0.24851 1.00000 0.00000\n", + " 0.88935 0.68736 0.68488 1.00000\n", + "\n", + "U =\n", + "\n", + " 0.64831 0.32328 0.52168 0.28834\n", + " 0.00000 0.53914 0.39804 0.10455\n", + " 0.00000 0.00000 0.26199 0.27496\n", + " 0.00000 0.00000 0.00000 0.40655\n", + "\n", + "P =\n", + "\n", + "Permutation Matrix\n", + "\n", + " 0 1 0 0\n", + " 0 0 1 0\n", + " 1 0 0 0\n", + " 0 0 0 1\n", + "\n", + "ans = 1\n" + ] + } + ], + "source": [ + "A=rand(4,4)\n", + "\n", + "[L,U,P]=lu(A)\n", + "\n", + "det(L)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 4 4\n", + "\n", + "ans = 23.586\n", + "ans = 35.826\n", + "ans = 14.869\n", + "C =\n", + "\n", + " 5.98549 4.28555 4.35707 4.31359\n", + " 0.00000 3.63950 1.35005 1.45342\n", + " 0.00000 0.00000 3.62851 1.50580\n", + " 0.00000 0.00000 0.00000 3.21911\n", + "\n" + ] + } + ], + "source": [ + "A=rand(4,100)';\n", + "A=A'*A;\n", + "size(A)\n", + "min(min(A))\n", + "max(max(A))\n", + "cond(A)\n", + "C=chol(A)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## My question from last class \n", + "\n", + "![q1](det_L.png)\n", + "\n", + "![q2](chol_pre.png)\n", + "\n", + "\n", + "## Your questions from last class\n", + "\n", + "1. Will the exam be more theoretical or problem based?\n", + "\n", + "2. Writing code is difficult \n", + "\n", + "3. What format can we expect for the midterm? \n", + "\n", + "2. Could we go over some example questions for the exam?\n", + "\n", + "3. Will the use of GitHub be tested on the Midterm exam? Or is it more focused on linear algebra techniques/what was covered in the lectures?\n", + "\n", + "4. This is not my strong suit, getting a bit overwhelmed with matrix multiplication.\n", + "\n", + "5. I forgot how much I learned in linear algebra.\n", + "\n", + "6. What's the most exciting project you've ever worked on with Matlab/Octave?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Matrix Inverse and Condition\n", + "\n", + "\n", + "Considering the same solution set:\n", + "\n", + "$y=Ax$\n", + "\n", + "If we know that $A^{-1}A=I$, then \n", + "\n", + "$A^{-1}y=A^{-1}Ax=x$\n", + "\n", + "so \n", + "\n", + "$x=A^{-1}y$\n", + "\n", + "Where, $A^{-1}$ is the inverse of matrix $A$.\n", + "\n", + "$2x_{1}+x_{2}=1$\n", + "\n", + "$x_{1}+3x_{2}=1$\n", + "\n", + "$Ax=y$\n", + "\n", + "$\\left[ \\begin{array}{cc}\n", + "2 & 1 \\\\\n", + "1 & 3 \\end{array} \\right]\n", + "\\left[\\begin{array}{c} \n", + "x_{1} \\\\ \n", + "x_{2} \\end{array}\\right]=\n", + "\\left[\\begin{array}{c} \n", + "1 \\\\\n", + "1\\end{array}\\right]$\n", + "\n", + "$A^{-1}=\\frac{1}{2*3-1*1}\\left[ \\begin{array}{cc}\n", + "3 & -1 \\\\\n", + "-1 & 2 \\end{array} \\right]=\n", + "\\left[ \\begin{array}{cc}\n", + "3/5 & -1/5 \\\\\n", + "-1/5 & 2/5 \\end{array} \\right]$\n" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A =\n", + "\n", + " 2 1\n", + " 1 3\n", + "\n", + "invA =\n", + "\n", + " 0.60000 -0.20000\n", + " -0.20000 0.40000\n", + "\n", + "ans =\n", + "\n", + " 1.00000 0.00000\n", + " 0.00000 1.00000\n", + "\n", + "ans =\n", + "\n", + " 1.00000 0.00000\n", + " 0.00000 1.00000\n", + "\n" + ] + } + ], + "source": [ + "A=[2,1;1,3]\n", + "invA=1/5*[3,-1;-1,2]\n", + "\n", + "A*invA\n", + "invA*A" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "How did we know the inverse of A? \n", + "\n", + "for 2$\\times$2 matrices, it is always:\n", + "\n", + "$A=\\left[ \\begin{array}{cc}\n", + "A_{11} & A_{12} \\\\\n", + "A_{21} & A_{22} \\end{array} \\right]$\n", + "\n", + "$A^{-1}=\\frac{1}{det(A)}\\left[ \\begin{array}{cc}\n", + "A_{22} & -A_{12} \\\\\n", + "-A_{21} & A_{11} \\end{array} \\right]$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$AA^{-1}=\\frac{1}{A_{11}A_{22}-A_{21}A_{12}}\\left[ \\begin{array}{cc}\n", + "A_{11}A_{22}-A_{21}A_{12} & -A_{11}A_{12}+A_{12}A_{11} \\\\\n", + "A_{21}A_{22}-A_{22}A_{21} & -A_{21}A_{12}+A_{22}A_{11} \\end{array} \\right]\n", + "=\\left[ \\begin{array}{cc}\n", + "1 & 0 \\\\\n", + "0 & 1 \\end{array} \\right]$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What about bigger matrices?\n", + "\n", + "We can use the LU-decomposition\n", + "\n", + "$A=LU$\n", + "\n", + "$A^{-1}=(LU)^{-1}=U^{-1}L^{-1}$\n", + "\n", + "if we divide $A^{-1}$ into n-column vectors, $a_{n}$, then\n", + "\n", + "$Aa_{1}=\\left[\\begin{array}{c} \n", + "1 \\\\ \n", + "0 \\\\ \n", + "\\vdots \\\\\n", + "0 \\end{array} \\right]$\n", + "$Aa_{2}=\\left[\\begin{array}{c} \n", + "0 \\\\ \n", + "1 \\\\ \n", + "\\vdots \\\\\n", + "0 \\end{array} \\right]$\n", + "$Aa_{n}=\\left[\\begin{array}{c} \n", + "0 \\\\ \n", + "0 \\\\ \n", + "\\vdots \\\\\n", + "1 \\end{array} \\right]$\n", + "\n", + "\n", + "Which we can solve for each $a_{n}$ with LU-decomposition, knowing the lower and upper triangular decompositions, then \n", + "\n", + "$A^{-1}=\\left[ \\begin{array}{cccc}\n", + "| & | & & | \\\\\n", + "a_{1} & a_{2} & \\cdots & a_{n} \\\\\n", + "| & | & & | \\end{array} \\right]$\n", + "\n", + "\n", + "$Ld_{1}=\\left[\\begin{array}{c} \n", + "1 \\\\ \n", + "0 \\\\ \n", + "\\vdots \\\\\n", + "0 \\end{array} \\right]$\n", + "$;~Ua_{1}=d_{1}$\n", + "\n", + "$Ld_{2}=\\left[\\begin{array}{c} \n", + "0 \\\\ \n", + "1 \\\\ \n", + "\\vdots \\\\\n", + "0 \\end{array} \\right]$\n", + "$;~Ua_{2}=d_{2}$\n", + "\n", + "$Ld_{n}=\\left[\\begin{array}{c} \n", + "0 \\\\ \n", + "1 \\\\ \n", + "\\vdots \\\\\n", + "n \\end{array} \\right]$\n", + "$;~Ua_{n}=d_{n}$\n", + "\n", + "Consider the following matrix:\n", + "\n", + "$A=\\left[ \\begin{array}{ccc}\n", + "2 & -1 & 0\\\\\n", + "-1 & 2 & -1\\\\\n", + "0 & -1 & 1 \\end{array} \\right]$\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Note on solving for $A^{-1}$ column 1\n", + "\n", + "$Aa_1=I(:,1)$\n", + "\n", + "$LUa_1=I(:,1)$\n", + "\n", + "$(LUa_1-I(:,1))=0$\n", + "\n", + "$L(Ua_1-d_1)=0$\n", + "\n", + "$I(:,1)=Ld_1$" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A =\n", + "\n", + " 2 -1 0\n", + " -1 2 -1\n", + " 0 -1 1\n", + "\n", + "U =\n", + "\n", + " 2.00000 -1.00000 0.00000\n", + " 0.00000 1.50000 -1.00000\n", + " 0.00000 -1.00000 1.00000\n", + "\n", + "L =\n", + "\n", + " 1.00000 0.00000 0.00000\n", + " -0.50000 1.00000 0.00000\n", + " 0.00000 0.00000 1.00000\n", + "\n" + ] + } + ], + "source": [ + "A=[2,-1,0;-1,2,-1;0,-1,1]\n", + "U=A;\n", + "L=eye(3,3);\n", + "U(2,:)=U(2,:)-U(2,1)/U(1,1)*U(1,:)\n", + "L(2,1)=A(2,1)/A(1,1)" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "L =\n", + "\n", + " 1.00000 0.00000 0.00000\n", + " -0.50000 1.00000 0.00000\n", + " 0.00000 -0.66667 1.00000\n", + "\n", + "U =\n", + "\n", + " 2.00000 -1.00000 0.00000\n", + " 0.00000 1.50000 -1.00000\n", + " 0.00000 0.00000 0.33333\n", + "\n" + ] + } + ], + "source": [ + "L(3,2)=U(3,2)/U(2,2)\n", + "U(3,:)=U(3,:)-U(3,2)/U(2,2)*U(2,:)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now solve for $d_1$ then $a_1$, $d_2$ then $a_2$, and $d_3$ then $a_{3}$\n", + "\n", + "$Ld_{1}=\\left[\\begin{array}{c} \n", + "1 \\\\ \n", + "0 \\\\ \n", + "\\vdots \\\\\n", + "0 \\end{array} \\right]=\n", + "\\left[\\begin{array}{ccc} \n", + "1 & 0 & 0 \\\\ \n", + "-1/2 & 1 & 0 \\\\\n", + "0 & -2/3 & 1 \\end{array} \\right]\\left[\\begin{array}{c} \n", + "d1(1) \\\\ \n", + "d1(2) \\\\ \n", + "d1(3)\\end{array} \\right]=\\left[\\begin{array}{c} \n", + "1 \\\\ \n", + "0 \\\\ \n", + "0 \\end{array} \\right]\n", + ";~Ua_{1}=d_{1}$" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "d1 =\n", + "\n", + " 1.00000\n", + " 0.50000\n", + " 0.33333\n", + "\n" + ] + } + ], + "source": [ + "d1=zeros(3,1);\n", + "d1(1)=1;\n", + "d1(2)=0-L(2,1)*d1(1);\n", + "d1(3)=0-L(3,1)*d1(1)-L(3,2)*d1(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a1 =\n", + "\n", + " 1.00000\n", + " 1.00000\n", + " 1.00000\n", + "\n" + ] + } + ], + "source": [ + "a1=zeros(3,1);\n", + "a1(3)=d1(3)/U(3,3);\n", + "a1(2)=1/U(2,2)*(d1(2)-U(2,3)*a1(3));\n", + "a1(1)=1/U(1,1)*(d1(1)-U(1,2)*a1(2)-U(1,3)*a1(3))" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "d2 =\n", + "\n", + " 0.00000\n", + " 1.00000\n", + " 0.66667\n", + "\n" + ] + } + ], + "source": [ + "d2=zeros(3,1);\n", + "d2(1)=0;\n", + "d2(2)=1-L(2,1)*d2(1);\n", + "d2(3)=0-L(3,1)*d2(1)-L(3,2)*d2(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a2 =\n", + "\n", + " 1.0000\n", + " 2.0000\n", + " 2.0000\n", + "\n" + ] + } + ], + "source": [ + "a2=zeros(3,1);\n", + "a2(3)=d2(3)/U(3,3);\n", + "a2(2)=1/U(2,2)*(d2(2)-U(2,3)*a2(3));\n", + "a2(1)=1/U(1,1)*(d2(1)-U(1,2)*a2(2)-U(1,3)*a2(3))" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "d3 =\n", + "\n", + " 0\n", + " 0\n", + " 1\n", + "\n" + ] + } + ], + "source": [ + "d3=zeros(3,1);\n", + "d3(1)=0;\n", + "d3(2)=0-L(2,1)*d3(1);\n", + "d3(3)=1-L(3,1)*d3(1)-L(3,2)*d3(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a3 =\n", + "\n", + " 1.00000\n", + " 2.00000\n", + " 3.00000\n", + "\n" + ] + } + ], + "source": [ + "a3=zeros(3,1);\n", + "a3(3)=d3(3)/U(3,3);\n", + "a3(2)=1/U(2,2)*(d3(2)-U(2,3)*a3(3));\n", + "a3(1)=1/U(1,1)*(d3(1)-U(1,2)*a3(2)-U(1,3)*a3(3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Final solution for $A^{-1}$ is $[a_{1}~a_{2}~a_{3}]$" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invA =\n", + "\n", + " 1.00000 1.00000 1.00000\n", + " 1.00000 2.00000 2.00000\n", + " 1.00000 2.00000 3.00000\n", + "\n", + "I_app =\n", + "\n", + " 1.00000 0.00000 0.00000\n", + " 0.00000 1.00000 -0.00000\n", + " -0.00000 -0.00000 1.00000\n", + "\n", + "ans = -4.4409e-16\n", + "ans = 2.2204e-16\n", + "ans = 0.0039062\n" + ] + } + ], + "source": [ + "invA=[a1,a2,a3]\n", + "I_app=A*invA\n", + "I_app(2,3)\n", + "eps\n", + "\n", + "2^-8" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now the solution of $x$ to $Ax=y$ is $x=A^{-1}y$" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "y =\n", + "\n", + " 1\n", + " 2\n", + " 3\n", + "\n", + "x =\n", + "\n", + " 6.0000\n", + " 11.0000\n", + " 14.0000\n", + "\n", + "xbs =\n", + "\n", + " 6.0000\n", + " 11.0000\n", + " 14.0000\n", + "\n", + "ans =\n", + "\n", + " -3.5527e-15\n", + " -8.8818e-15\n", + " -1.0658e-14\n", + "\n", + "ans = 2.2204e-16\n" + ] + } + ], + "source": [ + "y=[1;2;3]\n", + "x=invA*y\n", + "xbs=A\\y\n", + "x-xbs\n", + "eps" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.0005\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.001\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.0015\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.002\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t40\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t60\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t80\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\tinversion\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\tinversion\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tbackslash\n", + "\n", + "\t\n", + "\t\tbackslash\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tmultiplication\n", + "\n", + "\t\n", + "\t\tmultiplication\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "N=100;\n", + "n=[1:N];\n", + "t_inv=zeros(N,1);\n", + "t_bs=zeros(N,1);\n", + "t_mult=zeros(N,1);\n", + "for i=1:N\n", + " A=rand(i,i);\n", + " tic\n", + " invA=inv(A);\n", + " t_inv(i)=toc;\n", + " b=rand(i,1);\n", + " tic;\n", + " x=A\\b;\n", + " t_bs(i)=toc;\n", + " tic;\n", + " x=invA*b;\n", + " t_mult(i)=toc;\n", + "end\n", + "plot(n,t_inv,n,t_bs,n,t_mult)\n", + "axis([0 100 0 0.002])\n", + "legend('inversion','backslash','multiplication','Location','NorthWest')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Condition of a matrix \n", + "### *just checked in to see what condition my condition was in*\n", + "### Matrix norms\n", + "\n", + "The Euclidean norm of a vector is measure of the magnitude (in 3D this would be: $|x|=\\sqrt{x_{1}^{2}+x_{2}^{2}+x_{3}^{2}}$) in general the equation is:\n", + "\n", + "$||x||_{e}=\\sqrt{\\sum_{i=1}^{n}x_{i}^{2}}$\n", + "\n", + "For a matrix, A, the same norm is called the Frobenius norm:\n", + "\n", + "$||A||_{f}=\\sqrt{\\sum_{i=1}^{n}\\sum_{i=1}^{m}A_{i,j}^{2}}$\n", + "\n", + "In general we can calculate any $p$-norm where\n", + "\n", + "$||A||_{p}=\\sqrt{\\sum_{i=1}^{n}\\sum_{i=1}^{m}A_{i,j}^{p}}$\n", + "\n", + "so the p=1, 1-norm is \n", + "\n", + "$||A||_{1}=\\sqrt{\\sum_{i=1}^{n}\\sum_{i=1}^{m}A_{i,j}^{1}}=\\sum_{i=1}^{n}\\sum_{i=1}^{m}|A_{i,j}|$\n", + "\n", + "$||A||_{\\infty}=\\sqrt{\\sum_{i=1}^{n}\\sum_{i=1}^{m}A_{i,j}^{\\infty}}=\\max_{1\\le i \\le n}\\sum_{j=1}^{m}|A_{i,j}|$\n", + "\n", + "### Condition of Matrix\n", + "\n", + "The matrix condition is the product of \n", + "\n", + "$Cond(A) = ||A||\\cdot||A^{-1}||$ \n", + "\n", + "So each norm will have a different condition number, but the limit is $Cond(A)\\ge 1$\n", + "\n", + "An estimate of the rounding error is based on the condition of A:\n", + "\n", + "$\\frac{||\\Delta x||}{x} \\le Cond(A) \\frac{||\\Delta A||}{||A||}$\n", + "\n", + "So if the coefficients of A have accuracy to $10^{-t}\n", + "\n", + "and the condition of A, $Cond(A)=10^{c}$\n", + "\n", + "then the solution for x can have rounding errors up to $10^{c-t}$\n" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A =\n", + "\n", + " 1.00000 0.50000 0.33333\n", + " 0.50000 0.33333 0.25000\n", + " 0.33333 0.25000 0.20000\n", + "\n", + "L =\n", + "\n", + " 1.00000 0.00000 0.00000\n", + " 0.50000 1.00000 0.00000\n", + " 0.33333 1.00000 1.00000\n", + "\n", + "U =\n", + "\n", + " 1.00000 0.50000 0.33333\n", + " 0.00000 0.08333 0.08333\n", + " 0.00000 -0.00000 0.00556\n", + "\n" + ] + } + ], + "source": [ + "A=[1,1/2,1/3;1/2,1/3,1/4;1/3,1/4,1/5]\n", + "[L,U]=LU_naive(A)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Then, $A^{-1}=(LU)^{-1}=U^{-1}L^{-1}$\n", + "\n", + "$Ld_{1}=\\left[\\begin{array}{c}\n", + "1 \\\\\n", + "0 \\\\\n", + "0 \\end{array}\\right]$, $Ux_{1}=d_{1}$ ..." + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "invA =\n", + "\n", + " 9.0000 -36.0000 30.0000\n", + " -36.0000 192.0000 -180.0000\n", + " 30.0000 -180.0000 180.0000\n", + "\n", + "ans =\n", + "\n", + " 1.0000e+00 3.5527e-15 2.9976e-15\n", + " -1.3249e-14 1.0000e+00 -9.1038e-15\n", + " 8.5117e-15 7.1054e-15 1.0000e+00\n", + "\n" + ] + } + ], + "source": [ + "invA=zeros(3,3);\n", + "d1=L\\[1;0;0];\n", + "d2=L\\[0;1;0];\n", + "d3=L\\[0;0;1];\n", + "invA(:,1)=U\\d1;\n", + "invA(:,2)=U\\d2;\n", + "invA(:,3)=U\\d3\n", + "invA*A" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Find the condition of A, $cond(A)$" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "normf_A = 1.4136\n", + "normf_invA = 372.21\n", + "cond_f_A = 526.16\n", + "ans = 1.4136\n", + "norm1_A = 1.8333\n", + "norm1_invA = 30.000\n", + "ans = 1.8333\n", + "cond_1_A = 55.000\n", + "norminf_A = 1.8333\n", + "norminf_invA = 30.000\n", + "ans = 1.8333\n", + "cond_inf_A = 55.000\n" + ] + } + ], + "source": [ + "% Frobenius norm\n", + "normf_A = sqrt(sum(sum(A.^2)))\n", + "normf_invA = sqrt(sum(sum(invA.^2)))\n", + "\n", + "cond_f_A = normf_A*normf_invA\n", + "\n", + "norm(A,'fro')\n", + "\n", + "% p=1, column sum norm\n", + "norm1_A = max(sum(A,2))\n", + "norm1_invA = max(sum(invA,2))\n", + "norm(A,1)\n", + "\n", + "cond_1_A=norm1_A*norm1_invA\n", + "\n", + "% p=inf, row sum norm\n", + "norminf_A = max(sum(A,1))\n", + "norminf_invA = max(sum(invA,1))\n", + "norm(A,inf)\n", + "\n", + "cond_inf_A=norminf_A*norminf_invA\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Consider the problem again from the intro to Linear Algebra, 4 masses are connected in series to 4 springs with spring constants $K_{i}$. What does a high condition number mean for this problem? \n", + "\n", + "![Springs-masses](../lecture_09/mass_springs.png)\n", + "\n", + "The masses haves the following amounts, 1, 2, 3, and 4 kg for masses 1-4. Using a FBD for each mass:\n", + "\n", + "$m_{1}g+k_{2}(x_{2}-x_{1})-k_{1}x_{1}=0$\n", + "\n", + "$m_{2}g+k_{3}(x_{3}-x_{2})-k_{2}(x_{2}-x_{1})=0$\n", + "\n", + "$m_{3}g+k_{4}(x_{4}-x_{3})-k_{3}(x_{3}-x_{2})=0$\n", + "\n", + "$m_{4}g-k_{4}(x_{4}-x_{3})=0$\n", + "\n", + "in matrix form:\n", + "\n", + "$\\left[ \\begin{array}{cccc}\n", + "k_{1}+k_{2} & -k_{2} & 0 & 0 \\\\\n", + "-k_{2} & k_{2}+k_{3} & -k_{3} & 0 \\\\\n", + "0 & -k_{3} & k_{3}+k_{4} & -k_{4} \\\\\n", + "0 & 0 & -k_{4} & k_{4} \\end{array} \\right]\n", + "\\left[ \\begin{array}{c}\n", + "x_{1} \\\\\n", + "x_{2} \\\\\n", + "x_{3} \\\\\n", + "x_{4} \\end{array} \\right]=\n", + "\\left[ \\begin{array}{c}\n", + "m_{1}g \\\\\n", + "m_{2}g \\\\\n", + "m_{3}g \\\\\n", + "m_{4}g \\end{array} \\right]$" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "K =\n", + "\n", + " 100010 -100000 0 0\n", + " -100000 100010 -10 0\n", + " 0 -10 11 -1\n", + " 0 0 -1 1\n", + "\n", + "y =\n", + "\n", + " 9.8100\n", + " 19.6200\n", + " 29.4300\n", + " 39.2400\n", + "\n" + ] + } + ], + "source": [ + "k1=10; % N/m\n", + "k2=100000;\n", + "k3=10;\n", + "k4=1;\n", + "m1=1; % kg\n", + "m2=2;\n", + "m3=3;\n", + "m4=4;\n", + "g=9.81; % m/s^2\n", + "K=[k1+k2 -k2 0 0; -k2 k2+k3 -k3 0; 0 -k3 k3+k4 -k4; 0 0 -k4 k4]\n", + "y=[m1*g;m2*g;m3*g;m4*g]" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans = 3.2004e+05\n", + "ans = 3.2004e+05\n", + "ans = 2.5925e+05\n", + "ans = 2.5293e+05\n" + ] + } + ], + "source": [ + "cond(K,inf)\n", + "cond(K,1)\n", + "cond(K,'fro')\n", + "cond(K,2)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "e =\n", + "\n", + " 7.9078e-01\n", + " 3.5881e+00\n", + " 1.7621e+01\n", + " 2.0001e+05\n", + "\n", + "ans = 2.5293e+05\n" + ] + } + ], + "source": [ + "e=eig(K)\n", + "max(e)/min(e)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Octave", + "language": "octave", + "name": "octave" + }, + "language_info": { + "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": "octave", + "version": "0.19.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lecture_12/lecture_12.log b/lecture_12/lecture_12.log new file mode 100644 index 0000000..c4a5ed3 --- /dev/null +++ b/lecture_12/lecture_12.log @@ -0,0 +1,841 @@ +This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015/Debian) (preloaded format=pdflatex 2017.1.11) 28 FEB 2017 14:24 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**lecture_12.tex +(./lecture_12.tex +LaTeX2e <2016/02/01> +Babel <3.9q> and hyphenation patterns for 81 language(s) loaded. +(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls +Document Class: article 2014/09/29 v1.4h Standard LaTeX document class +(/usr/share/texlive/texmf-dist/tex/latex/base/size11.clo +File: size11.clo 2014/09/29 v1.4h Standard LaTeX file (size option) +) +\c@part=\count79 +\c@section=\count80 +\c@subsection=\count81 +\c@subsubsection=\count82 +\c@paragraph=\count83 +\c@subparagraph=\count84 +\c@figure=\count85 +\c@table=\count86 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\bibindent=\dimen102 +) +(/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty +Package: fontenc 2005/09/27 v1.99g Standard LaTeX package + +(/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.def +File: t1enc.def 2005/09/27 v1.99g Standard LaTeX file +LaTeX Font Info: Redeclaring font encoding T1 on input line 48. +)) +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/mathpazo.sty +Package: mathpazo 2005/04/12 PSNFSS-v9.2a Palatino w/ Pazo Math (D.Puga, WaS) +\symupright=\mathgroup4 +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks14 +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2016/01/03 v1.0q Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2016/01/03 v1.10 sin cos tan (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/graphics.cfg +File: graphics.cfg 2010/04/23 v1.9 graphics configuration of TeX Live +) +Package graphics Info: Driver file: pdftex.def on input line 95. + +(/usr/share/texlive/texmf-dist/tex/latex/pdftex-def/pdftex.def +File: pdftex.def 2011/05/27 v0.06d Graphics/color for pdfTeX + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty +Package: infwarerr 2010/04/08 v1.3 Providing info/warning/error messages (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +Package: ltxcmds 2011/11/09 v1.22 LaTeX kernel commands for general use (HO) +) +\Gread@gobject=\count87 +)) +\Gin@req@height=\dimen103 +\Gin@req@width=\dimen104 +) +(/usr/share/texlive/texmf-dist/tex/latex/caption/caption.sty +Package: caption 2016/02/21 v3.3-144 Customizing captions (AR) + +(/usr/share/texlive/texmf-dist/tex/latex/caption/caption3.sty +Package: caption3 2016/02/04 v1.7-139 caption3 kernel (AR) +Package caption3 Info: TeX engine: e-TeX on input line 67. +\captionmargin=\dimen105 +\captionmargin@=\dimen106 +\captionwidth=\dimen107 +\caption@tempdima=\dimen108 +\caption@indent=\dimen109 +\caption@parindent=\dimen110 +\caption@hangindent=\dimen111 +) +\c@ContinuedFloat=\count88 +) +(/usr/share/texlive/texmf-dist/tex/latex/adjustbox/adjustbox.sty +Package: adjustbox 2012/05/21 v1.0 Adjusting TeX boxes (trim, clip, ...) + +(/usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty +Package: xkeyval 2014/12/03 v2.7a package option processing (HA) + +(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex +(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkvutils.tex +\XKV@toks=\toks15 +\XKV@tempa@toks=\toks16 +) +\XKV@depth=\count89 +File: xkeyval.tex 2014/12/03 v2.7a key=value parser (HA) +)) +(/usr/share/texlive/texmf-dist/tex/latex/adjustbox/adjcalc.sty +Package: adjcalc 2012/05/16 v1.1 Provides advanced setlength with multiple back +-ends (calc, etex, pgfmath) +) +(/usr/share/texlive/texmf-dist/tex/latex/adjustbox/trimclip.sty +Package: trimclip 2012/05/16 v1.0 Trim and clip general TeX material + +(/usr/share/texlive/texmf-dist/tex/latex/collectbox/collectbox.sty +Package: collectbox 2012/05/17 v0.4b Collect macro arguments as boxes +\collectedbox=\box26 +) +\tc@llx=\dimen112 +\tc@lly=\dimen113 +\tc@urx=\dimen114 +\tc@ury=\dimen115 +Package trimclip Info: Using driver 'tc-pdftex.def'. + +(/usr/share/texlive/texmf-dist/tex/latex/adjustbox/tc-pdftex.def +File: tc-pdftex.def 2012/05/13 v1.0 Clipping driver for pdftex +)) +\adjbox@Width=\dimen116 +\adjbox@Height=\dimen117 +\adjbox@Depth=\dimen118 +\adjbox@Totalheight=\dimen119 + +(/usr/share/texlive/texmf-dist/tex/latex/ifoddpage/ifoddpage.sty +Package: ifoddpage 2011/09/13 v1.0 Conditionals for odd/even page detection +\c@checkoddpage=\count90 +) +(/usr/share/texlive/texmf-dist/tex/latex/varwidth/varwidth.sty +Package: varwidth 2009/03/30 ver 0.92; Variable-width minipages +\@vwid@box=\box27 +\sift@deathcycles=\count91 +\@vwid@loff=\dimen120 +\@vwid@roff=\dimen121 +)) +(/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2007/01/21 v2.11 LaTeX color extensions (UK) + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/color.cfg +File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive +) +Package xcolor Info: Driver file: pdftex.def on input line 225. +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1337. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1341. +Package xcolor Info: Model `RGB' extended on input line 1353. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1355. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1356. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1357. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1358. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1359. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1360. +) +(/usr/share/texlive/texmf-dist/tex/latex/tools/enumerate.sty +Package: enumerate 2015/07/23 v3.00 enumerate extensions (DPC) +\@enLab=\toks17 +) +(/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty +Package: geometry 2010/09/12 v5.6 Page Geometry + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty +Package: ifpdf 2011/01/30 v2.3 Provides the ifpdf switch (HO) +Package ifpdf Info: pdfTeX in PDF mode is detected. +) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty +Package: ifvtex 2010/03/01 v1.5 Detect VTeX and its facilities (HO) +Package ifvtex Info: VTeX not detected. +) +(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty +Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional +) +\Gm@cnth=\count92 +\Gm@cntv=\count93 +\c@Gm@tempcnt=\count94 +\Gm@bindingoffset=\dimen122 +\Gm@wd@mp=\dimen123 +\Gm@odd@mp=\dimen124 +\Gm@even@mp=\dimen125 +\Gm@layoutwidth=\dimen126 +\Gm@layoutheight=\dimen127 +\Gm@layouthoffset=\dimen128 +\Gm@layoutvoffset=\dimen129 +\Gm@dimlist=\toks18 +) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty +Package: amsmath 2016/03/03 v2.15a AMS math features +\@mathmargin=\skip43 + +For additional information on amsmath, use the `?' option. +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty +Package: amstext 2000/06/29 v2.01 AMS text + +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty +File: amsgen.sty 1999/11/30 v2.0 generic functions +\@emptytoks=\toks19 +\ex@=\dimen130 +)) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty +Package: amsbsy 1999/11/29 v1.2d Bold Symbols +\pmbraise@=\dimen131 +) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty +Package: amsopn 1999/12/14 v2.01 operator names +) +\inf@bad=\count95 +LaTeX Info: Redefining \frac on input line 199. +\uproot@=\count96 +\leftroot@=\count97 +LaTeX Info: Redefining \overline on input line 297. +\classnum@=\count98 +\DOTSCASE@=\count99 +LaTeX Info: Redefining \ldots on input line 394. +LaTeX Info: Redefining \dots on input line 397. +LaTeX Info: Redefining \cdots on input line 518. +\Mathstrutbox@=\box28 +\strutbox@=\box29 +\big@size=\dimen132 +LaTeX Font Info: Redeclaring font encoding OML on input line 630. +LaTeX Font Info: Redeclaring font encoding OMS on input line 631. +\macc@depth=\count100 +\c@MaxMatrixCols=\count101 +\dotsspace@=\muskip10 +\c@parentequation=\count102 +\dspbrk@lvl=\count103 +\tag@help=\toks20 +\row@=\count104 +\column@=\count105 +\maxfields@=\count106 +\andhelp@=\toks21 +\eqnshift@=\dimen133 +\alignsep@=\dimen134 +\tagshift@=\dimen135 +\tagwidth@=\dimen136 +\totwidth@=\dimen137 +\lineht@=\dimen138 +\@envbody=\toks22 +\multlinegap=\skip44 +\multlinetaggap=\skip45 +\mathdisplay@stack=\toks23 +LaTeX Info: Redefining \[ on input line 2735. +LaTeX Info: Redefining \] on input line 2736. +) +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty +Package: amssymb 2013/01/14 v3.01 AMS font symbols + +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty +Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support +\symAMSa=\mathgroup5 +\symAMSb=\mathgroup6 +LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' +(Font) U/euf/m/n --> U/euf/b/n on input line 106. +)) +(/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty +Package: textcomp 2005/09/27 v1.99g Standard LaTeX package +Package textcomp Info: Sub-encoding information: +(textcomp) 5 = only ISO-Adobe without \textcurrency +(textcomp) 4 = 5 + \texteuro +(textcomp) 3 = 4 + \textohm +(textcomp) 2 = 3 + \textestimated + \textcurrency +(textcomp) 1 = TS1 - \textcircled - \t +(textcomp) 0 = TS1 (full) +(textcomp) Font families with sub-encoding setting implement +(textcomp) only a restricted character set as indicated. +(textcomp) Family '?' is the default used for unknown fonts. +(textcomp) See the documentation for details. +Package textcomp Info: Setting ? sub-encoding to TS1/1 on input line 79. + +(/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.def +File: ts1enc.def 2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file +) +LaTeX Info: Redefining \oldstylenums on input line 334. +Package textcomp Info: Setting cmr sub-encoding to TS1/0 on input line 349. +Package textcomp Info: Setting cmss sub-encoding to TS1/0 on input line 350. +Package textcomp Info: Setting cmtt sub-encoding to TS1/0 on input line 351. +Package textcomp Info: Setting cmvtt sub-encoding to TS1/0 on input line 352. +Package textcomp Info: Setting cmbr sub-encoding to TS1/0 on input line 353. +Package textcomp Info: Setting cmtl sub-encoding to TS1/0 on input line 354. +Package textcomp Info: Setting ccr sub-encoding to TS1/0 on input line 355. +Package textcomp Info: Setting ptm sub-encoding to TS1/4 on input line 356. +Package textcomp Info: Setting pcr sub-encoding to TS1/4 on input line 357. +Package textcomp Info: Setting phv sub-encoding to TS1/4 on input line 358. +Package textcomp Info: Setting ppl sub-encoding to TS1/3 on input line 359. +Package textcomp Info: Setting pag sub-encoding to TS1/4 on input line 360. +Package textcomp Info: Setting pbk sub-encoding to TS1/4 on input line 361. +Package textcomp Info: Setting pnc sub-encoding to TS1/4 on input line 362. +Package textcomp Info: Setting pzc sub-encoding to TS1/4 on input line 363. +Package textcomp Info: Setting bch sub-encoding to TS1/4 on input line 364. +Package textcomp Info: Setting put sub-encoding to TS1/5 on input line 365. +Package textcomp Info: Setting uag sub-encoding to TS1/5 on input line 366. +Package textcomp Info: Setting ugq sub-encoding to TS1/5 on input line 367. +Package textcomp Info: Setting ul8 sub-encoding to TS1/4 on input line 368. +Package textcomp Info: Setting ul9 sub-encoding to TS1/4 on input line 369. +Package textcomp Info: Setting augie sub-encoding to TS1/5 on input line 370. +Package textcomp Info: Setting dayrom sub-encoding to TS1/3 on input line 371. +Package textcomp Info: Setting dayroms sub-encoding to TS1/3 on input line 372. + +Package textcomp Info: Setting pxr sub-encoding to TS1/0 on input line 373. +Package textcomp Info: Setting pxss sub-encoding to TS1/0 on input line 374. +Package textcomp Info: Setting pxtt sub-encoding to TS1/0 on input line 375. +Package textcomp Info: Setting txr sub-encoding to TS1/0 on input line 376. +Package textcomp Info: Setting txss sub-encoding to TS1/0 on input line 377. +Package textcomp Info: Setting txtt sub-encoding to TS1/0 on input line 378. +Package textcomp Info: Setting lmr sub-encoding to TS1/0 on input line 379. +Package textcomp Info: Setting lmdh sub-encoding to TS1/0 on input line 380. +Package textcomp Info: Setting lmss sub-encoding to TS1/0 on input line 381. +Package textcomp Info: Setting lmssq sub-encoding to TS1/0 on input line 382. +Package textcomp Info: Setting lmvtt sub-encoding to TS1/0 on input line 383. +Package textcomp Info: Setting lmtt sub-encoding to TS1/0 on input line 384. +Package textcomp Info: Setting qhv sub-encoding to TS1/0 on input line 385. +Package textcomp Info: Setting qag sub-encoding to TS1/0 on input line 386. +Package textcomp Info: Setting qbk sub-encoding to TS1/0 on input line 387. +Package textcomp Info: Setting qcr sub-encoding to TS1/0 on input line 388. +Package textcomp Info: Setting qcs sub-encoding to TS1/0 on input line 389. +Package textcomp Info: Setting qpl sub-encoding to TS1/0 on input line 390. +Package textcomp Info: Setting qtm sub-encoding to TS1/0 on input line 391. +Package textcomp Info: Setting qzc sub-encoding to TS1/0 on input line 392. +Package textcomp Info: Setting qhvc sub-encoding to TS1/0 on input line 393. +Package textcomp Info: Setting futs sub-encoding to TS1/4 on input line 394. +Package textcomp Info: Setting futx sub-encoding to TS1/4 on input line 395. +Package textcomp Info: Setting futj sub-encoding to TS1/4 on input line 396. +Package textcomp Info: Setting hlh sub-encoding to TS1/3 on input line 397. +Package textcomp Info: Setting hls sub-encoding to TS1/3 on input line 398. +Package textcomp Info: Setting hlst sub-encoding to TS1/3 on input line 399. +Package textcomp Info: Setting hlct sub-encoding to TS1/5 on input line 400. +Package textcomp Info: Setting hlx sub-encoding to TS1/5 on input line 401. +Package textcomp Info: Setting hlce sub-encoding to TS1/5 on input line 402. +Package textcomp Info: Setting hlcn sub-encoding to TS1/5 on input line 403. +Package textcomp Info: Setting hlcw sub-encoding to TS1/5 on input line 404. +Package textcomp Info: Setting hlcf sub-encoding to TS1/5 on input line 405. +Package textcomp Info: Setting pplx sub-encoding to TS1/3 on input line 406. +Package textcomp Info: Setting pplj sub-encoding to TS1/3 on input line 407. +Package textcomp Info: Setting ptmx sub-encoding to TS1/4 on input line 408. +Package textcomp Info: Setting ptmj sub-encoding to TS1/4 on input line 409. +) +(/usr/share/texlive/texmf-dist/tex/latex/upquote/upquote.sty +Package: upquote 2012/04/19 v1.3 upright-quote and grave-accent glyphs in verba +tim +) +(/usr/share/texlive/texmf-dist/tex/latex/eurosym/eurosym.sty +Package: eurosym 1998/08/06 v1.1 European currency symbol ``Euro'' +\@eurobox=\box30 +) +(/usr/share/texlive/texmf-dist/tex/latex/ucs/ucs.sty +Package: ucs 2013/05/11 v2.2 UCS: Unicode input support + +(/usr/share/texlive/texmf-dist/tex/latex/ucs/data/uni-global.def +File: uni-global.def 2013/05/13 UCS: Unicode global data +) +\uc@secondtry=\count107 +\uc@combtoks=\toks24 +\uc@combtoksb=\toks25 +\uc@temptokena=\toks26 +) +(/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty +Package: inputenc 2015/03/17 v1.2c Input encoding file +\inpenc@prehook=\toks27 +\inpenc@posthook=\toks28 + +(/usr/share/texlive/texmf-dist/tex/latex/ucs/utf8x.def +File: utf8x.def 2004/10/17 UCS: Input encoding UTF-8 +)) +(/usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +Package: fancyvrb 2008/02/07 + +Style option: `fancyvrb' v2.7a, with DG/SPQR fixes, and firstline=lastline fix +<2008/02/07> (tvz) +\FV@CodeLineNo=\count108 +\FV@InFile=\read1 +\FV@TabBox=\box31 +\c@FancyVerbLine=\count109 +\FV@StepNumber=\count110 +\FV@OutFile=\write3 +) +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grffile.sty +Package: grffile 2012/04/05 v1.16 Extended file name support for graphics (HO) + +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty +Package: kvoptions 2011/06/30 v3.11 Key value format for package options (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty +Package: kvsetkeys 2012/04/25 v1.16 Key value parser (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty +Package: etexcmds 2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty +Package: ifluatex 2010/03/01 v1.3 Provides the ifluatex switch (HO) +Package ifluatex Info: LuaTeX not detected. +) +Package etexcmds Info: Could not find \expanded. +(etexcmds) That can mean that you are not using pdfTeX 1.50 or +(etexcmds) that some package has redefined \expanded. +(etexcmds) In the latter case, load this package earlier. +))) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty +Package: pdftexcmds 2011/11/29 v0.20 Utility functions of pdfTeX for LuaTeX (HO +) +Package pdftexcmds Info: LuaTeX not detected. +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +) +Package grffile Info: Option `multidot' is set to `true'. +Package grffile Info: Option `extendedchars' is set to `false'. +Package grffile Info: Option `space' is set to `true'. +Package grffile Info: \Gin@ii of package `graphicx' fixed on input line 486. +) +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +Package: hyperref 2012/11/06 v6.83m Hypertext links for LaTeX + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +Package: hobsub-hyperref 2012/05/28 v1.13 Bundle oberdiek, subset hyperref (HO) + + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty +Package: hobsub-generic 2012/05/28 v1.13 Bundle oberdiek, subset generic (HO) +Package: hobsub 2012/05/28 v1.13 Construct package bundles (HO) +Package hobsub Info: Skipping package `infwarerr' (already loaded). +Package hobsub Info: Skipping package `ltxcmds' (already loaded). +Package hobsub Info: Skipping package `ifluatex' (already loaded). +Package hobsub Info: Skipping package `ifvtex' (already loaded). +Package: intcalc 2007/09/27 v1.1 Expandable calculations with integers (HO) +Package hobsub Info: Skipping package `ifpdf' (already loaded). +Package hobsub Info: Skipping package `etexcmds' (already loaded). +Package hobsub Info: Skipping package `kvsetkeys' (already loaded). +Package: kvdefinekeys 2011/04/07 v1.3 Define keys (HO) +Package hobsub Info: Skipping package `pdftexcmds' (already loaded). +Package: pdfescape 2011/11/25 v1.13 Implements pdfTeX's escape features (HO) +Package: bigintcalc 2012/04/08 v1.3 Expandable calculations on big integers (HO +) +Package: bitset 2011/01/30 v1.1 Handle bit-vector datatype (HO) +Package: uniquecounter 2011/01/30 v1.2 Provide unlimited unique counter (HO) +) +Package hobsub Info: Skipping package `hobsub' (already loaded). +Package: letltxmacro 2010/09/02 v1.4 Let assignment for LaTeX macros (HO) +Package: hopatch 2012/05/28 v1.2 Wrapper for package hooks (HO) +Package: xcolor-patch 2011/01/30 xcolor patch +Package: atveryend 2011/06/30 v1.8 Hooks at the very end of document (HO) +Package atveryend Info: \enddocument detected (standard20110627). +Package: atbegshi 2011/10/05 v1.16 At begin shipout hook (HO) +Package: refcount 2011/10/16 v3.4 Data extraction from label references (HO) +Package: hycolor 2011/01/30 v1.7 Color options for hyperref/bookmark (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty +Package: auxhook 2011/03/04 v1.3 Hooks for auxiliary files (HO) +) +\@linkdim=\dimen139 +\Hy@linkcounter=\count111 +\Hy@pagecounter=\count112 + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +File: pd1enc.def 2012/11/06 v6.83m Hyperref: PDFDocEncoding definition (HO) +) +\Hy@SavedSpaceFactor=\count113 + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg +File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive +) +Package hyperref Info: Hyper figures OFF on input line 4443. +Package hyperref Info: Link nesting OFF on input line 4448. +Package hyperref Info: Hyper index ON on input line 4451. +Package hyperref Info: Plain pages OFF on input line 4458. +Package hyperref Info: Backreferencing OFF on input line 4463. +Package hyperref Info: Implicit mode ON; LaTeX internals redefined. +Package hyperref Info: Bookmarks ON on input line 4688. +\c@Hy@tempcnt=\count114 + +(/usr/share/texlive/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip11 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +LaTeX Info: Redefining \url on input line 5041. +\XeTeXLinkMargin=\dimen140 +\Fld@menulength=\count115 +\Field@Width=\dimen141 +\Fld@charsize=\dimen142 +Package hyperref Info: Hyper figures OFF on input line 6295. +Package hyperref Info: Link nesting OFF on input line 6300. +Package hyperref Info: Hyper index ON on input line 6303. +Package hyperref Info: backreferencing OFF on input line 6310. +Package hyperref Info: Link coloring OFF on input line 6315. +Package hyperref Info: Link coloring with OCG OFF on input line 6320. +Package hyperref Info: PDF/A mode OFF on input line 6325. +LaTeX Info: Redefining \ref on input line 6365. +LaTeX Info: Redefining \pageref on input line 6369. +\Hy@abspage=\count116 +\c@Item=\count117 +\c@Hfootnote=\count118 +) + +Package hyperref Message: Driver (autodetected): hpdftex. + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def +File: hpdftex.def 2012/11/06 v6.83m Hyperref driver for pdfTeX +\Fld@listcount=\count119 +\c@bookmark@seq@number=\count120 + +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty +Package: rerunfilecheck 2011/04/15 v1.7 Rerun checks for auxiliary files (HO) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 +82. +) +\Hy@SectionHShift=\skip46 +) +(/usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty +Package: longtable 2014/10/28 v4.11 Multi-page Table package (DPC) +\LTleft=\skip47 +\LTright=\skip48 +\LTpre=\skip49 +\LTpost=\skip50 +\LTchunksize=\count121 +\LTcapwidth=\dimen143 +\LT@head=\box32 +\LT@firsthead=\box33 +\LT@foot=\box34 +\LT@lastfoot=\box35 +\LT@cols=\count122 +\LT@rows=\count123 +\c@LT@tables=\count124 +\c@LT@chunks=\count125 +\LT@p@ftn=\toks29 +) +(/usr/share/texlive/texmf-dist/tex/latex/booktabs/booktabs.sty +Package: booktabs 2005/04/14 v1.61803 publication quality tables +\heavyrulewidth=\dimen144 +\lightrulewidth=\dimen145 +\cmidrulewidth=\dimen146 +\belowrulesep=\dimen147 +\belowbottomsep=\dimen148 +\aboverulesep=\dimen149 +\abovetopsep=\dimen150 +\cmidrulesep=\dimen151 +\cmidrulekern=\dimen152 +\defaultaddspace=\dimen153 +\@cmidla=\count126 +\@cmidlb=\count127 +\@aboverulesep=\dimen154 +\@belowrulesep=\dimen155 +\@thisruleclass=\count128 +\@lastruleclass=\count129 +\@thisrulewidth=\dimen156 +) +(/usr/share/texlive/texmf-dist/tex/latex/enumitem/enumitem.sty +Package: enumitem 2011/09/28 v3.5.2 Customized lists +\labelindent=\skip51 +\enit@outerparindent=\dimen157 +\enit@toks=\toks30 +\enit@inbox=\box36 +\enitdp@description=\count130 +) +(/usr/share/texlive/texmf-dist/tex/generic/ulem/ulem.sty +\UL@box=\box37 +\UL@hyphenbox=\box38 +\UL@skip=\skip52 +\UL@hook=\toks31 +\UL@height=\dimen158 +\UL@pe=\count131 +\UL@pixel=\dimen159 +\ULC@box=\box39 +Package: ulem 2012/05/18 +\ULdepth=\dimen160 +) +Package hyperref Info: Option `breaklinks' set `true' on input line 264. +Package hyperref Info: Option `colorlinks' set `true' on input line 264. + (./lecture_12.aux) +\openout1 = `lecture_12.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 271. +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 271. +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 271. +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 271. +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 271. +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 271. +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 271. +LaTeX Font Info: Try loading font information for TS1+cmr on input line 271. + + +(/usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd +File: ts1cmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions +) +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 271. +LaTeX Font Info: ... okay on input line 271. +LaTeX Font Info: Try loading font information for T1+ppl on input line 271. + +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ppl.fd +File: t1ppl.fd 2001/06/04 font definitions for T1/ppl. +) +(/usr/share/texlive/texmf-dist/tex/context/base/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count132 +\scratchdimen=\dimen161 +\scratchbox=\box40 +\nofMPsegments=\count133 +\nofMParguments=\count134 +\everyMPshowfont=\toks32 +\MPscratchCnt=\count135 +\MPscratchDim=\dimen162 +\MPnumerator=\count136 +\makeMPintoPDFobject=\count137 +\everyMPtoPDFconversion=\toks33 +) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty +Package: epstopdf-base 2010/02/09 v2.5 Base part for package epstopdf + +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty +Package: grfext 2010/08/19 v1.1 Manage graphics extensions (HO) +) +Package grfext Info: Graphics extension search list: +(grfext) [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE +G,.JBIG2,.JB2,.eps] +(grfext) \AppendGraphicsExtensions on input line 452. + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +Package caption Info: Begin \AtBeginDocument code. +Package caption Info: hyperref package is loaded. +Package caption Info: longtable package is loaded. + +(/usr/share/texlive/texmf-dist/tex/latex/caption/ltcaption.sty +Package: ltcaption 2013/06/09 v1.4-94 longtable captions (AR) +) +Package caption Info: End \AtBeginDocument code. + +*geometry* driver: auto-detecting +*geometry* detected driver: pdftex +*geometry* verbose mode - [ preamble ] result: +* driver: pdftex +* paper: +* layout: +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* modes: +* h-part:(L,W,R)=(72.26999pt, 469.75502pt, 72.26999pt) +* v-part:(T,H,B)=(72.26999pt, 650.43001pt, 72.26999pt) +* \paperwidth=614.295pt +* \paperheight=794.96999pt +* \textwidth=469.75502pt +* \textheight=650.43001pt +* \oddsidemargin=0.0pt +* \evensidemargin=0.0pt +* \topmargin=-37.0pt +* \headheight=12.0pt +* \headsep=25.0pt +* \topskip=11.0pt +* \footskip=30.0pt +* \marginparwidth=59.0pt +* \marginparsep=10.0pt +* \columnsep=10.0pt +* \skip\footins=10.0pt plus 4.0pt minus 2.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumnfalse +* \@twosidefalse +* \@mparswitchfalse +* \@reversemarginfalse +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +(/usr/share/texlive/texmf-dist/tex/latex/ucs/ucsencs.def +File: ucsencs.def 2011/01/21 Fixes to fontencodings LGR, T3 +) +\AtBeginShipoutBox=\box41 +Package hyperref Info: Link coloring ON on input line 271. + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty +Package: nameref 2012/10/27 v2.43 Cross-referencing by name of section + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty +Package: gettitlestring 2010/12/03 v1.4 Cleanup title references (HO) +) +\c@section@level=\count138 +) +LaTeX Info: Redefining \ref on input line 271. +LaTeX Info: Redefining \pageref on input line 271. +LaTeX Info: Redefining \nameref on input line 271. + +(./lecture_12.out) (./lecture_12.out) +\@outlinefile=\write4 +\openout4 = `lecture_12.out'. + +LaTeX Font Info: Try loading font information for OT1+ppl on input line 275. + + +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1ppl.fd +File: ot1ppl.fd 2001/06/04 font definitions for OT1/ppl. +) +LaTeX Font Info: Try loading font information for OML+zplm on input line 275 +. + +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/omlzplm.fd +File: omlzplm.fd 2002/09/08 Fontinst v1.914 font definitions for OML/zplm. +) +LaTeX Font Info: Try loading font information for OMS+zplm on input line 275 +. + +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/omszplm.fd +File: omszplm.fd 2002/09/08 Fontinst v1.914 font definitions for OMS/zplm. +) +LaTeX Font Info: Try loading font information for OMX+zplm on input line 275 +. + +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/omxzplm.fd +File: omxzplm.fd 2002/09/08 Fontinst v1.914 font definitions for OMX/zplm. +) +LaTeX Font Info: Try loading font information for OT1+zplm on input line 275 +. + +(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1zplm.fd +File: ot1zplm.fd 2002/09/08 Fontinst v1.914 font definitions for OT1/zplm. +) +LaTeX Font Info: Font shape `U/msa/m/n' will be +(Font) scaled to size 12.50409pt on input line 275. +LaTeX Font Info: Font shape `U/msa/m/n' will be +(Font) scaled to size 9.37807pt on input line 275. +LaTeX Font Info: Font shape `U/msa/m/n' will be +(Font) scaled to size 7.29405pt on input line 275. +LaTeX Font Info: Font shape `U/msb/m/n' will be +(Font) scaled to size 12.50409pt on input line 275. +LaTeX Font Info: Font shape `U/msb/m/n' will be +(Font) scaled to size 9.37807pt on input line 275. +LaTeX Font Info: Font shape `U/msb/m/n' will be +(Font) scaled to size 7.29405pt on input line 275. + + +LaTeX Warning: No \author given. + +LaTeX Font Info: Try loading font information for T1+cmtt on input line 279. + +(/usr/share/texlive/texmf-dist/tex/latex/base/t1cmtt.fd +File: t1cmtt.fd 2014/09/29 v2.5h Standard LaTeX font definitions +) [1 + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] +LaTeX Font Info: Try loading font information for TS1+cmtt on input line 331 +. + +(/usr/share/texlive/texmf-dist/tex/latex/base/ts1cmtt.fd +File: ts1cmtt.fd 2014/09/29 v2.5h Standard LaTeX font definitions +) +LaTeX Font Info: Font shape `T1/ppl/bx/n' in size <12> not available +(Font) Font shape `T1/ppl/b/n' tried instead on input line 359. + + +File: det_L.png Graphic file (type png) + +Package pdftex.def Info: det_L.png used on input line 363. +(pdftex.def) Requested size: 375.80544pt x 183.64162pt. + + +File: chol_pre.png Graphic file (type png) + +Package pdftex.def Info: chol_pre.png used on input line 369. +(pdftex.def) Requested size: 375.80544pt x 183.9047pt. + [2 <./det_L.png>] +LaTeX Font Info: Font shape `T1/ppl/bx/n' in size <14.4> not available +(Font) Font shape `T1/ppl/b/n' tried instead on input line 400. +LaTeX Font Info: Font shape `U/msa/m/n' will be +(Font) scaled to size 11.40997pt on input line 404. +LaTeX Font Info: Font shape `U/msa/m/n' will be +(Font) scaled to size 8.33606pt on input line 404. +LaTeX Font Info: Font shape `U/msa/m/n' will be +(Font) scaled to size 6.25204pt on input line 404. +LaTeX Font Info: Font shape `U/msb/m/n' will be +(Font) scaled to size 11.40997pt on input line 404. +LaTeX Font Info: Font shape `U/msb/m/n' will be +(Font) scaled to size 8.33606pt on input line 404. +LaTeX Font Info: Font shape `U/msb/m/n' will be +(Font) scaled to size 6.25204pt on input line 404. + [3 <./chol_pre.png>] [4] +LaTeX Font Info: Font shape `T1/ppl/bx/n' in size <10.95> not available +(Font) Font shape `T1/ppl/b/n' tried instead on input line 503. + [5] [6] [7] [8] +LaTeX Font Info: Font shape `T1/cmtt/bx/n' in size <10.95> not available +(Font) Font shape `T1/cmtt/m/n' tried instead on input line 746. + + +File: lecture_12_files/lecture_12_24_0.pdf Graphic file (type pdf) + + +Package pdftex.def Info: lecture_12_files/lecture_12_24_0.pdf used on input lin +e 765. +(pdftex.def) Requested size: 449.6789pt x 337.25917pt. + [9] +Underfull \hbox (badness 10000) in paragraph at lines 767--768 + + [] + +LaTeX Font Info: Font shape `T1/ppl/bx/it' in size <10.95> not available +(Font) Font shape `T1/ppl/b/it' tried instead on input line 773. +[10 <./lecture_12_files/lecture_12_24_0.pdf>] [11] [12] +<../lecture_09/mass_springs.png, id=118, 112.42pt x 190.7125pt> +File: ../lecture_09/mass_springs.png Graphic file (type png) + + +Package pdftex.def Info: ../lecture_09/mass_springs.png used on input line 923. + +(pdftex.def) Requested size: 89.93611pt x 152.576pt. + [13 <../lecture_09/mass_springs.png>] +Package atveryend Info: Empty hook `BeforeClearDocument' on input line 1015. + +[14] +Package atveryend Info: Empty hook `AfterLastShipout' on input line 1015. + (./lecture_12.aux) +Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 1015. +Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 1015. + +Package rerunfilecheck Info: File `lecture_12.out' has not changed. +(rerunfilecheck) Checksum: 2BDB89EC075D3A42B038A5DAC39843C7;535. +Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 1015. + ) +Here is how much of TeX's memory you used: + 10955 strings out of 493029 + 163811 string characters out of 6136234 + 270140 words of memory out of 5000000 + 14229 multiletter control sequences out of 15000+600000 + 37652 words of font info for 95 fonts, out of 8000000 for 9000 + 1141 hyphenation exceptions out of 8191 + 36i,9n,77p,512b,465s stack positions out of 5000i,500n,10000p,200000b,80000s +{/usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc}{/usr/share/texmf/ +fonts/enc/dvips/cm-super/cm-super-ts1.enc}{/usr/share/texmf/fonts/enc/dvips/cm- +super/cm-super-t1.enc} +Output written on lecture_12.pdf (14 pages, 232410 bytes). +PDF statistics: + 177 PDF objects out of 1000 (max. 8388607) + 140 compressed objects within 2 object streams + 34 named destinations out of 1000 (max. 500000) + 77 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/lecture_12/lecture_12.md b/lecture_12/lecture_12.md new file mode 100644 index 0000000..82f9bea --- /dev/null +++ b/lecture_12/lecture_12.md @@ -0,0 +1,772 @@ + + +```octave +%plot --format svg +``` + + +```octave +setdefaults +``` + + +```octave +A=rand(4,4) + +[L,U,P]=lu(A) + +det(L) +``` + + A = + + 0.447394 0.357071 0.720915 0.499926 + 0.648313 0.323276 0.521677 0.288345 + 0.084982 0.581513 0.466420 0.142342 + 0.576580 0.658089 0.916987 0.923165 + + L = + + 1.00000 0.00000 0.00000 0.00000 + 0.13108 1.00000 0.00000 0.00000 + 0.69009 0.24851 1.00000 0.00000 + 0.88935 0.68736 0.68488 1.00000 + + U = + + 0.64831 0.32328 0.52168 0.28834 + 0.00000 0.53914 0.39804 0.10455 + 0.00000 0.00000 0.26199 0.27496 + 0.00000 0.00000 0.00000 0.40655 + + P = + + Permutation Matrix + + 0 1 0 0 + 0 0 1 0 + 1 0 0 0 + 0 0 0 1 + + ans = 1 + + + +```octave +A=rand(4,100)'; +A=A'*A; +size(A) +min(min(A)) +max(max(A)) +cond(A) +C=chol(A) +``` + + ans = + + 4 4 + + ans = 23.586 + ans = 35.826 + ans = 14.869 + C = + + 5.98549 4.28555 4.35707 4.31359 + 0.00000 3.63950 1.35005 1.45342 + 0.00000 0.00000 3.62851 1.50580 + 0.00000 0.00000 0.00000 3.21911 + + + +## My question from last class + +![q1](det_L.png) + +![q2](chol_pre.png) + + +## Your questions from last class + +1. Will the exam be more theoretical or problem based? + +2. Writing code is difficult + +3. What format can we expect for the midterm? + +2. Could we go over some example questions for the exam? + +3. Will the use of GitHub be tested on the Midterm exam? Or is it more focused on linear algebra techniques/what was covered in the lectures? + +4. This is not my strong suit, getting a bit overwhelmed with matrix multiplication. + +5. I forgot how much I learned in linear algebra. + +6. What's the most exciting project you've ever worked on with Matlab/Octave? + +# Matrix Inverse and Condition + + +Considering the same solution set: + +$y=Ax$ + +If we know that $A^{-1}A=I$, then + +$A^{-1}y=A^{-1}Ax=x$ + +so + +$x=A^{-1}y$ + +Where, $A^{-1}$ is the inverse of matrix $A$. + +$2x_{1}+x_{2}=1$ + +$x_{1}+3x_{2}=1$ + +$Ax=y$ + +$\left[ \begin{array}{cc} +2 & 1 \\ +1 & 3 \end{array} \right] +\left[\begin{array}{c} +x_{1} \\ +x_{2} \end{array}\right]= +\left[\begin{array}{c} +1 \\ +1\end{array}\right]$ + +$A^{-1}=\frac{1}{2*3-1*1}\left[ \begin{array}{cc} +3 & -1 \\ +-1 & 2 \end{array} \right]= +\left[ \begin{array}{cc} +3/5 & -1/5 \\ +-1/5 & 2/5 \end{array} \right]$ + + + +```octave +A=[2,1;1,3] +invA=1/5*[3,-1;-1,2] + +A*invA +invA*A +``` + + A = + + 2 1 + 1 3 + + invA = + + 0.60000 -0.20000 + -0.20000 0.40000 + + ans = + + 1.00000 0.00000 + 0.00000 1.00000 + + ans = + + 1.00000 0.00000 + 0.00000 1.00000 + + + +How did we know the inverse of A? + +for 2$\times$2 matrices, it is always: + +$A=\left[ \begin{array}{cc} +A_{11} & A_{12} \\ +A_{21} & A_{22} \end{array} \right]$ + +$A^{-1}=\frac{1}{det(A)}\left[ \begin{array}{cc} +A_{22} & -A_{12} \\ +-A_{21} & A_{11} \end{array} \right]$ + +$AA^{-1}=\frac{1}{A_{11}A_{22}-A_{21}A_{12}}\left[ \begin{array}{cc} +A_{11}A_{22}-A_{21}A_{12} & -A_{11}A_{12}+A_{12}A_{11} \\ +A_{21}A_{22}-A_{22}A_{21} & -A_{21}A_{12}+A_{22}A_{11} \end{array} \right] +=\left[ \begin{array}{cc} +1 & 0 \\ +0 & 1 \end{array} \right]$ + +What about bigger matrices? + +We can use the LU-decomposition + +$A=LU$ + +$A^{-1}=(LU)^{-1}=U^{-1}L^{-1}$ + +if we divide $A^{-1}$ into n-column vectors, $a_{n}$, then + +$Aa_{1}=\left[\begin{array}{c} +1 \\ +0 \\ +\vdots \\ +0 \end{array} \right]$ +$Aa_{2}=\left[\begin{array}{c} +0 \\ +1 \\ +\vdots \\ +0 \end{array} \right]$ +$Aa_{n}=\left[\begin{array}{c} +0 \\ +0 \\ +\vdots \\ +1 \end{array} \right]$ + + +Which we can solve for each $a_{n}$ with LU-decomposition, knowing the lower and upper triangular decompositions, then + +$A^{-1}=\left[ \begin{array}{cccc} +| & | & & | \\ +a_{1} & a_{2} & \cdots & a_{n} \\ +| & | & & | \end{array} \right]$ + + +$Ld_{1}=\left[\begin{array}{c} +1 \\ +0 \\ +\vdots \\ +0 \end{array} \right]$ +$;~Ua_{1}=d_{1}$ + +$Ld_{2}=\left[\begin{array}{c} +0 \\ +1 \\ +\vdots \\ +0 \end{array} \right]$ +$;~Ua_{2}=d_{2}$ + +$Ld_{n}=\left[\begin{array}{c} +0 \\ +1 \\ +\vdots \\ +n \end{array} \right]$ +$;~Ua_{n}=d_{n}$ + +Consider the following matrix: + +$A=\left[ \begin{array}{ccc} +2 & -1 & 0\\ +-1 & 2 & -1\\ +0 & -1 & 1 \end{array} \right]$ + + +#### Note on solving for $A^{-1}$ column 1 + +$Aa_1=I(:,1)$ + +$LUa_1=I(:,1)$ + +$(LUa_1-I(:,1))=0$ + +$L(Ua_1-d_1)=0$ + +$I(:,1)=Ld_1$ + + +```octave +A=[2,-1,0;-1,2,-1;0,-1,1] +U=A; +L=eye(3,3); +U(2,:)=U(2,:)-U(2,1)/U(1,1)*U(1,:) +L(2,1)=A(2,1)/A(1,1) +``` + + A = + + 2 -1 0 + -1 2 -1 + 0 -1 1 + + U = + + 2.00000 -1.00000 0.00000 + 0.00000 1.50000 -1.00000 + 0.00000 -1.00000 1.00000 + + L = + + 1.00000 0.00000 0.00000 + -0.50000 1.00000 0.00000 + 0.00000 0.00000 1.00000 + + + + +```octave +L(3,2)=U(3,2)/U(2,2) +U(3,:)=U(3,:)-U(3,2)/U(2,2)*U(2,:) + +``` + + L = + + 1.00000 0.00000 0.00000 + -0.50000 1.00000 0.00000 + 0.00000 -0.66667 1.00000 + + U = + + 2.00000 -1.00000 0.00000 + 0.00000 1.50000 -1.00000 + 0.00000 0.00000 0.33333 + + + +Now solve for $d_1$ then $a_1$, $d_2$ then $a_2$, and $d_3$ then $a_{3}$ + +$Ld_{1}=\left[\begin{array}{c} +1 \\ +0 \\ +\vdots \\ +0 \end{array} \right]= +\left[\begin{array}{ccc} +1 & 0 & 0 \\ +-1/2 & 1 & 0 \\ +0 & -2/3 & 1 \end{array} \right]\left[\begin{array}{c} +d1(1) \\ +d1(2) \\ +d1(3)\end{array} \right]=\left[\begin{array}{c} +1 \\ +0 \\ +0 \end{array} \right] +;~Ua_{1}=d_{1}$ + + +```octave +d1=zeros(3,1); +d1(1)=1; +d1(2)=0-L(2,1)*d1(1); +d1(3)=0-L(3,1)*d1(1)-L(3,2)*d1(2) +``` + + d1 = + + 1.00000 + 0.50000 + 0.33333 + + + + +```octave +a1=zeros(3,1); +a1(3)=d1(3)/U(3,3); +a1(2)=1/U(2,2)*(d1(2)-U(2,3)*a1(3)); +a1(1)=1/U(1,1)*(d1(1)-U(1,2)*a1(2)-U(1,3)*a1(3)) +``` + + a1 = + + 1.00000 + 1.00000 + 1.00000 + + + + +```octave +d2=zeros(3,1); +d2(1)=0; +d2(2)=1-L(2,1)*d2(1); +d2(3)=0-L(3,1)*d2(1)-L(3,2)*d2(2) +``` + + d2 = + + 0.00000 + 1.00000 + 0.66667 + + + + +```octave +a2=zeros(3,1); +a2(3)=d2(3)/U(3,3); +a2(2)=1/U(2,2)*(d2(2)-U(2,3)*a2(3)); +a2(1)=1/U(1,1)*(d2(1)-U(1,2)*a2(2)-U(1,3)*a2(3)) +``` + + a2 = + + 1.0000 + 2.0000 + 2.0000 + + + + +```octave +d3=zeros(3,1); +d3(1)=0; +d3(2)=0-L(2,1)*d3(1); +d3(3)=1-L(3,1)*d3(1)-L(3,2)*d3(2) +``` + + d3 = + + 0 + 0 + 1 + + + + +```octave +a3=zeros(3,1); +a3(3)=d3(3)/U(3,3); +a3(2)=1/U(2,2)*(d3(2)-U(2,3)*a3(3)); +a3(1)=1/U(1,1)*(d3(1)-U(1,2)*a3(2)-U(1,3)*a3(3)) +``` + + a3 = + + 1.00000 + 2.00000 + 3.00000 + + + +Final solution for $A^{-1}$ is $[a_{1}~a_{2}~a_{3}]$ + + +```octave +invA=[a1,a2,a3] +I_app=A*invA +I_app(2,3) +eps + +2^-8 +``` + + invA = + + 1.00000 1.00000 1.00000 + 1.00000 2.00000 2.00000 + 1.00000 2.00000 3.00000 + + I_app = + + 1.00000 0.00000 0.00000 + 0.00000 1.00000 -0.00000 + -0.00000 -0.00000 1.00000 + + ans = -4.4409e-16 + ans = 2.2204e-16 + ans = 0.0039062 + + +Now the solution of $x$ to $Ax=y$ is $x=A^{-1}y$ + + +```octave +y=[1;2;3] +x=invA*y +xbs=A\y +x-xbs +eps +``` + + y = + + 1 + 2 + 3 + + x = + + 6.0000 + 11.0000 + 14.0000 + + xbs = + + 6.0000 + 11.0000 + 14.0000 + + ans = + + -3.5527e-15 + -8.8818e-15 + -1.0658e-14 + + ans = 2.2204e-16 + + + +```octave +N=100; +n=[1:N]; +t_inv=zeros(N,1); +t_bs=zeros(N,1); +t_mult=zeros(N,1); +for i=1:N + A=rand(i,i); + tic + invA=inv(A); + t_inv(i)=toc; + b=rand(i,1); + tic; + x=A\b; + t_bs(i)=toc; + tic; + x=invA*b; + t_mult(i)=toc; +end +plot(n,t_inv,n,t_bs,n,t_mult) +axis([0 100 0 0.002]) +legend('inversion','backslash','multiplication','Location','NorthWest') +``` + + +![svg](lecture_12_files/lecture_12_24_0.svg) + + +## Condition of a matrix +### *just checked in to see what condition my condition was in* +### Matrix norms + +The Euclidean norm of a vector is measure of the magnitude (in 3D this would be: $|x|=\sqrt{x_{1}^{2}+x_{2}^{2}+x_{3}^{2}}$) in general the equation is: + +$||x||_{e}=\sqrt{\sum_{i=1}^{n}x_{i}^{2}}$ + +For a matrix, A, the same norm is called the Frobenius norm: + +$||A||_{f}=\sqrt{\sum_{i=1}^{n}\sum_{i=1}^{m}A_{i,j}^{2}}$ + +In general we can calculate any $p$-norm where + +$||A||_{p}=\sqrt{\sum_{i=1}^{n}\sum_{i=1}^{m}A_{i,j}^{p}}$ + +so the p=1, 1-norm is + +$||A||_{1}=\sqrt{\sum_{i=1}^{n}\sum_{i=1}^{m}A_{i,j}^{1}}=\sum_{i=1}^{n}\sum_{i=1}^{m}|A_{i,j}|$ + +$||A||_{\infty}=\sqrt{\sum_{i=1}^{n}\sum_{i=1}^{m}A_{i,j}^{\infty}}=\max_{1\le i \le n}\sum_{j=1}^{m}|A_{i,j}|$ + +### Condition of Matrix + +The matrix condition is the product of + +$Cond(A) = ||A||\cdot||A^{-1}||$ + +So each norm will have a different condition number, but the limit is $Cond(A)\ge 1$ + +An estimate of the rounding error is based on the condition of A: + +$\frac{||\Delta x||}{x} \le Cond(A) \frac{||\Delta A||}{||A||}$ + +So if the coefficients of A have accuracy to $10^{-t} + +and the condition of A, $Cond(A)=10^{c}$ + +then the solution for x can have rounding errors up to $10^{c-t}$ + + + +```octave +A=[1,1/2,1/3;1/2,1/3,1/4;1/3,1/4,1/5] +[L,U]=LU_naive(A) +``` + + A = + + 1.00000 0.50000 0.33333 + 0.50000 0.33333 0.25000 + 0.33333 0.25000 0.20000 + + L = + + 1.00000 0.00000 0.00000 + 0.50000 1.00000 0.00000 + 0.33333 1.00000 1.00000 + + U = + + 1.00000 0.50000 0.33333 + 0.00000 0.08333 0.08333 + 0.00000 -0.00000 0.00556 + + + +Then, $A^{-1}=(LU)^{-1}=U^{-1}L^{-1}$ + +$Ld_{1}=\left[\begin{array}{c} +1 \\ +0 \\ +0 \end{array}\right]$, $Ux_{1}=d_{1}$ ... + + +```octave +invA=zeros(3,3); +d1=L\[1;0;0]; +d2=L\[0;1;0]; +d3=L\[0;0;1]; +invA(:,1)=U\d1; +invA(:,2)=U\d2; +invA(:,3)=U\d3 +invA*A +``` + + invA = + + 9.0000 -36.0000 30.0000 + -36.0000 192.0000 -180.0000 + 30.0000 -180.0000 180.0000 + + ans = + + 1.0000e+00 3.5527e-15 2.9976e-15 + -1.3249e-14 1.0000e+00 -9.1038e-15 + 8.5117e-15 7.1054e-15 1.0000e+00 + + + +Find the condition of A, $cond(A)$ + + +```octave +% Frobenius norm +normf_A = sqrt(sum(sum(A.^2))) +normf_invA = sqrt(sum(sum(invA.^2))) + +cond_f_A = normf_A*normf_invA + +norm(A,'fro') + +% p=1, column sum norm +norm1_A = max(sum(A,2)) +norm1_invA = max(sum(invA,2)) +norm(A,1) + +cond_1_A=norm1_A*norm1_invA + +% p=inf, row sum norm +norminf_A = max(sum(A,1)) +norminf_invA = max(sum(invA,1)) +norm(A,inf) + +cond_inf_A=norminf_A*norminf_invA + +``` + + normf_A = 1.4136 + normf_invA = 372.21 + cond_f_A = 526.16 + ans = 1.4136 + norm1_A = 1.8333 + norm1_invA = 30.000 + ans = 1.8333 + cond_1_A = 55.000 + norminf_A = 1.8333 + norminf_invA = 30.000 + ans = 1.8333 + cond_inf_A = 55.000 + + +Consider the problem again from the intro to Linear Algebra, 4 masses are connected in series to 4 springs with spring constants $K_{i}$. What does a high condition number mean for this problem? + +![Springs-masses](../lecture_09/mass_springs.png) + +The masses haves the following amounts, 1, 2, 3, and 4 kg for masses 1-4. Using a FBD for each mass: + +$m_{1}g+k_{2}(x_{2}-x_{1})-k_{1}x_{1}=0$ + +$m_{2}g+k_{3}(x_{3}-x_{2})-k_{2}(x_{2}-x_{1})=0$ + +$m_{3}g+k_{4}(x_{4}-x_{3})-k_{3}(x_{3}-x_{2})=0$ + +$m_{4}g-k_{4}(x_{4}-x_{3})=0$ + +in matrix form: + +$\left[ \begin{array}{cccc} +k_{1}+k_{2} & -k_{2} & 0 & 0 \\ +-k_{2} & k_{2}+k_{3} & -k_{3} & 0 \\ +0 & -k_{3} & k_{3}+k_{4} & -k_{4} \\ +0 & 0 & -k_{4} & k_{4} \end{array} \right] +\left[ \begin{array}{c} +x_{1} \\ +x_{2} \\ +x_{3} \\ +x_{4} \end{array} \right]= +\left[ \begin{array}{c} +m_{1}g \\ +m_{2}g \\ +m_{3}g \\ +m_{4}g \end{array} \right]$ + + +```octave +k1=10; % N/m +k2=100000; +k3=10; +k4=1; +m1=1; % kg +m2=2; +m3=3; +m4=4; +g=9.81; % m/s^2 +K=[k1+k2 -k2 0 0; -k2 k2+k3 -k3 0; 0 -k3 k3+k4 -k4; 0 0 -k4 k4] +y=[m1*g;m2*g;m3*g;m4*g] +``` + + K = + + 100010 -100000 0 0 + -100000 100010 -10 0 + 0 -10 11 -1 + 0 0 -1 1 + + y = + + 9.8100 + 19.6200 + 29.4300 + 39.2400 + + + + +```octave +cond(K,inf) +cond(K,1) +cond(K,'fro') +cond(K,2) +``` + + ans = 3.2004e+05 + ans = 3.2004e+05 + ans = 2.5925e+05 + ans = 2.5293e+05 + + + +```octave +e=eig(K) +max(e)/min(e) +``` + + e = + + 7.9078e-01 + 3.5881e+00 + 1.7621e+01 + 2.0001e+05 + + ans = 2.5293e+05 + + + +```octave + +``` diff --git a/lecture_12/lecture_12.out b/lecture_12/lecture_12.out new file mode 100644 index 0000000..e7b5af8 --- /dev/null +++ b/lecture_12/lecture_12.out @@ -0,0 +1,7 @@ +\BOOKMARK [2][-]{subsection.0.1}{My question from last class}{}% 1 +\BOOKMARK [2][-]{subsection.0.2}{Your questions from last class}{}% 2 +\BOOKMARK [1][-]{section.1}{Matrix Inverse and Condition}{}% 3 +\BOOKMARK [2][-]{subsection.1.1}{Condition of a matrix}{section.1}% 4 +\BOOKMARK [3][-]{subsubsection.1.1.1}{just checked in to see what condition my condition was in}{subsection.1.1}% 5 +\BOOKMARK [3][-]{subsubsection.1.1.2}{Matrix norms}{subsection.1.1}% 6 +\BOOKMARK [3][-]{subsubsection.1.1.3}{Condition of Matrix}{subsection.1.1}% 7 diff --git a/lecture_12/lecture_12.pdf b/lecture_12/lecture_12.pdf new file mode 100644 index 0000000..e0b4e6c Binary files /dev/null and b/lecture_12/lecture_12.pdf differ diff --git a/lecture_12/lecture_12.tex b/lecture_12/lecture_12.tex new file mode 100644 index 0000000..1265a06 --- /dev/null +++ b/lecture_12/lecture_12.tex @@ -0,0 +1,1015 @@ + +% Default to the notebook output style + + + + +% Inherit from the specified cell style. + + + + + +\documentclass[11pt]{article} + + + + \usepackage[T1]{fontenc} + % Nicer default font (+ math font) than Computer Modern for most use cases + \usepackage{mathpazo} + + % Basic figure setup, for now with no caption control since it's done + % automatically by Pandoc (which extracts ![](path) syntax from Markdown). + \usepackage{graphicx} + % We will generate all images so they have a width \maxwidth. This means + % that they will get their normal width if they fit onto the page, but + % are scaled down if they would overflow the margins. + \makeatletter + \def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth + \else\Gin@nat@width\fi} + \makeatother + \let\Oldincludegraphics\includegraphics + % Set max figure width to be 80% of text width, for now hardcoded. + \renewcommand{\includegraphics}[1]{\Oldincludegraphics[width=.8\maxwidth]{#1}} + % Ensure that by default, figures have no caption (until we provide a + % proper Figure object with a Caption API and a way to capture that + % in the conversion process - todo). + \usepackage{caption} + \DeclareCaptionLabelFormat{nolabel}{} + \captionsetup{labelformat=nolabel} + + \usepackage{adjustbox} % Used to constrain images to a maximum size + \usepackage{xcolor} % Allow colors to be defined + \usepackage{enumerate} % Needed for markdown enumerations to work + \usepackage{geometry} % Used to adjust the document margins + \usepackage{amsmath} % Equations + \usepackage{amssymb} % Equations + \usepackage{textcomp} % defines textquotesingle + % Hack from http://tex.stackexchange.com/a/47451/13684: + \AtBeginDocument{% + \def\PYZsq{\textquotesingle}% Upright quotes in Pygmentized code + } + \usepackage{upquote} % Upright quotes for verbatim code + \usepackage{eurosym} % defines \euro + \usepackage[mathletters]{ucs} % Extended unicode (utf-8) support + \usepackage[utf8x]{inputenc} % Allow utf-8 characters in the tex document + \usepackage{fancyvrb} % verbatim replacement that allows latex + \usepackage{grffile} % extends the file name processing of package graphics + % to support a larger range + % The hyperref package gives us a pdf with properly built + % internal navigation ('pdf bookmarks' for the table of contents, + % internal cross-reference links, web links for URLs, etc.) + \usepackage{hyperref} + \usepackage{longtable} % longtable support required by pandoc >1.10 + \usepackage{booktabs} % table support for pandoc > 1.12.2 + \usepackage[inline]{enumitem} % IRkernel/repr support (it uses the enumerate* environment) + \usepackage[normalem]{ulem} % ulem is needed to support strikethroughs (\sout) + % normalem makes italics be italics, not underlines + + + + + % Colors for the hyperref package + \definecolor{urlcolor}{rgb}{0,.145,.698} + \definecolor{linkcolor}{rgb}{.71,0.21,0.01} + \definecolor{citecolor}{rgb}{.12,.54,.11} + + % ANSI colors + \definecolor{ansi-black}{HTML}{3E424D} + \definecolor{ansi-black-intense}{HTML}{282C36} + \definecolor{ansi-red}{HTML}{E75C58} + \definecolor{ansi-red-intense}{HTML}{B22B31} + \definecolor{ansi-green}{HTML}{00A250} + \definecolor{ansi-green-intense}{HTML}{007427} + \definecolor{ansi-yellow}{HTML}{DDB62B} + \definecolor{ansi-yellow-intense}{HTML}{B27D12} + \definecolor{ansi-blue}{HTML}{208FFB} + \definecolor{ansi-blue-intense}{HTML}{0065CA} + \definecolor{ansi-magenta}{HTML}{D160C4} + \definecolor{ansi-magenta-intense}{HTML}{A03196} + \definecolor{ansi-cyan}{HTML}{60C6C8} + \definecolor{ansi-cyan-intense}{HTML}{258F8F} + \definecolor{ansi-white}{HTML}{C5C1B4} + \definecolor{ansi-white-intense}{HTML}{A1A6B2} + + % commands and environments needed by pandoc snippets + % extracted from the output of `pandoc -s` + \providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} + \DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}} + % Add ',fontsize=\small' for more characters per line + \newenvironment{Shaded}{}{} + \newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} + \newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{{#1}}} + \newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} + \newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} + \newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} + \newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} + \newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} + \newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{{#1}}}} + \newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{{#1}}} + \newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}} + \newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{{#1}}} + \newcommand{\RegionMarkerTok}[1]{{#1}} + \newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}} + \newcommand{\NormalTok}[1]{{#1}} + + % Additional commands for more recent versions of Pandoc + \newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{{#1}}} + \newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} + \newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} + \newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{{#1}}} + \newcommand{\ImportTok}[1]{{#1}} + \newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{{#1}}}} + \newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} + \newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} + \newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{{#1}}} + \newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} + \newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{{#1}}} + \newcommand{\BuiltInTok}[1]{{#1}} + \newcommand{\ExtensionTok}[1]{{#1}} + \newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{{#1}}} + \newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{{#1}}} + \newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} + \newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} + + + % Define a nice break command that doesn't care if a line doesn't already + % exist. + \def\br{\hspace*{\fill} \\* } + % Math Jax compatability definitions + \def\gt{>} + \def\lt{<} + % Document parameters + \title{lecture\_12} + + + + + % Pygments definitions + +\makeatletter +\def\PY@reset{\let\PY@it=\relax \let\PY@bf=\relax% + \let\PY@ul=\relax \let\PY@tc=\relax% + \let\PY@bc=\relax \let\PY@ff=\relax} +\def\PY@tok#1{\csname PY@tok@#1\endcsname} +\def\PY@toks#1+{\ifx\relax#1\empty\else% + \PY@tok{#1}\expandafter\PY@toks\fi} +\def\PY@do#1{\PY@bc{\PY@tc{\PY@ul{% + \PY@it{\PY@bf{\PY@ff{#1}}}}}}} +\def\PY#1#2{\PY@reset\PY@toks#1+\relax+\PY@do{#2}} + +\expandafter\def\csname PY@tok@gd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}} +\expandafter\def\csname PY@tok@gu\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}} +\expandafter\def\csname PY@tok@gt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}} +\expandafter\def\csname PY@tok@gs\endcsname{\let\PY@bf=\textbf} +\expandafter\def\csname PY@tok@gr\endcsname{\def\PY@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}} +\expandafter\def\csname PY@tok@cm\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} +\expandafter\def\csname PY@tok@vg\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} +\expandafter\def\csname PY@tok@vi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} +\expandafter\def\csname PY@tok@mh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@cs\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} +\expandafter\def\csname PY@tok@ge\endcsname{\let\PY@it=\textit} +\expandafter\def\csname PY@tok@vc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} +\expandafter\def\csname PY@tok@il\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@go\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}} +\expandafter\def\csname PY@tok@cp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.74,0.48,0.00}{##1}}} +\expandafter\def\csname PY@tok@gi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}} +\expandafter\def\csname PY@tok@gh\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}} +\expandafter\def\csname PY@tok@ni\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.60,0.60,0.60}{##1}}} +\expandafter\def\csname PY@tok@nl\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.63,0.00}{##1}}} +\expandafter\def\csname PY@tok@nn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} +\expandafter\def\csname PY@tok@no\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.00,0.00}{##1}}} +\expandafter\def\csname PY@tok@na\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.49,0.56,0.16}{##1}}} +\expandafter\def\csname PY@tok@nb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@nc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} +\expandafter\def\csname PY@tok@nd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}} +\expandafter\def\csname PY@tok@ne\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.82,0.25,0.23}{##1}}} +\expandafter\def\csname PY@tok@nf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} +\expandafter\def\csname PY@tok@si\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}} +\expandafter\def\csname PY@tok@s2\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@nt\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@nv\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} +\expandafter\def\csname PY@tok@s1\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@ch\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} +\expandafter\def\csname PY@tok@m\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@gp\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}} +\expandafter\def\csname PY@tok@sh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@ow\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}} +\expandafter\def\csname PY@tok@sx\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@bp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@c1\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} +\expandafter\def\csname PY@tok@o\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@kc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@c\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} +\expandafter\def\csname PY@tok@mf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@err\endcsname{\def\PY@bc##1{\setlength{\fboxsep}{0pt}\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}} +\expandafter\def\csname PY@tok@mb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@ss\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} +\expandafter\def\csname PY@tok@sr\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}} +\expandafter\def\csname PY@tok@mo\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@kd\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@mi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@kn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@cpf\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} +\expandafter\def\csname PY@tok@kr\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@s\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@kp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@w\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}} +\expandafter\def\csname PY@tok@kt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.69,0.00,0.25}{##1}}} +\expandafter\def\csname PY@tok@sc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@sb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@k\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@se\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.13}{##1}}} +\expandafter\def\csname PY@tok@sd\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} + +\def\PYZbs{\char`\\} +\def\PYZus{\char`\_} +\def\PYZob{\char`\{} +\def\PYZcb{\char`\}} +\def\PYZca{\char`\^} +\def\PYZam{\char`\&} +\def\PYZlt{\char`\<} +\def\PYZgt{\char`\>} +\def\PYZsh{\char`\#} +\def\PYZpc{\char`\%} +\def\PYZdl{\char`\$} +\def\PYZhy{\char`\-} +\def\PYZsq{\char`\'} +\def\PYZdq{\char`\"} +\def\PYZti{\char`\~} +% for compatibility with earlier versions +\def\PYZat{@} +\def\PYZlb{[} +\def\PYZrb{]} +\makeatother + + + % Exact colors from NB + \definecolor{incolor}{rgb}{0.0, 0.0, 0.5} + \definecolor{outcolor}{rgb}{0.545, 0.0, 0.0} + + + + + % Prevent overflowing lines due to hard-to-break entities + \sloppy + % Setup hyperref package + \hypersetup{ + breaklinks=true, % so long urls are correctly broken across lines + colorlinks=true, + urlcolor=urlcolor, + linkcolor=linkcolor, + citecolor=citecolor, + } + % Slightly bigger margins than the latex defaults + + \geometry{verbose,tmargin=1in,bmargin=1in,lmargin=1in,rmargin=1in} + + + + \begin{document} + + + \maketitle + + + + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}27}]:} \PY{c}{\PYZpc{}plot \PYZhy{}\PYZhy{}format svg} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}28}]:} \PY{n}{setdefaults} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}29}]:} \PY{n}{A}\PY{p}{=}\PY{n+nb}{rand}\PY{p}{(}\PY{l+m+mi}{4}\PY{p}{,}\PY{l+m+mi}{4}\PY{p}{)} + + \PY{p}{[}\PY{n}{L}\PY{p}{,}\PY{n}{U}\PY{p}{,}\PY{n}{P}\PY{p}{]}\PY{p}{=}\PY{n+nb}{lu}\PY{p}{(}\PY{n}{A}\PY{p}{)} + + \PY{n+nb}{det}\PY{p}{(}\PY{n}{L}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +A = + + 0.447394 0.357071 0.720915 0.499926 + 0.648313 0.323276 0.521677 0.288345 + 0.084982 0.581513 0.466420 0.142342 + 0.576580 0.658089 0.916987 0.923165 + +L = + + 1.00000 0.00000 0.00000 0.00000 + 0.13108 1.00000 0.00000 0.00000 + 0.69009 0.24851 1.00000 0.00000 + 0.88935 0.68736 0.68488 1.00000 + +U = + + 0.64831 0.32328 0.52168 0.28834 + 0.00000 0.53914 0.39804 0.10455 + 0.00000 0.00000 0.26199 0.27496 + 0.00000 0.00000 0.00000 0.40655 + +P = + +Permutation Matrix + + 0 1 0 0 + 0 0 1 0 + 1 0 0 0 + 0 0 0 1 + +ans = 1 + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}44}]:} \PY{n}{A}\PY{p}{=}\PY{n+nb}{rand}\PY{p}{(}\PY{l+m+mi}{4}\PY{p}{,}\PY{l+m+mi}{100}\PY{p}{)}\PY{o}{\PYZsq{}}\PY{p}{;} + \PY{n}{A}\PY{p}{=}\PY{n}{A}\PY{o}{\PYZsq{}}\PY{o}{*}\PY{n}{A}\PY{p}{;} + \PY{n+nb}{size}\PY{p}{(}\PY{n}{A}\PY{p}{)} + \PY{n+nb}{min}\PY{p}{(}\PY{n+nb}{min}\PY{p}{(}\PY{n}{A}\PY{p}{)}\PY{p}{)} + \PY{n+nb}{max}\PY{p}{(}\PY{n+nb}{max}\PY{p}{(}\PY{n}{A}\PY{p}{)}\PY{p}{)} + \PY{n+nb}{cond}\PY{p}{(}\PY{n}{A}\PY{p}{)} + \PY{n}{C}\PY{p}{=}\PY{n+nb}{chol}\PY{p}{(}\PY{n}{A}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +ans = + + 4 4 + +ans = 23.586 +ans = 35.826 +ans = 14.869 +C = + + 5.98549 4.28555 4.35707 4.31359 + 0.00000 3.63950 1.35005 1.45342 + 0.00000 0.00000 3.62851 1.50580 + 0.00000 0.00000 0.00000 3.21911 + + + \end{Verbatim} + + \subsection{My question from last +class}\label{my-question-from-last-class} + +\begin{figure}[htbp] +\centering +\includegraphics{det_L.png} +\caption{q1} +\end{figure} + +\begin{figure}[htbp] +\centering +\includegraphics{chol_pre.png} +\caption{q2} +\end{figure} + +\subsection{Your questions from last +class}\label{your-questions-from-last-class} + +\begin{enumerate} +\def\labelenumi{\arabic{enumi}.} +\item + Will the exam be more theoretical or problem based? +\item + Writing code is difficult +\item + What format can we expect for the midterm? +\item + Could we go over some example questions for the exam? +\item + Will the use of GitHub be tested on the Midterm exam? Or is it more + focused on linear algebra techniques/what was covered in the lectures? +\item + This is not my strong suit, getting a bit overwhelmed with matrix + multiplication. +\item + I forgot how much I learned in linear algebra. +\item + What's the most exciting project you've ever worked on with + Matlab/Octave? +\end{enumerate} + + \section{Matrix Inverse and +Condition}\label{matrix-inverse-and-condition} + +Considering the same solution set: + +\(y=Ax\) + +If we know that \(A^{-1}A=I\), then + +\(A^{-1}y=A^{-1}Ax=x\) + +so + +\(x=A^{-1}y\) + +Where, \(A^{-1}\) is the inverse of matrix \(A\). + +\(2x_{1}+x_{2}=1\) + +\(x_{1}+3x_{2}=1\) + +\(Ax=y\) + +\(\left[ \begin{array}{cc} 2 & 1 \\ 1 & 3 \end{array} \right] \left[\begin{array}{c} x_{1} \\ x_{2} \end{array}\right]= \left[\begin{array}{c} 1 \\ 1\end{array}\right]\) + +\(A^{-1}=\frac{1}{2*3-1*1}\left[ \begin{array}{cc} 3 & -1 \\ -1 & 2 \end{array} \right]= \left[ \begin{array}{cc} 3/5 & -1/5 \\ -1/5 & 2/5 \end{array} \right]\) + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}45}]:} \PY{n}{A}\PY{p}{=}\PY{p}{[}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{;}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{]} + \PY{n}{invA}\PY{p}{=}\PY{l+m+mi}{1}\PY{o}{/}\PY{l+m+mi}{5}\PY{o}{*}\PY{p}{[}\PY{l+m+mi}{3}\PY{p}{,}\PY{o}{\PYZhy{}}\PY{l+m+mi}{1}\PY{p}{;}\PY{o}{\PYZhy{}}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{]} + + \PY{n}{A}\PY{o}{*}\PY{n}{invA} + \PY{n}{invA}\PY{o}{*}\PY{n}{A} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +A = + + 2 1 + 1 3 + +invA = + + 0.60000 -0.20000 + -0.20000 0.40000 + +ans = + + 1.00000 0.00000 + 0.00000 1.00000 + +ans = + + 1.00000 0.00000 + 0.00000 1.00000 + + + \end{Verbatim} + + How did we know the inverse of A? + +for 2$\times$2 matrices, it is always: + +$A=\left[ \begin{array}{cc} A_{11} & A_{12} \\ A_{21} & A_{22} \end{array} \right]$ + +$A^{-1}=\frac{1}{det(A)}\left[ \begin{array}{cc} A_{22} & -A_{12} \\ -A_{21} & A_{11} \end{array} \right]$ + + $AA^{-1}=\frac{1}{A_{11}A_{22}-A_{21}A_{12}}\left[ \begin{array}{cc} A_{11}A_{22}-A_{21}A_{12} & -A_{11}A_{12}+A_{12}A_{11} \\ A_{21}A_{22}-A_{22}A_{21} & -A_{21}A_{12}+A_{22}A_{11} \end{array} \right] =\left[ \begin{array}{cc} 1 & 0 \\ 0 & 1 \end{array} \right]$ + + What about bigger matrices? + +We can use the LU-decomposition + +\(A=LU\) + +\(A^{-1}=(LU)^{-1}=U^{-1}L^{-1}\) + +if we divide \(A^{-1}\) into n-column vectors, \(a_{n}\), then + +\(Aa_{1}=\left[\begin{array}{c} 1 \\ 0 \\ \vdots \\ 0 \end{array} \right]\) +\(Aa_{2}=\left[\begin{array}{c} 0 \\ 1 \\ \vdots \\ 0 \end{array} \right]\) +\(Aa_{n}=\left[\begin{array}{c} 0 \\ 0 \\ \vdots \\ 1 \end{array} \right]\) + +Which we can solve for each \(a_{n}\) with LU-decomposition, knowing the +lower and upper triangular decompositions, then + +\(A^{-1}=\left[ \begin{array}{cccc} | & | & & | \\ a_{1} & a_{2} & \cdots & a_{n} \\ | & | & & | \end{array} \right]\) + +\(Ld_{1}=\left[\begin{array}{c} 1 \\ 0 \\ \vdots \\ 0 \end{array} \right]\) +\(;~Ua_{1}=d_{1}\) + +\(Ld_{2}=\left[\begin{array}{c} 0 \\ 1 \\ \vdots \\ 0 \end{array} \right]\) +\(;~Ua_{2}=d_{2}\) + +\(Ld_{n}=\left[\begin{array}{c} 0 \\ 1 \\ \vdots \\ n \end{array} \right]\) +\(;~Ua_{n}=d_{n}\) + +Consider the following matrix: + +\(A=\left[ \begin{array}{ccc} 2 & -1 & 0\\ -1 & 2 & -1\\ 0 & -1 & 1 \end{array} \right]\) + + \paragraph{\texorpdfstring{Note on solving for \(A^{-1}\) column +1}{Note on solving for A\^{}\{-1\} column 1}}\label{note-on-solving-for-a-1-column-1} + +\(Aa_1=I(:,1)\) + +\(LUa_1=I(:,1)\) + +\((LUa_1-I(:,1))=0\) + +\(L(Ua_1-d_1)=0\) + +\(I(:,1)=Ld_1\) + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}56}]:} \PY{n}{A}\PY{p}{=}\PY{p}{[}\PY{l+m+mi}{2}\PY{p}{,}\PY{o}{\PYZhy{}}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{0}\PY{p}{;}\PY{o}{\PYZhy{}}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{,}\PY{o}{\PYZhy{}}\PY{l+m+mi}{1}\PY{p}{;}\PY{l+m+mi}{0}\PY{p}{,}\PY{o}{\PYZhy{}}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{]} + \PY{n}{U}\PY{p}{=}\PY{n}{A}\PY{p}{;} + \PY{n}{L}\PY{p}{=}\PY{n+nb}{eye}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{)}\PY{p}{;} + \PY{n}{U}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{p}{:}\PY{p}{)}\PY{p}{=}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{p}{:}\PY{p}{)}\PY{o}{\PYZhy{}}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{o}{/}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{o}{*}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{p}{:}\PY{p}{)} + \PY{n}{L}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{=}\PY{n}{A}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{o}{/}\PY{n}{A}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +A = + + 2 -1 0 + -1 2 -1 + 0 -1 1 + +U = + + 2.00000 -1.00000 0.00000 + 0.00000 1.50000 -1.00000 + 0.00000 -1.00000 1.00000 + +L = + + 1.00000 0.00000 0.00000 + -0.50000 1.00000 0.00000 + 0.00000 0.00000 1.00000 + + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}57}]:} \PY{n}{L}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{=}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{o}{/}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)} + \PY{n}{U}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{p}{:}\PY{p}{)}\PY{p}{=}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{p}{:}\PY{p}{)}\PY{o}{\PYZhy{}}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{o}{/}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{o}{*}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{p}{:}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +L = + + 1.00000 0.00000 0.00000 + -0.50000 1.00000 0.00000 + 0.00000 -0.66667 1.00000 + +U = + + 2.00000 -1.00000 0.00000 + 0.00000 1.50000 -1.00000 + 0.00000 0.00000 0.33333 + + + \end{Verbatim} + + Now solve for \(d_1\) then \(a_1\), \(d_2\) then \(a_2\), and \(d_3\) +then \(a_{3}\) + +\(Ld_{1}=\left[\begin{array}{c} 1 \\ 0 \\ \vdots \\ 0 \end{array} \right]= \left[\begin{array}{ccc} 1 & 0 & 0 \\ -1/2 & 1 & 0 \\ 0 & -2/3 & 1 \end{array} \right]\left[\begin{array}{c} d1(1) \\ d1(2) \\ d1(3)\end{array} \right]=\left[\begin{array}{c} 1 \\ 0 \\ 0 \end{array} \right] ;~Ua_{1}=d_{1}\) + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}58}]:} \PY{n}{d1}\PY{p}{=}\PY{n+nb}{zeros}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} + \PY{n}{d1}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{=}\PY{l+m+mi}{1}\PY{p}{;} + \PY{n}{d1}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{=}\PY{l+m+mi}{0}\PY{o}{\PYZhy{}}\PY{n}{L}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{o}{*}\PY{n}{d1}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} + \PY{n}{d1}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{)}\PY{p}{=}\PY{l+m+mi}{0}\PY{o}{\PYZhy{}}\PY{n}{L}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{o}{*}\PY{n}{d1}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{)}\PY{o}{\PYZhy{}}\PY{n}{L}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{o}{*}\PY{n}{d1}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +d1 = + + 1.00000 + 0.50000 + 0.33333 + + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}59}]:} \PY{n}{a1}\PY{p}{=}\PY{n+nb}{zeros}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} + \PY{n}{a1}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{)}\PY{p}{=}\PY{n}{d1}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{)}\PY{o}{/}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{)}\PY{p}{;} + \PY{n}{a1}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{=}\PY{l+m+mi}{1}\PY{o}{/}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{o}{*}\PY{p}{(}\PY{n}{d1}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{)}\PY{o}{\PYZhy{}}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{)}\PY{o}{*}\PY{n}{a1}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{)}\PY{p}{)}\PY{p}{;} + \PY{n}{a1}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{=}\PY{l+m+mi}{1}\PY{o}{/}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{o}{*}\PY{p}{(}\PY{n}{d1}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{)}\PY{o}{\PYZhy{}}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{o}{*}\PY{n}{a1}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{)}\PY{o}{\PYZhy{}}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{)}\PY{o}{*}\PY{n}{a1}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{)}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +a1 = + + 1.00000 + 1.00000 + 1.00000 + + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}60}]:} \PY{n}{d2}\PY{p}{=}\PY{n+nb}{zeros}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} + \PY{n}{d2}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{=}\PY{l+m+mi}{0}\PY{p}{;} + \PY{n}{d2}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{=}\PY{l+m+mi}{1}\PY{o}{\PYZhy{}}\PY{n}{L}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{o}{*}\PY{n}{d2}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} + \PY{n}{d2}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{)}\PY{p}{=}\PY{l+m+mi}{0}\PY{o}{\PYZhy{}}\PY{n}{L}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{o}{*}\PY{n}{d2}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{)}\PY{o}{\PYZhy{}}\PY{n}{L}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{o}{*}\PY{n}{d2}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +d2 = + + 0.00000 + 1.00000 + 0.66667 + + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}61}]:} \PY{n}{a2}\PY{p}{=}\PY{n+nb}{zeros}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} + \PY{n}{a2}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{)}\PY{p}{=}\PY{n}{d2}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{)}\PY{o}{/}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{)}\PY{p}{;} + \PY{n}{a2}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{=}\PY{l+m+mi}{1}\PY{o}{/}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{o}{*}\PY{p}{(}\PY{n}{d2}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{)}\PY{o}{\PYZhy{}}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{)}\PY{o}{*}\PY{n}{a2}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{)}\PY{p}{)}\PY{p}{;} + \PY{n}{a2}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{=}\PY{l+m+mi}{1}\PY{o}{/}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{o}{*}\PY{p}{(}\PY{n}{d2}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{)}\PY{o}{\PYZhy{}}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{o}{*}\PY{n}{a2}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{)}\PY{o}{\PYZhy{}}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{)}\PY{o}{*}\PY{n}{a2}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{)}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +a2 = + + 1.0000 + 2.0000 + 2.0000 + + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}62}]:} \PY{n}{d3}\PY{p}{=}\PY{n+nb}{zeros}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} + \PY{n}{d3}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{=}\PY{l+m+mi}{0}\PY{p}{;} + \PY{n}{d3}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{=}\PY{l+m+mi}{0}\PY{o}{\PYZhy{}}\PY{n}{L}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{o}{*}\PY{n}{d3}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} + \PY{n}{d3}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{)}\PY{p}{=}\PY{l+m+mi}{1}\PY{o}{\PYZhy{}}\PY{n}{L}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{o}{*}\PY{n}{d3}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{)}\PY{o}{\PYZhy{}}\PY{n}{L}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{o}{*}\PY{n}{d3}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +d3 = + + 0 + 0 + 1 + + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}63}]:} \PY{n}{a3}\PY{p}{=}\PY{n+nb}{zeros}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} + \PY{n}{a3}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{)}\PY{p}{=}\PY{n}{d3}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{)}\PY{o}{/}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{)}\PY{p}{;} + \PY{n}{a3}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{=}\PY{l+m+mi}{1}\PY{o}{/}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{o}{*}\PY{p}{(}\PY{n}{d3}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{)}\PY{o}{\PYZhy{}}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{)}\PY{o}{*}\PY{n}{a3}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{)}\PY{p}{)}\PY{p}{;} + \PY{n}{a3}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{=}\PY{l+m+mi}{1}\PY{o}{/}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{o}{*}\PY{p}{(}\PY{n}{d3}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{)}\PY{o}{\PYZhy{}}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{o}{*}\PY{n}{a3}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{)}\PY{o}{\PYZhy{}}\PY{n}{U}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{)}\PY{o}{*}\PY{n}{a3}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{)}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +a3 = + + 1.00000 + 2.00000 + 3.00000 + + + \end{Verbatim} + + Final solution for \(A^{-1}\) is \([a_{1}~a_{2}~a_{3}]\) + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}69}]:} \PY{n}{invA}\PY{p}{=}\PY{p}{[}\PY{n}{a1}\PY{p}{,}\PY{n}{a2}\PY{p}{,}\PY{n}{a3}\PY{p}{]} + \PY{n}{I\PYZus{}app}\PY{p}{=}\PY{n}{A}\PY{o}{*}\PY{n}{invA} + \PY{n}{I\PYZus{}app}\PY{p}{(}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{)} + \PY{n+nb}{eps} + + \PY{l+m+mi}{2}\PYZca{}\PY{o}{\PYZhy{}}\PY{l+m+mi}{8} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +invA = + + 1.00000 1.00000 1.00000 + 1.00000 2.00000 2.00000 + 1.00000 2.00000 3.00000 + +I\_app = + + 1.00000 0.00000 0.00000 + 0.00000 1.00000 -0.00000 + -0.00000 -0.00000 1.00000 + +ans = -4.4409e-16 +ans = 2.2204e-16 +ans = 0.0039062 + + \end{Verbatim} + + Now the solution of \(x\) to \(Ax=y\) is \(x=A^{-1}y\) + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}70}]:} \PY{n}{y}\PY{p}{=}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{;}\PY{l+m+mi}{2}\PY{p}{;}\PY{l+m+mi}{3}\PY{p}{]} + \PY{n}{x}\PY{p}{=}\PY{n}{invA}\PY{o}{*}\PY{n}{y} + \PY{n}{xbs}\PY{p}{=}\PY{n}{A}\PY{o}{\PYZbs{}}\PY{n}{y} + \PY{n}{x}\PY{o}{\PYZhy{}}\PY{n}{xbs} + \PY{n+nb}{eps} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +y = + + 1 + 2 + 3 + +x = + + 6.0000 + 11.0000 + 14.0000 + +xbs = + + 6.0000 + 11.0000 + 14.0000 + +ans = + + -3.5527e-15 + -8.8818e-15 + -1.0658e-14 + +ans = 2.2204e-16 + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}71}]:} \PY{n}{N}\PY{p}{=}\PY{l+m+mi}{100}\PY{p}{;} + \PY{n}{n}\PY{p}{=}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{:}\PY{n}{N}\PY{p}{]}\PY{p}{;} + \PY{n}{t\PYZus{}inv}\PY{p}{=}\PY{n+nb}{zeros}\PY{p}{(}\PY{n}{N}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} + \PY{n}{t\PYZus{}bs}\PY{p}{=}\PY{n+nb}{zeros}\PY{p}{(}\PY{n}{N}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} + \PY{n}{t\PYZus{}mult}\PY{p}{=}\PY{n+nb}{zeros}\PY{p}{(}\PY{n}{N}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} + \PY{k}{for} \PY{n}{i}\PY{p}{=}\PY{l+m+mi}{1}\PY{p}{:}\PY{n}{N} + \PY{n}{A}\PY{p}{=}\PY{n+nb}{rand}\PY{p}{(}\PY{n}{i}\PY{p}{,}\PY{n}{i}\PY{p}{)}\PY{p}{;} + \PY{n+nb}{tic} + \PY{n}{invA}\PY{p}{=}\PY{n+nb}{inv}\PY{p}{(}\PY{n}{A}\PY{p}{)}\PY{p}{;} + \PY{n}{t\PYZus{}inv}\PY{p}{(}\PY{n}{i}\PY{p}{)}\PY{p}{=}\PY{n+nb}{toc}\PY{p}{;} + \PY{n}{b}\PY{p}{=}\PY{n+nb}{rand}\PY{p}{(}\PY{n}{i}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} + \PY{n+nb}{tic}\PY{p}{;} + \PY{n}{x}\PY{p}{=}\PY{n}{A}\PY{o}{\PYZbs{}}\PY{n}{b}\PY{p}{;} + \PY{n}{t\PYZus{}bs}\PY{p}{(}\PY{n}{i}\PY{p}{)}\PY{p}{=}\PY{n+nb}{toc}\PY{p}{;} + \PY{n+nb}{tic}\PY{p}{;} + \PY{n}{x}\PY{p}{=}\PY{n}{invA}\PY{o}{*}\PY{n}{b}\PY{p}{;} + \PY{n}{t\PYZus{}mult}\PY{p}{(}\PY{n}{i}\PY{p}{)}\PY{p}{=}\PY{n+nb}{toc}\PY{p}{;} + \PY{k}{end} + \PY{n+nb}{plot}\PY{p}{(}\PY{n}{n}\PY{p}{,}\PY{n}{t\PYZus{}inv}\PY{p}{,}\PY{n}{n}\PY{p}{,}\PY{n}{t\PYZus{}bs}\PY{p}{,}\PY{n}{n}\PY{p}{,}\PY{n}{t\PYZus{}mult}\PY{p}{)} + \PY{n+nb}{axis}\PY{p}{(}\PY{p}{[}\PY{l+m+mi}{0} \PY{l+m+mi}{100} \PY{l+m+mi}{0} \PY{l+m+mf}{0.002}\PY{p}{]}\PY{p}{)} + \PY{n+nb}{legend}\PY{p}{(}\PY{l+s}{\PYZsq{}}\PY{l+s}{inversion\PYZsq{}}\PY{p}{,}\PY{l+s}{\PYZsq{}}\PY{l+s}{backslash\PYZsq{}}\PY{p}{,}\PY{l+s}{\PYZsq{}}\PY{l+s}{multiplication\PYZsq{}}\PY{p}{,}\PY{l+s}{\PYZsq{}}\PY{l+s}{Location\PYZsq{}}\PY{p}{,}\PY{l+s}{\PYZsq{}}\PY{l+s}{NorthWest\PYZsq{}}\PY{p}{)} +\end{Verbatim} + + \begin{center} + \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{lecture_12_files/lecture_12_24_0.pdf} + \end{center} + { \hspace*{\fill} \\} + + \subsection{Condition of a matrix}\label{condition-of-a-matrix} + +\subsubsection{\texorpdfstring{\emph{just checked in to see what +condition my condition was +in}}{just checked in to see what condition my condition was in}}\label{just-checked-in-to-see-what-condition-my-condition-was-in} + +\subsubsection{Matrix norms}\label{matrix-norms} + +The Euclidean norm of a vector is measure of the magnitude (in 3D this +would be: \(|x|=\sqrt{x_{1}^{2}+x_{2}^{2}+x_{3}^{2}}\)) in general the +equation is: + +\(||x||_{e}=\sqrt{\sum_{i=1}^{n}x_{i}^{2}}\) + +For a matrix, A, the same norm is called the Frobenius norm: + +\(||A||_{f}=\sqrt{\sum_{i=1}^{n}\sum_{i=1}^{m}A_{i,j}^{2}}\) + +In general we can calculate any \(p\)-norm where + +\(||A||_{p}=\sqrt{\sum_{i=1}^{n}\sum_{i=1}^{m}A_{i,j}^{p}}\) + +so the p=1, 1-norm is + +\(||A||_{1}=\sqrt{\sum_{i=1}^{n}\sum_{i=1}^{m}A_{i,j}^{1}}=\sum_{i=1}^{n}\sum_{i=1}^{m}|A_{i,j}|\) + +\(||A||_{\infty}=\sqrt{\sum_{i=1}^{n}\sum_{i=1}^{m}A_{i,j}^{\infty}}=\max_{1\le i \le n}\sum_{j=1}^{m}|A_{i,j}|\) + +\subsubsection{Condition of Matrix}\label{condition-of-matrix} + +The matrix condition is the product of + +\(Cond(A) = ||A||\cdot||A^{-1}||\) + +So each norm will have a different condition number, but the limit is +\(Cond(A)\ge 1\) + +An estimate of the rounding error is based on the condition of A: + +\(\frac{||\Delta x||}{x} \le Cond(A) \frac{||\Delta A||}{||A||}\) + +So if the coefficients of A have accuracy to \$10\^{}\{-t\} + +and the condition of A, \(Cond(A)=10^{c}\) + +then the solution for x can have rounding errors up to \(10^{c-t}\) + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}72}]:} \PY{n}{A}\PY{p}{=}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{1}\PY{o}{/}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{1}\PY{o}{/}\PY{l+m+mi}{3}\PY{p}{;}\PY{l+m+mi}{1}\PY{o}{/}\PY{l+m+mi}{2}\PY{p}{,}\PY{l+m+mi}{1}\PY{o}{/}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{1}\PY{o}{/}\PY{l+m+mi}{4}\PY{p}{;}\PY{l+m+mi}{1}\PY{o}{/}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{1}\PY{o}{/}\PY{l+m+mi}{4}\PY{p}{,}\PY{l+m+mi}{1}\PY{o}{/}\PY{l+m+mi}{5}\PY{p}{]} + \PY{p}{[}\PY{n}{L}\PY{p}{,}\PY{n}{U}\PY{p}{]}\PY{p}{=}\PY{n}{LU\PYZus{}naive}\PY{p}{(}\PY{n}{A}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +A = + + 1.00000 0.50000 0.33333 + 0.50000 0.33333 0.25000 + 0.33333 0.25000 0.20000 + +L = + + 1.00000 0.00000 0.00000 + 0.50000 1.00000 0.00000 + 0.33333 1.00000 1.00000 + +U = + + 1.00000 0.50000 0.33333 + 0.00000 0.08333 0.08333 + 0.00000 -0.00000 0.00556 + + + \end{Verbatim} + + Then, \(A^{-1}=(LU)^{-1}=U^{-1}L^{-1}\) + +\(Ld_{1}=\left[\begin{array}{c} 1 \\ 0 \\ 0 \end{array}\right]\), +\(Ux_{1}=d_{1}\) ... + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}75}]:} \PY{n}{invA}\PY{p}{=}\PY{n+nb}{zeros}\PY{p}{(}\PY{l+m+mi}{3}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{)}\PY{p}{;} + \PY{n}{d1}\PY{p}{=}\PY{n}{L}\PY{o}{\PYZbs{}}\PY{p}{[}\PY{l+m+mi}{1}\PY{p}{;}\PY{l+m+mi}{0}\PY{p}{;}\PY{l+m+mi}{0}\PY{p}{]}\PY{p}{;} + \PY{n}{d2}\PY{p}{=}\PY{n}{L}\PY{o}{\PYZbs{}}\PY{p}{[}\PY{l+m+mi}{0}\PY{p}{;}\PY{l+m+mi}{1}\PY{p}{;}\PY{l+m+mi}{0}\PY{p}{]}\PY{p}{;} + \PY{n}{d3}\PY{p}{=}\PY{n}{L}\PY{o}{\PYZbs{}}\PY{p}{[}\PY{l+m+mi}{0}\PY{p}{;}\PY{l+m+mi}{0}\PY{p}{;}\PY{l+m+mi}{1}\PY{p}{]}\PY{p}{;} + \PY{n}{invA}\PY{p}{(}\PY{p}{:}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{=}\PY{n}{U}\PY{o}{\PYZbs{}}\PY{n}{d1}\PY{p}{;} + \PY{n}{invA}\PY{p}{(}\PY{p}{:}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{=}\PY{n}{U}\PY{o}{\PYZbs{}}\PY{n}{d2}\PY{p}{;} + \PY{n}{invA}\PY{p}{(}\PY{p}{:}\PY{p}{,}\PY{l+m+mi}{3}\PY{p}{)}\PY{p}{=}\PY{n}{U}\PY{o}{\PYZbs{}}\PY{n}{d3} + \PY{n}{invA}\PY{o}{*}\PY{n}{A} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +invA = + + 9.0000 -36.0000 30.0000 + -36.0000 192.0000 -180.0000 + 30.0000 -180.0000 180.0000 + +ans = + + 1.0000e+00 3.5527e-15 2.9976e-15 + -1.3249e-14 1.0000e+00 -9.1038e-15 + 8.5117e-15 7.1054e-15 1.0000e+00 + + + \end{Verbatim} + + Find the condition of A, \(cond(A)\) + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}74}]:} \PY{c}{\PYZpc{} Frobenius norm} + \PY{n}{normf\PYZus{}A} \PY{p}{=} \PY{n+nb}{sqrt}\PY{p}{(}\PY{n+nb}{sum}\PY{p}{(}\PY{n+nb}{sum}\PY{p}{(}\PY{n}{A}\PY{o}{.\PYZca{}}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{)}\PY{p}{)} + \PY{n}{normf\PYZus{}invA} \PY{p}{=} \PY{n+nb}{sqrt}\PY{p}{(}\PY{n+nb}{sum}\PY{p}{(}\PY{n+nb}{sum}\PY{p}{(}\PY{n}{invA}\PY{o}{.\PYZca{}}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{)}\PY{p}{)} + + \PY{n}{cond\PYZus{}f\PYZus{}A} \PY{p}{=} \PY{n}{normf\PYZus{}A}\PY{o}{*}\PY{n}{normf\PYZus{}invA} + + \PY{n+nb}{norm}\PY{p}{(}\PY{n}{A}\PY{p}{,}\PY{l+s}{\PYZsq{}}\PY{l+s}{fro\PYZsq{}}\PY{p}{)} + + \PY{c}{\PYZpc{} p=1, column sum norm} + \PY{n}{norm1\PYZus{}A} \PY{p}{=} \PY{n+nb}{max}\PY{p}{(}\PY{n+nb}{sum}\PY{p}{(}\PY{n}{A}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{)} + \PY{n}{norm1\PYZus{}invA} \PY{p}{=} \PY{n+nb}{max}\PY{p}{(}\PY{n+nb}{sum}\PY{p}{(}\PY{n}{invA}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{)} + \PY{n+nb}{norm}\PY{p}{(}\PY{n}{A}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)} + + \PY{n}{cond\PYZus{}1\PYZus{}A}\PY{p}{=}\PY{n}{norm1\PYZus{}A}\PY{o}{*}\PY{n}{norm1\PYZus{}invA} + + \PY{c}{\PYZpc{} p=inf, row sum norm} + \PY{n}{norminf\PYZus{}A} \PY{p}{=} \PY{n+nb}{max}\PY{p}{(}\PY{n+nb}{sum}\PY{p}{(}\PY{n}{A}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{)} + \PY{n}{norminf\PYZus{}invA} \PY{p}{=} \PY{n+nb}{max}\PY{p}{(}\PY{n+nb}{sum}\PY{p}{(}\PY{n}{invA}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{)} + \PY{n+nb}{norm}\PY{p}{(}\PY{n}{A}\PY{p}{,}\PY{n+nb}{inf}\PY{p}{)} + + \PY{n}{cond\PYZus{}inf\PYZus{}A}\PY{p}{=}\PY{n}{norminf\PYZus{}A}\PY{o}{*}\PY{n}{norminf\PYZus{}invA} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +normf\_A = 1.4136 +normf\_invA = 372.21 +cond\_f\_A = 526.16 +ans = 1.4136 +norm1\_A = 1.8333 +norm1\_invA = 30.000 +ans = 1.8333 +cond\_1\_A = 55.000 +norminf\_A = 1.8333 +norminf\_invA = 30.000 +ans = 1.8333 +cond\_inf\_A = 55.000 + + \end{Verbatim} + + Consider the problem again from the intro to Linear Algebra, 4 masses +are connected in series to 4 springs with spring constants \(K_{i}\). +What does a high condition number mean for this problem? + +\begin{figure}[htbp] +\centering +\includegraphics{../lecture_09/mass_springs.png} +\caption{Springs-masses} +\end{figure} + +The masses haves the following amounts, 1, 2, 3, and 4 kg for masses +1-4. Using a FBD for each mass: + +\(m_{1}g+k_{2}(x_{2}-x_{1})-k_{1}x_{1}=0\) + +\(m_{2}g+k_{3}(x_{3}-x_{2})-k_{2}(x_{2}-x_{1})=0\) + +\(m_{3}g+k_{4}(x_{4}-x_{3})-k_{3}(x_{3}-x_{2})=0\) + +\(m_{4}g-k_{4}(x_{4}-x_{3})=0\) + +in matrix form: + +\(\left[ \begin{array}{cccc} k_{1}+k_{2} & -k_{2} & 0 & 0 \\ -k_{2} & k_{2}+k_{3} & -k_{3} & 0 \\ 0 & -k_{3} & k_{3}+k_{4} & -k_{4} \\ 0 & 0 & -k_{4} & k_{4} \end{array} \right] \left[ \begin{array}{c} x_{1} \\ x_{2} \\ x_{3} \\ x_{4} \end{array} \right]= \left[ \begin{array}{c} m_{1}g \\ m_{2}g \\ m_{3}g \\ m_{4}g \end{array} \right]\) + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}21}]:} \PY{n}{k1}\PY{p}{=}\PY{l+m+mi}{10}\PY{p}{;} \PY{c}{\PYZpc{} N/m} + \PY{n}{k2}\PY{p}{=}\PY{l+m+mi}{100000}\PY{p}{;} + \PY{n}{k3}\PY{p}{=}\PY{l+m+mi}{10}\PY{p}{;} + \PY{n}{k4}\PY{p}{=}\PY{l+m+mi}{1}\PY{p}{;} + \PY{n}{m1}\PY{p}{=}\PY{l+m+mi}{1}\PY{p}{;} \PY{c}{\PYZpc{} kg} + \PY{n}{m2}\PY{p}{=}\PY{l+m+mi}{2}\PY{p}{;} + \PY{n}{m3}\PY{p}{=}\PY{l+m+mi}{3}\PY{p}{;} + \PY{n}{m4}\PY{p}{=}\PY{l+m+mi}{4}\PY{p}{;} + \PY{n}{g}\PY{p}{=}\PY{l+m+mf}{9.81}\PY{p}{;} \PY{c}{\PYZpc{} m/s\PYZca{}2} + \PY{n}{K}\PY{p}{=}\PY{p}{[}\PY{n}{k1}\PY{o}{+}\PY{n}{k2} \PY{o}{\PYZhy{}}\PY{n}{k2} \PY{l+m+mi}{0} \PY{l+m+mi}{0}\PY{p}{;} \PY{o}{\PYZhy{}}\PY{n}{k2} \PY{n}{k2}\PY{o}{+}\PY{n}{k3} \PY{o}{\PYZhy{}}\PY{n}{k3} \PY{l+m+mi}{0}\PY{p}{;} \PY{l+m+mi}{0} \PY{o}{\PYZhy{}}\PY{n}{k3} \PY{n}{k3}\PY{o}{+}\PY{n}{k4} \PY{o}{\PYZhy{}}\PY{n}{k4}\PY{p}{;} \PY{l+m+mi}{0} \PY{l+m+mi}{0} \PY{o}{\PYZhy{}}\PY{n}{k4} \PY{n}{k4}\PY{p}{]} + \PY{n}{y}\PY{p}{=}\PY{p}{[}\PY{n}{m1}\PY{o}{*}\PY{n}{g}\PY{p}{;}\PY{n}{m2}\PY{o}{*}\PY{n}{g}\PY{p}{;}\PY{n}{m3}\PY{o}{*}\PY{n}{g}\PY{p}{;}\PY{n}{m4}\PY{o}{*}\PY{n}{g}\PY{p}{]} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +K = + + 100010 -100000 0 0 + -100000 100010 -10 0 + 0 -10 11 -1 + 0 0 -1 1 + +y = + + 9.8100 + 19.6200 + 29.4300 + 39.2400 + + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}25}]:} \PY{n+nb}{cond}\PY{p}{(}\PY{n}{K}\PY{p}{,}\PY{n+nb}{inf}\PY{p}{)} + \PY{n+nb}{cond}\PY{p}{(}\PY{n}{K}\PY{p}{,}\PY{l+m+mi}{1}\PY{p}{)} + \PY{n+nb}{cond}\PY{p}{(}\PY{n}{K}\PY{p}{,}\PY{l+s}{\PYZsq{}}\PY{l+s}{fro\PYZsq{}}\PY{p}{)} + \PY{n+nb}{cond}\PY{p}{(}\PY{n}{K}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +ans = 3.2004e+05 +ans = 3.2004e+05 +ans = 2.5925e+05 +ans = 2.5293e+05 + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor}26}]:} \PY{n+nb}{e}\PY{p}{=}\PY{n+nb}{eig}\PY{p}{(}\PY{n}{K}\PY{p}{)} + \PY{n+nb}{max}\PY{p}{(}\PY{n+nb}{e}\PY{p}{)}\PY{o}{/}\PY{n+nb}{min}\PY{p}{(}\PY{n+nb}{e}\PY{p}{)} +\end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +e = + + 7.9078e-01 + 3.5881e+00 + 1.7621e+01 + 2.0001e+05 + +ans = 2.5293e+05 + + \end{Verbatim} + + \begin{Verbatim}[commandchars=\\\{\}] +{\color{incolor}In [{\color{incolor} }]:} +\end{Verbatim} + + + % Add a bibliography block to the postdoc + + + + \end{document} diff --git a/lecture_12/lecture_12_files/lecture_12_21_0.pdf b/lecture_12/lecture_12_files/lecture_12_21_0.pdf new file mode 100644 index 0000000..6480131 Binary files /dev/null and b/lecture_12/lecture_12_files/lecture_12_21_0.pdf differ diff --git a/lecture_12/lecture_12_files/lecture_12_21_0.png b/lecture_12/lecture_12_files/lecture_12_21_0.png new file mode 100644 index 0000000..2633731 Binary files /dev/null and b/lecture_12/lecture_12_files/lecture_12_21_0.png differ diff --git a/lecture_12/lecture_12_files/lecture_12_21_0.svg b/lecture_12/lecture_12_files/lecture_12_21_0.svg new file mode 100644 index 0000000..44ef608 --- /dev/null +++ b/lecture_12/lecture_12_files/lecture_12_21_0.svg @@ -0,0 +1,148 @@ + + +Gnuplot +Produced by GNUPLOT 5.0 patchlevel 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + 0.0005 + + + + + 0.001 + + + + + 0.0015 + + + + + 0.002 + + + + + 0 + + + + + 20 + + + + + 40 + + + + + 60 + + + + + 80 + + + + + 100 + + + + + + + + + + + + + inversion + + + + + inversion + + + + + + backslash + + + backslash + + + + + + multiplication + + + multiplication + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lecture_12/lecture_12_files/lecture_12_24_0.pdf b/lecture_12/lecture_12_files/lecture_12_24_0.pdf new file mode 100644 index 0000000..e2d1d9b Binary files /dev/null and b/lecture_12/lecture_12_files/lecture_12_24_0.pdf differ diff --git a/lecture_12/lecture_12_files/lecture_12_24_0.png b/lecture_12/lecture_12_files/lecture_12_24_0.png new file mode 100644 index 0000000..c8959a7 Binary files /dev/null and b/lecture_12/lecture_12_files/lecture_12_24_0.png differ diff --git a/lecture_12/lecture_12_files/lecture_12_24_0.svg b/lecture_12/lecture_12_files/lecture_12_24_0.svg new file mode 100644 index 0000000..4705883 --- /dev/null +++ b/lecture_12/lecture_12_files/lecture_12_24_0.svg @@ -0,0 +1,148 @@ + + +Gnuplot +Produced by GNUPLOT 5.0 patchlevel 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + 0.0005 + + + + + 0.001 + + + + + 0.0015 + + + + + 0.002 + + + + + 0 + + + + + 20 + + + + + 40 + + + + + 60 + + + + + 80 + + + + + 100 + + + + + + + + + + + + + inversion + + + + + inversion + + + + + + backslash + + + backslash + + + + + + multiplication + + + multiplication + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lecture_12/nohup.out b/lecture_12/nohup.out new file mode 100644 index 0000000..f0d30e1 --- /dev/null +++ b/lecture_12/nohup.out @@ -0,0 +1,2 @@ + +(evince:8926): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to allocate widget with width -71 and height 20 diff --git a/lecture_12/octave-workspace b/lecture_12/octave-workspace new file mode 100644 index 0000000..41ef164 Binary files /dev/null and b/lecture_12/octave-workspace differ diff --git a/lecture_13/.ipynb_checkpoints/lecture_12-checkpoint.ipynb b/lecture_13/.ipynb_checkpoints/lecture_12-checkpoint.ipynb new file mode 100644 index 0000000..6a5dc68 --- /dev/null +++ b/lecture_13/.ipynb_checkpoints/lecture_12-checkpoint.ipynb @@ -0,0 +1,737 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "setdefaults" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## My question from last class \n", + "\n", + "\n", + "## Your questions from last class\n", + "\n", + "1. Need more linear algebra review\n", + " \n", + " -We will keep doing Linear Algebra, try the practice problems in 'linear_algebra'\n", + "\n", + "2. How do I do HW3? \n", + " \n", + " -demo today\n", + "\n", + "3. For hw4 is the spring constant (K) suppose to be given? \n", + " \n", + " -yes, its 30 N/m\n", + " \n", + "4. Deapool or Joker?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# LU Decomposition\n", + "### efficient storage of matrices for solutions\n", + "\n", + "Considering the same solution set:\n", + "\n", + "$y=Ax$\n", + "\n", + "Assume that we can perform Gauss elimination and achieve this formula:\n", + "\n", + "$Ux=d$ \n", + "\n", + "Where, $U$ is an upper triangular matrix that we derived from Gauss elimination and $d$ is the set of dependent variables after Gauss elimination. \n", + "\n", + "Assume there is a lower triangular matrix, $L$, with ones on the diagonal and same dimensions of $U$ and the following is true:\n", + "\n", + "$L(Ux-d)=Ax-y=0$\n", + "\n", + "Now, $Ax=LUx$, so $A=LU$, and $y=Ld$.\n", + "\n", + "$2x_{1}+x_{2}=1$\n", + "\n", + "$x_{1}+3x_{2}=1$\n", + "\n", + "\n", + "$\\left[ \\begin{array}{cc}\n", + "2 & 1 \\\\\n", + "1 & 3 \\end{array} \\right]\n", + "\\left[\\begin{array}{c} \n", + "x_{1} \\\\ \n", + "x_{2} \\end{array}\\right]=\n", + "\\left[\\begin{array}{c} \n", + "1 \\\\\n", + "1\\end{array}\\right]$\n", + "\n", + "f21=0.5\n", + "\n", + "A(2,1)=1-1 = 0 \n", + "\n", + "A(2,2)=3-0.5=2.5\n", + "\n", + "y(2)=1-0.5=0.5\n", + "\n", + "$L(Ux-d)=\n", + "\\left[ \\begin{array}{cc}\n", + "1 & 0 \\\\\n", + "0.5 & 1 \\end{array} \\right]\n", + "\\left(\\left[ \\begin{array}{cc}\n", + "2 & 1 \\\\\n", + "0 & 2.5 \\end{array} \\right]\n", + "\\left[\\begin{array}{c} \n", + "x_{1} \\\\ \n", + "x_{2} \\end{array}\\right]-\n", + "\\left[\\begin{array}{c} \n", + "1 \\\\\n", + "0.5\\end{array}\\right]\\right)=0$\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A =\n", + "\n", + " 2 1\n", + " 1 3\n", + "\n", + "L =\n", + "\n", + " 1.00000 0.00000\n", + " 0.50000 1.00000\n", + "\n", + "U =\n", + "\n", + " 2.00000 1.00000\n", + " 0.00000 2.50000\n", + "\n", + "ans =\n", + "\n", + " 2 1\n", + " 1 3\n", + "\n", + "d =\n", + "\n", + " 1.00000\n", + " 0.50000\n", + "\n", + "y =\n", + "\n", + " 1\n", + " 1\n", + "\n" + ] + } + ], + "source": [ + "A=[2,1;1,3]\n", + "L=[1,0;0.5,1]\n", + "U=[2,1;0,2.5]\n", + "L*U\n", + "\n", + "d=[1;0.5]\n", + "y=L*d" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans = 5.0000\n", + "ans = 1\n", + "ans = 5\n", + "ans = 5\n", + "ans = 5.0000\n" + ] + } + ], + "source": [ + "% what is the determinant of L, U and A?\n", + "\n", + "det(A)\n", + "det(L)\n", + "det(U)\n", + "det(L)*det(U)\n", + "det(L*U)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Pivoting for LU factorization\n", + "\n", + "LU factorization uses the same method as Gauss elimination so it is also necessary to perform partial pivoting when creating the lower and upper triangular matrices. \n", + "\n", + "Matlab and Octave use pivoting in the command \n", + "\n", + "`[L,U,P]=lu(A)`\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'lu' is a built-in function from the file libinterp/corefcn/lu.cc\n", + "\n", + " -- Built-in Function: [L, U] = lu (A)\n", + " -- Built-in Function: [L, U, P] = lu (A)\n", + " -- Built-in Function: [L, U, P, Q] = lu (S)\n", + " -- Built-in Function: [L, U, P, Q, R] = lu (S)\n", + " -- Built-in Function: [...] = lu (S, THRES)\n", + " -- Built-in Function: Y = lu (...)\n", + " -- Built-in Function: [...] = lu (..., \"vector\")\n", + " Compute the LU decomposition of A.\n", + "\n", + " If A is full subroutines from LAPACK are used and if A is sparse\n", + " then UMFPACK is used.\n", + "\n", + " The result is returned in a permuted form, according to the\n", + " optional return value P. For example, given the matrix 'a = [1, 2;\n", + " 3, 4]',\n", + "\n", + " [l, u, p] = lu (A)\n", + "\n", + " returns\n", + "\n", + " l =\n", + "\n", + " 1.00000 0.00000\n", + " 0.33333 1.00000\n", + "\n", + " u =\n", + "\n", + " 3.00000 4.00000\n", + " 0.00000 0.66667\n", + "\n", + " p =\n", + "\n", + " 0 1\n", + " 1 0\n", + "\n", + " The matrix is not required to be square.\n", + "\n", + " When called with two or three output arguments and a spare input\n", + " matrix, 'lu' does not attempt to perform sparsity preserving column\n", + " permutations. Called with a fourth output argument, the sparsity\n", + " preserving column transformation Q is returned, such that 'P * A *\n", + " Q = L * U'.\n", + "\n", + " Called with a fifth output argument and a sparse input matrix, 'lu'\n", + " attempts to use a scaling factor R on the input matrix such that 'P\n", + " * (R \\ A) * Q = L * U'. This typically leads to a sparser and more\n", + " stable factorization.\n", + "\n", + " An additional input argument THRES, that defines the pivoting\n", + " threshold can be given. THRES can be a scalar, in which case it\n", + " defines the UMFPACK pivoting tolerance for both symmetric and\n", + " unsymmetric cases. If THRES is a 2-element vector, then the first\n", + " element defines the pivoting tolerance for the unsymmetric UMFPACK\n", + " pivoting strategy and the second for the symmetric strategy. By\n", + " default, the values defined by 'spparms' are used ([0.1, 0.001]).\n", + "\n", + " Given the string argument \"vector\", 'lu' returns the values of P\n", + " and Q as vector values, such that for full matrix, 'A (P,:) = L *\n", + " U', and 'R(P,:) * A (:, Q) = L * U'.\n", + "\n", + " With two output arguments, returns the permuted forms of the upper\n", + " and lower triangular matrices, such that 'A = L * U'. With one\n", + " output argument Y, then the matrix returned by the LAPACK routines\n", + " is returned. If the input matrix is sparse then the matrix L is\n", + " embedded into U to give a return value similar to the full case.\n", + " For both full and sparse matrices, 'lu' loses the permutation\n", + " information.\n", + "\n", + " See also: luupdate, ilu, chol, hess, qr, qz, schur, svd.\n", + "\n", + "Additional help for built-in functions and operators is\n", + "available in the online version of the manual. Use the command\n", + "'doc ' to search the manual index.\n", + "\n", + "Help and information about Octave is also available on the WWW\n", + "at http://www.octave.org and via the help@octave.org\n", + "mailing list.\n" + ] + } + ], + "source": [ + "help lu" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.0005\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.001\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.0015\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.002\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t20\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t40\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t60\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t80\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t100\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\tLU decomp\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\tLU decomp\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tOctave \\\\\n", + "\n", + "\t\n", + "\t\tOctave \\\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "% time LU solution vs backslash\n", + "t_lu=zeros(100,1);\n", + "t_bs=zeros(100,1);\n", + "for N=1:100\n", + " A=rand(N,N);\n", + " y=rand(N,1);\n", + " [L,U,P]=lu(A);\n", + "\n", + " tic; d=inv(L)*y; x=inv(U)*d; t_lu(N)=toc;\n", + "\n", + " tic; x=inv(A)*y; t_bs(N)=toc;\n", + "end\n", + "plot([1:100],t_lu,[1:100],t_bs) \n", + "legend('LU decomp','Octave \\\\')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Consider the problem again from the intro to Linear Algebra, 4 masses are connected in series to 4 springs with K=10 N/m. What are the final positions of the masses? \n", + "\n", + "![Springs-masses](../lecture_09/mass_springs.svg)\n", + "\n", + "The masses haves the following amounts, 1, 2, 3, and 4 kg for masses 1-4. Using a FBD for each mass:\n", + "\n", + "$m_{1}g+k(x_{2}-x_{1})-kx_{1}=0$\n", + "\n", + "$m_{2}g+k(x_{3}-x_{2})-k(x_{2}-x_{1})=0$\n", + "\n", + "$m_{3}g+k(x_{4}-x_{3})-k(x_{3}-x_{2})=0$\n", + "\n", + "$m_{4}g-k(x_{4}-x_{3})=0$\n", + "\n", + "in matrix form:\n", + "\n", + "$\\left[ \\begin{array}{cccc}\n", + "2k & -k & 0 & 0 \\\\\n", + "-k & 2k & -k & 0 \\\\\n", + "0 & -k & 2k & -k \\\\\n", + "0 & 0 & -k & k \\end{array} \\right]\n", + "\\left[ \\begin{array}{c}\n", + "x_{1} \\\\\n", + "x_{2} \\\\\n", + "x_{3} \\\\\n", + "x_{4} \\end{array} \\right]=\n", + "\\left[ \\begin{array}{c}\n", + "m_{1}g \\\\\n", + "m_{2}g \\\\\n", + "m_{3}g \\\\\n", + "m_{4}g \\end{array} \\right]$" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "K =\n", + "\n", + " 20 -10 0 0\n", + " -10 20 -10 0\n", + " 0 -10 20 -10\n", + " 0 0 -10 10\n", + "\n", + "y =\n", + "\n", + " 9.8100\n", + " 19.6200\n", + " 29.4300\n", + " 39.2400\n", + "\n" + ] + } + ], + "source": [ + "k=10; % N/m\n", + "m1=1; % kg\n", + "m2=2;\n", + "m3=3;\n", + "m4=4;\n", + "g=9.81; % m/s^2\n", + "K=[2*k -k 0 0; -k 2*k -k 0; 0 -k 2*k -k; 0 0 -k k]\n", + "y=[m1*g;m2*g;m3*g;m4*g]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This matrix, K, is symmetric. \n", + "\n", + "`K(i,j)==K(j,i)`\n", + "\n", + "Now we can use,\n", + "\n", + "## Cholesky Factorization\n", + "\n", + "We can decompose the matrix, K into two matrices, $U$ and $U^{T}$, where\n", + "\n", + "$K=U^{T}U$\n", + "\n", + "each of the components of U can be calculated with the following equations:\n", + "\n", + "$u_{ii}=\\sqrt{a_{ii}-\\sum_{k=1}^{i-1}u_{ki}^{2}}$\n", + "\n", + "$u_{ij}=\\frac{a_{ij}-\\sum_{k=1}^{i-1}u_{ki}u_{kj}}{u_{ii}}$\n", + "\n", + "so for K" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "K =\n", + "\n", + " 20 -10 0 0\n", + " -10 20 -10 0\n", + " 0 -10 20 -10\n", + " 0 0 -10 10\n", + "\n" + ] + } + ], + "source": [ + "K" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "u11 = 4.4721\n", + "u12 = -2.2361\n", + "u13 = 0\n", + "u14 = 0\n", + "u22 = 3.8730\n", + "u23 = -2.5820\n", + "u24 = 0\n", + "u33 = 3.6515\n", + "u34 = -2.7386\n", + "u44 = 1.5811\n", + "U =\n", + "\n", + " 4.47214 -2.23607 0.00000 0.00000\n", + " 0.00000 3.87298 -2.58199 0.00000\n", + " 0.00000 0.00000 3.65148 -2.73861\n", + " 0.00000 0.00000 0.00000 1.58114\n", + "\n" + ] + } + ], + "source": [ + "u11=sqrt(K(1,1))\n", + "u12=(K(1,2))/u11\n", + "u13=(K(1,3))/u11\n", + "u14=(K(1,4))/u11\n", + "u22=sqrt(K(2,2)-u12^2)\n", + "u23=(K(2,3)-u12*u13)/u22\n", + "u24=(K(2,4)-u12*u14)/u22\n", + "u33=sqrt(K(3,3)-u13^2-u23^2)\n", + "u34=(K(3,4)-u13*u14-u23*u24)/u33\n", + "u44=sqrt(K(4,4)-u14^2-u24^2-u34^2)\n", + "U=[u11,u12,u13,u14;0,u22,u23,u24;0,0,u33,u34;0,0,0,u44]" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ans =\n", + "\n", + " 1 1 1 1\n", + " 1 1 1 1\n", + " 1 1 1 1\n", + " 1 1 1 1\n", + "\n" + ] + } + ], + "source": [ + "(U'*U)'==U'*U" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "average time spent for Cholesky factored solution = 1.465964e-05+/-9.806001e-06\n", + "average time spent for backslash solution = 1.555967e-05+/-1.048561e-05\n" + ] + } + ], + "source": [ + "% time solution for Cholesky vs backslash\n", + "t_chol=zeros(1000,1);\n", + "t_bs=zeros(1000,1);\n", + "for i=1:1000\n", + " tic; d=U'*y; x=U\\d; t_chol(i)=toc;\n", + " tic; x=K\\y; t_bs(i)=toc;\n", + "end\n", + "fprintf('average time spent for Cholesky factored solution = %e+/-%e',mean(t_chol),std(t_chol))\n", + "\n", + "fprintf('average time spent for backslash solution = %e+/-%e',mean(t_bs),std(t_bs))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Octave", + "language": "octave", + "name": "octave" + }, + "language_info": { + "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": "octave", + "version": "0.19.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/linear_algebra/LU_suggested.html b/linear_algebra/LU_suggested.html new file mode 100644 index 0000000..f1998e1 --- /dev/null +++ b/linear_algebra/LU_suggested.html @@ -0,0 +1,39 @@ + + + + + + + + + + + +

Linear Algebra Review

+

(Gauss Elimination) Suggested problems

+

No due date

+
    +
  1. Determine the lower (L) and upper (U) triangular matrices with LU-decomposition for the following matrices:

    +
      +
    1. \(A=\left[ \begin{array}{cc} 1 & 3 \\ 2 & 1 \end{array} \right]\)

    2. +
    3. \(A=\left[ \begin{array}{cc} 1 & 1 \\ 2 & 3 \end{array} \right]\)

    4. +
    5. \(A=\left[ \begin{array}{cc} 1 & 1 \\ 2 & -2 \end{array} \right]\)

    6. +
    7. \(A=\left[ \begin{array}{ccc} 1 & 3 & 1 \\ -4 & -9 & 2 \\ 0 & 3 & 6\end{array} \right]\)

    8. +
    9. \(A=\left[ \begin{array}{ccc} 1 & 3 & 1 \\ -4 & -9 & 2 \\ 0 & 3 & 6\end{array} \right]\)

    10. +
    11. \(A=\left[ \begin{array}{ccc} 1 & 3 & -5 \\ 1 & 4 & -8 \\ -3 & -7 & 9\end{array} \right]\)

    12. +
    13. \(A=\left[ \begin{array}{ccc} 1 & 2 & -1 \\ 2 & 2 & 2 \\ 1 & -1 & 2\end{array} \right]\)

    14. +
  2. +
  3. Calculate the determinant of A from 1a-g.

  4. +
  5. Determine the Cholesky factorization, C, of the following matrices, where

    +

    \(C_{ii}=\sqrt{a_{ii}-\sum_{k=1}^{i-1}C_{ki}^{2}}\)

    +

    \(C_{ij}=\frac{a_{ij}-\sum_{k=1}^{i-1}C_{ki}C_{kj}}{C_{ii}}\).

    +
      +
    1. A=\(\left[ \begin{array}{cc} 3 & 2 \\ 2 & 1 \end{array} \right]\)

    2. +
    3. A=\(\left[ \begin{array}{cc} 10 & 5 \\ 5 & 20 \end{array} \right]\)

    4. +
    5. A=\(\left[ \begin{array}{ccc} 10 & -10 & 20 \\ -10 & 20 & 10 \\ 20 & 10 & 30 \end{array} \right]\)

    6. +
    7. A=\(\left[ \begin{array}{cccc} 21 & -1 & 0 & 0 \\ -1 & 21 & -1 & 0 \\ 0 & -1 & 21 & -1 \\ 0 & 0 & -1 & 1 \end{array} \right]\)

    8. +
  6. +
  7. Verify that \(C^{T}C=A\) for 3a-d

  8. +
+ + diff --git a/linear_algebra/LU_suggested.md b/linear_algebra/LU_suggested.md new file mode 100644 index 0000000..f809813 --- /dev/null +++ b/linear_algebra/LU_suggested.md @@ -0,0 +1,68 @@ +# Linear Algebra Review +## (Gauss Elimination) Suggested problems +### No due date + +1. Determine the lower (L) and upper (U) triangular matrices with LU-decomposition for the +following matrices: + + a. $A=\left[ \begin{array}{cc} + 1 & 3 \\ + 2 & 1 \end{array} \right]$ + + a. $A=\left[ \begin{array}{cc} + 1 & 1 \\ + 2 & 3 \end{array} \right]$ + + a. $A=\left[ \begin{array}{cc} + 1 & 1 \\ + 2 & -2 \end{array} \right]$ + + b. $A=\left[ \begin{array}{ccc} + 1 & 3 & 1 \\ + -4 & -9 & 2 \\ + 0 & 3 & 6\end{array} \right]$ + + c. $A=\left[ \begin{array}{ccc} + 1 & 3 & 1 \\ + -4 & -9 & 2 \\ + 0 & 3 & 6\end{array} \right]$ + + d. $A=\left[ \begin{array}{ccc} + 1 & 3 & -5 \\ + 1 & 4 & -8 \\ + -3 & -7 & 9\end{array} \right]$ + + d. $A=\left[ \begin{array}{ccc} + 1 & 2 & -1 \\ + 2 & 2 & 2 \\ + 1 & -1 & 2\end{array} \right]$ + +2. Calculate the determinant of A from 1a-g. + +3. Determine the Cholesky factorization, C, of the following matrices, where + + $C_{ii}=\sqrt{a_{ii}-\sum_{k=1}^{i-1}C_{ki}^{2}}$ + + $C_{ij}=\frac{a_{ij}-\sum_{k=1}^{i-1}C_{ki}C_{kj}}{C_{ii}}$. + + a. A=$\left[ \begin{array}{cc} + 3 & 2 \\ + 2 & 1 \end{array} \right]$ + + a. A=$\left[ \begin{array}{cc} + 10 & 5 \\ + 5 & 20 \end{array} \right]$ + + a. A=$\left[ \begin{array}{ccc} + 10 & -10 & 20 \\ + -10 & 20 & 10 \\ + 20 & 10 & 30 \end{array} \right]$ + + a. A=$\left[ \begin{array}{cccc} + 21 & -1 & 0 & 0 \\ + -1 & 21 & -1 & 0 \\ + 0 & -1 & 21 & -1 \\ + 0 & 0 & -1 & 1 \end{array} \right]$ + +4. Verify that $C^{T}C=A$ for 3a-d + diff --git a/linear_algebra/gauss_suggested.md b/linear_algebra/gauss_suggested.md new file mode 100644 index 0000000..6b1f6b6 --- /dev/null +++ b/linear_algebra/gauss_suggested.md @@ -0,0 +1,71 @@ +# Linear Algebra Review +## (Gauss Elimination) Suggested problems +### No due date + +1. Solve for x when Ax=b for the following problems: + + a. $A=\left[ \begin{array}{cc} + 1 & 3 \\ + 2 & 1 \end{array} \right] + b= + \left[\begin{array}{c} + 1 \\ + 1\end{array}\right]$ + + a. $A=\left[ \begin{array}{cc} + 1 & 1 \\ + 2 & 3 \end{array} \right] + b= + \left[\begin{array}{c} + 3 \\ + 4\end{array}\right]$ + + a. $A=\left[ \begin{array}{cc} + 1 & 1 \\ + 2 & -2 \end{array} \right] + b= + \left[\begin{array}{c} + 4 \\ + 2\end{array}\right]$ + + b. $A=\left[ \begin{array}{ccc} + 1 & 3 & 1 \\ + -4 & -9 & 2 \\ + 0 & 3 & 6\end{array} \right] + b= + \left[\begin{array}{c} + 0 \\ + 0 \\ + 0\end{array}\right]$ + + c. $A=\left[ \begin{array}{ccc} + 1 & 3 & 1 \\ + -4 & -9 & 2 \\ + 0 & 3 & 6\end{array} \right] + b= + \left[\begin{array}{c} + 1 \\ + -1 \\ + -3\end{array}\right]$ + + d. $A=\left[ \begin{array}{ccc} + 1 & 3 & -5 \\ + 1 & 4 & -8 \\ + -3 & -7 & 9\end{array} \right] + b= + \left[\begin{array}{c} + 1 \\ + -1 \\ + -3\end{array}\right]$ + + d. $A=\left[ \begin{array}{ccc} + 1 & 2 & -1 \\ + 2 & 2 & 2 \\ + 1 & -1 & 2\end{array} \right] + b= + \left[\begin{array}{c} + 2 \\ + 12 \\ + 5\end{array}\right]$ + +2. Calculate the determinant of A from 1a-g. diff --git a/linear_algebra/gauss_suggested.pdf b/linear_algebra/gauss_suggested.pdf new file mode 100644 index 0000000..a78b277 Binary files /dev/null and b/linear_algebra/gauss_suggested.pdf differ