Recall - damtp.cam.ac.uk · Computational Projects Lecture 6: Improving LU decomposition Dr Rob...

5
Computational Projects Lecture 6: Improving LU decomposition http://www.maths.cam.ac.uk/undergrad/catam/part-ia-lectures Dr Rob Jack, DAMTP 1 Recall... Suppose we want to solve Ax = b with A = 0 1 1 0 , b = 2 3 We coded up a method for solving Ax = b by writing A = LU where L and U are triangular matrices Clearly x = 3 2 but our method can’t solve this, because it is not possible to write A = LU Can we implement a method that works for all non-singular matrices? General idea: we started with a simple algorithm, now we (gradually) improve it 2 Beyond LU The solution to our problem is to write A = P -1 LU where P is a permutation matrix This means that PA = LU , where PA is the same as A, but with the rows in a different order. A permutation matrix is a square matrix where each row and each column contain exactly one ’1’ and all other entries are zero. They are easy to invert because P -1 = P T . If A is non-singular then the decomposition A = P -1 LU always exists 3 Beyond LU If we can obtain A = P -1 LU then we can write Ax = b as LUx = Pb, which is easy to solve by our original method. Example: A = 0 u v 1 has no LU decomposition, but PA = 0 1 1 0 0 u v 1 = v 1 0 u has a (trivial) LU decomposition where L is the identity This is called pivoting, but how do we find a suitable P ? 4

Transcript of Recall - damtp.cam.ac.uk · Computational Projects Lecture 6: Improving LU decomposition Dr Rob...

Page 1: Recall - damtp.cam.ac.uk · Computational Projects Lecture 6: Improving LU decomposition  Dr Rob Jack, DAMTP 1 Recall...

Computational Projects

Lecture 6: Improving LU decomposition

http://www.maths.cam.ac.uk/undergrad/catam/part-ia-lectures

Dr Rob Jack, DAMTP

1

Recall...

Suppose we want to solve Ax = b with

A =

✓0 11 0

◆, b =

✓23

<latexit sha1_base64="zs19rGzNa4LEGdGVqtLqaFDX5jU=">AAADCnicbVJNb9MwGHbC1wgf6+CIhCxWJg6oSgZoXIY29cJxCLpOqqvKdpzUahx7trO2svIDkDjBaTd+AzfElT/BH+GGhNMWiW575VhvnsePX/t5TVTBjY3jX0F47fqNm7c2bkd37t67v9naenBsZKUp61FZSH1CsGEFL1nPcluwE6UZFqRgfTLpNnz/jGnDZfnBzhUbCpyXPOMUWw+NWn+QwprImUvizisqahchk2VY8GIOI1SyKZVC4DJ1qNutHRLYjikuXLeu19l+f8US4voN6bc1E65eKhshjfOcpZrnYxu9r5SShsGpH7i00EpoZHHGYPtwtk/acMrtOGq3o0O4DxFhOS+d8vtqPqthDHdgAhHy047/QcxX/kc+h+j0tMIpJFcIdxvRi3WBL1KPWttxJ14EvJwkq2T74PH5+VcAwNGo9RulklaClZYW2JhBEis7dFhbTgvmr10ZpjCd4JwNfFpiwczQLdpUw6ceSWEmtf/8zRfo/wqHhTFzQfzKxklzkWvAq7hBZbPXQ8dLVVlW0mWhrCoab5uew5RrRq3vaMox1dyfFdIx1pha/zLWqoyZb4Wt4RpIRGNUctGWy8nxbsc/o+Sdd+wNWMYGeASegGcgAXvgALwFR6AHaECDj8Hn4Ev4KfwWfg9/LJeGwUrzEKxF+PMvQ4P4PQ==</latexit><latexit sha1_base64="oVE01uu1XgHhZdeHcwCvA+Zr6cY=">AAADCnicbVJNb9MwGHbC1whfBY5IyGJl4oCqZIDgMrSpF45D0HVSXVW24yRW7cSznbWVlR+AxAlO8DO4Ia78Cf4INySctkh02yvHevM8fvzaz2uiBDc2jn8F4aXLV65e27oe3bh56/adzt17R6aqNWUDWolKHxNsmOAlG1huBTtWmmFJBBuSab/lh6dMG16V7+1CsbHEeckzTrH10KTzBymsSTV3Sdx7QWXjImSyDEsuFjBCJZvRSkpcpg71+41DEtuCYuH6TbPJDodrlhA3bEm/rZly9VzZCGmc5yzVPC9s9K5WqjIMzvzApYW2gqYSpwx2D+Z7pAtn3BZRtxsdwD2ICMt56ZTfV/N5A2O4AxOIkJ92/A9ivvI/8ilEJyc1TiG5QLjbip5tCnyRZtLZjnvxMuD5JFkn2/sPv7Tx9XDS+Y3SitaSlZYKbMwoiZUdO6wtp4L5a9eGKUynOGcjn5ZYMjN2yzY18LFHUphV2n/+5kv0f4XD0piFJH5l66Q5y7XgRdyottmrseOlqi0r6apQVovW27bnMOWaUes7mnJMNfdnhbTAGlPrX8ZGlYL5VtgGboBEtkYlZ205nxzt9vwzSt56x16DVWyBB+AReAIS8BLsgzfgEAwADWjwIfgUfA4/ht/C7+GP1dIwWGvug40If/4F4HT6Ag==</latexit><latexit sha1_base64="oVE01uu1XgHhZdeHcwCvA+Zr6cY=">AAADCnicbVJNb9MwGHbC1whfBY5IyGJl4oCqZIDgMrSpF45D0HVSXVW24yRW7cSznbWVlR+AxAlO8DO4Ia78Cf4INySctkh02yvHevM8fvzaz2uiBDc2jn8F4aXLV65e27oe3bh56/adzt17R6aqNWUDWolKHxNsmOAlG1huBTtWmmFJBBuSab/lh6dMG16V7+1CsbHEeckzTrH10KTzBymsSTV3Sdx7QWXjImSyDEsuFjBCJZvRSkpcpg71+41DEtuCYuH6TbPJDodrlhA3bEm/rZly9VzZCGmc5yzVPC9s9K5WqjIMzvzApYW2gqYSpwx2D+Z7pAtn3BZRtxsdwD2ICMt56ZTfV/N5A2O4AxOIkJ92/A9ivvI/8ilEJyc1TiG5QLjbip5tCnyRZtLZjnvxMuD5JFkn2/sPv7Tx9XDS+Y3SitaSlZYKbMwoiZUdO6wtp4L5a9eGKUynOGcjn5ZYMjN2yzY18LFHUphV2n/+5kv0f4XD0piFJH5l66Q5y7XgRdyottmrseOlqi0r6apQVovW27bnMOWaUes7mnJMNfdnhbTAGlPrX8ZGlYL5VtgGboBEtkYlZ205nxzt9vwzSt56x16DVWyBB+AReAIS8BLsgzfgEAwADWjwIfgUfA4/ht/C7+GP1dIwWGvug40If/4F4HT6Ag==</latexit><latexit sha1_base64="i8gckUFxVcQiHRY+8S7Qb+Elzrk=">AAADCnicbVLLbhMxFPUMrzI8GmDJxiKhYoGqmQKCTVGrbFgWQZpKcRTZHs/Eil+1PU2i0XwAEiv4E3aILT/Bj7BDwpMGibS98lh3zvHxtc81MYI7n6a/ovja9Rs3b23dTu7cvXd/u/Pg4bHTlaVsQLXQ9oRgxwRXbOC5F+zEWIYlEWxIZv2WH54x67hWH/3SsLHEpeIFp9gHaNL5gwy2RC/qLN19RWVTJ8gVBZZcLGGCFJtTLSVWeY36/aZGEvspxaLuN80mOxyuWULqYUuGbd2Mm5fGJ8jismS55eXUJx8qY7RjcB4GVh56DZ0WZwz2Dhf7pAfn3E+TXi85hPsQEVZyVZuwr+WLBqZwB2YQoTDthB/EQuV/5HOITk8rnENyhXCvFb3YFIQizaTTTXfTVcDLSbZOumAdR5POb5RrWkmmPBXYuVGWGj+usfWcChauXTlmMJ3hko1CqrBkblyv2tTApwHJYaFt+MLNV+j/ihpL55aShJWtk+4i14JXcaPKF2/GNVem8kzR80JFJVpv257DnFtGfehozjG1PJwV0im2mPrwMjaqTFlohW/gBkhka1R20ZbLyfHebnhG2fu0e/B2bdkWeAyegGcgA6/BAXgHjsAA0IhGn6Iv0df4c/wt/h7/OF8aR2vNI7AR8c+/APH2DQ==</latexit>

We coded up a method for solving Ax = b by writing A = LU where Land U are triangular matrices

<latexit sha1_base64="Yw1j1dNmJEUMEM3r1D4lLLWmt7I=">AAAC33icbVE9j9NAELXN1xG+ApQ0K2Ikqsg+IXEFJx1KQ3HFIZHzSXGIxuuxvcp+WLvr5CLLNR2i5W/R8UeoWScpyB1TvX1vZp/mTVZzZmwU/faDO3fv3X9w9HDw6PGTp8+Gz19cGtVoilOquNJXGRjkTOLUMsvxqtYIIuOYZMtJrycr1IYp+cVuapwLKCUrGAXrqMXwV1qDztR1G8dUdO0gNUUBgvENGaQS11QJATJv08mka1MBtqLA20nXHapJslezrE160X1qlqx+V9tBqqEsMdesrOwgQUJVjjlpagJEoK1UTgqliVF8xWRJwo/Xp1lIsg1Za2Z3zOn5NCTrCjWS8DwkzpGEjgH3tpqBLBsOmjh7zSiabjEcReNoW+Q2iPdg5O3rYjH8k+aKNgKlpRyMmcVRbectaMsoR7dNY7AGuoQSZw5KEGjm7Tb7jrxxzG6FQklLtuy/Ey0IYzYic519QOam1pP/02aNLU7mLZN1Y1HSnVHRcGIV6Q9JcqaRWneonAHts6KEVqCBWnfuA5cK+QptRw7ITPRBxTdjuQ0uj8dxNI4/H4/OPuwjO/Jeea+9t17svffOvE/ehTf1qH/if/VLvwog+BZ8D37sWgN/P/PSO6jg51/mHOb7</latexit><latexit sha1_base64="Yw1j1dNmJEUMEM3r1D4lLLWmt7I=">AAAC33icbVE9j9NAELXN1xG+ApQ0K2Ikqsg+IXEFJx1KQ3HFIZHzSXGIxuuxvcp+WLvr5CLLNR2i5W/R8UeoWScpyB1TvX1vZp/mTVZzZmwU/faDO3fv3X9w9HDw6PGTp8+Gz19cGtVoilOquNJXGRjkTOLUMsvxqtYIIuOYZMtJrycr1IYp+cVuapwLKCUrGAXrqMXwV1qDztR1G8dUdO0gNUUBgvENGaQS11QJATJv08mka1MBtqLA20nXHapJslezrE160X1qlqx+V9tBqqEsMdesrOwgQUJVjjlpagJEoK1UTgqliVF8xWRJwo/Xp1lIsg1Za2Z3zOn5NCTrCjWS8DwkzpGEjgH3tpqBLBsOmjh7zSiabjEcReNoW+Q2iPdg5O3rYjH8k+aKNgKlpRyMmcVRbectaMsoR7dNY7AGuoQSZw5KEGjm7Tb7jrxxzG6FQklLtuy/Ey0IYzYic519QOam1pP/02aNLU7mLZN1Y1HSnVHRcGIV6Q9JcqaRWneonAHts6KEVqCBWnfuA5cK+QptRw7ITPRBxTdjuQ0uj8dxNI4/H4/OPuwjO/Jeea+9t17svffOvE/ehTf1qH/if/VLvwog+BZ8D37sWgN/P/PSO6jg51/mHOb7</latexit><latexit sha1_base64="Yw1j1dNmJEUMEM3r1D4lLLWmt7I=">AAAC33icbVE9j9NAELXN1xG+ApQ0K2Ikqsg+IXEFJx1KQ3HFIZHzSXGIxuuxvcp+WLvr5CLLNR2i5W/R8UeoWScpyB1TvX1vZp/mTVZzZmwU/faDO3fv3X9w9HDw6PGTp8+Gz19cGtVoilOquNJXGRjkTOLUMsvxqtYIIuOYZMtJrycr1IYp+cVuapwLKCUrGAXrqMXwV1qDztR1G8dUdO0gNUUBgvENGaQS11QJATJv08mka1MBtqLA20nXHapJslezrE160X1qlqx+V9tBqqEsMdesrOwgQUJVjjlpagJEoK1UTgqliVF8xWRJwo/Xp1lIsg1Za2Z3zOn5NCTrCjWS8DwkzpGEjgH3tpqBLBsOmjh7zSiabjEcReNoW+Q2iPdg5O3rYjH8k+aKNgKlpRyMmcVRbectaMsoR7dNY7AGuoQSZw5KEGjm7Tb7jrxxzG6FQklLtuy/Ey0IYzYic519QOam1pP/02aNLU7mLZN1Y1HSnVHRcGIV6Q9JcqaRWneonAHts6KEVqCBWnfuA5cK+QptRw7ITPRBxTdjuQ0uj8dxNI4/H4/OPuwjO/Jeea+9t17svffOvE/ehTf1qH/if/VLvwog+BZ8D37sWgN/P/PSO6jg51/mHOb7</latexit><latexit sha1_base64="Yw1j1dNmJEUMEM3r1D4lLLWmt7I=">AAAC33icbVE9j9NAELXN1xG+ApQ0K2Ikqsg+IXEFJx1KQ3HFIZHzSXGIxuuxvcp+WLvr5CLLNR2i5W/R8UeoWScpyB1TvX1vZp/mTVZzZmwU/faDO3fv3X9w9HDw6PGTp8+Gz19cGtVoilOquNJXGRjkTOLUMsvxqtYIIuOYZMtJrycr1IYp+cVuapwLKCUrGAXrqMXwV1qDztR1G8dUdO0gNUUBgvENGaQS11QJATJv08mka1MBtqLA20nXHapJslezrE160X1qlqx+V9tBqqEsMdesrOwgQUJVjjlpagJEoK1UTgqliVF8xWRJwo/Xp1lIsg1Za2Z3zOn5NCTrCjWS8DwkzpGEjgH3tpqBLBsOmjh7zSiabjEcReNoW+Q2iPdg5O3rYjH8k+aKNgKlpRyMmcVRbectaMsoR7dNY7AGuoQSZw5KEGjm7Tb7jrxxzG6FQklLtuy/Ey0IYzYic519QOam1pP/02aNLU7mLZN1Y1HSnVHRcGIV6Q9JcqaRWneonAHts6KEVqCBWnfuA5cK+QptRw7ITPRBxTdjuQ0uj8dxNI4/H4/OPuwjO/Jeea+9t17svffOvE/ehTf1qH/if/VLvwog+BZ8D37sWgN/P/PSO6jg51/mHOb7</latexit>

Clearly x =

✓32

◆but our method can’t solve this,

because it is not possible to write A = LU<latexit sha1_base64="63BwA9J59tz6lJfyr2sAQ7eQs2Q=">AAADAnicbVI9bxNBEN07vsLxEQMFBc2IGEGBIjuAoAkKckNBESQcR/JZ1t7e+Lzy7e5pdy6xdboCiQr+CR2i5Y/wJ9JBzZ5tJJww0kqj9+ZD780mRS4ddTo/g/DS5StXr21dj27cvHV7u3Xn7pEzpRXYFyY39jjhDnOpsU+ScjwuLHKV5DhIZr2GH5ygddLoD7QocKR4puVECk4eGrd+xQW3iZlX3c7uC6HqKordZMKVzBcQxRpPhVGK67SKe726ihWnqeB51avrTXYwWLNJUg0a0o91M1k8LyiKLc8yTK3MphT1cuS2Gd6O5rAPcYKZ1FXhW62c1/AM4hj2IEY/9C/oS5OSwEsGhTQ1KQiuHxM4k58g0FS6p74rSlDw0iFIAulAG4LCOCe9E0AGTq0khPab/Xf9dj1u7XR2O8uAi0l3newc3D87A8bY4bj1O06NKBVqEjl3btjtFDSquCUpcvRy/eKCixnPcOhTzRW6UbU8Tw2PPJLCxFj/NMES/bej4sq5hUp8ZeOgO8814P+4YUmTV6NK6qIk1GK1aFLmjdzm1pBKi4K82ankwuuXAsSUWy7I/4iNLVP0VlING2CiGqO65225mBzt7frv033vHXvNVrHFHrCH7AnrspfsgL1lh6zPRDAMPgafgy/hp/Br+C38vioNg3XPPbYR4Y8/AIv25w==</latexit><latexit sha1_base64="XLY2aWVu7bZuNLHPG8oVL03BmSQ=">AAADAnicbVI9bxNBEL07vsLxEQMFBc2IGEGBorsEBAVBQW4oKIKE40g+y9rbG9sr3+6educSW6crkKjgn9ChtPwRfgBtOqjZs42EE0ZaafTefOi92bTIhaUo+uEHly5fuXpt43p44+at25utO3cPrS4Nxy7XuTZHKbOYC4VdEpTjUWGQyTTHXjrtNHzvGI0VWn2geYEDycZKjARn5KBh61dSMJPqWRVH28+5rKswsaMRkyKfQ5goPOFaSqayKul06iqRjCac5VWnrtfZXm/FpmnVa0g31k5F8aygMDFsPMbMiPGEwk6OzDTD2+EM9iBJcSxUVbhWI2Y17EKSwA4k6Ib+BV1pWhI4ySCRJjoDztRjAqvzYwSaCPvUdYUpclZaBEEgLChNUGhrhXMCSMOJEYTQfrP3rtuuh62taDtaBFxM4lWytX//7Gzz1enPg2Hrd5JpXkpUxHNmbT+OChpUzJDgOTq5bnHB+JSNse9SxSTaQbU4Tw2PHJLBSBv3FMEC/bejYtLauUxdZeOgPc814P+4fkmjl4NKqKIkVHy5aFTmjdzm1pAJg5yc2Zlg3OkXHPiEGcbJ/Yi1LRN0VlINa2AqG6Pi87ZcTA53tt33id87x157y9jwHngPvSde7L3w9r233oHX9bjf9z/6n/0vwafga/AtOF2WBv6q5563FsH3P5nM+Ko=</latexit><latexit sha1_base64="XLY2aWVu7bZuNLHPG8oVL03BmSQ=">AAADAnicbVI9bxNBEL07vsLxEQMFBc2IGEGBorsEBAVBQW4oKIKE40g+y9rbG9sr3+6educSW6crkKjgn9ChtPwRfgBtOqjZs42EE0ZaafTefOi92bTIhaUo+uEHly5fuXpt43p44+at25utO3cPrS4Nxy7XuTZHKbOYC4VdEpTjUWGQyTTHXjrtNHzvGI0VWn2geYEDycZKjARn5KBh61dSMJPqWRVH28+5rKswsaMRkyKfQ5goPOFaSqayKul06iqRjCac5VWnrtfZXm/FpmnVa0g31k5F8aygMDFsPMbMiPGEwk6OzDTD2+EM9iBJcSxUVbhWI2Y17EKSwA4k6Ib+BV1pWhI4ySCRJjoDztRjAqvzYwSaCPvUdYUpclZaBEEgLChNUGhrhXMCSMOJEYTQfrP3rtuuh62taDtaBFxM4lWytX//7Gzz1enPg2Hrd5JpXkpUxHNmbT+OChpUzJDgOTq5bnHB+JSNse9SxSTaQbU4Tw2PHJLBSBv3FMEC/bejYtLauUxdZeOgPc814P+4fkmjl4NKqKIkVHy5aFTmjdzm1pAJg5yc2Zlg3OkXHPiEGcbJ/Yi1LRN0VlINa2AqG6Pi87ZcTA53tt33id87x157y9jwHngPvSde7L3w9r233oHX9bjf9z/6n/0vwafga/AtOF2WBv6q5563FsH3P5nM+Ko=</latexit><latexit sha1_base64="oNTZz/EmETwwc1E+cSchtCvgtiw=">AAADAnicbVJNb9NAELXNVzFfAY5cRiQIDqiyCwguRUW5cOBQJNJUiqNovR47q3h3rd1xm8jyAYkT/BNuiCt/hB8CZ9ZpkEjLSCuN3psPvTebVqWwFEU//eDS5StXr+1cD2/cvHX7Tu/uvSOra8NxxHWpzXHKLJZC4YgElXhcGWQyLXGcLoYdPz5BY4VWH2hV4VSyQolccEYOmvV+JRUzqV42cbT7gsu2CROb50yKcgVhovCUaymZyppkOGybRDKac1Y2w7bdZsfjDZumzbgj3Vi7ENXzisLEsKLAzIhiTuGwRGa64YNwCfuQpFgI1VSu1YhlC88gSWAPEnRD/4KuNK0JnGSQSHOdAWfqMYHV5QkCzYV96rrCFDmrLYIgEBaUJqi0tcI5AaTh1AhCGLzZfzcatLNeP9qN1gEXk3iT9L1NHM56v5NM81qiIl4yaydxVNG0YYYEL9HJdYsrxheswIlLFZNop836PC08ckgGuTbuKYI1+m9Hw6S1K5m6ys5Be57rwP9xk5ryV9NGqKomVPxsUV6Xndzu1pAJg5yc2Zlg3OkXHPicGcbJ/YitLXN0VlILW2AqO6Pi87ZcTI72dt33id9H/YPXG8t2vAfeQ++JF3svvQPvrXfojTzuT/yP/mf/S/Ap+Bp8C76flQb+pue+txXBjz+JDPSU</latexit>

Can we implement a method that works for all non-singular matrices?<latexit sha1_base64="4r6hBxHL1b8pEqcX5VKANiKWlSI=">AAACv3icbVHLbtNAFB2bVwmvFBYgsRlRIbEhsiskuipFWdBlkUhTKY6i6/G1Pcq8NDNuiCz/FH/DT3TJmnGSBWm5q6Nz7uPo3NwI7nyS/I7ie/cfPHx08Hjw5Omz5y+Ghy8vnW4swwnTQturHBwKrnDiuRd4ZSyCzAVO8+W416fXaB3X6odfG5xLqBQvOQMfqMXwV2bA5vpnm6ZMdu0gc2UJkos1HWQKV0xLCapos/G4azMJvmYg2nHX7avT6U7N83bai2GpW3LzyfhBZqGqsLC8qv1gDIqukHJpBEpUngKV6GtdUF+Dpyttl46W2lIQgiqtPjquqkaApWG75Qzdl24xPEpGyaboXZDuwNHZ65sbSgi5WAz/ZIVmTX+PCXBulibGz1uwnjOBwW3j0ABbQoWzABVIdPN2k21H3wem2FgqdfC7Yf+daEE6t5Z56OwDcLe1nvyfNmt8eTJvuTKNR8W2h8pGUK9p/yhacIvMh0cUHJjlwStlNVhgPrxz70qN4hp9R/fIXPZBpbdjuQsuj0dpMkq/h8ROybYOyFvyjnwgKflMzsg5uSATwqI30Wn0LTqPv8ZVrGKzbY2j3cwrslfx+i8oot+r</latexit><latexit sha1_base64="+i4nUbvRDBPnoincTHMTaOc0FXs=">AAACv3icbVHLbtNAFB2bVwmPBliAxGZEhcSGyq6QYIFKURZ0WSTSVIqj6Hp8bY8yL82MGyLLPwVfwwew7ZI14yQL0nJXR+fcx9G5uRHc+ST5FcW3bt+5e2/v/uDBw0eP94dPnp473ViGY6aFthc5OBRc4dhzL/DCWASZC5zki1GvTy7ROq7VN78yOJNQKV5yBj5Q8+GPzIDN9fc2TZns2kHmyhIkFys6yBQumZYSVNFmo1HXZhJ8zUC0o67bVSeTrZrn7aQXw1K34Oad8YPMQlVhYXlV+8EIFF0i5dIIlKg8BSrR17qgvgZPl9ouHC21pSAEVVq9dVxVjQBLw3bLGbpP3Xx4kBwm66I3QboFByfPr672P/78fTYf/skKzZr+HhPg3DRNjJ+1YD1nAoPbxqEBtoAKpwEqkOhm7Trbjr4OTLG2VOrgd83+O9GCdG4l89DZB+Cuaz35P23a+PLDrOXKNB4V2xwqG0G9pv2jaMEtMh8eUXBglgevlNVggfnwzp0rNYpL9B3dIXPZB5Vej+UmOD86TJPD9GtI7Jhsao+8JK/IG5KS9+SEnJIzMiYsehEdR1+i0/hzXMUqNpvWONrOPCM7Fa/+AsHj4W4=</latexit><latexit sha1_base64="+i4nUbvRDBPnoincTHMTaOc0FXs=">AAACv3icbVHLbtNAFB2bVwmPBliAxGZEhcSGyq6QYIFKURZ0WSTSVIqj6Hp8bY8yL82MGyLLPwVfwwew7ZI14yQL0nJXR+fcx9G5uRHc+ST5FcW3bt+5e2/v/uDBw0eP94dPnp473ViGY6aFthc5OBRc4dhzL/DCWASZC5zki1GvTy7ROq7VN78yOJNQKV5yBj5Q8+GPzIDN9fc2TZns2kHmyhIkFys6yBQumZYSVNFmo1HXZhJ8zUC0o67bVSeTrZrn7aQXw1K34Oad8YPMQlVhYXlV+8EIFF0i5dIIlKg8BSrR17qgvgZPl9ouHC21pSAEVVq9dVxVjQBLw3bLGbpP3Xx4kBwm66I3QboFByfPr672P/78fTYf/skKzZr+HhPg3DRNjJ+1YD1nAoPbxqEBtoAKpwEqkOhm7Trbjr4OTLG2VOrgd83+O9GCdG4l89DZB+Cuaz35P23a+PLDrOXKNB4V2xwqG0G9pv2jaMEtMh8eUXBglgevlNVggfnwzp0rNYpL9B3dIXPZB5Vej+UmOD86TJPD9GtI7Jhsao+8JK/IG5KS9+SEnJIzMiYsehEdR1+i0/hzXMUqNpvWONrOPCM7Fa/+AsHj4W4=</latexit><latexit sha1_base64="KJ8phNSiLKEMEDe9MxdJweNVrwc=">AAACv3icbVHLbtNAFB2bVwmvABskNiMiJDZENkKCVVvkBV0WiTSV4ii6Hl/bo8xLM+OmkeWf4m/4EdaM0yxIy10dnXMfR+cWRnDnk+R3FN+7/+Dho6PHoydPnz1/MX756sLp1jKcMS20vSzAoeAKZ557gZfGIshC4LxYZ4M+v0LruFY//dbgUkKteMUZ+ECtxr9yA7bQ112aMtl3o9xVFUgutnSUK9wwLSWossuzrO9yCb5hILqs7w/V+XyvFkU3H8Sw1K25+Wz8KLdQ11haXjd+lIGiG6RcGoESladAJfpGl9Q34OlG27WjlbYUhKBKq4+Oq7oVYGnYbjlDd9KvxpNkmuyK3gXpHkzIvs5X4z95qVk73GMCnFukifHLDqznTGBw2zo0wNZQ4yJABRLdsttl29P3gSl3liod/O7Yfyc6kM5tZRE6hwDcbW0g/6ctWl99XXZcmdajYjeHqlZQr+nwKFpyi8yHR5QcmOXBK2UNWGA+vPPgSoPiCn1PD8hCDkGlt2O5Cy4+TdNkmv5IJqfH+8iOyFvyjnwgKflCTskZOSczwqI30XH0PTqLv8V1rGJz0xpH+5nX5KDi7V+xI91Y</latexit>

General idea: we started with a simple algorithm, now we (gradually) improve it

2

Beyond LU

The solution to our problem is to write

A = P�1LU

where P is a permutation matrix<latexit sha1_base64="Lm5f6YoiHiz7mlahJxr9lN20Rs8=">AAAC4HicbVE9jxMxEPUuX8fyFaCksbgg0RDtnpCAAnQoDQVFTrpcTsqGyOudzVqx15btvdzJ2p4O0fK3qOj4BZSUCDtJQe4YydLTezOemTeF4szYNP0Rxdeu37h5a+92cufuvfsPeg8fnRjZagpjKrnUpwUxwFkDY8ssh1OlgYiCw6RYDoM+OQNtmGyO7YWCmSCLhlWMEuupee97rogu5LnLMio6l+Smqohg/AIneQMrKoUgTeny4bBzuSC2poS7YdftqpPJVi0KNwmi/9QsmXqpbJJrslhAqdmitslxDdhI3obm2Ers18BKSz+twMwEZqWZhaTfT97jt3j0yb3IOvxxHIhVDRpwf9QPmQTnIFTtFGjR2vUy2A+g2XnXzXv76SBdB74Ksi3YPzz68+snQmg07/3OS0lbAY2lnBgzzVJlZ45oyygHv05rQBG6JAuYetgQAWbm1uZ3+JlnSlxJ7V9j8Zr9t8IRYcyFKHxmcMhc1gL5P23a2ur1zLFGtRYaumlUtTyYFC6JS6aBWn+pkhHqXWMU05poQq2/906XGvgZ2A7vkIUIRmWXbbkKTg4GWTrIjrxj79Am9tAT9BQ9Rxl6hQ7RBzRCY0SjN9E8qiMWF/Hn+Ev8dZMaR9uax2gn4m9/AUvI6vE=</latexit><latexit sha1_base64="Lx77sIiylB9IlGAbLwR2xJa0PiQ=">AAAC4HicbVE9jxMxEPUuX8fyFaCksbgg0RDtIiSg4HQoDQVFTrrcnpQNkdc7m7Vi71q293KRtT0douUvUVLR8QtokCgRdpKC3DGSpaf3Zjwzb3LJmTZx/D0Ir1y9dv3G3s3o1u07d+/17j840U2rKIxpwxt1mhMNnNUwNsxwOJUKiMg5pPli6PX0DJRmTX1sVhKmgsxrVjJKjKNmvW+ZJCpvzm2SUNHZKNNlSQTjKxxlNSxpIwSpC5sNh53NBDEVJdwOu25XTdOtmuc29aL7VC+YfCFNlCkyn0Oh2Lwy0XEFWDe89c2xabBbA0vVuGkFZtozS8UMRP1+9Ba/waMP9lnS4fdjTywrUID7o77PJDgDISsrQYnWrJfBbgDFzrtu1tuPB/E68GWQbMH+4dGfnz9+fT0YzXq/s6KhrYDaUE60niSxNFNLlGGUg1un1SAJXZA5TBysiQA9tWvzO/zEMQUuG+VebfCa/bfCEqH1SuQu0zukL2qe/J82aU35ampZLVsDNd00KlvuTfKXxAVTQI27VMEIda4ximlFFKHG3XunSwX8DEyHd8hceKOSi7ZcBifPB0k8SI6cYwdoE3voEXqMnqIEvUSH6B0aoTGiwetgFlQBC/PwY/gp/LxJDYNtzUO0E+GXvzrC7O0=</latexit><latexit sha1_base64="Lx77sIiylB9IlGAbLwR2xJa0PiQ=">AAAC4HicbVE9jxMxEPUuX8fyFaCksbgg0RDtIiSg4HQoDQVFTrrcnpQNkdc7m7Vi71q293KRtT0douUvUVLR8QtokCgRdpKC3DGSpaf3Zjwzb3LJmTZx/D0Ir1y9dv3G3s3o1u07d+/17j840U2rKIxpwxt1mhMNnNUwNsxwOJUKiMg5pPli6PX0DJRmTX1sVhKmgsxrVjJKjKNmvW+ZJCpvzm2SUNHZKNNlSQTjKxxlNSxpIwSpC5sNh53NBDEVJdwOu25XTdOtmuc29aL7VC+YfCFNlCkyn0Oh2Lwy0XEFWDe89c2xabBbA0vVuGkFZtozS8UMRP1+9Ba/waMP9lnS4fdjTywrUID7o77PJDgDISsrQYnWrJfBbgDFzrtu1tuPB/E68GWQbMH+4dGfnz9+fT0YzXq/s6KhrYDaUE60niSxNFNLlGGUg1un1SAJXZA5TBysiQA9tWvzO/zEMQUuG+VebfCa/bfCEqH1SuQu0zukL2qe/J82aU35ampZLVsDNd00KlvuTfKXxAVTQI27VMEIda4ximlFFKHG3XunSwX8DEyHd8hceKOSi7ZcBifPB0k8SI6cYwdoE3voEXqMnqIEvUSH6B0aoTGiwetgFlQBC/PwY/gp/LxJDYNtzUO0E+GXvzrC7O0=</latexit><latexit sha1_base64="dPYGl2cKhHxd+wN9jp65/henpiw=">AAAC4HicbVFNj9MwEHXCxy7hq8CRi0WLxIUqWSHBHkCLeuHAoUjb7UpNqRxn0li1Y8t2tltZuXNDXPlbnPgjnLG7PdBdRrL09N6MZ+ZNoTgzNk1/R/Gt23fuHhzeS+4/ePjoce/J0zMjW01hQiWX+rwgBjhrYGKZ5XCuNBBRcJgWq1HQpxegDZPNqd0omAuybFjFKLGeWvR+5YroQl66LKOic0luqooIxjc4yRtYUykEaUqXj0adywWxNSXcjbpuX51Od2pRuGkQ/admxdQbZZNck+USSs2WtU1Oa8BG8jY0x1ZivwZWWvppBWYmMGvNLCSDQfIRv8fjr+511uHPk0Csa9CAB+NByCQ4B6Fqp0CL1m6XwX4AzS67btHrp8N0G/gmyHagj3YxXvT+5KWkrYDGUk6MmWWpsnNHtGWUg1+nNaAIXZElzDxsiAAzd1vzO/zSMyWupPavsXjL/lvhiDBmIwqfGRwy17VA/k+btbZ6N3esUa2Fhl41qloeTAqXxCXTQK2/VMkI9a4ximlNNKHW33uvSw38AmyH98hCBKOy67bcBGdHwywdZl/S/smHnWWH6Dl6gV6hDL1FJ+gTGqMJotFxtIjqiMVF/C3+Hv+4So2jXc0ztBfxz79IlOeU</latexit>

This means that PA = LU , where PA is the same as A, but withthe rows in a different order.

<latexit sha1_base64="MYGWowc5V8zgyrZRS7/N+7z4SPw=">AAAC3XicbZJNb9NAEIbX5quEj6Zw5LKiQeKAIhtR2gsoVS4cOASpaSrFUTRej+NV9sPaXTdElo/cEFf+Flf+CGfWSQ6kZSRLs++zszv7jtNScOui6HcQ3rl77/6Dg4edR4+fPD3sHj27tLoyDMdMC22uUrAouMKx407gVWkQZCpwki6HLZ9co7Fcqwu3LnEmYaF4zhk4L827v5ISTKq/1nHUP2GyqTuJzXOQXKxpJ1G4YlpKUFmdDIdNnUhwBQNRD5tmn04mO5qm9aSF/li75OW70nUSA4sFZoYvCte5KLilEkFZ6gpwtDc6//B53HtDVwUabJc9yluG1IJECpb2zj1OK0dX3BUbYvTKUq4o0Iznua9TjmqToek38+5x1I82QW8n8S45HpwcHQ4IIaN590+SaVZJfwYTYO00jko3q8E4zgT6l1QWS2BLWODUp8o3ZWf1xvmGvvJKRnNt/Od72Kj/VtQgrV3L1O9szbE3WSv+j00rl5/Naq7KyqFi24vySlCnaTtG/26DzPkhZRyY4b5XygowwJwf9t4tBYprdA3dE1PZGhXftOV2cvm27/+M+It37CPZxgF5QV6S1yQmp2RAPpERGRMWvA+SAIM8nIffwu/hj+3WMNjVPCd7Ef78C/4K5hE=</latexit><latexit sha1_base64="8RH3nkSciEDxUiDl7mzb6/4xVhQ=">AAAC3XicbZLNjtMwEMed8LWUj+3CkYvFFokDqhLEAhdQV71w4FCk7XalpqomzqSx6o/IdrZUUY7cEFcegBfiygPwCpxx2h7oLiNFGv9/Hnv8n6Sl4NZF0a8gvHHz1u07B3c79+4/eHjYPXp0bnVlGI6ZFtpcpGBRcIVjx53Ai9IgyFTgJF0OWz65RGO5VmduXeJMwkLxnDNwXpp3fyYlmFR/ruOof8JkU3cSm+cguVjTTqJwxbSUoLI6GQ6bOpHgCgaiHjbNPp1MdjRN60kL/bF2yctXpeskBhYLzAxfFK5zVnBLJYKy1BXgaG90+u7juPeCrgo02C57lLcMqQWJFCztnXqcVo6uuCs2xOiVpVxRoBnPc1+nHNUmQ9Nv5t3jqB9tgl5P4l1yPDg5Ohz8/jEbzbt/kkyzSvozmABrp3FUulkNxnEm0L+kslgCW8ICpz5Vvik7qzfON/SZVzKaa+M/38NG/beiBmntWqZ+Z2uOvcpa8X9sWrn87azmqqwcKra9KK8EdZq2Y/TvNsicH1LGgRnue6WsAAPM+WHv3VKguETX0D0xla1R8VVbrifnL/v+z4g/ecfek20ckCfkKXlOYvKGDMgHMiJjwoLXQRJgkIfz8Ev4Nfy23RoGu5rHZC/C738ByuHn9g==</latexit><latexit sha1_base64="8RH3nkSciEDxUiDl7mzb6/4xVhQ=">AAAC3XicbZLNjtMwEMed8LWUj+3CkYvFFokDqhLEAhdQV71w4FCk7XalpqomzqSx6o/IdrZUUY7cEFcegBfiygPwCpxx2h7oLiNFGv9/Hnv8n6Sl4NZF0a8gvHHz1u07B3c79+4/eHjYPXp0bnVlGI6ZFtpcpGBRcIVjx53Ai9IgyFTgJF0OWz65RGO5VmduXeJMwkLxnDNwXpp3fyYlmFR/ruOof8JkU3cSm+cguVjTTqJwxbSUoLI6GQ6bOpHgCgaiHjbNPp1MdjRN60kL/bF2yctXpeskBhYLzAxfFK5zVnBLJYKy1BXgaG90+u7juPeCrgo02C57lLcMqQWJFCztnXqcVo6uuCs2xOiVpVxRoBnPc1+nHNUmQ9Nv5t3jqB9tgl5P4l1yPDg5Ohz8/jEbzbt/kkyzSvozmABrp3FUulkNxnEm0L+kslgCW8ICpz5Vvik7qzfON/SZVzKaa+M/38NG/beiBmntWqZ+Z2uOvcpa8X9sWrn87azmqqwcKra9KK8EdZq2Y/TvNsicH1LGgRnue6WsAAPM+WHv3VKguETX0D0xla1R8VVbrifnL/v+z4g/ecfek20ckCfkKXlOYvKGDMgHMiJjwoLXQRJgkIfz8Ev4Nfy23RoGu5rHZC/C738ByuHn9g==</latexit><latexit sha1_base64="o+3QQA2vVzunf6n+Tzrz6hF9CaI=">AAAC3XicbZJNj9MwEIad8LFL+Spw5GLRInFAVbIClgtoV71w4FCk7XalpqomzqSx6o/IdrZUUY7cEFf+Flf+CGecbg50l5Eijd/HY4/fSVoKbl0U/Q7CW7fv3D04vNe7/+Dho8f9J0/Pra4MwynTQpuLFCwKrnDquBN4URoEmQqcpetxy2eXaCzX6sxtS1xIWCmecwbOS8v+r6QEk+qvdRyN3jLZ1L3E5jlILra0lyjcMC0lqKxOxuOmTiS4goGox02zT2ezjqZpPWuhP9auefmmdL3EwGqFmeGrwvXOCm6pRFCWugIcHU5OP3yeDl/TTYEG2+WQ8pYhtSCRgqXDU4/TytENd8WOGL2xlCsKNON57uuUo9pkaEbNsj+IRtEu6M0k7pIB6WKy7P9JMs0q6c9gAqydx1HpFjUYx5lA/5LKYglsDSuc+1T5puyi3jnf0JdeyWiujf98Dzv134oapLVbmfqdrTn2OmvF/7F55fL3i5qrsnKo2NVFeSWo07Qdo3+3Qeb8kDIOzHDfK2UFGGDOD3vvlgLFJbqG7ompbI2Kr9tyMzk/Gvk/I/4SDU4+dpYdkufkBXlFYnJMTsgnMiFTwoJ3QRJgkIfL8Fv4PfxxtTUMuppnZC/Cn38Bv//lPA==</latexit>

A permutation matrix is a square matrix where each row and eachcolumn contain exactly one ’1’ and all other entries are zero. Theyare easy to invert because P�1 = PT .

<latexit sha1_base64="72LWaQpvR+FifbJFMCk1ginamv4=">AAADLHicbVJLaxRBEO4ZX3F9JXoUpDCReHHZEUUvSmQ9eFwhyQYym1DTW7vTpB9jd0+SdZijv0bwpHd/hBeRXP0J3gR7ZiO4iQ3NVH1fvfqbygopnO/1vkfxhYuXLl9Zutq5dv3GzVvLK7e3nSktpy1upLE7GTqSQtOWF17STmEJVSZpmB30G354SNYJozf9rKCRwqkWE8HRB2h/JbqXFmgzc1wlve5Truqqk7rJBJWQM+ikmo64UQr1uEr7/bpKFfqco6z6db3IDoenbJZVw4YMZd2BKJ4UvpNanE5pbMU0951XUJBVpW8HgJBhxTEIBwjuXYmW/kJHOQWHkOdgzRGEJnMnvLlUOny0R6GBjpH7MKvRBOvJehuHUoLxIR9Ih1oUiodS78maLsBmTrPWJ3Qz8AaEDgJ5yIhj6QjWBnvVo6R+MdjbXOvW+8urvW6vPXDeSE6N1Y3Xv0++MsYG+8u/0rHhpQqduUTndpNe4UcVWi+4pKBL6FEgP8Ap7QZToyI3qtofWcODgIxhYmy42kOL/ptRoXJuprIQ2UjtznIN+D9ut/ST56NK6KL0pPm80aSUzfObrYCxsNTKOBbIrQizAs/RBmnD7ix0yUkekq9hAcxUI1RyVpbzxvbjbtiz5G1Q7CWbnyV2l91nD1nCnrEN9oYN2Bbj0YfoY/Q5+hJ/ir/FP+KTeWgcnebcYQsn/vkHu1AIYA==</latexit><latexit sha1_base64="jXaufUyWloTqkogqE2KFwX15mJ0=">AAADLHicbVLLbtNAFLXNq4RXC0skNKJFZUMUIxBsQEVhwTJIbVMpTqvryU08yjzMzLhtsLzkF/gJJFbwAfwDG4S6hT9gh8S1EyTSMtLI955zX3N801wK5zudb2F07vyFi5dWLreuXL12/cbq2s1dZwrLcYcbaexeCg6l0LjjhZe4l1sElUrsp9NuzfcP0Tph9Laf5ThUMNFiLDh4gg7WwjtJDjY1x2XcaT/mqipbiRuPQQk5Y61E4xE3SoEelUm3W5WJAp9xkGW3qpbZfn/BpmnZr0kq66Yif5T7VmJhMsGRFZPMt16wHK0qfDMAowwrjplwDJh7U4DFv9BRhuQg8IxZc8SoydyhNxdK00d7EJrhMXBPsxqNbDPebOJASmY85TPUVAupOJV6i9a0GdvOcNb4CG7GvGFCk0CepcihcMg2evvlg7h61tvf3mhXB6vrnXanOeysES+M9a2Xv0++/Hxf9Q5WfyUjwwtFnbkE5wZxJ/fDEqwXXCLpQj1y4FOY4IBMDQrdsGx+ZMXuETJiY2Ppas8a9N+MEpRzM5VSZC21O83V4P+4QeHHT4el0HnhUfN5o3Eh6+fXW8FGwmIj40gAt4JmZTwDS9LS7ix1yVAeoq/YEpiqWqj4tCxnjd2Hbdqz+DUp9jyYn5XgdnA3uB/EwZNgK3gV9IKdgIfvwg/hp/Bz9DH6Gn2PTuahUbjIuRUsnejHH6iHCls=</latexit><latexit sha1_base64="jXaufUyWloTqkogqE2KFwX15mJ0=">AAADLHicbVLLbtNAFLXNq4RXC0skNKJFZUMUIxBsQEVhwTJIbVMpTqvryU08yjzMzLhtsLzkF/gJJFbwAfwDG4S6hT9gh8S1EyTSMtLI955zX3N801wK5zudb2F07vyFi5dWLreuXL12/cbq2s1dZwrLcYcbaexeCg6l0LjjhZe4l1sElUrsp9NuzfcP0Tph9Laf5ThUMNFiLDh4gg7WwjtJDjY1x2XcaT/mqipbiRuPQQk5Y61E4xE3SoEelUm3W5WJAp9xkGW3qpbZfn/BpmnZr0kq66Yif5T7VmJhMsGRFZPMt16wHK0qfDMAowwrjplwDJh7U4DFv9BRhuQg8IxZc8SoydyhNxdK00d7EJrhMXBPsxqNbDPebOJASmY85TPUVAupOJV6i9a0GdvOcNb4CG7GvGFCk0CepcihcMg2evvlg7h61tvf3mhXB6vrnXanOeysES+M9a2Xv0++/Hxf9Q5WfyUjwwtFnbkE5wZxJ/fDEqwXXCLpQj1y4FOY4IBMDQrdsGx+ZMXuETJiY2Ppas8a9N+MEpRzM5VSZC21O83V4P+4QeHHT4el0HnhUfN5o3Eh6+fXW8FGwmIj40gAt4JmZTwDS9LS7ix1yVAeoq/YEpiqWqj4tCxnjd2Hbdqz+DUp9jyYn5XgdnA3uB/EwZNgK3gV9IKdgIfvwg/hp/Bz9DH6Gn2PTuahUbjIuRUsnejHH6iHCls=</latexit><latexit sha1_base64="tELawHGEhanCE9ZTQMLWAqHsO9k=">AAADLHicbVJLb9NAELbNq4RXC0ckNCJF5UJkIxBcQEW5cAxS21SK02i8mcSr7sPsrpsGy0d+DRIn+CdcEOLKT+DM2g0SaVlp5Znvm9d+nqwQ3Lo4/h5Gly5fuXpt43rnxs1bt+9sbt09sLo0jPaZFtocZmhJcEX7jjtBh4UhlJmgYXbcb/jhCRnLtdpzy4LGEueKzzhD56HJVvggLdBk+rRK4t5zJuuqk9rZDCUXS+ikihZMS4lqWqX9fl2lEl3OUFT9ul5nh8MVm2XVsCF9WXvMi2eF66QG53OaGj7PXecNFGRk6doBwGcYfgrcAoJ9X6Khv9AiJ+8QshyMXoBvcub4N5dS+Y9yyBXQKTLnZ9WKYCfZaeNQCNDO5wMpX4t8cV/qAxndA9jLadn6hHYJTgNXXiAHGTEsLcH24Kh6ktSvBkd72716stmNe3F74KKRrIxusDqDyebvdKpZKX1nJtDaURIXblyhcZwJ8rr4HgWyY5zTyJsKJdlx1f7IGh55ZAozbfxVDlr034wKpbVLmfnIRmp7nmvA/3Gj0s1ejiuuitKRYmeNZqVont9sBUy5oVbGKUdmuJ8VWI7GS+t3Z61LTuKEXA1rYCYboZLzslw0Dp72/J4l7+Lu7uuVZBvB/eBh8DhIghfBbvA2GAT7AQs/hp/CL+HX6HP0LfoR/TwLjcJVzr1g7US//gAV6QVC</latexit>

If A is non-singular then the decomposition A = P�1LU alwaysexists

<latexit sha1_base64="GtKMfBBjDsrAL1cFUKyqfgzUKqU=">AAACxnicbVLLihNBFK1uX2N8RV3OYgongpsJ3aLoRhkJwgiiEcxkJB3D7erbnSL1aKqqJxOaBn/LT3HnV7i2OsnCzHihisM591GcW2kpuHVR9CsIr12/cfPW3u3Onbv37j/oPnx0anVlGI6YFtqcpWBRcIUjx53As9IgyFTgOF0MWn18jsZyrb66VYlTCYXiOWfgPDXr/kxKMKm+qOOo/5LJpu4kNs9BcrGinUThkmkpQWV1Mhg0dSLBzRmIetA0u+p4vFXTtB63om9rF7x8UbpOYqAoMDO8mLvOh5z23vUot1RpdWS5KioBhro5qvaiGfqepba8fZ9PfTP8Xh/FzcdRj4JYwspSvPC22GbWPYz60TroVRBvweHxwf6334SQ4az7J8k0qyQqxwRYO4mj0k1rMI4zgf7JlcUS2AIKnHioQKKd1muLG/rUMxnNtfFHObpm/62oQVq7kqnPbF2wl7WW/J82qVz+elpzVVYOFdsMyitBnabtvmjGDTLnt5FxYMa7wiibgwHm/FZ3psxRnKNr6A6Zytao+LItV8Hp877/AvEX79hbsok9sk+ekGckJq/IMTkhQzIiLDgI3gefgs/hSajCKlxuUsNgW/OY7ET44y/p0eAX</latexit><latexit sha1_base64="fNFqEjgwEZm/c/oRrojrdC0p31s=">AAACxnicbVLLjtMwFHXCayivAstZjMUUic1UyQgEG9CgCmmQEBSJTgc1pbpxnMSqH5HtTKeyIvEV/AtLPoMFa/6ANU7bBZ3hSraOzrkP61ynFWfGRtHPILxy9dr1Gzs3O7du37l7r3v/wYlRtSZ0RBRX+jQFQzmTdGSZ5fS00hREyuk4nQ9afXxGtWFKfrLLik4FFJLljID11Kz7PalAp+rcxVH/GRGN6yQmz0EwvsSdRNIFUUKAzFwyGDQuEWBLAtwNmmZbHY83apq6cSv6tmbOqqeV7SQaioJmmhWl7bzNce91DzODpZIHhsmi5qCxLalsL5xR37NShrXv86kvh1/cQdy8G/Uw8AUsDabn3hbTzLr7UT9aBb4M4g3YP9rb/fzrx+9vw1n3T5IpUgsqLeFgzCSOKjt1oC0jnPon14ZWQOZQ0ImHEgQ1U7eyuMGPPZPhXGl/pMUr9t8KB8KYpUh9ZuuCuai15P+0SW3zF1PHZFVbKsl6UF5zbBVu94UzpimxfhsZA6K9KwSTEjQQ67e6NaWk/IzaBm+RqWiNii/achmcHPb9F4g/esdeoXXsoF30CD1BMXqOjtAxGqIRIsFe8CZ4H3wIj0MZ1uFinRoGm5qHaCvCr38BNVDiUg==</latexit><latexit sha1_base64="fNFqEjgwEZm/c/oRrojrdC0p31s=">AAACxnicbVLLjtMwFHXCayivAstZjMUUic1UyQgEG9CgCmmQEBSJTgc1pbpxnMSqH5HtTKeyIvEV/AtLPoMFa/6ANU7bBZ3hSraOzrkP61ynFWfGRtHPILxy9dr1Gzs3O7du37l7r3v/wYlRtSZ0RBRX+jQFQzmTdGSZ5fS00hREyuk4nQ9afXxGtWFKfrLLik4FFJLljID11Kz7PalAp+rcxVH/GRGN6yQmz0EwvsSdRNIFUUKAzFwyGDQuEWBLAtwNmmZbHY83apq6cSv6tmbOqqeV7SQaioJmmhWl7bzNce91DzODpZIHhsmi5qCxLalsL5xR37NShrXv86kvh1/cQdy8G/Uw8AUsDabn3hbTzLr7UT9aBb4M4g3YP9rb/fzrx+9vw1n3T5IpUgsqLeFgzCSOKjt1oC0jnPon14ZWQOZQ0ImHEgQ1U7eyuMGPPZPhXGl/pMUr9t8KB8KYpUh9ZuuCuai15P+0SW3zF1PHZFVbKsl6UF5zbBVu94UzpimxfhsZA6K9KwSTEjQQ67e6NaWk/IzaBm+RqWiNii/achmcHPb9F4g/esdeoXXsoF30CD1BMXqOjtAxGqIRIsFe8CZ4H3wIj0MZ1uFinRoGm5qHaCvCr38BNVDiUg==</latexit><latexit sha1_base64="asGOiB5tS7mKvQrhXRjDPeghWx0=">AAACxnicbVJdixMxFM2MX2v9qvrog8FW8GXLjCj6oqwUYQXRCna70KnlTubOTGiSGZLMdksY8G/5U/wjPpvp9sHueiHhcM79COcmrQU3Nop+B+G16zdu3jq43btz9979B/2Hj05M1WiGU1aJSp+mYFBwhVPLrcDTWiPIVOAsXY07fXaG2vBKfbebGhcSCsVzzsB6atn/ldSg0+rcxdHoNZOt6yUmz0FysaG9ROGaVVKCylwyHrcukWBLBsKN23Zfnc12apq6WSf6tmbF61e17SUaigIzzYvS9j7ldPhhSLmhqlKHhquiEaCpLVF1F83Q96wrw7v3+dR3kx/uMG4/T4cUxBo2huK5t8W0y/4gGkXboFdBvAMDsovJsv8nySrWSFSWCTBmHke1XTjQljOB/smNwRrYCgqce6hAolm4rcUtfe6ZjOaV9kdZumX/rXAgjdnI1Gd2LpjLWkf+T5s3Nn+7cFzVjUXFLgbljaC2ot2+aMY1Muu3kXFg2rvCKCtBA7N+q3tTShRnaFu6R6ayMyq+bMtVcPJy5L9A/C0aHL3fWXZAnpBn5AWJyRtyRI7JhEwJC54GH4MvwdfwOFRhE64vUsNgV/OY7EX48y9iE95k</latexit>

3

Beyond LUIf we can obtain A = P�1LU then we can write Ax = b asLUx = Pb, which is easy to solve by our original method.

<latexit sha1_base64="T47H8KQbM30O3Z32SPZR9aDdies=">AAAC8HicbVLLihNBFK1uX2N8RV26KZwILjR0i6IuIiPZODCLCGYykI7DrerqdJF6NFXVkzRNg5/hTtz6IX6C4Np/cG11EsHMeKHgcM6tutxzihSCWxdFP4Pw0uUrV6/tXe/cuHnr9p3u3XvHVpeGsjHVQpsTApYJrtjYcSfYSWEYSCLYhCyGrT45Y8ZyrT64qmAzCXPFM07Beeq0+yspwBC9quOo/4LKpu4kNstAclHhTqLYkmopQaV1Mhw2dSLB5RREPWyaXXUy2aqE1JNW9M/aBS+eF66TGJjPWWr4PHedwwwvGaagsCYOuMK9t4PRx/pp3ByNe9jlTP3Vl4Y75uXVgPQwWNw7Gq8GI9J7gpc5pznmFjOwFXYaWy3OGCYV9rZg7QdxBQJL5nKd9pvT7n7Uj9aFL4J4C/YPXn//8QkhNDrt/k5STUvJlKMCrJ3GUeFmNRjHqWB+udKyAugC5mzqoQLJ7Kxeh9HgR55JcaaNP8rhNfvvjRqktZUkvrP1y57XWvJ/2rR02atZzVVROqboZlBWinb/NlmccsOo87mlHKj3jlNMczBAnc9/Z0rOvF2uwTskka1R8XlbLoLjZ33/WeL33rE3aFN76AF6iB6jGL1EB+gdGqExosFhoINVUIUm/Bx+Cb9uWsNge+c+2qnw2x+Igu9i</latexit><latexit sha1_base64="IMkeIdmpN1vyNufel44EPUsF6S4=">AAAC8HicbVLLihNBFK1uX2N8RV26KZwILjSkB2V0ERnJxoFZRDCTgXQcblVXp4vUo62qnqRpeit+gjtx64f4CYJr/8G11UkEM+OFgsM5t+pyzymSC25dr/czCC9dvnL12s711o2bt27fad+9d2x1YSgbUS20OSFgmeCKjRx3gp3khoEkgo3JfNDo4zNmLNfqnStzNpUwUzzlFJynTtu/4hwM0csq6nWfU1lXrdimKUguStyKFVtQLSWopIoHg7qKJbiMgqgGdb2tjscblZBq3Ij+WTvn+bPctWIDsxlLDJ9lrnWY4gXDFBTWxAFXuPO6P3xfPY3qo1EHu4ypv/rCcMe8vOyTDgaLO0ejZX9IOk/wIuM0w9xiBrbETmOrxRnDpMTeFqz9IK5AYMlcppNufdre7XV7q8IXQbQBuwcvv//4tP/h4/C0/TtONC0kU44KsHYS9XI3rcA4TgXzyxWW5UDnMGMTDxVIZqfVKowaP/JMglNt/FEOr9h/b1QgrS0l8Z2NX/a81pD/0yaFS19MK67ywjFF14PSQjT7N8nihBtGnc8t4UC9d5ximoEB6nz+W1My5u1yNd4iiWyMis7bchEc73X9Z4neesdeoXXtoAfoIXqMIrSPDtAbNEQjRIPDQAfLoAxN+Dn8En5dt4bB5s59tFXhtz9SHfCY</latexit><latexit sha1_base64="IMkeIdmpN1vyNufel44EPUsF6S4=">AAAC8HicbVLLihNBFK1uX2N8RV26KZwILjSkB2V0ERnJxoFZRDCTgXQcblVXp4vUo62qnqRpeit+gjtx64f4CYJr/8G11UkEM+OFgsM5t+pyzymSC25dr/czCC9dvnL12s711o2bt27fad+9d2x1YSgbUS20OSFgmeCKjRx3gp3khoEkgo3JfNDo4zNmLNfqnStzNpUwUzzlFJynTtu/4hwM0csq6nWfU1lXrdimKUguStyKFVtQLSWopIoHg7qKJbiMgqgGdb2tjscblZBq3Ij+WTvn+bPctWIDsxlLDJ9lrnWY4gXDFBTWxAFXuPO6P3xfPY3qo1EHu4ypv/rCcMe8vOyTDgaLO0ejZX9IOk/wIuM0w9xiBrbETmOrxRnDpMTeFqz9IK5AYMlcppNufdre7XV7q8IXQbQBuwcvv//4tP/h4/C0/TtONC0kU44KsHYS9XI3rcA4TgXzyxWW5UDnMGMTDxVIZqfVKowaP/JMglNt/FEOr9h/b1QgrS0l8Z2NX/a81pD/0yaFS19MK67ywjFF14PSQjT7N8nihBtGnc8t4UC9d5ximoEB6nz+W1My5u1yNd4iiWyMis7bchEc73X9Z4neesdeoXXtoAfoIXqMIrSPDtAbNEQjRIPDQAfLoAxN+Dn8En5dt4bB5s59tFXhtz9SHfCY</latexit><latexit sha1_base64="qc7lQWj+VVkYafm1L5CeaD7YdG8=">AAAC8HicbVLLihNBFO20rzG+oi7dXEwEFxq6RdFNZCQbB2YRwUwG0nG4VV2dLlKPpqp6kqbp/3Anbv0j1/6Da6szEcyMFwoO59yqyz2nSCG4dVH0sxNeu37j5q2D2907d+/df9B7+OjE6tJQNqVaaHNK0DLBFZs67gQ7LQxDSQSbkdW41WfnzFiu1WdXFWwhcal4xik6T531fiUFGqI3dRwN31DZ1N3EZhlKLiroJoqtqZYSVVon43FTJxJdTlHU46bZV2eznUpIPWtF/6xd8eJ14bqJweWSpYYvc9c9ymDNgKICTRxyBYMPo8mX+mXcHE8H4HKm/uprwx3z8mZEBoAWBsfTzWhCBi9gnXOaA7fA0FbgNFgtzhmQCrwtoP0grlCAZC7X6bA56/WjYbQtuAriHegHu5qc9X4nqaalZMpRgdbO46hwixqN41Qwv1xpWYF0hUs291ChZHZRb8No4JlnUsi08Uc52LL/3qhRWltJ4jtbv+xlrSX/p81Ll71b1FwVpWOKXgzKStHu3yYLKTeMOp9bypF67zgFmqNB6nz+e1Ny5u1yDeyRRLZGxZdtuQpOXg39Z4k/Rf3D9zvLDoInwdPgeRAHb4PD4GMwCaYB7Rx1dGfTqUITfg2/hd8vWsPO7s7jYK/CH38Arw3szQ==</latexit>

Example:

A =

✓0 uv 1

has no LU decomposition, but

PA =

✓0 11 0

◆⇥

✓0 uv 1

◆=

✓v 10 u

has a (trivial) LU decomposition where L is the identity<latexit sha1_base64="GreCIf0ZlLfWPoMD7BGeImFmrpU=">AAADvXiclVLdatRAFJ7d+FPjX6vgjSAHu0qFUhJRFLFaWSpeeLGC2y00S5lMTpKhM5MwM9nuEvIgvfMNfB5fxGsn2yrdbnvhgYHD+c53fr45cSm4sUHwq9P1rl2/cXPlln/7zt1791fXHuyZotIMh6wQhd6PqUHBFQ4ttwL3S41UxgJH8VG/xUcT1IYX6rudlTiWNFM85YxaFzpc6/yMSqrjYlqHwdZrJpvaj0yaUsnFDPxI4TErpKQqqaN+v6kjSW3OqKj7TbOIjkZnaBzXoxZ0Zc0RL1+V1o80zTJMNM9y6+9OqSwFvvN7Pf8TbEMUY8ZVXTqu5tMGIIDnUPlRBBPnhBChK/8PbVk5NaAK6H0d9iBBN0FZGN6uswlxZduMwZWFw7Zw6JxgsbAfWS7R+P83Dfjby4zJ3zZz6hXzU9hwgQmn4sUli8Bxjhod0ANuwOYIPEHlvnfWHK6uB1vB3GDZCc+c9Z0nJyc/CCGDw9XfUVKwSjo+E9SYgzAo7bim2nIm0C1eGSwpO6IZHjhXUSfDuJ5fVgPPXCSBtNDuKQvz6HlGTaUxMxm7zPbvzUWsDV6GHVQ2fTuuuSori4qdNkorAbaA9kwh4RqZdTeYcMq0E4UBy6mmzLpjXuiSo5igdcqeD8ayFSq8KMuys/dyyx1++M0p9oGc2gp5TJ6SDRKSN2SHfCEDMiSs+6j7vrvb/ex99NATnjpN7XbOOA/JgnnHfwAfMiyP</latexit><latexit sha1_base64="fJpsphh4NBkFjIMG56OgMaAOPuo=">AAADvXiclVJbi9NAFE4TL2u8dRV8EeTgVllBSiKKIq6ulBUffKhgtwtNWSaT02bozCTMTHoh5Ifon/D3+Ed8dtJW2W53HzwwcPi+853bnDjnTJsg+NVwvStXr13fueHfvHX7zt3m7r1jnRWKYo9mPFMnMdHImcSeYYbjSa6QiJhjP550ar4/RaVZJr+ZRY5DQcaSjRglxkKnu42fUU5UnM3LMGi/oqIq/UiPRkQwvgA/kjijmRBEJmXU6VRlJIhJKeFlp6o22X5/zcZx2a9Jm1ZPWP4yN36kyHiMiWLj1PhHcyJyjm/9Vsv/CAcQxThmssytVrF5BRDAUyj8KIKpdUKI0Kb/x9aqlGiQGbS+9FqQoO0gzzSrx3kOcWHqiO6licM6cWidYDOxHxkmUPv/1w34B9uK6d8yS+kl/RPYt8CUEf7sgkFglqJCS7SAaTApAktQ2u9dVKfNvaAdLA22nXDt7B0++l7bj+5p83eUZLQQVk850XoQBrkZlkQZRjnawQuNOaETMsaBdSWxaxiWy8uq4IlFEhhlyj5pYImeVZREaL0QsY2s/16f52rwIm5QmNGbYclkXhiUdFVoVHAwGdRnCglTSI29wYQRquxSKNCUKEKNPeaNKinyKRq72bNgLOpFhefXsu0cv2jbww+/2o29d1a24zx0Hjv7Tui8dg6dz07X6TnUfeC+c4/cT94HDz3uyVWo21hr7jsb5s3+ALwjLlQ=</latexit><latexit sha1_base64="fJpsphh4NBkFjIMG56OgMaAOPuo=">AAADvXiclVJbi9NAFE4TL2u8dRV8EeTgVllBSiKKIq6ulBUffKhgtwtNWSaT02bozCTMTHoh5Ifon/D3+Ed8dtJW2W53HzwwcPi+853bnDjnTJsg+NVwvStXr13fueHfvHX7zt3m7r1jnRWKYo9mPFMnMdHImcSeYYbjSa6QiJhjP550ar4/RaVZJr+ZRY5DQcaSjRglxkKnu42fUU5UnM3LMGi/oqIq/UiPRkQwvgA/kjijmRBEJmXU6VRlJIhJKeFlp6o22X5/zcZx2a9Jm1ZPWP4yN36kyHiMiWLj1PhHcyJyjm/9Vsv/CAcQxThmssytVrF5BRDAUyj8KIKpdUKI0Kb/x9aqlGiQGbS+9FqQoO0gzzSrx3kOcWHqiO6licM6cWidYDOxHxkmUPv/1w34B9uK6d8yS+kl/RPYt8CUEf7sgkFglqJCS7SAaTApAktQ2u9dVKfNvaAdLA22nXDt7B0++l7bj+5p83eUZLQQVk850XoQBrkZlkQZRjnawQuNOaETMsaBdSWxaxiWy8uq4IlFEhhlyj5pYImeVZREaL0QsY2s/16f52rwIm5QmNGbYclkXhiUdFVoVHAwGdRnCglTSI29wYQRquxSKNCUKEKNPeaNKinyKRq72bNgLOpFhefXsu0cv2jbww+/2o29d1a24zx0Hjv7Tui8dg6dz07X6TnUfeC+c4/cT94HDz3uyVWo21hr7jsb5s3+ALwjLlQ=</latexit><latexit sha1_base64="Qrqlgx5eLPUE3k7xP/AVDSSJ6Lo=">AAADvXiclVJbi9NAFE5TL2u8bFfBF18OtsoKUhJRFHF1paz44EMFu11oSplMTpqhM5MwM+mFkN/k7/GP+OykW2W73X3wwMDhfOc7l29OlHOmje//arjNGzdv3d674929d//Bfuvg4anOCkVxQDOeqbOIaORM4sAww/EsV0hExHEYzXo1Ppyj0iyTP8wqx7EgU8kSRomxoclB42eYExVlyzLwu2+oqEov1ElCBOMr8EKJC5oJQWRchr1eVYaCmJQSXvaqahsdDjdoFJXDGrRl9Yzlr3PjhYpMpxgrNk2Nd7IkIuf43ut0vM9wBGGEUybL3HIVW1YAPjyHwgtDmFsngBBt+X9ozUqJBplB59ugAzHaCfJMs3qdlxAVps7oX1s4qAsH1vG3C3uhYQK193/TgHe0y5j/bbOmXjM/gUMbmDPCX1yxCCxSVGiBDjANJkVgMUr7vatq0mr7XX9tsOsEG6ftbKw/af0O44wWwvIpJ1qPAj8345IowyhHu3ihMSd0RqY4sq4kVoZxub6sCp7ZSAxJpuyTBtbRi4ySCK1XIrKZ9d/ry1gdvAobFSZ5Ny6ZzAuDkp43SgoOJoP6TCFmCqmxNxgzQpUVhQJNiSLU2GPe6pIin6Oxyl4MRqIWKrgsy65z+qprDz/47rePP24k23OeOE+dQydw3jrHzlen7wwc6j52P7gn7pfmpyY2eVOep7qNDeeRs2XNxR/ckSpf</latexit>

This is called pivoting, but how do we find a suitable P?<latexit sha1_base64="XDlRr4FPtzGlgl9xSY65DSwNYJ4=">AAACwHicbVHLbtNAFB2bVwmPBlggxGZEi8QCRTYCwYpWZFN2QWqaSnEUjcfX9ijzYmacEEb+Kr6Gn+iSNeMkC9JyNSMdnXPfN9ecWZckv6P41u07d+8d3O89ePjo8WH/ydMLqxpDYUwVV+YyJxY4kzB2zHG41AaIyDlM8sWw0ydLMJYpee7WGmaCVJKVjBIXqHn/V6aJydUPnyaDD1S0vpfZsiSC8TXuZRJWVAlBZOGz4bD1mSCupoT7Ydvuq5PJTs1zP+nEkNYumH6vXS8zpKqgMKyqXe+8ZhaHF7JwKHAGQtdes6VyTFbtW5w3DtdqhQuFV4BLJgtMsG2YI2EkfDw6Pmnn/aNkkGwM3wTpDhydPr+6wgih0bz/JysUbQRIRzmxdpom2s08MY5RDqHZxoImdEEqmAYoiQA785vltvh1YApcKhO+dHjD/hvhibB2LfLg2c1vr2sd+T9t2rjy08wzqRsHkm4LlQ3HTuHuUrhgBqgLdygYoYaFXjGtiSHUhXvuVamBL8G1eI/MRbeo9PpaboKLd4Nw/PRb2NhntLUD9BK9Qm9Qij6iU3SGRmiMaPQiOonOoq/xl7iOVfx96xpHu5hnaM/in38Bp5Xerg==</latexit><latexit sha1_base64="SXF2VLab39ZiJUarVa/6Jl4Ry/0=">AAACwHicbVHLbtNAFB2bVzGPBlggxGZEi8QCRXYFggWiFdmUXZCaplIcRePxtT3KPMzMOCGM/FX9Gj6AbZesGSdZkJarGenonPu+Wc2ZsXH8Kwhv3b5z997e/ejBw0eP93tPnp4b1WgKI6q40hcZMcCZhJFllsNFrYGIjMM4mw86fbwAbZiSZ3ZVw1SQUrKCUWI9NetdpjXRmfrhkrj/norWRakpCiIYX+EolbCkSggic5cOBq1LBbEVJdwN2nZXHY+3apa5cSf6tGbO6ne1jVJNyhJyzcrKRmcVM9g/n4VDjlMQdeVqtlCWybJ9i7PG4kotca7wEnDBZI4JNg2zxI+ED4eHx+2sdxD347XhmyDZgoOT51dX+58ufw9nvT9prmgjQFrKiTGTJK7t1BFtGeXgm20M1ITOSQkTDyURYKZuvdwWv/ZMjgul/ZcWr9l/IxwRxqxE5j27+c11rSP/p00aW3ycOibrxoKkm0JFw7FVuLsUzpkGav0dckaoZr5XTCuiCbX+njtVKuALsC3eITPRLSq5vpab4Pyo74+ffPMb+4w2todeolfoDUrQB3SCTtEQjRANXgTHwWnwNfwSVqEKv29cw2Ab8wztWPjzL0Dl4HE=</latexit><latexit sha1_base64="SXF2VLab39ZiJUarVa/6Jl4Ry/0=">AAACwHicbVHLbtNAFB2bVzGPBlggxGZEi8QCRXYFggWiFdmUXZCaplIcRePxtT3KPMzMOCGM/FX9Gj6AbZesGSdZkJarGenonPu+Wc2ZsXH8Kwhv3b5z997e/ejBw0eP93tPnp4b1WgKI6q40hcZMcCZhJFllsNFrYGIjMM4mw86fbwAbZiSZ3ZVw1SQUrKCUWI9NetdpjXRmfrhkrj/norWRakpCiIYX+EolbCkSggic5cOBq1LBbEVJdwN2nZXHY+3apa5cSf6tGbO6ne1jVJNyhJyzcrKRmcVM9g/n4VDjlMQdeVqtlCWybJ9i7PG4kotca7wEnDBZI4JNg2zxI+ED4eHx+2sdxD347XhmyDZgoOT51dX+58ufw9nvT9prmgjQFrKiTGTJK7t1BFtGeXgm20M1ITOSQkTDyURYKZuvdwWv/ZMjgul/ZcWr9l/IxwRxqxE5j27+c11rSP/p00aW3ycOibrxoKkm0JFw7FVuLsUzpkGav0dckaoZr5XTCuiCbX+njtVKuALsC3eITPRLSq5vpab4Pyo74+ffPMb+4w2todeolfoDUrQB3SCTtEQjRANXgTHwWnwNfwSVqEKv29cw2Ab8wztWPjzL0Dl4HE=</latexit><latexit sha1_base64="jG+Hlwrvnx4tpBQMq5tFbq0zXdw=">AAACwHicbVHLjtMwFHXCayivAivExqKDxAJVCQLBihnRzbAr0nQ6UlNVjnOTWPUL22kpVr6Kr+FHWON0sqAzXNnS0Tn3fXPNmXVJ8juKb92+c/fe0f3Bg4ePHj8ZPn12YVVjKMyo4spc5sQCZxJmjjkOl9oAETmHeb6edPp8A8YyJc/dTsNSkEqyklHiArUa/so0Mbn64dNk/IGK1g8yW5ZEML7Dg0zCliohiCx8Npm0PhPE1ZRwP2nbQ3U+79U89/NODGntmun32g0yQ6oKCsOq2g3Oa2ZxeCELhwJnIHTtNdsox2TVvsV543CttrhQeAu4ZLLABNuGORJGwsfT45N2NRwl42Rv+CZIezBCvU1Xwz9ZoWgjQDrKibWLNNFu6YlxjHIIzTYWNKFrUsEiQEkE2KXfL7fFrwNT4FKZ8KXDe/bfCE+EtTuRB89ufntd68j/aYvGlZ+WnkndOJD0qlDZcOwU7i6FC2aAunCHghFqWOgV05oYQl2450GVGvgGXIsPyFx0i0qvr+UmuHg3DsdPvyWj08/9yo7QS/QKvUEp+ohO0Rmaohmi0YvoJDqLvsZf4jpW8fcr1zjqY56jA4t//gUwJdxb</latexit>

4

Page 2: Recall - damtp.cam.ac.uk · Computational Projects Lecture 6: Improving LU decomposition  Dr Rob Jack, DAMTP 1 Recall...

LU algorithm with pivotLet A(0) = A. Let P = I (identity). Set L = 0 and U = 0.

<latexit sha1_base64="4LGsYTMwgrq6T36mhbShSwaD0IQ=">AAACunicbVFdb9MwFHXC1wgf69gT4gGLBal7qRKERCdRqSMvIO2hCLpMakplO05q1XYi2xlUViT+ED+IP8IzTtsHunElS0fnXN+Pc3HNmTZR9Nvz79y9d//BwcPg0eMnTw97R88uddUoQqek4pW6wkhTziSdGmY4vaoVRQJzmuJV0unpNVWaVfKrWdd0LlApWcEIMo5a9H5lNVK4+mHjIRGtDTJdFEgwvoZBJul3UgmBZG6zJGltJpBZEsRt0rb7apruVIxt2omuqF6x+m1tgkyhsqS5YuXSBBfUwPD8m+1Hp+3oPBxAuGEmo08h7LOcSrfC+tTRXzr6YhSF0DWA4dShQdAueifRINoEvA3iHTgZv3w+/gkAmCx6f7K8Io1whQlHWs/iqDZzi5RhhFM3aKNpjcgKlXTmoESC6rnd2NrC147JYVEp96SBG/bfHxYJrdcCu8xud31T68j/abPGFMO5ZbJuDJVk26hoODQV7G4Ec6YoMe4GOUNEMTcrJEukEDHukntdlpRfU9PCPRKLzqj4pi23weWbQRwN4s/OsSHYxgF4AV6BPojBOzAGH8EETAHxjr0z74OX+O997DN/tU31vd2fY7AXvvkLzhrV6A==</latexit><latexit sha1_base64="MticM4IEqAv1Ife8wcmGJnJWIvQ=">AAACunicbVHLjtMwFHXCawiP6dAVYoHFBKmziRKEREeiUodsQJpFEXQyUlMqx3FSq7YT2c4wlZXf4C/4Glb8CGuctgs6w5UsHZ1zfR/nZjWjSofhb8e9c/fe/QcHD71Hj588PewdPbtQVSMxmeKKVfIyQ4owKshUU83IZS0J4hkjSbaKOz25IlLRSnzV65rMOSoFLShG2lKL3s+0RjKrrk00xLw1XqqKAnHK1tBLBfmOK86RyE0ax61JOdJLjJiJ23ZfTZKdmmUm6URbVK1o/bbWXipRWZJc0nKpvXOioX/2zQzCk3Z05gcQbpjJ6JMPBzQnwq6wPrH0l44+H4U+tA2gP7Uo8NpF7zgMwk3A2yDagePxy+fj6x/9X5NF70+aV7jhtjBmSKlZFNZ6bpDUFDNiB20UqRFeoZLMLBSIEzU3G1tb+NoyOSwqaZ/QcMP++8MgrtSaZzaz213d1Dryf9qs0cVwbqioG00E3jYqGgZ1BbsbwZxKgrW9QU4RltTOCvESSYS1veRelyVhV0S3cI/MeGdUdNOW2+DiTRCFQfTZOjYE2zgAL8ArMAAReAfG4COYgCnATt85dT44sfvezVzqrraprrP70wd74eq/8zPXXA==</latexit><latexit sha1_base64="MticM4IEqAv1Ife8wcmGJnJWIvQ=">AAACunicbVHLjtMwFHXCawiP6dAVYoHFBKmziRKEREeiUodsQJpFEXQyUlMqx3FSq7YT2c4wlZXf4C/4Glb8CGuctgs6w5UsHZ1zfR/nZjWjSofhb8e9c/fe/QcHD71Hj588PewdPbtQVSMxmeKKVfIyQ4owKshUU83IZS0J4hkjSbaKOz25IlLRSnzV65rMOSoFLShG2lKL3s+0RjKrrk00xLw1XqqKAnHK1tBLBfmOK86RyE0ax61JOdJLjJiJ23ZfTZKdmmUm6URbVK1o/bbWXipRWZJc0nKpvXOioX/2zQzCk3Z05gcQbpjJ6JMPBzQnwq6wPrH0l44+H4U+tA2gP7Uo8NpF7zgMwk3A2yDagePxy+fj6x/9X5NF70+aV7jhtjBmSKlZFNZ6bpDUFDNiB20UqRFeoZLMLBSIEzU3G1tb+NoyOSwqaZ/QcMP++8MgrtSaZzaz213d1Dryf9qs0cVwbqioG00E3jYqGgZ1BbsbwZxKgrW9QU4RltTOCvESSYS1veRelyVhV0S3cI/MeGdUdNOW2+DiTRCFQfTZOjYE2zgAL8ArMAAReAfG4COYgCnATt85dT44sfvezVzqrraprrP70wd74eq/8zPXXA==</latexit><latexit sha1_base64="orL71sXFLaDy34HWzENlqCNleAo=">AAACunicbVHLjtMwFHXCawivwizZWDRInU2UICSKRKUZsgFpFkXQyUhNqWzHSa3aTmQ7A5WVT+KD+BHWOJ0s6AxXsnR0zvV9nIsbzrSJ49+ef+fuvfsPjh4Gjx4/efps9PzFha5bReiC1LxWlxhpypmkC8MMp5eNokhgTjO8TXs9u6JKs1p+M7uGrgSqJCsZQcZR69GvvEEK1z9tMiWis0GuyxIJxncwyCX9QWohkCxsnqadzQUyG4K4TbvuUM2yQcXYZr3oiuota942JsgVqipaKFZtTHBODQzPvttJfNLNzsIIwj0zn30O4YQVVLoVdieO/trT57M4hK4BDBcORUG3Ho3jKN4HvA2SAYzBEPP16E9e1KQVrjDhSOtlEjdmZZEyjHDqBm01bRDZooouHZRIUL2ye1s7+NoxBSxr5Z40cM/++8MiofVOYJfZ765vaj35P23ZmnK6skw2raGSXDcqWw5NDfsbwYIpSoy7QcEQUczNCskGKUSMu+RBlw3lV9R08IDEojcquWnLbXDxJkriKPkSj0+ng2VH4CV4BSYgAe/AKfgE5mABiHfsvfc+eqn/wcc+87fXqb43/DkGB+Gbv/0N1LA=</latexit>

Iterate the following for k = 1, 2, . . . n<latexit sha1_base64="EF6+kq1OJIWqsLnigEMMR46V5VY=">AAACpnicbVFNb9NAEN2Yjxbz0UCPXFa0kXqogl0hkUulSrnABRWJ1JXiKKzXY2eV/bB2xy2R5Rt/gp/GjV/BFdZJDqRlTk/vzey8eZtVUjiMop+94MHDR4/39p+ET589f3HQf/nqypnacphwI429zpgDKTRMUKCE68oCU5mEJFuOOz25AeuE0V9wVcFMsVKLQnCGnpr3f6QVs5n51sQjrtomTF1RMCXkioaphltulGI6b9LxuG1SxXDBmWzGbburJslWzbIm6UT/qFuK6l2FYWpZWUJuRbnA8COCZQgUF0ALI6W5Fbr0yNLj5Xl8enaa5gYd1cdhO+8fRcNoXfQ+iLfg6OJw8P0XIeRy3v/th3mtQCOXzLlpHFU4a5hFwSV4U7WDivElK2HqoWYK3KxZR9jSgWfytZHCaKRr9t+JhinnVirznd2d7q7Wkf/TpjUWo1kjdFUjaL5ZVNSSoqHdf9BcWODo884F41Z4r5QvmGXcJ7W7ZQHyBrClO2SmuqDiu7HcB1dnwzgaxp99YiOyqX3ymrwhJyQm78kF+UAuyYRw8qc36A17b4OT4FMwCZJNa9DbzhySnQq+/gUZatSE</latexit><latexit sha1_base64="MaHliyu+hWc9uSVVp//8HtrMSt4=">AAACpnicbVHLbtNAFJ2YVzGvQJdsRrSRuqiCXSGRDVKlbGCDikTqSnEUxuNrZ5R5WDPXLZHlHT/BD/EP8AF8AWIL4yQL0nJXR+fcO/fcM1klhcMo+t4Lbt2+c/fe3v3wwcNHj5/0nz47d6a2HCbcSGMvMuZACg0TFCjhorLAVCYhyZbjTk8uwTph9EdcVTBTrNSiEJyhp+b9r2nFbGY+N/GIq7YJU1cUTAm5omGq4YobpZjOm3Q8bptUMVxwJptx2+6qSbJVs6xJOtE/6paielVhmFpWlpBbUS4wfIdgGQLFBdDCSGmuhC49svRw+SY+PjlOc4OO6sOwnfcPomG0LnoTxFtwcLo/+PLr288fZ/P+bz/MawUauWTOTeOowlnDLAouwZuqHVSML1kJUw81U+BmzTrClg48k6+NFEYjXbP/TjRMObdSme/s7nTXtY78nzatsRjNGqGrGkHzzaKilhQN7f6D5sICR593Lhi3wnulfMEs4z6p3S0LkJeALd0hM9UFFV+P5SY4PxnG0TD+4BMbkU3tkefkBTkiMXlNTslbckYmhJM/vUFv2HsZHAXvg0mQbFqD3nZmn+xU8Okv8Q/XHg==</latexit><latexit sha1_base64="MaHliyu+hWc9uSVVp//8HtrMSt4=">AAACpnicbVHLbtNAFJ2YVzGvQJdsRrSRuqiCXSGRDVKlbGCDikTqSnEUxuNrZ5R5WDPXLZHlHT/BD/EP8AF8AWIL4yQL0nJXR+fcO/fcM1klhcMo+t4Lbt2+c/fe3v3wwcNHj5/0nz47d6a2HCbcSGMvMuZACg0TFCjhorLAVCYhyZbjTk8uwTph9EdcVTBTrNSiEJyhp+b9r2nFbGY+N/GIq7YJU1cUTAm5omGq4YobpZjOm3Q8bptUMVxwJptx2+6qSbJVs6xJOtE/6paielVhmFpWlpBbUS4wfIdgGQLFBdDCSGmuhC49svRw+SY+PjlOc4OO6sOwnfcPomG0LnoTxFtwcLo/+PLr288fZ/P+bz/MawUauWTOTeOowlnDLAouwZuqHVSML1kJUw81U+BmzTrClg48k6+NFEYjXbP/TjRMObdSme/s7nTXtY78nzatsRjNGqGrGkHzzaKilhQN7f6D5sICR593Lhi3wnulfMEs4z6p3S0LkJeALd0hM9UFFV+P5SY4PxnG0TD+4BMbkU3tkefkBTkiMXlNTslbckYmhJM/vUFv2HsZHAXvg0mQbFqD3nZmn+xU8Okv8Q/XHg==</latexit><latexit sha1_base64="XmMhPrzSUXpna+8/RK72T7/AH5Y=">AAACpnicbVFNb9NAEF2br2K+Ahy5rEgr9VAFu0IiF6RKucAFFYnUleIorNdjZ5X9sHbHLZHlH8JP449whXXqA2mZ09N7Mztv3ua1FA7j+FcQ3rv/4OGjg8fRk6fPnr8YvXx14UxjOcy5kcZe5syBFBrmKFDCZW2BqVxCmm9mvZ5egXXC6G+4rWGpWKVFKThDT61GP7Oa2dz8aJMpV10bZa4smRJyS6NMwzU3SjFdtNls1rWZYrjmTLazrttX03RQ87xNe9E/6jaifl9jlFlWVVBYUa0x+oxgGQLFNdDSSGmuha48svRw8zE5OT3JCoOO6sOoW43G8STeFb0LkgGMyVDnq9FvP8wbBRq5ZM4tkrjGZcssCi7Bm2oc1IxvWAULDzVT4JbtLsKOHnmm2BkpjUa6Y/+daJlybqty39nf6W5rPfk/bdFgOV22QtcNguY3i8pGUjS0/w9aCAscfd6FYNwK75XyNbOM+6T2t6xBXgF2dI/MVR9UcjuWu+DidJLEk+RrPD6bDpEdkDfkLTkmCflAzsgnck7mhJM/wVEwCd6Fx+GXcB6mN61hMMy8JnsVfv8LVKbSqA==</latexit>

As long as A is non-singular, we have finally PA = LU where P is a permutation, Lis lower triangular, and U is upper triangular.

<latexit sha1_base64="u1VE7cxvOogZ11hNfXd5nDYX4RY=">AAADBnicbVLLihNBFK20rzG+oi7dFE4EF2PsdgRnI0zIxsUsIpjJwHQIt6tvd4rUo6mqTgxNLwVX+ifuxK0bP8IfEdxZ6UQwM14ouHVO3de5lRSCWxeGP1vBlavXrt/Yu9m+dfvO3Xud+w9OrS4NwxHTQpuzBCwKrnDkuBN4VhgEmQgcJ/PBmh8v0Fiu1Tu3KnAiIVc84wych6ad33EBJtHvq+iQybpqxzbLQHKxou1Y4ZJpKUGlVTwY1FUswc0YiGpQ17vseLxlk6Qar0mf1M558bJw7dhAnmNqeD5z7b6lQqucgqXdfpdyS5VWzyxXeSnAHNAl0hkskGZcgfBNdIf91yejLl3O0KC/NSFACzSydM0IB7R70qBCL9FQZzj8TeZbo91RQ5ZFsUP22vW0sx/2wsboZSfaOvvHh89/UELIcNr5FaealRKVYwKsPY/Cwk0qMI4zgX7o0mIBbA45nntXgUQ7qZoV1fSJR1KaaeOPcrRB/42oQFq7kol/udbRXuTW4P+489JlR5OKq6J0qNimUFYK6jRd75um3CBzXsqUAzPc90rZDAww53/FTpUZigW6mu6AiVwLFV2U5bJz+qIXhb3orVfsiGxsjzwij8lTEpFX5Ji8IUMyIqw1bX1ofWp9Dj4GX4KvwbfN06C1jXlIdiz4/gdvH/ay</latexit><latexit sha1_base64="TvgjXTqXemdU3xCSc1aupjIFS2g=">AAADBnicbVLLjtMwFE3CawiPKbBkYzEBsRhKwyAxG6Qp3bCYRZHodKRJqW6cm9Sq7US201JFWSKxgj9hh9iy4SP4ESR2OGmR6AxXsnR9ju/rXMcFZ9r0ej9d79LlK1ev7Vz3b9y8dXu3c+fuic5LRXFEc56r0xg0ciZxZJjheFooBBFzHMfzQcOPF6g0y+VbsypwIiCTLGUUjIWmnd9RASrO31fhARV15Uc6TUEwviJ+JHFJcyFAJlU0GNRVJMDMKPBqUNfb7Hi8YeO4GjekTarnrHheGD9SkGWYKJbNjN/XhOcyI6BJ0A8I00Tm8olmMis5qH2yRDKDBZKUSeC2iWDYf3k8CshyhgrtrQ0BUqASpWlH2CfBcYvyfImKGMXgbzLbGglGLVkWxRbZ9etpZ6/X7bVGLjrhxtk7Onj649Huu1fDaedXlOS0FCgN5aD1WdgrzKQCZRjlaIcuNRZA55DhmXUlCNSTql1RTR5aJCFpruyRhrTovxEVCK1XIrYvGx31ea4B/8edlSY9nFRMFqVBSdeF0pITk5Nm3yRhCqmxUiYMqGK2V0JnoIAa+yu2qsyQL9DUZAuMRSNUeF6Wi87Js27Y64ZvrGKHztp2nPvOA+exEzovnCPntTN0Rg51p+4H95P72fvoffG+et/WTz13E3PP2TLv+x96Sfdn</latexit><latexit sha1_base64="TvgjXTqXemdU3xCSc1aupjIFS2g=">AAADBnicbVLLjtMwFE3CawiPKbBkYzEBsRhKwyAxG6Qp3bCYRZHodKRJqW6cm9Sq7US201JFWSKxgj9hh9iy4SP4ESR2OGmR6AxXsnR9ju/rXMcFZ9r0ej9d79LlK1ev7Vz3b9y8dXu3c+fuic5LRXFEc56r0xg0ciZxZJjheFooBBFzHMfzQcOPF6g0y+VbsypwIiCTLGUUjIWmnd9RASrO31fhARV15Uc6TUEwviJ+JHFJcyFAJlU0GNRVJMDMKPBqUNfb7Hi8YeO4GjekTarnrHheGD9SkGWYKJbNjN/XhOcyI6BJ0A8I00Tm8olmMis5qH2yRDKDBZKUSeC2iWDYf3k8CshyhgrtrQ0BUqASpWlH2CfBcYvyfImKGMXgbzLbGglGLVkWxRbZ9etpZ6/X7bVGLjrhxtk7Onj649Huu1fDaedXlOS0FCgN5aD1WdgrzKQCZRjlaIcuNRZA55DhmXUlCNSTql1RTR5aJCFpruyRhrTovxEVCK1XIrYvGx31ea4B/8edlSY9nFRMFqVBSdeF0pITk5Nm3yRhCqmxUiYMqGK2V0JnoIAa+yu2qsyQL9DUZAuMRSNUeF6Wi87Js27Y64ZvrGKHztp2nPvOA+exEzovnCPntTN0Rg51p+4H95P72fvoffG+et/WTz13E3PP2TLv+x96Sfdn</latexit><latexit sha1_base64="lCrxb/sITsPclrkHzCbud4up2iw=">AAADBnicbVJNi9NAGE7i1xq/qh69DDaCh7Ukq+BehC29eNhDBbtdaEp5M3mTDp2ZhJlJawk5Cp70n3gTr/4N/4jgzUm2gt31hYF3nmfer+edpORMmzD86XrXrt+4eevgtn/n7r37D3oPH53polIUJ7TghTpPQCNnEieGGY7npUIQCcdpshq1/HSNSrNCvjfbEucCcskyRsFYaNH7HZegkuJDHb2koqn9WGcZCMa3xI8lbmghBMi0jkejpo4FmCUFXo+aZp+dTndsktTTlrRJ9YqVr0rjxwryHFPF8qXxh5rwQuYENAmGAWGayEK+0EzmFQd1SDZIlrBGkjEJ3DYRjIdvTicB2SxRob11IUBKVKIy3QiHJDjtUF5sUBGjGPxNZlsjwaQjq7LcIwd+s+j1w0HYGbnqRDun7+xsvOj9itOCVgKloRy0nkVhaeY1KMMoRzt0pbEEuoIcZ9aVIFDP625FDXlmkZRkhbJHGtKh/0bUILTeisS+bHXUl7kW/B83q0x2PK+ZLCuDkl4UyipOTEHafZOUKaTGSpkyoIrZXgldggJq7K/Yq7JEvkbTkD0wEa1Q0WVZrjpnR4MoHETvwv7J8U6yA+eJ89R57kTOa+fEeeuMnYlD3YX70f3sfvE+eV+9b973i6eeu4t57OyZ9+MPJ+H1Kw==</latexit>

(same as regular LU)

Let Ukj = A(k�1)kj for j = k . . . n.

Let Lik = A(k�1)ik /A(k�1)

kk for j = k . . . n.

Let A(k)ij = A(k�1)

ij � LikUkj for i, j = k . . . n.<latexit sha1_base64="iX9zyZbmFy/QcCOS1ZFpQ+bZgPk=">AAADN3icfVJNb9NAEF2br2K+UrjBZUWD1Eo0tRFSc6lUlAuHHIqEm0pxiNbrtbP17traXbdEK/8Hfg0SJ3rlJ3Dihrhy4czaySFJEXMavTdvZvRm4pJRpX3/u+PeuHnr9p2tu969+w8ePupsPz5VRSUxCXHBCnkWI0UYFSTUVDNyVkqCeMzIKM4HDT+6IFLRQrzX85JMOMoETSlG2kLTbWcvKpGMi48m6GNeGy9SaYo4ZXPoRYJc4oJzJBITDQa1iTjSM4yYGdT1OjsaLdk4NqOGtE1VTsvXpfYiibKMJJJmM+0NiYbdcGry8xoewTcfzG6+H+zVLdCFaSFh9/woj5JCKyi6PW8hGE4NzTcEFjhY1ef/0bd1rWhzbAPsw2X/cHUN+nK9UT3t7Pg9vw14PQmWyc7x8NvTKwDAybTzx8pxxYnQmCGlxoFf6olBUlPMiDWpUqREOEcZGdtUIE7UxLQ3reELiyTtJmkhNGzRVYVBXKk5j21l47va5BrwX9y40ml/YqgoK00EXgxKKwZ1AZsHgQmVBGt7/4QiLKndFeIZkghr+0ZrU2aEXRBdwzUw5o1RwaYt15PTV73A7wXvrGN9sIgt8Aw8B7sgAIfgGLwFJyAE2PnkfHa+OlfuF/eH+9P9tSh1naXmCVgL9/dfnvIFNQ==</latexit><latexit sha1_base64="2KZDW6VZTvPvAlSyUEguqcbfclo=">AAADN3icfVJNb9NAEF2br2K+UrjBZUWD1Eo0tRFSc6lUlAuHHIqEm0pxsNbrdbL17traXbdEK/8Hfg0SJ+DIT+DEDXHlwpm1k0OSIuY0em/ezOjNJCWjSvv+d8e9dv3GzVtbt707d+/df9DZfniqikpiEuKCFfIsQYowKkioqWbkrJQE8YSRUZIPGn50QaSihXir5yWZcDQVNKMYaQvF285eVCKZFO9N0Me8Nl6ksgxxyubQiwS5xAXnSKQmGgxqE3GkZxgxM6jrdXY0WrJJYkYNaZuqnJYvS+1FEk2nJJV0OtPekGjYDWOTn9fwCL56Z3bz/WCvboEuzAoJu+dHeZQWWkHR7XkLwTA2NN8QWOBgVZ//R9/WtaLNsQ2wD5f9w9U16PP1RnXc2fF7fhvwahIsk53j4bfHX4eZdxJ3/lg5rjgRGjOk1DjwSz0xSGqKGbEmVYqUCOdoSsY2FYgTNTHtTWv4zCJpu0lWCA1bdFVhEFdqzhNb2fiuNrkG/Bc3rnTWnxgqykoTgReDsopBXcDmQWBKJcHa3j+lCEtqd4V4hiTC2r7R2pQZYRdE13ANTHhjVLBpy9Xk9EUv8HvBG+tYHyxiCzwBT8EuCMAhOAavwQkIAXY+OB+dz84X95P7w/3p/lqUus5S8wishfv7L7ZXBfI=</latexit><latexit sha1_base64="2KZDW6VZTvPvAlSyUEguqcbfclo=">AAADN3icfVJNb9NAEF2br2K+UrjBZUWD1Eo0tRFSc6lUlAuHHIqEm0pxsNbrdbL17traXbdEK/8Hfg0SJ+DIT+DEDXHlwpm1k0OSIuY0em/ezOjNJCWjSvv+d8e9dv3GzVtbt707d+/df9DZfniqikpiEuKCFfIsQYowKkioqWbkrJQE8YSRUZIPGn50QaSihXir5yWZcDQVNKMYaQvF285eVCKZFO9N0Me8Nl6ksgxxyubQiwS5xAXnSKQmGgxqE3GkZxgxM6jrdXY0WrJJYkYNaZuqnJYvS+1FEk2nJJV0OtPekGjYDWOTn9fwCL56Z3bz/WCvboEuzAoJu+dHeZQWWkHR7XkLwTA2NN8QWOBgVZ//R9/WtaLNsQ2wD5f9w9U16PP1RnXc2fF7fhvwahIsk53j4bfHX4eZdxJ3/lg5rjgRGjOk1DjwSz0xSGqKGbEmVYqUCOdoSsY2FYgTNTHtTWv4zCJpu0lWCA1bdFVhEFdqzhNb2fiuNrkG/Bc3rnTWnxgqykoTgReDsopBXcDmQWBKJcHa3j+lCEtqd4V4hiTC2r7R2pQZYRdE13ANTHhjVLBpy9Xk9EUv8HvBG+tYHyxiCzwBT8EuCMAhOAavwQkIAXY+OB+dz84X95P7w/3p/lqUus5S8wishfv7L7ZXBfI=</latexit><latexit sha1_base64="drp5FtPuQWCHaEj97dBJZkOH4eY=">AAADN3icfVJNb9NAEF2br2K+UjhyWZEgtRINNqrUXCoV5cKhhyKRplIcrPV6nWy9u7Z214Vo5f/Ar0HiBH+DEzfElQtn1o4PcYqY0+i9eTOjNxMXjCrt+98d98bNW7fv7Nz17t1/8PBRb/fxucpLickE5yyXFzFShFFBJppqRi4KSRCPGZnG2bjmp1dEKpqLd3pVkDlHC0FTipG2ULTr7IcFknH+0QQjzCvjhSpNEadsBb1QkA845xyJxITjcWVCjvQSI2bGVdVlp9OWjWMzrUnbVGW0OCy0F0q0WJBE0sVSe6dEw8EkMtllBY/h6/dmLzsI9qsGGMA0l3BweZyFSa4VFIOhtxacRoZmWwILvNzUZ//RN3WNaHtsDRzAtv9kcw36otuoinp9f+g3Aa8nQZv0QRtnUe+PleOSE6ExQ0rNAr/Qc4OkppgRa1KpSIFwhhZkZlOBOFFz09y0gs8tkjSbpLnQsEE3FQZxpVY8tpW172qbq8F/cbNSp6O5oaIoNRF4PSgtGdQ5rB8EJlQSrO39E4qwpHZXiJdIIqztG3WmLAm7IrqCHTDmtVHBti3Xk/NXw8AfBm/9/smotWwHPAXPwB4IwBE4AW/AGZgA7HxyPjtfnW/uF/eH+9P9tS51nVbzBHTC/f0XXXEDBg==</latexit>

Find the row rk of A(k�1) that maximises |A(k�1)rk,k

|.

Let P (k�1) be the permutation matrix that swaps row k with row rk.(We always have rk � k, if rk = k then P (k�1) = I.)

<latexit sha1_base64="DG2BzdsNUQiYrDSMQX2tAr9gbEo=">AAADU3icbVNNb9NAEF2nfBRDIYUjlxU1UiuVKEZI9FKpKAJRiUOQSFMpDtF4PY5X9tpmd50Puf5H/BokDgh+BxcurJ2INi0jrTR+b2be7OzYzxOudLf7w2pt3bp95+72Pfv+g52Hj9q7j89UVkiGA5YlmTz3QWHCUxxorhM8zyWC8BMc+nGv5oczlIpn6Se9zHEsYJrykDPQBprsWm+9HKSfLUr3iImqtD0VhiB4sqS2l+KcZUJAGpRer1eVngAdMUjKXlVtssPhmvX9cliTpqiKef4q17YnYTrFQPJppO13PA2ojpDKbE4dOYkdmoXUefO53I9fuAeVY0jQVMCCC65QUefiHzcpTfxhXF04HUpt+wNq6vQvE31sCucoRaGb65kyWvLFqqSaQ65WskZ0znV02UPHtveHSCGZw1LRCGbY4N4Uv9DYOaQ8bL6P47o9TK/IHp86nQO7mrT3up1uY/Sm466dvZNTiImx/qT92wsyVghMNUtAqZHbzfW4BKk5S9AMsFCYA4thiiPjpiBQjcvmvSv63CABDTNpTqppg17NKEEotRS+iazfRF3navB/3KjQ4dG45GleaEzZSigsEqozWi8PDbhEps1uBByY5KZXyiKQwLRZsQ2VCJMZ6opugL6oB+VeH8tN5+xlx+123I9mYkdkZdvkKXlG9olLXpMT8p70yYAw66v1zfpp/Wp9b/3ZMn/JKrRlrXOekA3b2vkLbd8LiQ==</latexit><latexit sha1_base64="LW4s9aAr177eju6mCRHPTNnvnYM=">AAADU3icbVNLb9NAEF6nPIqh0MKRy4oaqZVKFCMkcqkUFIGoxCFItKlUh2i8Hscre22zu85Drv8RvwaJA4/fwYUDrJ2INi0jrTT+vpn5ZmfHfp5wpTudb1Zr48bNW7c379h3723df7C98/BEZYVkeMyyJJOnPihMeIrHmusET3OJIPwEh37cr/nhFKXiWfpBL3IcCZikPOQMtIHGO9ZrLwfpZ/PS7TJRlbanwhAETxbU9lKcsUwISIPS6/er0hOgIwZJ2a+qdXY4XLG+Xw5r0hRVMc9f5Nr2JEwmGEg+ibT9hqcB1RFSmc2oI8exQ7OQOq8+lnvxM3e/cgwJmgqYc8EVKuqc/+PGpYk/iKtzp02pbb9DTZ3BRaKPTeEcpSh0cz1TRks+X5ZUM8jVUtaIzriOLnpo2/beECkkM1goGsEUG9yb4CcaOweUh833YVy3h+kl2cMjp71vV+Pt3U670xi97rgrZ7d3BDH58703GG//8oKMFQJTzRJQ6szt5HpUgtScJWgGWCjMgcUwwTPjpiBQjcrmvSv61CABDTNpTqppg17OKEEotRC+iazfRF3lavB/3Fmhw+6o5GleaEzZUigsEqozWi8PDbhEps1uBByY5KZXyiKQwLRZsTWVCJMp6oqugb6oB+VeHct15+R52+203fdmYl2ytE3ymDwhe8QlL0mPvCUDckyY9dn6Yv2wfra+tn5vmL9kGdqyVjmPyJptbP0Fh7UNog==</latexit><latexit sha1_base64="LW4s9aAr177eju6mCRHPTNnvnYM=">AAADU3icbVNLb9NAEF6nPIqh0MKRy4oaqZVKFCMkcqkUFIGoxCFItKlUh2i8Hscre22zu85Drv8RvwaJA4/fwYUDrJ2INi0jrTT+vpn5ZmfHfp5wpTudb1Zr48bNW7c379h3723df7C98/BEZYVkeMyyJJOnPihMeIrHmusET3OJIPwEh37cr/nhFKXiWfpBL3IcCZikPOQMtIHGO9ZrLwfpZ/PS7TJRlbanwhAETxbU9lKcsUwISIPS6/er0hOgIwZJ2a+qdXY4XLG+Xw5r0hRVMc9f5Nr2JEwmGEg+ibT9hqcB1RFSmc2oI8exQ7OQOq8+lnvxM3e/cgwJmgqYc8EVKuqc/+PGpYk/iKtzp02pbb9DTZ3BRaKPTeEcpSh0cz1TRks+X5ZUM8jVUtaIzriOLnpo2/beECkkM1goGsEUG9yb4CcaOweUh833YVy3h+kl2cMjp71vV+Pt3U670xi97rgrZ7d3BDH58703GG//8oKMFQJTzRJQ6szt5HpUgtScJWgGWCjMgcUwwTPjpiBQjcrmvSv61CABDTNpTqppg17OKEEotRC+iazfRF3lavB/3Fmhw+6o5GleaEzZUigsEqozWi8PDbhEps1uBByY5KZXyiKQwLRZsTWVCJMp6oqugb6oB+VeHct15+R52+203fdmYl2ytE3ymDwhe8QlL0mPvCUDckyY9dn6Yv2wfra+tn5vmL9kGdqyVjmPyJptbP0Fh7UNog==</latexit><latexit sha1_base64="bGZbhs1Y4VmFsmD4BixgU1M3PMA=">AAADU3icbVPfa9RAEE6u/qjR2lYffVlshCvUkIhgXwqVQ1HwoYJtCpfzmGwmyZJsEnc3vR5p/iP/GsEH0b/DF1/c5A7bax1YmHzfzHyzs5OwyplUrvvDHKzdun3n7vo96/6DjYebW9uPTmRZC4rHtMxLcRqCxJwVeKyYyvG0Egg8zNEPs1HH+2coJCuLT2pe4YRDUrCYUVAamm6bb4IKRFieN94+5W1jBTKOgbN8TqygwBktOYciaoLRqG0CDiqlkDejtl1lfX/JhmHjd6QuKjNWvayUFQhIEowES1JlvWVFRFSKRJQzYotpZpMyJvbrz80we+7ttrYmQREO54wziZLYF/+4aaPj97L2wnYIsawPqIh9dJkYYl+4QsFr1V9Pl1GCnS9KyhlUciGrRWdMpZc9OJY19JFAPoO5JCmcYY8HCX4hmb1HWNx/H2Rde1hckT14bzu7Vjvd2nEdtzdy0/GWzo6xtKPp1u8gKmnNsVA0BynHnlupSQNCMZqjHmAtsQKaQYJj7RbAUU6a/r1b8kwjEYlLoU+hSI9ezWiASznnoY7s3kRe5zrwf9y4VvH+pGFFVSss6EIornOiStItD4mYQKr0bkQMqGC6V0JTEECVXrEVlRTzM1QtWQFD3g3Kuz6Wm87JC8dzHe+ju3O4vxzZuvHEeGoMDc94ZRwa74wj49ig5lfzm/nT/DX4Pvizpv+SRejAXOY8NlZsbeMvcI0KNA==</latexit>

Replace A(k�1) by P (k�1)A(k�1); replace L by P (k�1)L; replace P by P (k�1)P .

This ensures that A(k�1)kk 6= 0, except if the k column of A(k�1) is all zeros.

(In fact it ensures A(k�1)kk 6= 0 whenever A is non-singular.)

<latexit sha1_base64="cXNoPBLo0c9czdccbegcDDUBgZU=">AAADlXicbVJtaxNBEN4kvtTzrVXBD6IMNkILNtyJYEGESsQXKBqlbQq9NOxt5nLL7e6du3tt43Gf/Rviv/JP+NHPbtJUk7QDC7PzPDPP7sxEueDG+v6vWr1x6fKVq0vXvOs3bt66vbxyZ89khWa4yzKR6f2IGhRc4a7lVuB+rpHKSGA3SttjvHuE2vBM7dhRjj1Jh4rHnFHrQv2V2vcwpzrKTspgk8mq9EITx1RyMQIvVHjMMimpGpRhu12VoaQ2YVSU7aqaR7vdKRpFZXcMuqIm5fnz3HqhpsMhDjQfJtb7grmgDKH5+rBcSzeC9aoJ0QianbMr/AdeevqMvb3I2p5FO4top9nyvJ2EG0BlCo0GbELtjGi/TNPK/eAr+M2ngCcMcws8djRXLm2Ca2whFWTx3ENdPSoEfEOdmZYXhrD2QUFMmUu1/5QuFoHjBBW6STh8UkhlasNwNSwE1a11r+ovr/otf2Jw3gmmzurWu48/fxBCOv3lP+EgY4VEZZmgxhwEfm57JdWWM4FuBIXBnLKUDvHAuYpKNL1ysjEVPHGRAcSZdkdZmERnM0oqjRnJyDHHUzWL2Dh4EXZQ2HizV3KVFxYVOxWKCwE2g/H6wYBrZNZt14BTprl7K7CEatdDt6RzKgmKI7QVzAUjOW5UsNiW887es1bgt4LPrmOb5NSWyAPymKyRgLwgW+Q96ZBdwmq/6/fqD+uPGvcbrxpvGm9PqfXaNOcumbPGp78fRhy1</latexit><latexit sha1_base64="6VAQ7k/PUQaf3XNJEe4Sn2i0Wzk=">AAADlXicbVJtaxNBEL4kvtTzrVXBD6IMNkIKNtyJYEGESsQXKBq1aQK5NOxt5nLL7e6du3tt43Gf/RviN3+Sf8KPfnaTtpqkHViYneeZeXZnJsw408bzflWqtQsXL11eueJevXb9xs3VtVt7Os0VxQ5Neap6IdHImcSOYYZjL1NIRMixGyatKd49QKVZKnfNJMOBIGPJIkaJsaHhWuVbkBEVpkeFv0VFWbiBjiIiGJ+AG0g8pKkQRI6KoNUqi0AQE1PCi1ZZLqLd7gkahkV3CtqiOmHZ08y4gSLjMY4UG8fG/YQZJxSh/nK/aCSb/kZZh3AC9fbpFf4Dz111yt5ZZu3Mo+1ltF1vuu5uzDSg1LlCDSYmZk50WCRJaX/wBbz6Y8AjipkBFlmaLZfUwTY2FxLSaOGhth7hHL6iSnXTDQJovJMQEWpTzT+l80XgMEaJdhIWnxWSqdzUTI5zTlRzwy2Hq+te05sZnHX8E2d9+837H99/9j63h6t/glFKc4HSUE607vteZgYFUYZRjnYEucaM0ISMsW9dSQTqQTHbmBIe2cgIolTZIw3MovMZBRFaT0RomdOp6mVsGjwP6+cm2hoUTGa5QUmPhaKcg0lhun4wYgqpsds1YoQqZt8KNCbK9tAu6YJKjPwATQkLwVBMG+Uvt+Wss/ek6XtN/6Pt2JZzbCvOPeeh03B855mz7bx12k7HoZXf1TvV+9UHtbu1F7VXtdfH1GrlJOe2s2C1D38BFcIeCQ==</latexit><latexit sha1_base64="6VAQ7k/PUQaf3XNJEe4Sn2i0Wzk=">AAADlXicbVJtaxNBEL4kvtTzrVXBD6IMNkIKNtyJYEGESsQXKBq1aQK5NOxt5nLL7e6du3tt43Gf/RviN3+Sf8KPfnaTtpqkHViYneeZeXZnJsw408bzflWqtQsXL11eueJevXb9xs3VtVt7Os0VxQ5Neap6IdHImcSOYYZjL1NIRMixGyatKd49QKVZKnfNJMOBIGPJIkaJsaHhWuVbkBEVpkeFv0VFWbiBjiIiGJ+AG0g8pKkQRI6KoNUqi0AQE1PCi1ZZLqLd7gkahkV3CtqiOmHZ08y4gSLjMY4UG8fG/YQZJxSh/nK/aCSb/kZZh3AC9fbpFf4Dz111yt5ZZu3Mo+1ltF1vuu5uzDSg1LlCDSYmZk50WCRJaX/wBbz6Y8AjipkBFlmaLZfUwTY2FxLSaOGhth7hHL6iSnXTDQJovJMQEWpTzT+l80XgMEaJdhIWnxWSqdzUTI5zTlRzwy2Hq+te05sZnHX8E2d9+837H99/9j63h6t/glFKc4HSUE607vteZgYFUYZRjnYEucaM0ISMsW9dSQTqQTHbmBIe2cgIolTZIw3MovMZBRFaT0RomdOp6mVsGjwP6+cm2hoUTGa5QUmPhaKcg0lhun4wYgqpsds1YoQqZt8KNCbK9tAu6YJKjPwATQkLwVBMG+Uvt+Wss/ek6XtN/6Pt2JZzbCvOPeeh03B855mz7bx12k7HoZXf1TvV+9UHtbu1F7VXtdfH1GrlJOe2s2C1D38BFcIeCQ==</latexit><latexit sha1_base64="qRCZIMDj/QI4afEG7/HIamzB6rk=">AAADlXicbVJtaxNBEL4kvtTzLVXBD6IMJkIKNtyJYECESkQUCkZpmkIuDXubudxyu3vn7l7beNxnf6N/wo9+dpOmmqQdWJid55l5dmcmzDjTxvN+Vaq1a9dv3Ny65d6+c/fe/fr2g0Od5opin6Y8VUch0ciZxL5hhuNRppCIkOMgTLpzfHCCSrNUHphZhiNBppJFjBJjQ+Ptys8gIypMzwq/Q0VZuIGOIiIYn4EbSDylqRBEToqg2y2LQBATU8KLblmuo4PBEg3DYjAHbVGdsOx1ZtxAkekUJ4pNY+N+w4wTitB8f1y0kl1/p2xCOINm7+IK/4G3rrpg72+y9lfR3ibaa7Zd9yBmGlDqXKEGExOzIjoukqS0P/gOXvMl4BnFzACLLM2WS5pgG5sLCWm09lBbj3AOP1Cluu0GAbQ+S4gItanmn9LVInAao0Q7CYsvCslU7mompzknqr3jluN6w2t7C4PLjr90Gs7SeuP6n2CS0lygNJQTrYe+l5lRQZRhlKMdQa4xIzQhUxxaVxKBelQsNqaEFzYygShV9kgDi+hqRkGE1jMRWuZ8qnoTmwevwoa5iTqjgsksNyjpuVCUczApzNcPJkwhNXa7JoxQxexbgcZE2R7aJV1TiZGfoClhLRiKeaP8zbZcdg5ftX2v7X/1GnudZcu2nCfOc6fl+M4bZ8/55PScvkMrv6uPqk+rz2qPa+9qH2ofz6nVyjLnobNmtS9/AQHiGp4=</latexit>

(new steps)

5

Does this work?

To show that this method is valid requires some effortThere is some discussion in IB numerical analysis...... the following 3 slides have an overview

Our main concern here is how to do the programming, not the proof that the algorithm is valid

6

mathematical formulation of LU algorithmLet A(0) = A. We compute matrices A(k) with elements

A(k)ij = A(k�1)

ij �A(k�1)

ik A(k�1)kj

A(k�1)kk

Then the first k rows of A(k) are all zeros, as are the first k columns. Compute L and U with elements

Lik = A(k�1)ik /A(k�1)

kk , Ukj = A(k�1)kj .

Then A = LU , where L is lower triangular and U is upper triangular.<latexit sha1_base64="18jSr3FsbaJ9PE+gB5LD+qY7+O0=">AAAEIHicbVNLb9NAEHYTHsW82nLkMqJGaqU2xKgCLpVa5cKhhyI1TaU6hPV6HG+9fnR33RCs/S1InOCfcEGII/wQbkisnYDiwEorzX7fzOx8s7N+zplU3e73lVb72vUbN1dv2bfv3L13f21941RmhaDYpxnPxJlPJHKWYl8xxfEsF0gSn+PAj3sVP7hCIVmWnqhpjsOEjFMWMkqUgUbrrQ0vJ8LP3pbuM5ro0vZkGJKE8SnYXooTmiUJSYPS6/V06SVERZTwsqd1kx0M5qzvl4OKNEllzPK9XNmeIOMxBoKNI2UfoQLn8HW51d3W+4dOB2CAYNLkhUIwCQSjKGce8bZ2YMJUBMgxwVRJsJ0/zKhkFxr2oT7uunPAhl3wQkFouYjHeuEUX2i9yMax1o5jn0SYgooQQiakKTF2QGQTCVm4UAwRCIRzeIcikztAZI00o8yTFEkqjbDeXJVzZCLTAJz+khyjBo7q+paExPpJs8Id8C4vCxLY/VpA070COiYV1Bqcw/2jvrMDkwjF7G4mgWcTFGCaS9JxwYn4W4/hijxvcB09Wtvsdrr1gn8Nd25sHnhffr2xLOt4tPbTCzJaVKIoJ1Keu91cDUsiFKMczTQUEnNCYzLGc2OmJEE5LOvh1fDYIAGEmTA7VVCjixElSaScJr7xrAZMLnMV+D/uvFDhi2HJ0uoRUjq7KCw4qAyqnwABE0iVGfSAESqYqRVoRMzwKPNfGrdEyK9QaWiAflI1yl1uy7/G6dOO2+24r0zH9qzZWrUeWo+sLcu1nlsH1kvr2OpbtDVtvW99bH1qf2h/bn9tf5u5tlbmMQ+sxmr/+A0uV1Jv</latexit><latexit sha1_base64="5Bws9OAl4fCvRB/GZVWNI2DHXCo=">AAAEIHicbVNLb9NAEHYTHsW82nLkMqJGaqU2xKgCLpVa5cIhQkVqmkp1KOvNON56/ejuuiFY+1uQOME/4YIQRzhz4Q9wQ2LtBBSnrLTS7PfNzM43O+tnnEnVbn9bajSvXL12ffmGffPW7Tt3V1bXjmSaC4o9mvJUHPtEImcJ9hRTHI8zgST2Ofb9qFPy/QsUkqXJoZpkOIjJKGEBo0QZ6HS1seZlRPjpm8J9QmNd2J4MAhIzPgHbS3BM0zgmybDwOh1deDFRISW86GhdZ/v9Gev7Rb8kTVIZsWwnU7YnyGiEQ8FGobK7qMDZf1VstDf17r7TAugjmDRZrhBMAsEoyqlHtKkdGDMVAnKMMVESbOcvc1qwMw27UB233RlgwzZ4gSC0mMcjPXeKzrSeZ6NIa8exD0NMQIUIARPSlBg5INKxhDSYK4YIBMI5vEWRyi0gskLqUeZJ8jiRRlhnpsrpmshkCE5vQY5RA92qvgUhkX5Ur3ALvPPznAztXiWg7l4CLZMKKg3O/m6352zBOEQxvZtJ4OkYBZjmkmSUcyL+1WO4PMtqXEufrqy3W+1qwWXDnRnre97n369/vvhxcLryyxumNC9FUU6kPHHbmRoURChGOZppyCVmhEZkhCfGTEiMclBUw6vhoUGGEKTC7ERBhc5HFCSWchL7xrMcMLnIleD/uJNcBc8GBUvKR0jo9KIg56BSKH8CDJlAqsygDxmhgplagYbEDI8y/6V2S4j8ApWGGujHZaPcxbZcNo4et9x2y31pOrZjTdeydd96YG1YrvXU2rOeWwdWz6KNSeNd40PjY/N981PzS/Pr1LWxNIu5Z9VW8/sfSmdUig==</latexit><latexit sha1_base64="5Bws9OAl4fCvRB/GZVWNI2DHXCo=">AAAEIHicbVNLb9NAEHYTHsW82nLkMqJGaqU2xKgCLpVa5cIhQkVqmkp1KOvNON56/ejuuiFY+1uQOME/4YIQRzhz4Q9wQ2LtBBSnrLTS7PfNzM43O+tnnEnVbn9bajSvXL12ffmGffPW7Tt3V1bXjmSaC4o9mvJUHPtEImcJ9hRTHI8zgST2Ofb9qFPy/QsUkqXJoZpkOIjJKGEBo0QZ6HS1seZlRPjpm8J9QmNd2J4MAhIzPgHbS3BM0zgmybDwOh1deDFRISW86GhdZ/v9Gev7Rb8kTVIZsWwnU7YnyGiEQ8FGobK7qMDZf1VstDf17r7TAugjmDRZrhBMAsEoyqlHtKkdGDMVAnKMMVESbOcvc1qwMw27UB233RlgwzZ4gSC0mMcjPXeKzrSeZ6NIa8exD0NMQIUIARPSlBg5INKxhDSYK4YIBMI5vEWRyi0gskLqUeZJ8jiRRlhnpsrpmshkCE5vQY5RA92qvgUhkX5Ur3ALvPPznAztXiWg7l4CLZMKKg3O/m6352zBOEQxvZtJ4OkYBZjmkmSUcyL+1WO4PMtqXEufrqy3W+1qwWXDnRnre97n369/vvhxcLryyxumNC9FUU6kPHHbmRoURChGOZppyCVmhEZkhCfGTEiMclBUw6vhoUGGEKTC7ERBhc5HFCSWchL7xrMcMLnIleD/uJNcBc8GBUvKR0jo9KIg56BSKH8CDJlAqsygDxmhgplagYbEDI8y/6V2S4j8ApWGGujHZaPcxbZcNo4et9x2y31pOrZjTdeydd96YG1YrvXU2rOeWwdWz6KNSeNd40PjY/N981PzS/Pr1LWxNIu5Z9VW8/sfSmdUig==</latexit><latexit sha1_base64="b0yWIk75zllhOoLGvGB12lxGIZk=">AAAEIHicbVNLb9NAEHYTHsW82nLkMqJGaqU2xKgCLpVa5cIhhyI1TaU6ROv1ON56/ejuuiFY+1uQOME/4YY4wg/hzNoJKE5ZaaXZ75uZnW921s85k6rb/bnWat+6fefu+j37/oOHjx5vbG6dyawQFAc045k494lEzlIcKKY4nucCSeJzHPpxr+KH1ygky9JTNctxlJBJykJGiTLQeLO15eVE+NmH0n1FE13angxDkjA+A9tLcUqzJCFpUHq9ni69hKiIEl72tG6yw+GC9f1yWJEmqYxZfpAr2xNkMsFAsEmk7D4qcI7flzvdXX147HQAhggmTV4oBJNAMIpy7hHvagemTEWAHBNMlQTb+cuMS3ap4RDq4767AGzYBy8UhJbLeKyXTvGl1stsHGvtOPZphCmoCCFkQpoSYwdENpWQhUvFEIFAOIePKDK5B0TWSDPKPEmRpNII6y1UOX0TmQbgDFbkGDXQr+tbERLrF80K98C7uipIYA9qAU33CuiYVFBrcI4P+wNnD6YRivndTALPpijANJekk4IT8a8ewxV53uA6eryx3e106wU3DXdhbFuLdTLe+O0FGS0qUZQTKS/cbq5GJRGKUY5mGgqJOaExmeCFMVOSoByV9fBqeG6QAMJMmJ0qqNHliJIkUs4S33hWAyZXuQr8H3dRqPDNqGRp9QgpnV8UFhxUBtVPgIAJpMoMesAIFczUCjQiZniU+S+NWyLk16g0NEA/qRrlrrblpnH2suN2O+677vbRwaJl69ZT65m1Y7nWa+vIemudWAOLtmatT60vra/tz+1v7e/tH3PX1toi5onVWO1ffwALiE+p</latexit>

Usethe

formula

forA(k) , n

times

<latexit sha1_base64="LsLKU4B7VIFby/mBhb7xRbCeqZw=">AAACpHicbVHLbtNAFB2bVzGvFNixGZGAilQiG1WFZVE2LFgUQepKcRqNx9f2KPOwZsaFaOTv4Hf4DX6BD2CHxDjJgrTczRydc19zbt5wZmwc/wzCGzdv3b6zdze6d//Bw0eD/cdnRrWawpQqrvR5TgxwJmFqmeVw3mggIueQ5stJr6eXoA1T8otdNTAXpJKsZJRYTy0G37OG6Fx9c8kxFZ2LMlOWRDC+wlEm4StVQhBZuGwy6VwmiK0p4W7Sdbtqmm7VPHdpL/qmZsmao8ZGmSZVBYVmVW2jqQFsa8Cl0qLlpH/x6P2FO1i+6kaHeCRH2DIBplsMhvE4Xge+DpItGJ48/VX8QAidLga/s0LRVoC0lBNjZknc2Lkj2jLKwa/UGmgIXZIKZh5K4qfM3drADr/wTLFeplTS4jX7b4UjwpiVyH1m/0tzVevJ/2mz1pbv5o7JprUg6WZQ2XJsFe6vgQumgVrvdsEI1czvimlNNKHW32xnSg38EmyHd8hc9EYlV225Ds7ejJN4nHzyjh2hTeyhZ+g5OkAJeotO0Ad0iqaIoj/BMDgMXocvw4/h53C6SQ2Dbc0TtBPhxV90hNP6</latexit><latexit sha1_base64="+oGfE2vN2mbwFxEJTFEBWiCPMkE=">AAACpHicbVHLbtQwFHXCq4TX8NixsZgBFakdJahqWRbNhgWLIkhTaTIdOc5NYo3tRLbTMrLyHXwJP8Bf8At8AGKDhDMzC6blbnx0zn353KzhTJsw/OH5N27eun1n525w7/6Dh48Gj5+c6rpVFGJa81qdZUQDZxJiwwyHs0YBERmHJFtMej25AKVZLT+bZQMzQUrJCkaJcdR88DVtiMrqLzY6pKKzQaqLggjGlzhIJVzSWggic5tOJp1NBTEVJdxOum5bTZKNmmU26UXXVC9Yc9CYIFWkLCFXrKxMEGvApgJc1Eq0nPQvHr07t7uL191oD4/kCBsmQHfzwTAch6vA10G0AcPjZz/z77+Pvp3MB7/SvKatAGkoJ1pPo7AxM0uUYZSDW6nV0BC6ICVMHZTETZnZlYEdfumYfLVMUUuDV+y/FZYIrZcic5n9L/VVrSf/p01bU7ydWSab1oCk60FFy7GpcX8NnDMF1Di3c0aoYm5XTCuiCDXuZltTKuAXYDq8RWaiNyq6ast1cPpmHIXj6KNz7ACtYwc9Ry/QLorQETpG79EJihFFf7yht+ft+6/8D/4nP16n+t6m5inaCv/8L0KU1eA=</latexit><latexit sha1_base64="+oGfE2vN2mbwFxEJTFEBWiCPMkE=">AAACpHicbVHLbtQwFHXCq4TX8NixsZgBFakdJahqWRbNhgWLIkhTaTIdOc5NYo3tRLbTMrLyHXwJP8Bf8At8AGKDhDMzC6blbnx0zn353KzhTJsw/OH5N27eun1n525w7/6Dh48Gj5+c6rpVFGJa81qdZUQDZxJiwwyHs0YBERmHJFtMej25AKVZLT+bZQMzQUrJCkaJcdR88DVtiMrqLzY6pKKzQaqLggjGlzhIJVzSWggic5tOJp1NBTEVJdxOum5bTZKNmmU26UXXVC9Yc9CYIFWkLCFXrKxMEGvApgJc1Eq0nPQvHr07t7uL191oD4/kCBsmQHfzwTAch6vA10G0AcPjZz/z77+Pvp3MB7/SvKatAGkoJ1pPo7AxM0uUYZSDW6nV0BC6ICVMHZTETZnZlYEdfumYfLVMUUuDV+y/FZYIrZcic5n9L/VVrSf/p01bU7ydWSab1oCk60FFy7GpcX8NnDMF1Di3c0aoYm5XTCuiCDXuZltTKuAXYDq8RWaiNyq6ast1cPpmHIXj6KNz7ACtYwc9Ry/QLorQETpG79EJihFFf7yht+ft+6/8D/4nP16n+t6m5inaCv/8L0KU1eA=</latexit><latexit sha1_base64="GBiklcFzfugKl9Cif3qorswje3c=">AAACpHicbVHLbtQwFHXCq4RHB1iysZgBFamMElRRlkWzYcGiCNJUmkxHjnOTWONHZDstIyvfwbfxI+yQcKazYFruxkfn3JfPLVrOjI3jX0F45+69+w/2HkaPHj95uj969vzMqE5TSKniSp8XxABnElLLLIfzVgMRBYesWM0GPbsEbZiS3+26hYUgtWQVo8R6ajn6mbdEF+qHSz5Q0bsoN1VFBONrHOUSrqgSgsjS5bNZ73JBbEMJd7O+31WzbKsWhcsG0Tc1K9YetTbKNalrKDWrGxulBrBtAFdKi46T4cWTTxfuYPW2nxziiZxgywSYfjkax9N4E/g2SLZgjLZxuhz9zktFOwHSUk6MmSdxaxeOaMsoB79SZ6AldEVqmHsoiZ+ycBsDe/zaM+VmmUpJizfsvxWOCGPWovCZwy/NTW0g/6fNO1t9XDgm286CpNeDqo5jq/BwDVwyDdR6t0tGqGZ+V0wbogm1/mY7Uxrgl2B7vEMWYjAquWnLbXD2fprE0+RrPD452lq2h16iV+gAJegYnaDP6BSliKI/wTg4DN6Fb8Iv4bcwvU4Ng23NC7QT4cVf51zRmA==</latexit>

To see that A = LU note that A(n) = 0 (all rows are zero) so that

0 = A(n)ij = A(n�1)

ij �A(n�1)

in A(n�1)nj

A(n�1)nn

= A(n�2)ij �

A(n�2)i,n�1A

(n�2)n�1,j

A(n�2)n�1,n�1

�A(n�1)

in A(n�1)nj

A(n�1)nn

= · · ·

= A(0)ij �

nX

k=1

A(k�1)ik A(k�1)

kj

A(k�1)kk

Hence A(0)ij =

Pnk=1 LikUkj so A = LU

<latexit sha1_base64="za76b5GN64LyL0pgT/tT/YFZrYE=">AAAEd3icpVPPb9MwFPa6AiP82uDIAYuVqaCtSqYJuFQa6mWHHTZpXSctXeU4Tmri2JHtbAzL/w5/D1f+kUmcwG3aLt248aRI9ve+977n9/KiglGlff/XSmO1+eDho7XH3pOnz56/WN94eapEKTHpY8GEPIuQIoxy0tdUM3JWSILyiJFBlPUm/sElkYoKfqKvCzLMUcppQjHSDhptNGhYIBmJbyb4iHNrvFAlCcopu4ZeyMkVFnmOeGzCXs+aMEd6jBEzPWuXvYPBzBtFZjBxuqQqo8Veob1QojQlsaTpWHsnAipCoB4jDVtfuof9FuRCL4AL0+bvbddvwTZiDEpxpSCSBH4nUryHSkx5XhiRlHKDGE35B+v5sAtnkSNDv1q4NQd2gjm0456TSIRNHee2TuOOZs0S4gjuLaF3m3D3NmE9XwVvuzhbJ7r7dj3rApwSrbfzv0WFOBZauRtc1OjXKlRlPjJZN7AXvFZuNlPKKqXZNbtVmiPZVIm4Ac9bfUA4JtWcFjrdZZ3DKnN/mrE1mVk1Zzta3/Q7/tTg/UMwO2zuH3d+AGdHo/WbMBa4zAnXmCGlzgO/0EODpKaYEVdZqUiBcIZScu6OHOVEDc10Jyx855AYJkK6j2s4ResRBuVKXeeRY07+W3XXNwH/5TsvdfJ56MZUlNo1oxJKSga1+zndgsGYSoK125+YIiypqxXiMXK9124Nl1TGhF0SbeESGOWTRgV323L/cLrbCfxOcOw6tgcqWwOvwVvQBgH4BPbBATgCfYAbPxs3jT+rYPV3801zq9muqI2VWcwrsGTN4C9nM2qX</latexit><latexit sha1_base64="fE/KbGMOilqvaWROryKC9KNWE+I=">AAAEd3icpVPPb9MwFM66AiP82uDIAYuVqUNrlUwTcKk01MsOO2zSuk5auspxnNTEsSPb2RiW/x3O/Clc+UcmcQI3abt044alSM/f+977nt/LC3NKpPK8XyuN1eaDh4/WHrtPnj57/mJ94+Wp5IVAeIA45eIshBJTwvBAEUXxWS4wzEKKh2Han/qHl1hIwtmJus7xKIMJIzFBUFlovNEgQQ5FyL9q/wPKjHYDGccwI/QauAHDV4hnGWSRDvp9o4MMqgmCVPeNWfYOhzNvGOrh1GmTypTke7lyAwGTBEeCJBPlnnAgMQZqAhVofe4dDlqAcbUALnSbbZue1wJtSCkQ/EoCKDD4hgXfBpKXPDcIcUKYhpQk7L1xPdADs8ixJl8M2JoDHX8OdexzYgGRruPM1GnM0oxeQizBviVwbxPu3ias56vgHRtn6kR736lnXYAl0bid/y0qQBFX0t7AokavVqEssrFOe765YLVy05lSWinNrumt0hxJSyVsBzxv9QFmCFdzWuj0lnUOq8yDMmNrOrNqzma8vul1vfKA+4Y/Mzb3j7vfnR/b7aPx+k0QcVRkmClEoZTnvperkYZCEUSxrayQOIcohQk+tyaDGZYjXe6EAe8sEoGYC/sxBUq0HqFhJuV1Flrm9L+Vd31T8F++80LFn0Z2THmhbDMqobigQNmf0y4YiIjASNn9iQhEgthaAZpA23tl13BJZYLpJVYGLIFhNm2Uf7ct943T3a7vdf1j27E9pzprzmvnrdN2fOejs+8cOEfOwEGNn42bxp9VZ/V3801zq9muqI2VWcwrZ+k0/b/jRGuY</latexit><latexit sha1_base64="fE/KbGMOilqvaWROryKC9KNWE+I=">AAAEd3icpVPPb9MwFM66AiP82uDIAYuVqUNrlUwTcKk01MsOO2zSuk5auspxnNTEsSPb2RiW/x3O/Clc+UcmcQI3abt044alSM/f+977nt/LC3NKpPK8XyuN1eaDh4/WHrtPnj57/mJ94+Wp5IVAeIA45eIshBJTwvBAEUXxWS4wzEKKh2Han/qHl1hIwtmJus7xKIMJIzFBUFlovNEgQQ5FyL9q/wPKjHYDGccwI/QauAHDV4hnGWSRDvp9o4MMqgmCVPeNWfYOhzNvGOrh1GmTypTke7lyAwGTBEeCJBPlnnAgMQZqAhVofe4dDlqAcbUALnSbbZue1wJtSCkQ/EoCKDD4hgXfBpKXPDcIcUKYhpQk7L1xPdADs8ixJl8M2JoDHX8OdexzYgGRruPM1GnM0oxeQizBviVwbxPu3ias56vgHRtn6kR736lnXYAl0bid/y0qQBFX0t7AokavVqEssrFOe765YLVy05lSWinNrumt0hxJSyVsBzxv9QFmCFdzWuj0lnUOq8yDMmNrOrNqzma8vul1vfKA+4Y/Mzb3j7vfnR/b7aPx+k0QcVRkmClEoZTnvperkYZCEUSxrayQOIcohQk+tyaDGZYjXe6EAe8sEoGYC/sxBUq0HqFhJuV1Flrm9L+Vd31T8F++80LFn0Z2THmhbDMqobigQNmf0y4YiIjASNn9iQhEgthaAZpA23tl13BJZYLpJVYGLIFhNm2Uf7ct943T3a7vdf1j27E9pzprzmvnrdN2fOejs+8cOEfOwEGNn42bxp9VZ/V3801zq9muqI2VWcwrZ+k0/b/jRGuY</latexit><latexit sha1_base64="l9lIAIUgcpqjYEFiFvjJr5v2WDQ=">AAAEd3icpVPPT9swFA6l21j2A9iOO8waHSoTRQlC2y6VmHrhwIFJlCKRUjmOk3px7Mh2YMzy/7jr/hGknTY3SUsKu81SpOfvfe99z+/lhTklUnner5XWavvR4ydrT91nz1+8XN/YfHUmeSEQHiJOuTgPocSUMDxURFF8ngsMs5DiUZgOZv7RFRaScHaqbnI8zmDCSEwQVBaabLZIkEMR8u/a/4gyo91AxjHMCL0BbsDwNeJZBlmkg8HA6CCDaoog1QNjlr2jUe0NQz2aOW1SmZL8IFduIGCS4EiQZKrcUw4kxkBNoQKdL/3jYQcwrhbApe6yHdP3OqALKQWCX0sABQY/sOA7QPKS5wYhTgjTkJKEfTCuB/qgjpxo8s2A7TnQ8+dQzz4nFhDpJs5Mk8YszeglxBLsWwL3LuH+XcJmvgretXGmSbT33WbWBVgSjdv736ICFHEl7Q0savQaFcoim+i075tL1ig3rZXSSqm+pndKcyQtlbAd8LzVR5ghXM1podNf1jmuMg/LjJ3ZzKo5m8nGlrfnlQc8NPza2HLqczLZuA0ijooMM4UolPLC93I11lAogii2lRUS5xClMMEX1mQww3Ksy50w4L1FIhBzYT+mQIk2IzTMpLzJQsuc/bfyvm8G/st3Uaj489iOKS+UbUYlFBcUKPtz2gUDEREYKbs/EYFIEFsrQFNoe6/sGi6pTDG9wsqAJTDMZo3y77floXG2v+d7e/5Xb+vwoG7ZmvPGeed0Hd/55Bw6R86JM3RQ62frtvVn1Vn93X7b3m53K2prpY557Sydtv8XUjRpMg==</latexit>

7

LU with pivot

This method is valid for any choice of the row indices r1, r2, . . . , rn, as long as rk � k, and A(k�1)kk 6= 0

for all k. We can choose rk at the same time as we compute A(k�1), aiming to ensure that A(k�1)kk 6= 0.

<latexit sha1_base64="q7AukJQMo55hF7PgcofhyFisQuw=">AAADd3icbVJNb9NAEN0kFEr4SuHIgRE1qEhtZFcV5dgqF45FappKdYjW67W98n64u+uWaOVfwx/hJ3Dlj1TiBOskSKTtHOzRezPzxs+TVJwZG4a/Ot3eg42HjzYf9588ffb8xWDr5ZlRtSZ0TBRX+jzBhnIm6dgyy+l5pSkWCaeTpBy1/OSKasOUPLXzik4FziXLGMHWQ7OtDosrrBP1zUUfiWhcPzZZhgXjc+jHkl4TJQSWqYtHo8bFAtuCYO5GTbPOTiYrNkncpCX9UFOy6qCy/VjjPKepZnlh+6cFMyCoLVQKPrvCnKWQKQ1YzoEUihEKKgNbUNDqGphMPWIg0LNoV8/2d+NUWeMzJ5tgF7ABrmTevn1FGef0EsoWlykExzNXls1Xt1PuRR8av+5lGCylOIegDIYAEwoEy1ZXGboYEQC2C3WDBQXL/MMPv/Z1SlS19UXH/ya2OkwwL28VUGlq7RsK336v8rCZDbbDYbgIuJtEq2T76HDj+w+E0MlscOO/ltSCSks4NuYiCis7dVhbRjj1JteGVpiUOKcXPpV+YzN1i5to4J1Hls5mSlpYoP93OCyMmYvEV7b/zdzmWvA+7qK22aepY7J1Q5KlUFbz1oT2wCBlmhLr7ydlmGjmd/X+Yo2J9We4plJQfkVtA2tgIlqjotu23E3O9odROIy+eMcO0DI20Wv0Fu2gCB2iI/QZnaAxIp2fnZvOny7q/u696b3v7SxLu51Vzyu0Fr3oL+ntGrw=</latexit><latexit sha1_base64="DMTnQ1VsFSi9WpV2pWJXQYk1OHo=">AAADd3icbVLNbtNAEN4kFEr4a+HIgRE1qEhtZFcV5dgqF45FappKdYjW67W98v64u+uWaOUzD8Kb8ARceQOeoBInWCdBIm3nYI++b2a+8edJKs6MDcOfnW7v3tr9B+sP+48eP3n6bGPz+alRtSZ0RBRX+izBhnIm6cgyy+lZpSkWCafjpBy2/PiSasOUPLGzik4EziXLGMHWQ9PNDosrrBP1xUXviWhcPzZZhgXjM+jHkl4RJQSWqYuHw8bFAtuCYO6GTbPKjsdLNkncuCX9UFOyar+y/VjjPKepZnlh+ycFMyCoLVQKPrvEnKWQKQ1YzoAUihEKKgNbUNDqCphMPWIg0NNoR0/3duJUWeMzJ5tgB7ABrmTevn1FGef0AsoWlykER1NXls1nt13uRu8av+5FGCykOIegDAYAYwoEy1ZXGTofEQC2c3WDBQXL/MMPv/J1SlS19UVH/ya2OkwwL28VUGlq7RsK336n8qCZbmyFg3AecDuJlsnW4cHat++bX38dTzeu/deSWlBpCcfGnEdhZScOa8sIp97k2tAKkxLn9Nyn0m9sJm5+Ew288cjC2UxJC3P0/w6HhTEzkfjK9r+Zm1wL3sWd1zb7MHFMtm5IshDKat6a0B4YpExTYv39pAwTzfyu3l+sMbH+DFdUCsovqW1gBUxEa1R005bbyeneIAoH0Sfv2D5axDp6iV6jbRShA3SIPqJjNEKk86Nz3fnTRd3fvVe9t73tRWm3s+x5gVaiF/0FIzscPg==</latexit><latexit sha1_base64="DMTnQ1VsFSi9WpV2pWJXQYk1OHo=">AAADd3icbVLNbtNAEN4kFEr4a+HIgRE1qEhtZFcV5dgqF45FappKdYjW67W98v64u+uWaOUzD8Kb8ARceQOeoBInWCdBIm3nYI++b2a+8edJKs6MDcOfnW7v3tr9B+sP+48eP3n6bGPz+alRtSZ0RBRX+izBhnIm6cgyy+lZpSkWCafjpBy2/PiSasOUPLGzik4EziXLGMHWQ9PNDosrrBP1xUXviWhcPzZZhgXjM+jHkl4RJQSWqYuHw8bFAtuCYO6GTbPKjsdLNkncuCX9UFOyar+y/VjjPKepZnlh+ycFMyCoLVQKPrvEnKWQKQ1YzoAUihEKKgNbUNDqCphMPWIg0NNoR0/3duJUWeMzJ5tgB7ABrmTevn1FGef0AsoWlykER1NXls1nt13uRu8av+5FGCykOIegDAYAYwoEy1ZXGTofEQC2c3WDBQXL/MMPv/J1SlS19UVH/ya2OkwwL28VUGlq7RsK336n8qCZbmyFg3AecDuJlsnW4cHat++bX38dTzeu/deSWlBpCcfGnEdhZScOa8sIp97k2tAKkxLn9Nyn0m9sJm5+Ew288cjC2UxJC3P0/w6HhTEzkfjK9r+Zm1wL3sWd1zb7MHFMtm5IshDKat6a0B4YpExTYv39pAwTzfyu3l+sMbH+DFdUCsovqW1gBUxEa1R005bbyeneIAoH0Sfv2D5axDp6iV6jbRShA3SIPqJjNEKk86Nz3fnTRd3fvVe9t73tRWm3s+x5gVaiF/0FIzscPg==</latexit><latexit sha1_base64="pc4LHt51ahUm6vu/rrRSr0a9fWw=">AAADd3icbVJNb9NAEN0kfJTw1cKRAyNiUJDSyK4q4NgqF45FaptKdYjW67W98n64u+uGaOX/yJU/UokTrJMgkbZzsEfvzcwbP09ScWZsGP7qdHsPHj56vPOk//TZ8xcvd/denRtVa0LPiOJKXyTYUM4kPbPMcnpRaYpFwuk0KSctP72m2jAlT+2yojOBc8kyRrD10Hyvw+IK60T9cNEnIhrXj02WYcH4EvqxpAuihMAydfFk0rhYYFsQzN2kabbZ6XTDJombtqQfakpWHVa2H2uc5zTVLC9s/7RgBgS1hUrBZ9eYsxQypQHLJZBCMUJBZWALClotgMnUIwYCPY9Gen4wilNljc+cbIIRYANcybx9+4oyzukVlC0uUwiO564sm+9uWO5HHxu/7lUYrKU4h6AMxgBTCgTLVlcZuhoRALYrdYMFBcv8ww9f+Dolqtr6ouN/E1sdJpiXtwqoNLX2DYVvv1d53Mx3B+E4XAXcTaJNMkCbOJnv3vivJbWg0hKOjbmMwsrOHNaWEU69ybWhFSYlzumlT6Xf2Mzc6iYaeO+RtbOZkhZW6P8dDgtjliLxle1/M7e5FryPu6xt9mXmmGzdkGQtlNW8NaE9MEiZpsT6+0kZJpr5Xb2/WGNi/RluqRSUX1PbwBaYiNao6LYtd5Pzg3EUjqNv4eDocGPZDnqD3qEhitBndIS+ohN0hkjnZ+em86eLur97b3sfesN1abez6XmNtqIX/QUgeRjd</latexit>

Notation: if A,B are matrices then (AB)ij indicates element ij of the matrix AB.<latexit sha1_base64="/tMZfPlVgLKeqZShQ9iUqXO8RvU=">AAACynicbVHLbtNAFB2bR9vwCqCu2IyIKxUJRTaqCmLVJhuQECqP1JXiKIzH180087BmxqXRyDt+i/+AH2HNOMmCtFzpSlfn3MfRuXnFmbFx/DsIb92+c3dre6dz7/6Dh4+6j5+cGlVrCiOquNJnOTHAmYSRZZbDWaWBiJxDms+HLZ9egjZMya92UcFEkHPJSkaJ9dC0+zOriM7VlUsOqWhcJzNlSQTjC9zJJHynSggiC5cNh43LBLEzSrgbNs0mm6ZrNs9d2pJ+qZmz6qCynY/KLm+9xazE0fHLQYSJBuy7NaNgsJ2BxNH+8eDF1LGLJsJMFq08TwEHAdLiiF1EWJVt62ruyi8aRP1m2u3F/XgZ+GaRrIve0e6vvW8IoZNp909WKFq3WyknxoyTuLITR7RllIMXXhuoCJ2Tcxj7UhIBZuKWNjd4zyMFLpX26VUt0X8nHBHGLETuO1svzHWuBf/HjWtbvpk4JqvagqSrQ2XNsVW4/RkumAZq/U8KRqhmXiumM6IJtf6zG1dmwC/BNngDzEVrVHLdlpvF6at+EveTT96xA7SKbfQMPUf7KEGv0RF6h07QCNGgF7wPPgdfwg+hDhehW7WGwXrmKdqI8MdfiwPfnQ==</latexit><latexit sha1_base64="pvPcPilo4ubtj8cXgxj+PkBLx9U=">AAACynicbVFbaxNBFJ7deqnx0lTxyZfBbKGChF0pWnxqkxcFkXpJt5ANYXb2bDPNXJaZ2dow7Jt/y58h6B/x2dkkD6b1wIHD953Lx3fyijNj4/h3EG7dun3n7va9zv0HDx/tdHcfnxpVawojqrjSZzkxwJmEkWWWw1mlgYicQ5rPhy2fXoI2TMmvdlHBRJBzyUpGifXQtPsjq4jO1ZVLXlPRuE5mypIIxhe4k0n4RpUQRBYuGw4blwliZ5RwN2yaTTZN12yeu7Ql/VIzZ9VBZTsflV3eeotZiaPjl4MIEw3Yd2tGwWA7A4mj/ePBi6ljF02EmSxaeZ4CDgKkxRG7iLAq29bV3JVfNIj6zbTbi/vxMvDNIlkXvaOnv/bGW+OfJ9Pun6xQtG63Uk6MGSdxZSeOaMsoBy+8NlAROifnMPalJALMxC1tbvCeRwpcKu3Tq1qi/044IoxZiNx3tl6Y61wL/o8b17Y8nDgmq9qCpKtDZc2xVbj9GS6YBmr9TwpGqGZeK6Yzogm1/rMbV2bAL8E2eAPMRWtUct2Wm8Xpq34S95NP3rEDtIpt9Aw9R/soQW/QEXqHTtAI0aAXvA8+B1/CD6EOF6FbtYbBeuYJ2ojw+19IMeDL</latexit><latexit sha1_base64="pvPcPilo4ubtj8cXgxj+PkBLx9U=">AAACynicbVFbaxNBFJ7deqnx0lTxyZfBbKGChF0pWnxqkxcFkXpJt5ANYXb2bDPNXJaZ2dow7Jt/y58h6B/x2dkkD6b1wIHD953Lx3fyijNj4/h3EG7dun3n7va9zv0HDx/tdHcfnxpVawojqrjSZzkxwJmEkWWWw1mlgYicQ5rPhy2fXoI2TMmvdlHBRJBzyUpGifXQtPsjq4jO1ZVLXlPRuE5mypIIxhe4k0n4RpUQRBYuGw4blwliZ5RwN2yaTTZN12yeu7Ql/VIzZ9VBZTsflV3eeotZiaPjl4MIEw3Yd2tGwWA7A4mj/ePBi6ljF02EmSxaeZ4CDgKkxRG7iLAq29bV3JVfNIj6zbTbi/vxMvDNIlkXvaOnv/bGW+OfJ9Pun6xQtG63Uk6MGSdxZSeOaMsoBy+8NlAROifnMPalJALMxC1tbvCeRwpcKu3Tq1qi/044IoxZiNx3tl6Y61wL/o8b17Y8nDgmq9qCpKtDZc2xVbj9GS6YBmr9TwpGqGZeK6Yzogm1/rMbV2bAL8E2eAPMRWtUct2Wm8Xpq34S95NP3rEDtIpt9Aw9R/soQW/QEXqHTtAI0aAXvA8+B1/CD6EOF6FbtYbBeuYJ2ojw+19IMeDL</latexit><latexit sha1_base64="BYcvygE7KcztMT4AwP6FEXt6E+A=">AAACynicbVHLattAFB2pj6Tuy22X2Qy1CikUI5WQlq4Se5NCKenDUcAyZjS6iieeh5gZpTGDdv2tfkh/pOuObC3qpBcuXM65j8O5ecWZsXH8Owjv3L13f2f3Qe/ho8dPnvafPT8zqtYUJlRxpc9zYoAzCRPLLIfzSgMROYc0X45bPr0CbZiS3+2qgpkgF5KVjBLroXn/V1YRnatrlxxS0bheZsqSCMZXuJdJ+EGVEEQWLhuPG5cJYheUcDdumm02TTs2z13akn6pWbLqoLK9z8qub33ArMTR8ZtRhIkG7Ls1o2CwXYDE0f7x6PXcscsmwkwWrTxPAQcB0uKIXUZYlW3rZu7aLxpFw2beH8TDeB34dpF0xQB1cTrv/8kKRet2K+XEmGkSV3bmiLaMcvDCawMVoUtyAVNfSiLAzNza5ga/8kiBS6V9elVr9N8JR4QxK5H7ztYLc5Nrwf9x09qW72eOyaq2IOnmUFlzbBVuf4YLpoFa/5OCEaqZ14rpgmhCrf/s1pUF8CuwDd4Cc9Ealdy05XZx9naYxMPkSzw4Ougs20V76CXaRwl6h47QCTpFE0SDQfAx+Bp8Cz+FOlyFbtMaBt3MC7QV4c+/A5nd6w==</latexit>

For k = 1, 2, . . . n, let P (k�1) be a permutation matrix that swaps row k with some row rk � k.Let A(0) = P (0)A. Also let P (n) = I, the identity.For 1, 2, . . . n, compute matrices A(k) with elements

A(k)ij = (P (k)A(k�1))ij �

(P (k)A(k�1))ikA(k�1)kj

A(k�1)kk

Then the first k rows of A(k) are all zeros, as are the first k columns. Compute L and U with elements

Lik =⇣P (n�1)P (n�2) · · ·P (k)A(k�1)

ik⇥ 1

A(k�1)kk

, Ukj = A(k�1)kj .

Finally, let P = P (n�1)P (n�2) · · ·P (0). Then PA = LU , also L is lower triangular and U is uppertriangular.

<latexit sha1_base64="cIZeimAikATm47MreX+Ygj1OJ8o=">AAAFW3icbVRdb9MwFM3WlY8wYIB44uWKBbFJXdVMCHiptKoSAmlIRVrXScuoHMdpvThOZjt0Jcozf4g/AxJP8Bt45ibZxrrNL7m+J74+5/jafiq4Np3Oj6Xlxkrz1u07d+17q/cfPFx79HhfJ5mibEgTkagDn2gmuGRDw41gB6liJPYFG/lRv8RHX5jSPJF7Zp6yo5hMJA85JQZT40eNj15KlJ+c5u5rGhe57ekwJDEXc7A9yWY0iWMig9zr94vci4mZUiLyflEsoqPRGer7+agEsaiOePoqNbanyGTCAsUnU2OD/S5R4ERdt7Xd8oLEaJBOCwQz4Aw+5xvRlrtZOOAzIJAyFWemIgpYW/FTMFNiQM9IqkElM6zjwIybKegkZnVGjSNvwk4gctoVC3u3LN3D0p3Nojuovz2nDdATOvm/sUT0AzIxUwY8YBK9nLftmu0iVxSdZobVlCjTdfWopF1xYYLFuF6D7Zwj45wfF9CFjUE9h9651M0KsmELvFARmt/8R1RcTMd5dFwU+eV5VBSOY9t7UyYr+iFX2lTeoCMakvASQ6LQWSHgK1OJbgHRVWZxFXZVFkuNFvXPpDq7uFIG4AyvaESJsFsRRHWeYKGpBMiSGdTRNkYerdy7ps2rmqJWCJ7hMbpZ++Bek2i3wDs5yUhgDysPcMNFU6CNZLC/uESB8/Oe6l7wuaBziQ32QtkKlXXOoNfdHeIBk7IxSslcg0hmTAEeNJGTTBB1YQNiWZouYG0oxmvrnXanGnA9cM+C9Z3g28sdy7IG47W/2Fg0K82kgmh96HZSc5QTZTgVDC9SpllKaEQm7BBDSdCio7y69wW8wEwAIbZomEgDVfbyipzEWs9jH/8s76a+ipXJm7DDzIRvj3Iuy8OXtN4ozASYBMpHBAKuGDX4RgScUMWRK9ApwXMz+NQs7DJl4gszBSwk/bg0yr1qy/Vgf7vtdtruJ3TslVWPO9Yz67m1YbnWG2vHem8NrKFFG98bPxu/G39WfjUbTbu5Wv+6vHS25om1MJpP/wEai7KT</latexit><latexit sha1_base64="gFo5yc5S1mhPXaCDkWD5YQ5C3qY=">AAAFW3icbVRdb9MwFA2U8hEGDBC88HIFQWxSVzUTAl4qVlVCIBWpSHSdtIzKcZzWi+NktkNXojwj8Xv4MyDxBL+BZ26Sbazb/JLre+Lrc46v7aeCa9Pp/Lh0uXGlefXa9Rv2zZVbt++s3r23rZNMUTaiiUjUjk80E1yykeFGsJ1UMRL7go39qF/i489MaZ7Ij2aRsr2YTCUPOSUGU5O7jfdeSpSfHObuCxoXue3pMCQxFwuwPcnmNIljIoPc6/eL3IuJmVEi8n5RLKPj8RHq+/m4BLGojnj6PDW2p8h0ygLFpzNjg/0mUeBEXbe12fKCxGiQTgsEM+AMP+Vr0Ya7XjjgMyCQMhVnpiIKWFvxQzAzYkDPSapBJXOs48CcmxnoJGZ1Rk0ib8oOIHLaFQt7UJbuYenOetEd1t+e0wboCZ3831gi+g6ZmBkDHjCJXi7ads12mSuKTjPDakqU6bp6VNKuuDDBYlyvwXaOkUnO9wvowtqwnkPvWOp6BdmwAV6oCM0v/iMqTqaTPNovivz0PCoKx7HtjzMmK/ohV9pU3qAjGpLwFEOi0Fkh4AtTiW4B0VVmeRV2VRZLjRb1j6Q6A1wpA3BGZzSiRBhUBFGdJ1hoKgGyZAZ1tImRRyv3zmnzqqaoFYJneIxu1j645yTaLfAODjIS2KPKA9xw2RRoIxnsLy5R4OK4p7onfE7onGKDvVC2QmWdM+x1ByM8YFI2RimZaxDJnCnAgyZymgmiTmxALEvTJawNxWT1SafdqQacD9yj4MlW8PXZa/Pt4XCy+hcbi2almVQQrXfdTmr2cqIMp4LhRco0SwmNyJTtYigJWrSXV/e+gKeYCSDEFg0TaaDKnl6Rk1jrRezjn+Xd1GexMnkRtpuZ8NVezmV5+JLWG4WZAJNA+YhAwBWjBt+IgBOqOHIFOiN4bgafmqVdZkx8ZqaApaQfl0a5Z205H2xvtt1O2/2Ajj236nHdemQ9ttYs13ppbVlvraE1smjje+Nn43fjz5VfzUbTbq7Uv16+dLTmvrU0mg/+AbEEs6Y=</latexit><latexit sha1_base64="gFo5yc5S1mhPXaCDkWD5YQ5C3qY=">AAAFW3icbVRdb9MwFA2U8hEGDBC88HIFQWxSVzUTAl4qVlVCIBWpSHSdtIzKcZzWi+NktkNXojwj8Xv4MyDxBL+BZ26Sbazb/JLre+Lrc46v7aeCa9Pp/Lh0uXGlefXa9Rv2zZVbt++s3r23rZNMUTaiiUjUjk80E1yykeFGsJ1UMRL7go39qF/i489MaZ7Ij2aRsr2YTCUPOSUGU5O7jfdeSpSfHObuCxoXue3pMCQxFwuwPcnmNIljIoPc6/eL3IuJmVEi8n5RLKPj8RHq+/m4BLGojnj6PDW2p8h0ygLFpzNjg/0mUeBEXbe12fKCxGiQTgsEM+AMP+Vr0Ya7XjjgMyCQMhVnpiIKWFvxQzAzYkDPSapBJXOs48CcmxnoJGZ1Rk0ib8oOIHLaFQt7UJbuYenOetEd1t+e0wboCZ3831gi+g6ZmBkDHjCJXi7ads12mSuKTjPDakqU6bp6VNKuuDDBYlyvwXaOkUnO9wvowtqwnkPvWOp6BdmwAV6oCM0v/iMqTqaTPNovivz0PCoKx7HtjzMmK/ohV9pU3qAjGpLwFEOi0Fkh4AtTiW4B0VVmeRV2VRZLjRb1j6Q6A1wpA3BGZzSiRBhUBFGdJ1hoKgGyZAZ1tImRRyv3zmnzqqaoFYJneIxu1j645yTaLfAODjIS2KPKA9xw2RRoIxnsLy5R4OK4p7onfE7onGKDvVC2QmWdM+x1ByM8YFI2RimZaxDJnCnAgyZymgmiTmxALEvTJawNxWT1SafdqQacD9yj4MlW8PXZa/Pt4XCy+hcbi2almVQQrXfdTmr2cqIMp4LhRco0SwmNyJTtYigJWrSXV/e+gKeYCSDEFg0TaaDKnl6Rk1jrRezjn+Xd1GexMnkRtpuZ8NVezmV5+JLWG4WZAJNA+YhAwBWjBt+IgBOqOHIFOiN4bgafmqVdZkx8ZqaApaQfl0a5Z205H2xvtt1O2/2Ajj236nHdemQ9ttYs13ppbVlvraE1smjje+Nn43fjz5VfzUbTbq7Uv16+dLTmvrU0mg/+AbEEs6Y=</latexit><latexit sha1_base64="vIJ8ThRED0KuvKx1WSoL0X0yqWk=">AAAFW3icbVTRbtMwFM3WFUYYsIF44uWKBWmTuqqZEPBSaVUlBNKQirTSScuoHMdpTRwns511Jcpf8TMg8QTfwDM3STfWDb/k+p74+pzja/up4Np0Ot9XVhtrzTt31+/Z9zcePHy0ufX4k04yRdmQJiJRxz7RTHDJhoYbwY5TxUjsCzbyo36Jj86Z0jyRR2aestOYTCQPOSUGU+OtxgcvJcpPLnL3FY2L3PZ0GJKYiznYnmQzmsQxkUHu9ftF7sXETCkReb8oltHRaIH6fj4qQSyqI56+TI3tKTKZsEDxydTYYL9NFDhR123tt7wgMRqk0wLBDDiDz/lOtOfuFg74DAikTMWZqYgC1lb8AsyUGNAzkmpQyQzrODDjZgo6iVmdUePIm7AziJx2xcI+LEv3sHRnt+gO6m/PaQP0hE7+bSwRfY9MzJQBD5hEL+dtu2a7zBVFp5lhNSXKdF09KmlXXJhgMa7XYDuXyDjnXwrows6gnkPvUupuBdmwB16oCM3//0dUXE3HefSlKPLr86goHMe2j6ZMVvRDrrSpvEFHNCThNYZEobNCwFemEt0CoqvM8irsqiyWGi3qL6Q6h7hSBuAMb2hEiXBYEUR1nmChqQTIkhnU0T5GHq3cu6XNq5qiVgie4TG6Wfvg3pJot8A7O8tIYA8rD3DDZVOgjWSwv7hEgfPLnupe8bmic40N9kLZCpV1zqDXPRziAZOyMUrJXINIZkwBHjSRk0wQdWUDYlmaLmFtKMab2512pxpwO3AXwba1GIPx5h9sLJqVZlJBtD5xO6k5zYkynAqGFynTLCU0IhN2gqEkaNFpXt37Al5gJoAQWzRMpIEqe31FTmKt57GPf5Z3U9/EyuT/sJPMhG9Ocy7Lw5e03ijMBJgEykcEAq4YNfhGBJxQxZEr0CnBczP41CztMmXinJkClpJ+XBrl3rTldvBpv+122u7HzvbBy4Vl69Yz67m1Y7nWa+vAemcNrKFFG98aPxq/Gr/XfjYbTbu5Uf+6urJY88RaGs2nfwHCRbEB</latexit>

8

Page 3: Recall - damtp.cam.ac.uk · Computational Projects Lecture 6: Improving LU decomposition  Dr Rob Jack, DAMTP 1 Recall...

LU with pivot -- check

We should also check that the first k rows (and columns) of A(k) are always zero. This can be done, itrelies on the fact that row k of P (k)A(k�1) is the same as row k of A(k�1).

<latexit sha1_base64="7uJGXWEGpFwB0iFr4ybuiuOh/HM=">AAADSnicbVJNb9NAEF2nBUr4SuHIZUSDlEqQxlUFHDgU5cIxSE1TqQ5hvR7Hq+yHtbtuCJZ/Db8GiROc+BtIICEurJNIkJaR1hrNe/tm/WbiXHDrer1vQWNr+9r1Gzs3m7du37l7r7V7/9TqwjAcMi20OYupRcEVDh13As9yg1TGAkfxrF/jows0lmt14hY5jiWdKp5yRp0vTXaDl1FOTazfl+EzJquyGdk0pZKLBTQjhXOmpaQqKaN+vyojSV3GqCj7VbWJjkZrNI7LUQ16UTvj+VHumpGh0ykmhk8z1xwh2EwXIgEqrAaWIZuBy6jzH4SUG+ugPWuD0XMLHa8N/h8Lqew+6BTar96Wndl+1QZq0CvM6cLCBzS6C3CScQuMKogREq3wCXAHxhuDFrRayVPmVs28/LJNrTlYacJS+2lYq3ulmm+p9F3sBvsvqwvVpLXX6/aWAVeTcJ3sHR/8OHxHCBlMWj+jRLNConJMUGvPw17uxiU1jjOB3rfCYk7ZjE7x3KfKP8COy+WYK3jsKwmk2vijHCyr/94oqbR2IWPPrEdhL2N18X/YeeHSF+OSq7xwqNiqUVoIcBrqnYGEG2TOr0TCKTPcv9UPjhrvpt+sjS4Zigt0FWwUY1kbFV625WpyetgNe93wjXfsiKxihzwkj0iHhOQ5OSavyYAMCQs+Bp+CL8HXxufG98avxu8VtRGs7zwgG7G1/Qci6AxY</latexit><latexit sha1_base64="PdlV4uHWcmVfhcQWBr7BUYUYzIQ=">AAADSnicbVJNb9NAELXTAiV8tXDsZUSD1EqQxlUFHDgU5cIxSE1TqQ7VeD2OV9kPa3fdEox/Db8GiROc4GcggYS4sE4qQVpGWms07+2b9ZtJCsGt6/W+hq2V1WvXb6zdbN+6fefuvfWN+0dWl4bRkGmhzXGClgRXNHTcCTouDKFMBI2Sab/BR2dkLNfq0M0KGkucKJ5xhs6XTjfCF3GBJtFvq+gpk3XVjm2WoeRiBu1Y0TnTUqJKq7jfr6tYossZiqpf18voaHSBJkk1akAvaqe82C9cOzY4mVBq+CR37RGBzXUpUkBhNbCc2BRcjs5/CDJurIPOtANGn1vY9trg/7GUyu6AzqDz8k21Pd2pO4CGvMI5ziy8I6O7AIc5t8BQQUKQakWPgTsw3hiyoNVCHplbNPPy8zaN5mChCXPtJ1Gj7pUavkXpu9gl9l9WF+rT9a1etzcPuJpEF8nWwe6PPXy/+W1wuv4zTjUrJSnHBFp7EvUKN67QOM4Eed9KSwWyKU7oxKfKP8COq/mYa3jkKylk2vijHMyr/96oUFo7k4lnNqOwl7Gm+D/spHTZ83HFVVE6UmzRKCsFOA3NzkDKDTHnVyLlyAz3b/WDQ+Pd9Ju11CUncUauhqViIhujosu2XE2O9rpRrxu99o7tB4tYCzaDh8F2EAXPgoPgVTAIhgELP4Qfw8/hl9an1vfWr9bvBbUVXtx5ECzFyuofRP4Nyg==</latexit><latexit sha1_base64="PdlV4uHWcmVfhcQWBr7BUYUYzIQ=">AAADSnicbVJNb9NAELXTAiV8tXDsZUSD1EqQxlUFHDgU5cIxSE1TqQ7VeD2OV9kPa3fdEox/Db8GiROc4GcggYS4sE4qQVpGWms07+2b9ZtJCsGt6/W+hq2V1WvXb6zdbN+6fefuvfWN+0dWl4bRkGmhzXGClgRXNHTcCTouDKFMBI2Sab/BR2dkLNfq0M0KGkucKJ5xhs6XTjfCF3GBJtFvq+gpk3XVjm2WoeRiBu1Y0TnTUqJKq7jfr6tYossZiqpf18voaHSBJkk1akAvaqe82C9cOzY4mVBq+CR37RGBzXUpUkBhNbCc2BRcjs5/CDJurIPOtANGn1vY9trg/7GUyu6AzqDz8k21Pd2pO4CGvMI5ziy8I6O7AIc5t8BQQUKQakWPgTsw3hiyoNVCHplbNPPy8zaN5mChCXPtJ1Gj7pUavkXpu9gl9l9WF+rT9a1etzcPuJpEF8nWwe6PPXy/+W1wuv4zTjUrJSnHBFp7EvUKN67QOM4Eed9KSwWyKU7oxKfKP8COq/mYa3jkKylk2vijHMyr/96oUFo7k4lnNqOwl7Gm+D/spHTZ83HFVVE6UmzRKCsFOA3NzkDKDTHnVyLlyAz3b/WDQ+Pd9Ju11CUncUauhqViIhujosu2XE2O9rpRrxu99o7tB4tYCzaDh8F2EAXPgoPgVTAIhgELP4Qfw8/hl9an1vfWr9bvBbUVXtx5ECzFyuofRP4Nyg==</latexit><latexit sha1_base64="G8goOPd+LwLFiCg3OEKy/vhUz4w=">AAADSnicbVJNb9NAELXTAiV8NIUjlxEJUipBZKMKOHAoyoVjkJqmUhyi9Xocr7wf1u66IVj+NfwaJE5w4m9wQEJcWCeRIC0jrTWa9/bN+s3EBWfGBsF3v7W3f+PmrYPb7Tt3790/7Bw9ODeq1BTHVHGlL2JikDOJY8ssx4tCIxExx0mcDxt8conaMCXP7KrAmSALyVJGiXWl+ZH/OiqIjtWHKnxBRV21I5OmRDC+gnYkcUmVEEQmVTQc1lUkiM0o4dWwrnfRyWSLxnE1aUAnanJWnBS2HWmyWGCi2SKz7QmCyVTJEyDcKKAZ0hxsRqz7IKRMGwu9vAdaLQ30nTa4fyyFNMegUui9eV/18+O6B0SjU1iSlYGPqNUA4CxjBiiRECMkSuJTYBa0MwYNKLmRJ9Rumjn5dZtGc7TRhLX2s7BRd0oN3xDhupgd9l/WAOp5pxsMgnXA9STcJl1vG6N552eUKFoKlJZyYsw0DAo7q4i2jHJ0vpUGC0JzssCpS6V7gJlV6zHX8MRVEkiVdkdaWFf/vVERYcxKxI7ZjMJcxZri/7BpadNXs4rJorQo6aZRWnKwCpqdgYRppNatRMII1cy91Q2OaOem26ydLhnyS7Q17BRj0RgVXrXlenL+fBAGg/Bd0D092Vp24D3yHnt9L/ReeqfeW2/kjT3qf/I/+1/9b60vrR+tX63fG2rL39556O3E3v4fNeoKYg==</latexit>

To check that PA = LU , follow the same method as before: note that A(n) = 0 (all rows are zero), and

use our formula for A(k) repeatedly: then

0 = A(n)ij =

⇣P (n)A(n�1)

ij�

(P (n)A(n�1))inA(n�1)nj

A(n�1)nn

=⇣P (n)P (n�1)A(n�2)

ij�

�P (n)P (n�1)A(n�2)

�i,n�1

A(n�2)n�1,j

A(n�2)n�1,n�1

�(P (n)A(n�1))inA

(n�1)nj

A(n�1)nn

= · · ·

=⇣P (n)P (n�1) · · ·P (0)A

ij�

nX

k=1

�P (n)P (n�1)P (n�2) · · ·P (k)A(k�1)

�ikA(k�1)

kj

A(k�1)kk

Hence from the formulae for L,U, P , we have (PA)ij =Pn

k=1 LikUkj so PA = LU<latexit sha1_base64="9+8DO3uMLW4viymnUnIMjeWRvBg=">AAAFu3icrVTNjts2EFYSO0nV/Gza3HoZNG5gB96FFARNsICBLNxDDntwgTgOsNoYFDWyFVGkQFK73Qh6liIPkAfqi/Tc0Y9Tex2gl/Ii8ptv+M2MhhPmIjHW8/66cfNWr3/7zt3v3O/v3X/w8ODRD++MKjTHOVdC6fchMygSiXObWIHvc40sCwUuwnRa2xcXqE2i5Ft7leN5xlYyiRPOLEHLR7e+BDnTofqj9H/lWVW6gYljliXiCtxA4iVXWcZkVAbTaVUGGbNrzkQ5rapd62LRWcOwXNRGutSkSf4it26g2WqFkU5Wa+u+VcDXyFOwa2ZhMDuZnM4HY4iVEOqSQATDMoQM7VpFwAyEGCuNxyCVxc7p5EM5lKNq4g1gyIQArS4NMI3wCbUajYEigsIgUI3oYp0VgtXf1jEdVQPQmCOzGImr41pTukGIq0SWTCQr+axyPZhAp7Isk48VPCUgEBjb4ayFW/OhP6qCJrFRyzukqsWa8XKfVzPk1nlZSnKoyh2ECFS8wN3Xm21YHf/5V2XYSLfKrRvs++05kt+YTNsWCuHQH2/H9RVsmJV7+D8myCNlDZ1gK99vBN7yGsCrBa9VPDBFtizTiV99kP9Vg9kmp+1L0y6LdPd3plso3f9vLhskbXJB6v9N37xByRFirbKmlbvmw7b7Tsfz8Yx6/RJhzS4QBsPZSZfEZDeJ01Z93qgOwKjNQ6mWB0+8I69ZsL/xu82T14s/Pzu0ZsuDv4NI8SJDablgxpz5Xm7PS6ZtwgVS+PRQcsZTtsIz2kp6fOa8bOZKBb8QEjXBx0paaNBtj5JlxlxlITHrt2+u22rwW7azwsavzqlb8sJSxVqhuBBgFdRDCqJEI7c0g6KEcZ1QrDQ1GP1ZS6NsR2WN4gJtBTtgmNWF8q+XZX/z7vmR7x35v1PFXjjtuuv85PzsDB3feem8dt44M2fu8N7j3nFv2vutP+nz/se+aKk3b3Q+Pzo7q1/8Ax0I09g=</latexit><latexit sha1_base64="P3lv2U6REg+nw73Pfgn6N1oweTY=">AAAFu3icrVTNbtNAEHYh4cf8tcCNywgCSlBa2agCVCkSVThw6CFIhFSqS7RejxPj9a61u24pll+Al0A8AA/EE/AGnFn/BJKmEhf24t1vvtlvZjw7fsoipR3nx8aly632lavXrts3bt66fWdz6+57JTJJcUwFE/LQJwpZxHGsI83wMJVIEp/hxI+HpX1yglJFgr/TZykeJ2TGozCiRBtounX5u5cS6YtPufucJkVueyoMSRKxM7A9jqdUJAnhQe4Nh0XuJUTPKWH5sChWrZNJY/X9fFIazaUqjtLdVNueJLMZBjKazbX9TgCdI41Bz4mGzmh/cDDu9CEUjIlTAyIokiAkqOciAKLAx1BI3AMuNDZO+x/yLu8VA6cDXcIYSHGqgEiEzyhFrw8mIsgUgqmRuVgmGSPlt3aMe0UHJKZINAbsbK/U5Lbn4yziOWHRjD8tbAcG0KhM8+hjAU8M4DEMdXdUw7V52+0VXpVYr+Ztm6qFktB8nVcy+NJ5mnPjUOQriCGY4nn2ut5owWr4z/4ow0K6Vq7dYN1vzdH49Y1p2WJC2Hb7y3H9AStmYW//xwRpILQyJ1jK94LAa14FOKXguYp7KkumeTxwiw/8XzUYLXJavjRusohXf2e8hJr7/+ayQOIqFzT9v+ibN8gpQihFUrVy03xYd99Bf9wfmV4/RZiTE4ROd7TfJDFYTeKgVh9Xqh1QYvFQiunmI2fHqRasb9xm8+jV5Ou3Dfbzy2i6+csLBM0S5JoyotSR66T6OCdSR5ShCd88lJTQmMzwyGy5eXzqOK/mSgGPDRJUwYeCa6jQZY+cJEqdJb5hlm9fnbeV4EW2o0yHL49Nt6SZNhWrhcKMgRZQDikIIolUmxkURITKyMRqpgYxf1abUbaiMkd2grqAFdBPykK558uyvnn/bMd1dty3pmK7Vr2uWQ+sh1bXcq0X1ivrjTWyxhZt3W/ttYat1+1Bm7Y/tllNvbTR+NyzVlY7+w3e1tW2</latexit><latexit sha1_base64="P3lv2U6REg+nw73Pfgn6N1oweTY=">AAAFu3icrVTNbtNAEHYh4cf8tcCNywgCSlBa2agCVCkSVThw6CFIhFSqS7RejxPj9a61u24pll+Al0A8AA/EE/AGnFn/BJKmEhf24t1vvtlvZjw7fsoipR3nx8aly632lavXrts3bt66fWdz6+57JTJJcUwFE/LQJwpZxHGsI83wMJVIEp/hxI+HpX1yglJFgr/TZykeJ2TGozCiRBtounX5u5cS6YtPufucJkVueyoMSRKxM7A9jqdUJAnhQe4Nh0XuJUTPKWH5sChWrZNJY/X9fFIazaUqjtLdVNueJLMZBjKazbX9TgCdI41Bz4mGzmh/cDDu9CEUjIlTAyIokiAkqOciAKLAx1BI3AMuNDZO+x/yLu8VA6cDXcIYSHGqgEiEzyhFrw8mIsgUgqmRuVgmGSPlt3aMe0UHJKZINAbsbK/U5Lbn4yziOWHRjD8tbAcG0KhM8+hjAU8M4DEMdXdUw7V52+0VXpVYr+Ztm6qFktB8nVcy+NJ5mnPjUOQriCGY4nn2ut5owWr4z/4ow0K6Vq7dYN1vzdH49Y1p2WJC2Hb7y3H9AStmYW//xwRpILQyJ1jK94LAa14FOKXguYp7KkumeTxwiw/8XzUYLXJavjRusohXf2e8hJr7/+ayQOIqFzT9v+ibN8gpQihFUrVy03xYd99Bf9wfmV4/RZiTE4ROd7TfJDFYTeKgVh9Xqh1QYvFQiunmI2fHqRasb9xm8+jV5Ou3Dfbzy2i6+csLBM0S5JoyotSR66T6OCdSR5ShCd88lJTQmMzwyGy5eXzqOK/mSgGPDRJUwYeCa6jQZY+cJEqdJb5hlm9fnbeV4EW2o0yHL49Nt6SZNhWrhcKMgRZQDikIIolUmxkURITKyMRqpgYxf1abUbaiMkd2grqAFdBPykK558uyvnn/bMd1dty3pmK7Vr2uWQ+sh1bXcq0X1ivrjTWyxhZt3W/ttYat1+1Bm7Y/tllNvbTR+NyzVlY7+w3e1tW2</latexit><latexit sha1_base64="j3Xcx71sZyeyrenT+LxGjINX30c=">AAAFu3icrVRLb9NAEHZpAsW8yuPGZUQDSlBa2RUCVClSq3Dg0EOQGoJUl2i9Hieu17vW7rqlWP5J/CD+CGfWj0DSVOLCXrz7zTf7zYxnx09ZpLTj/Ny4tdlq376zdde+d//Bw0fbj598ViKTFMdUMCG/+EQhiziOdaQZfkklksRnOPHjYWmfXKBUkeAn+irFs4TMeBRGlGgDTR9v/vBSIn3xLXff0qTIbU+FIUkidgW2x/GSiiQhPMi94bDIvYToOSUsHxbFqnUyaay+n09Ko7lUxVH6JtW2J8lshoGMZnNtnwigc6Qx6DnR0BkdDY7HnT6EgjFxaUAERRKEBPVcBEAU+BgKiQfAhcbG6ehr3uW9YuB0oEsYAykuFRCJ8B2l6PXBRASZQjA1MhfLJGOk/NaOca/ogMQUicaAXR2Umtz2fJxFPCcsmvHXhe3AABqVaR6dF/DKAB7DUHdHNVybd91e4VWJ9WrerqlaKAnN13klgy+dpzk3DkW+ghiCKZ5nr+uNFqyGv/9HGRbStXLtBut+a47Gr29MyxYTwq7bX47rD1gxC3v3PyZIA6GVOcFSvjcEXvMqwCkFr1XcU1kyzeOBW3zl/6rBaJHT8qVxk0W8+jvjJdTc/zeXBRJXuaDp/0XffEROEUIpkqqVm+bDuvuO++P+yPT6JcKcXCB0uqOjJonBahLHtfq4Uu2AEouHUky3d5w9p1qwvnGbzY7VrNF0+5cXCJolyDVlRKlT10n1WU6kjihDE755KCmhMZnhqdly8/jUWV7NlQJeGiSogg8F11Chyx45SZS6SnzDLN++um4rwZtsp5kO35+ZbkkzbSpWC4UZAy2gHFIQRBKpNjMoiAiVkYnVTA1i/qw2o2xFZY7sAnUBK6CflIVyr5dlffN5f8919txPzs7hm6ZkW9Zz64XVtVzrnXVofbRG1tiirWetg9aw9aE9aNP2eZvV1Fsbjc9Ta2W1s99d09IB</latexit>

9

... writing the program

Break up the problem into manageable pieces...

Write a function to swap two rows of a matrix(this is the same as multiplying from the left by some P )

<latexit sha1_base64="DT+658Bs3W6w4ABcfdvmeyQryaE=">AAAC53icbVHLjtMwFHXCawiPKbBkYzGDNGyqBCExbFClblgWiU5GaqrKcZzEql+yb6YTRfkGdogtn8QSPoQ1TtsFneHKlo7OuQ/73NwI7iCOfwXhnbv37j84ehg9evzk6fHo2fMLpxtL2Zxqoe1lThwTXLE5cBDs0lhGZC5Ymq+ng55eMeu4Vl+gNWwpSaV4ySkBT61GvzNDbK6vuw9U9l2UubIkkosWR5liG6qlJKrosum07zJJoKZEdNO+P1TTdK/meZcOou/p1ty8MxBlllQVKyyvaohSy4FhgstG0WE+Bo3dhhgMG42t3jisSy/7VpZfR1kWnUHNHfYHaoYdkb7YYdkI4Ea0XFW4tFpuRcFKwHmLnfZJp7PTN/1qdBKP423g2yDZg5PJ+c/jCUJothr9yQpNG8kUUEGcWySxgWVHLHAqmP9W45ghdE0qtvBQ+ee4ZbfdQY9fe6bApbb+KsBb9t+KjkjnWpn7zMEpd1MbyP9piwbK82XHlWmAKbobVDZisG5YKC64ZRT8xgpOqPeXU0xrYgkFv/aDKTUTVwx6fEDmcjAquWnLbXDxdpzE4+Szd+wj2sUReoleoTOUoPdogj6hGZojGkyCMtCBCXn4NfwWft+lhsG+5gU6iPDHXy4W7XI=</latexit><latexit sha1_base64="5nLQo9Bp0QSIhLDUp1255F6ObaM=">AAAC53icbVHLjtMwFHXCawiPKbBkYzGDNGyqBCExsxlV6oZlkehkpKaqHMdJrPol+2Y6VZRvYIfYIr6IJez5BdY4bRd0hitbOjrnPuxzcyO4gzj+GYR37t67/+DgYfTo8ZOnh4Nnzy+cbixlU6qFtpc5cUxwxabAQbBLYxmRuWBpvhz3enrFrONafYK1YXNJKsVLTgl4ajH4lRlic33dnlHZtVHmypJILtY4yhRbUS0lUUWbjcddm0kCNSWiHXfdvpqmOzXP27QXfU+35OadgSizpKpYYXlVQ5RaDgwTXDaK9vMxaOxWxGBYaWz1ymFdetm3svw6yrLoBGrusD9QM+yI9MUOy0YAN2LNVYVLq+VGFKwEnK+x0z7peHL8plsMjuJhvAl8GyQ7cDQ6/XE4+v19PlkM/mSFpo1kCqggzs2S2MC8JRY4Fcx/q3HMELokFZt5qPxz3Lzd7KDDrz1T4FJbfxXgDftvRUukc2uZ+8zeKXdT68n/abMGytN5y5VpgCm6HVQ2oreuXyguuGUU/MYKTqj3l1NMa2IJBb/2vSk1E1cMOrxH5rI3Krlpy21w8XaYxMPko3fsHG3jAL1Er9AJStB7NEIf0ARNEQ1GQRnowIQ8/Bx+Cb9uU8NgV/MC7UX47S/63u9X</latexit><latexit sha1_base64="5nLQo9Bp0QSIhLDUp1255F6ObaM=">AAAC53icbVHLjtMwFHXCawiPKbBkYzGDNGyqBCExsxlV6oZlkehkpKaqHMdJrPol+2Y6VZRvYIfYIr6IJez5BdY4bRd0hitbOjrnPuxzcyO4gzj+GYR37t67/+DgYfTo8ZOnh4Nnzy+cbixlU6qFtpc5cUxwxabAQbBLYxmRuWBpvhz3enrFrONafYK1YXNJKsVLTgl4ajH4lRlic33dnlHZtVHmypJILtY4yhRbUS0lUUWbjcddm0kCNSWiHXfdvpqmOzXP27QXfU+35OadgSizpKpYYXlVQ5RaDgwTXDaK9vMxaOxWxGBYaWz1ymFdetm3svw6yrLoBGrusD9QM+yI9MUOy0YAN2LNVYVLq+VGFKwEnK+x0z7peHL8plsMjuJhvAl8GyQ7cDQ6/XE4+v19PlkM/mSFpo1kCqggzs2S2MC8JRY4Fcx/q3HMELokFZt5qPxz3Lzd7KDDrz1T4FJbfxXgDftvRUukc2uZ+8zeKXdT68n/abMGytN5y5VpgCm6HVQ2oreuXyguuGUU/MYKTqj3l1NMa2IJBb/2vSk1E1cMOrxH5rI3Krlpy21w8XaYxMPko3fsHG3jAL1Er9AJStB7NEIf0ARNEQ1GQRnowIQ8/Bx+Cb9uU8NgV/MC7UX47S/63u9X</latexit><latexit sha1_base64="b8GXLdEgged7ckPHYnJPdVf4T1I=">AAAC53icbVHLjtMwFHXCawivAks2Fh2kYVMlIyRggyp1w7JIdDJSU1WOYyfW+CX7ZjpVlG9gh9jyWfAhrHE6XdAZrmzp6Jz7sM8trRQe0vRXFN+5e+/+g6OHyaPHT54+Gz1/ceZN6yhbUCONOy+JZ1JotgABkp1bx4gqJcvLi9mg55fMeWH0V9hatlKk1oILSiBQ69HvwhJXmqvuI1V9lxSec6KE3OKk0GxDjVJEV10xm/VdoQg0lMhu1veHap7v1bLs8kEMPf2FsO8sJIUjdc0qJ+oGktwJYJhg3mo6zMdgsN8Qi2FjsDMbjw0PcmjlxFVSFMkJNMLjcKBh2BMVij1WrQRh5VboGnNn1E6UjAMut9ibkHQ8P37br0fjdJLuAt8G2R6M0T7m69GfojK0VUwDlcT7ZZZaWHXEgaCShW+1nllCL0jNlgHq8By/6nY76PGbwFSYGxeuBrxj/63oiPJ+q8qQOTjlb2oD+T9t2QL/sOqEti0wTa8H8VYO1g0LxZVwjELYWCUIDf4KimlDHKEQ1n4wpWHykkGPD8hSDUZlN225Dc5OJ1k6yb6k4+mnvWVH6BV6jU5Qht6jKfqM5miBaDSNeGQiG4v4W/w9/nGdGkf7mpfoIOKffwHM8Ova</latexit>

Write a function that finds the largest element in a givencolumn, and outputs the row in which that elementappears.(this is needed to work out rk)

<latexit sha1_base64="w3zQEOoaYYsqSbri4sm/YkkXetA=">AAADF3icbVLLitRAFK3E10x89ejSTeGMMII0iQjqRgYaweUI9mSg0zSVyk1SdL2oqnTbhKz9A8GV/omuxK1Lf8S1le4W7BkvVXC4577q3Mo1Z9bF8a8gvHL12vUbe/vRzVu379wdHNw7s6oxFMZUcWXOc2KBMwljxxyHc22AiJxDms9HPZ8uwFim5Du30jAVpJKsZJQ475odBPuZJiZX79uXVHRtlNmyJILxFY4yCUuqhCCyaLPRqGszQVxNCW9HXbfLpumWzfM27Ulf086ZfqZdlBlSVVAYVtUuSg1zgAkuG0n7AbCricMlk4X1EDAnpgLrMHAQIB1m0gdXbAES+7c2Qj7BviFWjdON26QYtezDljWj9abc32SiNfg5hlGWRceuZhb7IwEKKLBTeKnMvK+Ej8xsfvS4mw0O42G8NnwZJFtwePK6/vANIXQ6G/zOCkWbvhflxNpJEms3bYlxjHLwKjQWNKFzUsHEQ0kE2Gm73lmHH3lPgUtl/PWzrr3/ZrREWLsSuY/shbUXud75P27SuPLFtGXSCwSSbhqVDe9f3H8AXDAD1PkFF4xQvw5GMa2JIdT5b7LTpQa+ANfhHWcueqGSi7JcBmdPh0k8TN56xV6hje2hB+ghOkYJeo5O0Bt0isaIBjr4GHwOvoSfwq/h9/DHJjQMtjn30Y6FP/8AGp0AUw==</latexit><latexit sha1_base64="OFkH2i7sCQcqD4BsdrrCltTxkIg=">AAADF3icbVLLitRAFK3E10x89ejSTeGMMII0iQjqRgYaweUI9mSg0zSVyk1SdL2oqkzbhKz9A8GV/oniQty69C9cubbS3YI946UKDvfcV51buebMujj+GYSXLl+5em1nN7p+4+at24O9OydWNYbCmCquzGlOLHAmYeyY43CqDRCRc0jz+ajn0zMwlin5xi01TAWpJCsZJc67ZnvBbqaJydXb9jkVXRtltiyJYHyJo0zCgiohiCzabDTq2kwQV1PC21HXbbNpumHzvE170te0c6afaBdlhlQVFIZVtYtSwxxggstG0n4A7GricMlkYT0EzImpwDoMHARIh5n0wRU7A4n9WxshH2HfEKvG6catU4xa9GGLmtF6Xe5vMtEa/BzDKMuiQ1czi/2RAAUU2Cm8UGbeV8IHZjY/eNjNBvvxMF4ZvgiSDdg/elm/+4q+/DqeDX5nhaJN34tyYu0kibWbtsQ4Rjl4FRoLmtA5qWDioSQC7LRd7azDD7ynwKUy/vpZV95/M1oirF2K3Ef2wtrzXO/8HzdpXPls2jLpBQJJ143Khvcv7j8ALpgB6vyCC0aoXwejmNbEEOr8N9nqUgM/A9fhLWcueqGS87JcBCePh0k8TF57xV6gte2ge+g+OkQJeoqO0Ct0jMaIBjp4H3wMPoUfws/ht/D7OjQMNjl30ZaFP/4AmqMCBQ==</latexit><latexit sha1_base64="OFkH2i7sCQcqD4BsdrrCltTxkIg=">AAADF3icbVLLitRAFK3E10x89ejSTeGMMII0iQjqRgYaweUI9mSg0zSVyk1SdL2oqkzbhKz9A8GV/oniQty69C9cubbS3YI946UKDvfcV51buebMujj+GYSXLl+5em1nN7p+4+at24O9OydWNYbCmCquzGlOLHAmYeyY43CqDRCRc0jz+ajn0zMwlin5xi01TAWpJCsZJc67ZnvBbqaJydXb9jkVXRtltiyJYHyJo0zCgiohiCzabDTq2kwQV1PC21HXbbNpumHzvE170te0c6afaBdlhlQVFIZVtYtSwxxggstG0n4A7GricMlkYT0EzImpwDoMHARIh5n0wRU7A4n9WxshH2HfEKvG6catU4xa9GGLmtF6Xe5vMtEa/BzDKMuiQ1czi/2RAAUU2Cm8UGbeV8IHZjY/eNjNBvvxMF4ZvgiSDdg/elm/+4q+/DqeDX5nhaJN34tyYu0kibWbtsQ4Rjl4FRoLmtA5qWDioSQC7LRd7azDD7ynwKUy/vpZV95/M1oirF2K3Ef2wtrzXO/8HzdpXPls2jLpBQJJ143Khvcv7j8ALpgB6vyCC0aoXwejmNbEEOr8N9nqUgM/A9fhLWcueqGS87JcBCePh0k8TF57xV6gte2ge+g+OkQJeoqO0Ct0jMaIBjp4H3wMPoUfws/ht/D7OjQMNjl30ZaFP/4AmqMCBQ==</latexit><latexit sha1_base64="qObLq0NXFJanfrv2p58L5PYk46U=">AAADF3icbVJNi9NAGJ7Er9341dWjl8GusIKUZBHUiyz04nEFu1loSplM3iRD54uZSWsJ+RuCJ/0n3sSrR/+IZydtBbvryww8vM/7Nc87uebMujj+FYQ3bt66fefgMLp77/6Dh4OjRxdWNYbChCquzGVOLHAmYeKY43CpDRCRc0jzxbjn0yUYy5T84NYaZoJUkpWMEudd86PgMNPE5Opj+4aKro0yW5ZEML7GUSZhRZUQRBZtNh53bSaIqynh7bjr9tk03bF53qY96WvaBdMvtYsyQ6oKCsOq2kWpYQ4wwWUjaT8AdjVxuGSysB4C5sRUYB0GDgKkw0z64IotQWL/1kbIF9g3xKpxunHbFKNWfdiqZrTelvubTLQGP8coyrLoxNXMYn8kQAEFdgqvlFn0lfCxmS+On3fzwTAexRvD10GyA0O0s/P54HdWKNr0vSgn1k6TWLtZS4xjlINXobGgCV2QCqYeSiLAztrNzjr8zHsKXCrjr5914/03oyXC2rXIfWQvrL3K9c7/cdPGla9nLZNeIJB026hseP/i/gPgghmgzi+4YIT6dTCKaU0Moc5/k70uNfAluA7vOXPRC5VcleU6uDgdJfEoeR8Pz97uJDtAT9BTdIIS9AqdoXfoHE0QDXTwKfgSfA0/h9/C7+GPbWgY7HIeoz0Lf/4B0gv+EA==</latexit>

Test these functions carefully before combining them into our program

The algorithm is not too simple, can we write the program?

10

... finallyfunction [ P,L,U ] = PALUdecomp( A )%PALUdecomp decompose A = P^{-1}LU [m, n]=size(A); if m ~= n, error('Input must be a square matrix.'), end P=eye(n); L=zeros(n); U=zeros(n); % remember A^(0) is A AofK = A; for k = 1:n % this is the new part, do the pivot... rk = findLargestinCol(AofK,k); if rk ~= k AofK = swapRows( AofK, rk, k ); L = swapRows( L, rk, k ); P = swapRows( P, rk, k ); end % from here it is the same as the OLD algorithm for j = k:n U(k,j) = AofK(k,j); end % check that we don't divide by zero(!) if U(k,k) == 0 error('** A^(k-1)_{k,k}==0 in PALU decomp') end for i = k:n L(i,k) = AofK(i,k)/U(k,k); end for i = k:n for j = k:n AofK(i,j) = AofK(i,j) - L(i,k)*U(k,j); end end end % of the loop over k end % of the function

rk = findLargestinCol(AofK,k); if rk ~= k AofK = swapRows( AofK, rk, k ); L = swapRows( L, rk, k ); P = swapRows( P, rk, k ); end

... the only new part...

Example: PALUdecomp.m, also pivotTest.m

11

... finally

function [ rk ] = findLargestinCol( A,k )% findLargestinCol: find the row index of the large element in column k% (of some matrix A) [value,index] = max( abs( A(:,k) ) ); % max is built-in for matlab % don't forget to take absolute % value rk = index;end

findLargestinCol.m , swapRows.m

function [ A ] = swapRows( A,u,v )%swapRows: swap rows u and v of matrix A and send the answer as output storeMe = A( v, : ); % store row v of A A( v , : ) = A( u, : ); % copy row u of A into row v of A A( u , : ) = storeMe; % copy the stored row into row u of Aend

12

Page 4: Recall - damtp.cam.ac.uk · Computational Projects Lecture 6: Improving LU decomposition  Dr Rob Jack, DAMTP 1 Recall...

further improvement...

Now we have a working program, we can solve equations...

However, there are still a few things that we can think about, especially if we want to work with large matrices

Can we make our program more flexible?

Can we make our program run faster?

also, does our program use up a lot of memory?

(eg can we get solutions where b is n x m? ... see earlier)

(eg can we reduce the total number of operations?)

13

"Efficiency"

Our current algorithm keeps track of a permutation matrix P .

This is an n⇥ n matrix in which there are n ones and all other

elements are zero.<latexit sha1_base64="tHaj8aQqhhe8FRBIxJV59vZgShs=">AAADG3icbVLLihNBFK1uX2N0NKNLNxcngquQlgFdyUBA3BlhMhlIh6G6+nZ3kXo0VdUzE5te6zcIrvRDBHfi1oU/4trqTgQz46UKLufcV51bSSm4daPRryC8dv3GzVs7t3t37u7eu9/fe3BsdWUYTpkW2pwk1KLgCqeOO4EnpUEqE4GzZDlu+dkZGsu1OnKrEheS5opnnFHnodO9YDcuqUn0RR1FTDZ1L7ZZRiUXK+jFCs+ZlpKqtI7H46aOJXUFo6IeN802O5tt2CSpZy3pi9olLw9K14sNzXNMDc8L13tTGWCVMagcUJFrw10hYYlYWnCGsiXoDCiUaGTluhnBlzX8AgaTwbCr2zsquAV/qIKBih2XaEEN/sZxBecFZwW4Ag0C9XfgWa2wzUh9VwG65QAFSj+H7WLeodHD5rS/PxqOOoOrTrRx9g9ffXj/lRAyOe3/jlPNqrYOE9TaeTQq3aKmxnEm0AtRWSz9s2iOc+8q6odd1N3eGnjikRQybfz1enTovxk1ldauZOIjW23tZa4F/8fNK5e9WNRclZVDxdaNskqA09B+Aki5Qeb8jlNOmV8BZ8AK6uV3/qtsdSlQnKFrYAtMZCtUdFmWq87xs2E0GkZvvWIvydp2yCPymDwlEXlODslrMiFTwgIXfAw+B1/CT+G38Hv4Yx0aBpuch2TLwp9/AOU8ATg=</latexit><latexit sha1_base64="3np8GrHvx/sWXPrc+s1ucfYO/no=">AAADG3icbVLLihNBFK1uX2N0NKNLNxcngquQlgFdyUBA3BlhMhlIh1BdfTtdpB5NVfXMxKbX+g2CK/0Q0Z24deFfuHJtdSeCmfFSBZdz7qvOraQQ3LrB4GcQXrl67fqNnZudW7d379zt7t07tro0DMdMC21OEmpRcIVjx53Ak8IglYnASbIcNvzkFI3lWh25VYEzSReKZ5xR56H5XrAbF9Qk+ryKIibrqhPbLKOSixV0YoVnTEtJVVrFw2FdxZK6nFFRDet6m51MNmySVJOG9EXtkhcHhevEhi4WmBq+yF3nVWmAlcagckDFQhvucglLxMKCM5QtQWdAoUAjS9fOCL6s4efQG/X6bd3OUc4t+EMV9FTsuEQLqvc3jis4yznLweVoEKi/Pc9qhU1G6rsK0A0HKFD6OWwb8waN7tfz7v6gP2gNLjvRxtk/fPHu7Rfy+ddo3v0dp5qVTR0mqLXTaFC4WUWN40ygF6K0WPhn0QVOvauoH3ZWtXur4ZFHUsi08dfr0aL/ZlRUWruSiY9stLUXuQb8HzctXfZsVnFVlA4VWzfKSgFOQ/MJIOUGmfM7TjllfgWcAcupl9/5r7LVJUdxiq6GLTCRjVDRRVkuO8dP+tGgH732ij0na9shD8hD8phE5Ck5JC/JiIwJC1zwPvgYfAo/hF/Db+H3dWgYbHLuky0Lf/wBZVEC6g==</latexit><latexit sha1_base64="3np8GrHvx/sWXPrc+s1ucfYO/no=">AAADG3icbVLLihNBFK1uX2N0NKNLNxcngquQlgFdyUBA3BlhMhlIh1BdfTtdpB5NVfXMxKbX+g2CK/0Q0Z24deFfuHJtdSeCmfFSBZdz7qvOraQQ3LrB4GcQXrl67fqNnZudW7d379zt7t07tro0DMdMC21OEmpRcIVjx53Ak8IglYnASbIcNvzkFI3lWh25VYEzSReKZ5xR56H5XrAbF9Qk+ryKIibrqhPbLKOSixV0YoVnTEtJVVrFw2FdxZK6nFFRDet6m51MNmySVJOG9EXtkhcHhevEhi4WmBq+yF3nVWmAlcagckDFQhvucglLxMKCM5QtQWdAoUAjS9fOCL6s4efQG/X6bd3OUc4t+EMV9FTsuEQLqvc3jis4yznLweVoEKi/Pc9qhU1G6rsK0A0HKFD6OWwb8waN7tfz7v6gP2gNLjvRxtk/fPHu7Rfy+ddo3v0dp5qVTR0mqLXTaFC4WUWN40ygF6K0WPhn0QVOvauoH3ZWtXur4ZFHUsi08dfr0aL/ZlRUWruSiY9stLUXuQb8HzctXfZsVnFVlA4VWzfKSgFOQ/MJIOUGmfM7TjllfgWcAcupl9/5r7LVJUdxiq6GLTCRjVDRRVkuO8dP+tGgH732ij0na9shD8hD8phE5Ck5JC/JiIwJC1zwPvgYfAo/hF/Db+H3dWgYbHLuky0Lf/wBZVEC6g==</latexit><latexit sha1_base64="sBPVqTd8yjiiZW7rZ6zcNnkCAog=">AAADG3icbVLLbtNAFB2bVzEUUliyuSJBYhXZqBKsUKVs2BGkpqkUR9V4fB2PMg9rZtw2WP4RJFbwJ+wQWxb8CGvGbpBIy9WMdHXOfc25k1WCWxfHv4Lw1u07d+/t3Y8ePNx/9Hhw8OTE6townDEttDnNqEXBFc4cdwJPK4NUZgLn2XrS8fNzNJZrdew2FS4lXSlecEadh84Ogv20oibTl02SMNk2UWqLgkouNhClCi+YlpKqvEknk7ZJJXUlo6KZtO0uO59v2Sxr5h3pi9o1rw4rF6WGrlaYG74qXfS+NsBqY1A5oGKlDXelhDViZcEZytagC6BQoZG162cEX9bwSxhNR+O+bnRccgv+UAUjlTou0YIa/Y3jCi5KzkpwJRoE6u/Is1phl5H7rgJ0xwEKlH4O28d8RKPH7dlgGI/j3uCmk2ydIdna9GzwO801q7s6TFBrF0lcuWVDjeNMoBeitlj5Z9EVLryrqB922fR7a+GFR3IotPHX69Gj/2Y0VFq7kZmP7LS117kO/B+3qF3xZtlwVdUOFbtqVNQCnIbuE0DODTLnd5xzyvwKOANWUi+/819lp0uJ4hxdCztgJjuhkuuy3HROXo2TeJx8iIdHb7eS7ZFn5Dl5SRLymhyRd2RKZoQFLvgUfAm+hp/Db+H38MdVaBhsc56SHQt//gFrev7U</latexit>

. . . perhaps it would be more efficient to just keep track of the ones,and let the zeros look after themselves. . .

<latexit sha1_base64="aU5oPx5IQdHLhIqfNf7xYzPpUTs=">AAAC8XicbZFNj9MwEIad8LWUj+3CkcuIFRIHVCVoEZxQpV4Qp0Wi25WaqnKcSWtqx5Y92aUb5YdwQ1z5Rdz5DZxx2h7oLiNFmryvxzN+JrdKekqSX1F86/adu/cO7vcePHz0+LB/9OTMm9oJHAujjDvPuUclKxyTJIXn1iHXucJJvhp1/uQCnZem+kxrizPNF5UspeAUpHn/d2a5y83XJk2Fbpte5suSa6nW0MsqvBRGa14VTTYatU2mOS0FV82obffdyWTn5nkz6cxwqV9Je2Kplzm+WGDh5GIZfgpDHiy6JbceJMGlqVUBOYI2DgHLMJnEioAMfKk9wQrRAjkuVmBKoCWCqdC/gtAWFNJGuUJnPChjVsBLQteJOiC5QL/p1877x8kg2QTcTNJdcjx8c3Q4ZIydzvt/QqGodZhEKO79NE0szRruSAqF4X21Rxtm4guchrTiGv2s2WyjhRdBKaA0LnzhJRv134qGa+/XOg8nO2T+uteJ//OmNZXvZo2sbE1YiW2jslYdq261UEiHgsLqCsmFk2FWEEse2AUm+12WHRxqYU/MdQcqvY7lZnL2epAmg/RTIPaebeOAPWPP2UuWsrdsyD6wUzZmIvoY2WgdXcU+/hZ/j39sj8bRruYp24v451/aqPKG</latexit><latexit sha1_base64="iH3vXWNKWewvSuxO0lVVGD3t2e0=">AAAC8XicbZFNb9NAEIbX5quEj6Zw5DKiQuKAIhsVwQlFygVxKhJpKjVRtF6P4yW73tXuuCW1/EO4ITjyi7jDX+DMOsmBtIxkafy+Ozuzz2RWSU9J8jOKb9y8dfvO3t3evfsPHu73Dx6deFM7gWNhlHGnGfeoZIVjkqTw1DrkOlM4yZajzp+co/PSVB9pZXGm+aKShRScgjTv/5pa7jLzuUlTodumN/VFwbVUK+hNK7wQRmte5c10NGqbqeZUCq6aUdvuupPJ1s2yZtKZ4VK/lPbIUm/q+GKBuZOLMvzkhjxYdCW3HiTBhalVDhmCNg4BizCZxIqADHyqPcES0QI5LpZgCqASwVToX0BoCwpprVyiMx6UMUvgBaHrRB2QnKNf92vn/cNkkKwDrifpNjkcvjrYH/7+Pjue9/+EQlHrMIlQ3PuzNLE0a7gjKRSG99UebZiJL/AspBXX6GfNehstPAtKDoVx4QsvWav/VjRce7/SWTjZIfNXvU78n3dWU/Fm1sjK1oSV2DQqatWx6lYLuXQoKKwul1w4GWYFUfLALjDZ7VJ2cKiFHTHTHaj0KpbrycnLQZoM0g+B2Fu2iT32hD1lz1nKXrMhe8eO2ZiJ6H1ko1V0Gfv4S/w1/rY5GkfbmsdsJ+IffwGnf/Rr</latexit><latexit sha1_base64="iH3vXWNKWewvSuxO0lVVGD3t2e0=">AAAC8XicbZFNb9NAEIbX5quEj6Zw5DKiQuKAIhsVwQlFygVxKhJpKjVRtF6P4yW73tXuuCW1/EO4ITjyi7jDX+DMOsmBtIxkafy+Ozuzz2RWSU9J8jOKb9y8dfvO3t3evfsPHu73Dx6deFM7gWNhlHGnGfeoZIVjkqTw1DrkOlM4yZajzp+co/PSVB9pZXGm+aKShRScgjTv/5pa7jLzuUlTodumN/VFwbVUK+hNK7wQRmte5c10NGqbqeZUCq6aUdvuupPJ1s2yZtKZ4VK/lPbIUm/q+GKBuZOLMvzkhjxYdCW3HiTBhalVDhmCNg4BizCZxIqADHyqPcES0QI5LpZgCqASwVToX0BoCwpprVyiMx6UMUvgBaHrRB2QnKNf92vn/cNkkKwDrifpNjkcvjrYH/7+Pjue9/+EQlHrMIlQ3PuzNLE0a7gjKRSG99UebZiJL/AspBXX6GfNehstPAtKDoVx4QsvWav/VjRce7/SWTjZIfNXvU78n3dWU/Fm1sjK1oSV2DQqatWx6lYLuXQoKKwul1w4GWYFUfLALjDZ7VJ2cKiFHTHTHaj0KpbrycnLQZoM0g+B2Fu2iT32hD1lz1nKXrMhe8eO2ZiJ6H1ko1V0Gfv4S/w1/rY5GkfbmsdsJ+IffwGnf/Rr</latexit><latexit sha1_base64="dQBM23AboiZyqazUmsYLB9/lc/s=">AAAC8XicbZFNj9MwEIad8LWUry4cuYyokDigKkFIcEIr9YI4LRLdrtRUleNMGlM7tuzJ7naj/BBuiCu/iDu/gTNOtwe6y0iRJu/r8Yyfya2SnpLkVxTfun3n7r2D+4MHDx89fjI8fHriTeMEToVRxp3m3KOSNU5JksJT65DrXOEsX096f3aGzktTf6GNxYXmq1qWUnAK0nL4O7Pc5eaiTVOhu3aQ+bLkWqoNDLIaz4XRmtdFm00mXZtpTpXgqp103b47m+3cPG9nvRku9Wtp31oaZI6vVlg4uarCT2HIg0VXcetBEpybRhWQI2jjELAMk0msCcjA18YTrBEtkONiDaYEqhBMjf41hLagkLbKJTrjQRmzBl4Sul7UAckZ+m2/bjkcJeNkG3AzSXfJiO3ieDn8EwpFo8MkQnHv52liadFyR1IoDO9rPNowE1/hPKQ11+gX7XYbHbwMSgGlceELL9mq/1a0XHu/0Xk42SPz171e/J83b6h8v2hlbRvCWlw1KhvVs+pXC4V0KCisrpBcOBlmBVHxwC4w2e9S9XCogz0x1z2o9DqWm8nJm3GajNPPyejoww7ZAXvOXrBXLGXv2BH7yI7ZlInoU2SjTXQZ+/hb/D3+cXU0jnY1z9hexD//Apyd8bE=</latexit>

If we do this, we can store all information about the matrix by keepingtrack of n integers, instead of n2 real numbers.(Eg, for row j, keep keep track of the position xj of the “one” thatappears in that row.)

<latexit sha1_base64="hvSQ4mNHFomMRt0csKmN2BFgkWE=">AAADYXicbVLLbtNAFB03PNrwSsuymytq1CJFUVwhwQpVipBgFwRtKtUhHY+vnWnmYc2M20ZW/ooVf8KuEiv4ANaMnYJIy11Yx+fMfZ2ZpBDcun7/W7DWunP33v31jfaDh48eP+lsbh1ZXRqGh0wLbY4TalFwhYeOO4HHhUEqE4GjZDao9dE5Gsu1+uTmBY4lzRXPOKPOU5PN4GNcUJPoyyqKmFxU7dhmGZVczKEdK7xgWkqq0ioeDBZVLKmbMiqqwWKxqo5G12qSVKNa9EXtjBcvC9eODc1zTA3Pp679PoMLhFSDm3LbrTGjCqzTBoEKAVxl2shmOKCJLp0/iOAJwy8hmcMMseAqB2com4HOIFShT3KY+yW7HlmHNF0Kn/dD8F4IUKVMvNxrxmrvvc274LuA0RcQnoXdpujy87ds3bXQljeDhJeTs/APe3qqFe7uekwd0KJAv6nvu/z3JXsvFpPOTr/XbwJug+ga7BwMvwyuCCHDSedXnGpWSlSOCWrtSdQv3LiixnEm0NtZWiz8ZDTHEw8VlWjHVXP7C3jumbRZKNPKQcP+m1FRae1cJv5kfUP2plaT/9NOSpe9HldcFaVDxZaNslKA87fnnxKk3CBz/qWknDLjrWLAptQ76LzZK12mKM7RLWCFTGRtVHTTltvgaL8X9XvRB+/YG7KMdbJNnpE9EpFX5IC8I0NySFjwNbgKfgQ/1763Nlqd1tby6FpwnfOUrERr+zdhnhZX</latexit><latexit sha1_base64="VW9VwApY7TChhPhJfvXs7r8Di3g=">AAADYXicbVLLbtNAFLUbHm14pWXZzRU1apGiKK6QYIUqRUiwK4I0leqQjsfXzjTzsGbGbSLLf8WKP2EHYgUfwJqxExBpuQvr+Jy5rzMT55wZ2+9/8Tdat27fubu51b53/8HDR53tnROjCk1xSBVX+jQmBjmTOLTMcjzNNRIRcxzFs0Gtjy5RG6bkB7vIcSxIJlnKKLGOmmz776Oc6FjNyzCkoirbkUlTIhhfQDuSeEWVEEQmZTQYVGUkiJ1SwstBVa2ro9FKjeNyVIuuqJmx/Hlu25EmWYaJZtnUtt+mcIWQKLBTZro1pkSCsUojEM6ByVRp0QwHJFaFdQcRHKHZHOIFzBBzJjOwmtAZqBQCGbgki5lbsuuQsUiSpfDxMADnBQdZiNjJvWas9sHrrAuuC2h1BcFF0G2KLj9/y9Zdc2VYM0gwn1wEf9jzcyVxf99hYoHkObpNXd/lvyvZe1ZNOnv9Xr8JuAnCFdg7Ov40+Oadz48nnV9RomghUFrKiTFnYT+345JoyyhHZ2dhMHeTkQzPHJREoBmXze1X8NQxSbNQqqSFhv03oyTCmIWI3cn6hsx1rSb/p50VNn05LpnMC4uSLhulBQfrbs89JUiYRmrdS0kYodpZRYFOiXPQOrPXukyRX6KtYI2MRW1UeN2Wm+DksBf2e+E759grbxmb3q73xDvwQu+Fd+S98Y69oUf9z/5X/4f/c+N7a6vVae0sj274q5zH3lq0dn8DoaEXMA==</latexit><latexit sha1_base64="VW9VwApY7TChhPhJfvXs7r8Di3g=">AAADYXicbVLLbtNAFLUbHm14pWXZzRU1apGiKK6QYIUqRUiwK4I0leqQjsfXzjTzsGbGbSLLf8WKP2EHYgUfwJqxExBpuQvr+Jy5rzMT55wZ2+9/8Tdat27fubu51b53/8HDR53tnROjCk1xSBVX+jQmBjmTOLTMcjzNNRIRcxzFs0Gtjy5RG6bkB7vIcSxIJlnKKLGOmmz776Oc6FjNyzCkoirbkUlTIhhfQDuSeEWVEEQmZTQYVGUkiJ1SwstBVa2ro9FKjeNyVIuuqJmx/Hlu25EmWYaJZtnUtt+mcIWQKLBTZro1pkSCsUojEM6ByVRp0QwHJFaFdQcRHKHZHOIFzBBzJjOwmtAZqBQCGbgki5lbsuuQsUiSpfDxMADnBQdZiNjJvWas9sHrrAuuC2h1BcFF0G2KLj9/y9Zdc2VYM0gwn1wEf9jzcyVxf99hYoHkObpNXd/lvyvZe1ZNOnv9Xr8JuAnCFdg7Ov40+Oadz48nnV9RomghUFrKiTFnYT+345JoyyhHZ2dhMHeTkQzPHJREoBmXze1X8NQxSbNQqqSFhv03oyTCmIWI3cn6hsx1rSb/p50VNn05LpnMC4uSLhulBQfrbs89JUiYRmrdS0kYodpZRYFOiXPQOrPXukyRX6KtYI2MRW1UeN2Wm+DksBf2e+E759grbxmb3q73xDvwQu+Fd+S98Y69oUf9z/5X/4f/c+N7a6vVae0sj274q5zH3lq0dn8DoaEXMA==</latexit><latexit sha1_base64="8r3LIXB+eCWVVZATevdK8xPKHQM=">AAADYXicbVLLbtNAFLUbHm14pWXZzRU1apGiyK6QYIUqRUiwK4I2leqQjsfXzjTzsGbGTSPLP8afsENiBR/AmrETEGm5C+v4nLmvM5MUnBkbhl/9jc6du/fub251Hzx89PhJb3vn1KhSUzyhiit9lhCDnEk8scxyPCs0EpFwHCWzYaOPrlAbpuQnuyhwLEguWcYosY6abPsf44LoRF1XUURFXXVjk2VEML6AbixxTpUQRKZVPBzWVSyInVLCq2Fdr6uj0UpNkmrUiK6ombHiZWG7sSZ5jqlm+dR232cwR0gV2Ckz/QZTIsFYpREI58BkprRohwOSqNK6gwiO0OwakgXMEAsmc7Ca0BmoDAIZuCSLuVuy75CxSNKl8PkwAOcFB1mKxMmDdqzuwdu8D64LaDWH4DLot0WXn79lm66FMqwdJLieXAZ/2IsLJXF/32FigRQFuk1d3+W/Kzl4UU96e+EgbANug2gF9rxVHE96v+JU0VKgtJQTY86jsLDjimjLKEdnZ2mwcJORHM8dlESgGVft7dfw3DFpu1CmpIWW/TejIsKYhUjcyeaGzE2tIf+nnZc2ez2umCxKi5IuG2UlB+tuzz0lSJlGat1LSRmh2llFgU6Jc9A6s9e6TJFfoa1hjUxEY1R005bb4PRwEIWD6EO4d/RmZdmmt+s98w68yHvlHXnvvGPvxKP+F/+b/8P/ufG9s9XpdXaWRzf8Vc5Tby06u78BzOMT8A==</latexit>

14

compact version % main body of PALUdecompV2

L=zeros(n); U=zeros(n); P = 1:n; % P starts as a vector with elements 1,2,... n % remember A^(0) is A AofK = A; for k = 1:n % this is the new part, do the pivot... rk = findLargestinCol(AofK,k); if rk ~= k AofK = swapRows( AofK, rk, k ); L = swapRows( L, rk, k ); % swap two elements of P (instead of swapping rows) storeMe = P(rk); P(rk) = P(k); P(k) = storeMe; end

% from here it is the same as the OLD algorithm [snipped to save space]

end % of the loop over k

Example: PALUdecompV2.m 15

compact version

function [ A ] = PTimesMat( P,M )% compute P.M where P is a "permutation vector" and M is a matrix [Mrows,Mcols] = size(M); A = zeros(Mrows,Mcols); % should check here that P is vector of size Mrows for i=1:Mrows A(i,:) = M( P(i),: ); endend

. . .P is not stored as a matrix, how do I compute (for example) PA?<latexit sha1_base64="wH2KjptlRbwDHujLLfRHfWtUTsw=">AAACxXicbVHLihNBFK1uX2N8RV0Kw8WJMIKEbhF0pSMR1IUSwUwG0iFUV99OF6lHU1WdSWgav2N2foa/4o+4tjrJwsx4V6fOua86Ny0Fty6Kfgfhtes3bt46uN25c/fe/Qfdh49Ora4MwxHTQpuzlFoUXOHIcSfwrDRIZSpwnC4GrT5eorFcq+9uXeJU0rniOWfUeWrW/ZWU1KR6Vccxk03dSWyeU8nFGjqJwnOmpaQqq5PBoKkTSV3BqKgHTbOvjsc7NU3rcSv6pnbBy1el6ySGzueYGT4v/CPTzkJv2ANuQWkH1mmDGVALFHwDw1cvoNDnkGn4DL5/WTmE41wbwBWVpcDnvvp9710z6x5F/WgTcBXEO3B0cnhx8ZMQMpx1//jhrJKoHBPU2kkclW5aU+M4E+h3riyWlC3oHCceKirRTuuNww0880wG7Rq5Vg427L8VNZXWrmXqM1sb7GWtJf+nTSqXv5nWXLX/VGw7KK8EOA3tuSDjBpnz58g4ZYb7XYEV1FDm/FH3phQoluga2CNT2RoVX7blKjh92Y+jfvzNO/aWbOOAPCFPyTGJyWtyQj6RIRkRFhwGH4IvwdfwYyhDFy63qWGwq3lM9iL88Rc73N8z</latexit><latexit sha1_base64="CTefViHV6haVcW6OriAD04s5gws=">AAACxXicbVHLihNBFK1uX2N8TNSlMFycCCNI6BZBVzoSQV0oEcxkIB1CdfXtTpF6NFXVmYSm8Tv0S/wVf8S11UkWZsa7OnXOfdW5aSm4dVH0OwivXb9x89bB7c6du/fuH3YfPDyzujIMR0wLbc5TalFwhSPHncDz0iCVqcBxuhi0+niJxnKtvrl1iVNJC8Vzzqjz1Kz7KympSfWqjmMmm7qT2Dynkos1dBKFF0xLSVVWJ4NBUyeSujmjoh40zb46Hu/UNK3Hreib2gUvX5aukxhaFJgZXsz9I9POQm/YA25BaQfWaYMZUAsUfAPDV89hri8g0/AJfP+ycggnuTaAKypLgc989bve22bWPY760SbgKoh34Pj06EcbP4ez7h8/nFUSlWOCWjuJo9JNa2ocZwL9zpXFkrIFLXDioaIS7bTeONzAU89k0K6Ra+Vgw/5bUVNp7VqmPrO1wV7WWvJ/2qRy+etpzVX7T8W2g/JKgNPQngsybpA5f46MU2a43xXYnBrKnD/q3pQ5iiW6BvbIVLZGxZdtuQrOXvTjqB9/9Y69Ids4II/JE3JCYvKKnJKPZEhGhAVHwfvgc/Al/BDK0IXLbWoY7Goekb0Iv/8F2M3g+A==</latexit><latexit sha1_base64="CTefViHV6haVcW6OriAD04s5gws=">AAACxXicbVHLihNBFK1uX2N8TNSlMFycCCNI6BZBVzoSQV0oEcxkIB1CdfXtTpF6NFXVmYSm8Tv0S/wVf8S11UkWZsa7OnXOfdW5aSm4dVH0OwivXb9x89bB7c6du/fuH3YfPDyzujIMR0wLbc5TalFwhSPHncDz0iCVqcBxuhi0+niJxnKtvrl1iVNJC8Vzzqjz1Kz7KympSfWqjmMmm7qT2Dynkos1dBKFF0xLSVVWJ4NBUyeSujmjoh40zb46Hu/UNK3Hreib2gUvX5aukxhaFJgZXsz9I9POQm/YA25BaQfWaYMZUAsUfAPDV89hri8g0/AJfP+ycggnuTaAKypLgc989bve22bWPY760SbgKoh34Pj06EcbP4ez7h8/nFUSlWOCWjuJo9JNa2ocZwL9zpXFkrIFLXDioaIS7bTeONzAU89k0K6Ra+Vgw/5bUVNp7VqmPrO1wV7WWvJ/2qRy+etpzVX7T8W2g/JKgNPQngsybpA5f46MU2a43xXYnBrKnD/q3pQ5iiW6BvbIVLZGxZdtuQrOXvTjqB9/9Y69Ids4II/JE3JCYvKKnJKPZEhGhAVHwfvgc/Al/BDK0IXLbWoY7Goekb0Iv/8F2M3g+A==</latexit><latexit sha1_base64="UkDaxNsav32Bw6Tp0NodWgndaVE=">AAACxXicbVFdi9NAFJ3Er7V+VX0U5GIrrCAlEUGfdKWC+qBUsNuFppSbyU07dCYTZibdlhD8W/4V/4jPTrp9sLvepzPn3K85Ny2lsC6Kfgfhtes3bt46ut25c/fe/Qfdh49Ora4MpzHXUpuzFC1JUdDYCSfprDSEKpU0SVfDVp+syVihix9uW9JM4aIQueDoPDXv/kpKNKne1HHMVVN3EpvnqITcQicp6JxrpbDI6mQ4bOpEoVtylPWwaQ7VyWSvpmk9aUXf1K5E+bp0ncTgYkGZEYulf2TaWeiP+iAsFNqBddpQBmgBwTcwYvMSlvocMg1fwPcvK0dwnGsDtEFVSnrhqz/03zfzbi8aRLuAqyDegx7bx2je/eOH80pR4bhEa6dxVLpZjcYJLsnvXFkqka9wQVMPC1RkZ/XO4QaeeyaDdo1cFw527L8VNSprtyr1ma0N9rLWkv/TppXL385qUbT/LPjFoLyS4DS054JMGOLOnyMTyI3wuwJfokHu/FEPpixJrsk1cECmqjUqvmzLVXD6ahBHg/h71Dt5t7fsiD1hz9gxi9kbdsI+sxEbMx48DT4GX4Nv4adQhS5cX6SGwb7mMTuI8Odf+TvdAw==</latexit>

. . . a further advantage is that this “matrix multiplication” is now anO(n2) operation, instead of O(n3)

<latexit sha1_base64="RyDfO5JkhPINQ4lLXwmQbx7fChw=">AAAC7nicbVFNbxMxEPUuXyV8NMCRi0WD2koo2i1I9IQi5QA3ikSaSklIZ73erBV/rOzZpNFq/wY3xJW/w5Ejf4Iz3iQH0jKSref3Zuzxm6SQwmEU/QrCW7fv3L23d7/14OGjx/vtJ0/PnSkt4wNmpLEXCTguheYDFCj5RWE5qETyYTLvN/pwwa0TRn/GVcEnCmZaZIIBemra/j0uwCbmqopjpuqqNXZZBkrIFW2NNV8yoxTotBr3+3U1VoA5A1n163pXHQ63apJUw0b0l7q5KN4U2BpbmM14asUs94fUoKNAs9Jizi2FdAEaYcapcBRzQL95dHnpL7PiiqpSovA+bNo9PGzStFlS0LTz8Uh/OTnuUFNwu5ZfUaEdckipyTby6+NOPW0fRN1oHfQmiLfgoHf6c79HCDmbtv/4LlmpuEYmwblRHBU4qcCiYJL7z5WOF8DmvuuRhxoUd5NqPYqavvRMSjNj/dJI1+y/FRUo51Yq8ZmNX+661pD/00YlZqeTSuiiRK7Z5qGslBQNbeZKU2E5Qz+3VACzwvdKWQ4WGPrp77ySc7ngWNMdMlGNUfF1W26C85NuHHXjT96xd2QTe+Q5eUGOSEzekh75QM7IgLDgfaCCRbAMi/Br+C38vkkNg23NM7IT4Y+/fqjvjg==</latexit><latexit sha1_base64="+Kc5KUuKnxvLF34yRFhTMkrOdXA=">AAAC7nicbVFNbxMxEPUuXyV8NMCRi0WD2kqoyhYkekKRcoAbRSJNpWxIZ73erBV/rOzZpNFq/wY3xIELf4cjRw78Bc54kxxIy0i2nt+bscdvkkIKh93uzyC8cfPW7Ts7d1v37j94uNt+9PjMmdIyPmBGGnuegONSaD5AgZKfF5aDSiQfJrN+ow/n3Dph9EdcFnysYKpFJhigpybtX3EBNjGXVRQxVVet2GUZKCGXtBVrvmBGKdBpFff7dRUrwJyBrPp1va0Ohxs1SaphI/pL3UwUrwpsxRamU55aMc39ITXoKNCstJhzSyGdg0aYciocxRzQbx5dXPjLrLikqpQovA/rdvf3mzRtFhQ07bw/0J+ODzvUFNyu5BdUaIccUmqytfzysFNP2nvdo+4q6HUQbcBe7+THbu/3t/HppP3Hd8lKxTUyCc6Nom6B4wosCia5/1zpeAFs5rseeahBcTeuVqOo6XPPpDQz1i+NdMX+W1GBcm6pEp/Z+OWuag35P21UYnYyroQuSuSarR/KSknR0GauNBWWM/RzSwUwK3yvlOVggaGf/tYrOZdzjjXdIhPVGBVdteU6ODs+irpH0Qfv2Buyjh3ylDwjByQir0mPvCOnZEBY8DZQwTxYhEX4OfwSfl2nhsGm5gnZivD7X0t/8XM=</latexit><latexit sha1_base64="+Kc5KUuKnxvLF34yRFhTMkrOdXA=">AAAC7nicbVFNbxMxEPUuXyV8NMCRi0WD2kqoyhYkekKRcoAbRSJNpWxIZ73erBV/rOzZpNFq/wY3xIELf4cjRw78Bc54kxxIy0i2nt+bscdvkkIKh93uzyC8cfPW7Ts7d1v37j94uNt+9PjMmdIyPmBGGnuegONSaD5AgZKfF5aDSiQfJrN+ow/n3Dph9EdcFnysYKpFJhigpybtX3EBNjGXVRQxVVet2GUZKCGXtBVrvmBGKdBpFff7dRUrwJyBrPp1va0Ohxs1SaphI/pL3UwUrwpsxRamU55aMc39ITXoKNCstJhzSyGdg0aYciocxRzQbx5dXPjLrLikqpQovA/rdvf3mzRtFhQ07bw/0J+ODzvUFNyu5BdUaIccUmqytfzysFNP2nvdo+4q6HUQbcBe7+THbu/3t/HppP3Hd8lKxTUyCc6Nom6B4wosCia5/1zpeAFs5rseeahBcTeuVqOo6XPPpDQz1i+NdMX+W1GBcm6pEp/Z+OWuag35P21UYnYyroQuSuSarR/KSknR0GauNBWWM/RzSwUwK3yvlOVggaGf/tYrOZdzjjXdIhPVGBVdteU6ODs+irpH0Qfv2Buyjh3ylDwjByQir0mPvCOnZEBY8DZQwTxYhEX4OfwSfl2nhsGm5gnZivD7X0t/8XM=</latexit><latexit sha1_base64="vm7iOtIbb+gdowG4C8bLTAW/hus=">AAAC7nicbVFNbxMxEPUuXyV8NMCRi0WC2kqo2i1IcEKVcoAbRSJNpWxIZ73erBV/rOzZpNFq/wY3xJW/xJE/wRlvkgNpGcnW83sz9vhNWkrhMIp+BeGt23fu3tu733nw8NHj/e6Tp+fOVJbxITPS2IsUHJdC8yEKlPyitBxUKvkonQ9afbTg1gmjv+Cq5BMFMy1ywQA9Ne3+Tkqwqbmq45ippu4kLs9BCbminUTzJTNKgc7qZDBo6kQBFgxkPWiaXXU02qppWo9a0V/q5qJ8U2InsTCb8cyKWeEPmUFHgeaVxYJbCtkCNMKMU+EoFoB+8+jy0l9mxRVVlUThfdi0e3DQpmmzpKBp/9Oh/npy1Kem5HYtv6JCO+SQUZNv5NdH/Wba7UXH0TroTRBvQY9s42za/eO7ZJXiGpkE58ZxVOKkBouCSe4/VzleApv7rscealDcTer1KBr60jMZzY31SyNds/9W1KCcW6nUZ7Z+uetaS/5PG1eYv5vUQpcVcs02D+WVpGhoO1eaCcsZ+rllApgVvlfKCrDA0E9/55WCywXHhu6QqWqNiq/bchOcnxzH0XH8Oeqdvt9atkeekxfkkMTkLTklH8kZGRIWfAhUsAiWYRl+C7+HPzapYbCteUZ2Ivz5Fx2R7fY=</latexit>

16

Page 5: Recall - damtp.cam.ac.uk · Computational Projects Lecture 6: Improving LU decomposition  Dr Rob Jack, DAMTP 1 Recall...

Lesson from P matrix

If we think carefully about the "information content" of our data, we can reduce the amount of data that we store

This can also help to reduce the number of operations in our computation, although our code might be a bit more complicated

In addition, the computer has a finite amount of memory: by storing less data, we reduce the demand on resources, this helps when solving large problems...

17

Saving more memory

For LU decomposition, our final output is an upper triangular matrixand a lower triangular matrix (with 1s on the diagonal)

<latexit sha1_base64="gPqc3vWps04LDZDlm21/Y4Bn6zw=">AAAC/HicbVJNj9MwEHXC11I+tsCRy4gt0iKhKkFI7AlVqoQ4cFgkul2pqaqJ4yTWOrZlO9utonCCf8INceV/cORXcOOM0/ZAd3dOT+95PH5vnGrBrYui30F44+at23f27vbu3X/wcL//6PGJVbWhbEKVUOY0RcsEl2ziuBPsVBuGVSrYND0bd/r0nBnLlfzkVprNKywkzzlF56lF/0+i0aTqooljWrVNL7F5jhUXK+glki2pqiqUWZOMx22TVOhKiqIZt+2uOp1u1TRtpp3oL7VnXL/WrpcYLAqWGV6UrvdOGRh8mAwgY75ZK8u7Z7wEbwdyLlF45HTtgFtACbXWzIAzHGVRCzTgZxh+4aUMEIRaXqseLrkrYRAPLCgJrmSQcSyUv/1Fu+gfRMNoXXAVxFtwMDr6tT8ihBwv+n+TTNG6YtJRgdbO4ki7eYPGcSqYt1pbppGeYcFmHkqsmJ0368W08NwzGeTedK6kgzX7f0eDlbWrKvUnu/TsZa0jr9NmtcuP5g2XPiom6WZQXgtwCrote8OGUee36J1T40OmQEs0SJ3/CztTSibOmWthh0yrLqj4cixXwcmrYRwN448+sbdkU3vkKXlGDklM3pAReU+OyYTQYBI0wZfga/g5/BZ+D39sjobBtucJ2anw5z+1ivZs</latexit><latexit sha1_base64="PPLOCAdvVIJ3W+A/zeTxA/Bbkm8=">AAAC/HicbVK7jtNAFB2b1xIeG6CkuWKDtEgoihESW6FIkRAFxSKRzUpxFF2Px/Yo87BmxpuNLFPBl0CHaPkPSj6Amo6acZKC7O6tjs6ZO3fOuZOUgls3GPwKwmvXb9y8tXe7c+fuvfv73QcPT6yuDGVjqoU2pwlaJrhiY8edYKelYSgTwSbJYtTqkzNmLNfqg1uVbCYxVzzjFJ2n5t0/cYkm0ed1FFHZ1J3YZhlKLlbQiRVbUi0lqrSOR6OmjiW6gqKoR02zq04mWzVJ6kkr+kvtgpcvS9eJDeY5Sw3PC9d5ow303o17kDLfXGrL22c8B28HMq5QeOTKygG3gAqqsmQGnOGo8kqgAT/D8HMvpYAg9PJK9XDJXQG9qGdBK3AFg5Rjrv3tz5p592DQH6wLLoNoCw6GRz/3h7+/zI7n3b9xqmklmXJUoLXTaFC6WY3GcSqYt1pZViJdYM6mHiqUzM7q9WIaeOqZFDJvOtPKwZr9v6NGae1KJv5km569qLXkVdq0ctnRrObKR8UU3QzKKgFOQ7tlb9gw6vwWvXNqfMgUaIEGqfN/YWdKwcQZcw3skIlsg4ouxnIZnLzoR4N+9N4n9ppsao88Jk/IIYnIKzIkb8kxGRMajIM6+BR8Dj+GX8Nv4ffN0TDY9jwiOxX++AeCYfhR</latexit><latexit sha1_base64="PPLOCAdvVIJ3W+A/zeTxA/Bbkm8=">AAAC/HicbVK7jtNAFB2b1xIeG6CkuWKDtEgoihESW6FIkRAFxSKRzUpxFF2Px/Yo87BmxpuNLFPBl0CHaPkPSj6Amo6acZKC7O6tjs6ZO3fOuZOUgls3GPwKwmvXb9y8tXe7c+fuvfv73QcPT6yuDGVjqoU2pwlaJrhiY8edYKelYSgTwSbJYtTqkzNmLNfqg1uVbCYxVzzjFJ2n5t0/cYkm0ed1FFHZ1J3YZhlKLlbQiRVbUi0lqrSOR6OmjiW6gqKoR02zq04mWzVJ6kkr+kvtgpcvS9eJDeY5Sw3PC9d5ow303o17kDLfXGrL22c8B28HMq5QeOTKygG3gAqqsmQGnOGo8kqgAT/D8HMvpYAg9PJK9XDJXQG9qGdBK3AFg5Rjrv3tz5p592DQH6wLLoNoCw6GRz/3h7+/zI7n3b9xqmklmXJUoLXTaFC6WY3GcSqYt1pZViJdYM6mHiqUzM7q9WIaeOqZFDJvOtPKwZr9v6NGae1KJv5km569qLXkVdq0ctnRrObKR8UU3QzKKgFOQ7tlb9gw6vwWvXNqfMgUaIEGqfN/YWdKwcQZcw3skIlsg4ouxnIZnLzoR4N+9N4n9ppsao88Jk/IIYnIKzIkb8kxGRMajIM6+BR8Dj+GX8Nv4ffN0TDY9jwiOxX++AeCYfhR</latexit><latexit sha1_base64="rOLPGZKbVj6ojW7UQRmZrMYCkGw=">AAAC/HicbVLLihNBFK1uX2N8RV26uZgII0joHgRdyUBAXLgYwUwG0iHcrq7uFFMvqqonE5p2pX/iTtz6L36FO9dWZ7IwM3NXh3Pq1q1zbuVGcOeT5HcU37h56/advbu9e/cfPHzUf/zk2OnaUjahWmh7kqNjgis28dwLdmIsQ5kLNs1Px50+PWPWca0++7Vhc4mV4iWn6AO16P/JDNpcnzdpSmXb9DJXlii5WEMvU2xFtZSoiiYbj9smk+iXFEUzbttddTrdqnneTDsxXOpOuXltfC+zWFWssLxa+t57bWH4cTKEgoVmox3vnvEKgh0ouUIRkDe1B+4AFdTGMAveclRVLdBCmGH5eZAKQBB6da26v+J+CcN06EAr8EsGBcdKh9tftov+IBklm4KrIN2CAdnW0aL/Nys0rSVTngp0bpYmxs8btJ5TwYLV2jGD9BQrNgtQoWRu3mwW08KLwBRQBtOlVh427P8dDUrn1jIPJ7v03GWtI6/TZrUv384brkJUTNGLQWUtwGvothwMW0Z92GJwTm0ImQJdokXqw1/YmbJk4oz5FnbIXHZBpZdjuQqOD0ZpMko/JYPDd9vI9sgz8pzsk5S8IYfkAzkiE0KjSdREX6Nv8Zf4e/wj/nlxNI62PU/JTsW//gFUc/TU</latexit>

You can see that there are only n2 non-trivial numbers that we have tocompute. . . in fact we scan store all of these in one n⇥ n matrix,instead of two

<latexit sha1_base64="+4YKtw/hMDIyGS35Jk8EOyF8+nI=">AAADIHicbVJNb9NAEF2br2K+0iJOXFY0SBygsiskOKFK4cCxSKQpikM0Xo+TVfbD2l0njSz/FiRO8E+4IY7wQzizdnIgLSOtNXpvZt7sW2el4NbF8a8gvHb9xs1be7ejO3fv3X/Q2z84s7oyDIdMC23OM7AouMKh407geWkQZCZwlC0GLT9aorFcqw9uXeJEwkzxgjNwHpruBwdpCSbTF3WSMNnUUWqLAiQXaxqlCldMSwkqr9PBoKlTCW7OQNSDptllR6Mtm2X1qCX9ULvg5cvSRamB2Qxzw2dzF33UFWWgqEWkbg7Of9AgBX+08qJ99em4T5VWL5zhSw6Cqkpm/gKb6hXSOSx9q6Zeu6wcprl2NuKKFsA63nbjnW6nCkF10UpYpL5EK/QCqeMSLVV96hc2/OK5p6xDyLvalW6mvcP4KO6CXk2SbXJ48lY9ooSQ02nvj9+CVRKVYwKsHSdx6SY1GMeZQO9GZbEEtoAZjn2qwOtP6u7xGvrUIzkttPFHOdqh/3bUIK1dy8xXtgbby1wL/o8bV654Pam5al1SbCNUVKL1rv0TaM4NMuc9zzkww/2ulM3BeBu93TsqcxRLdA3dATPZGpVctuVqcnZ8lMRHyXvv2BuyiT3ymDwhz0hCXpET8o6ckiFhwTr4HHwNvoVfwu/hj/DnpjQMtj0PyU6Ev/8Cb0cCdQ==</latexit><latexit sha1_base64="YgH0WG6beG+mx9c1OFjwcF27oRI=">AAADIHicbVJNb9NAELXNVzFfaREnLqs2SBygsiskOKFK4cCxSKQpikM0Xo/jVfbD2l0njSz/FiQOCP4JN8QR/gaCM2snB9Iy0lqj92bmzb51WnJmbBT98IMrV69dv7FzM7x1+87de73dvVOjKk1xSBVX+iwFg5xJHFpmOZ6VGkGkHEfpfNDyowVqw5R8a1clTgTMJMsZBeug6a6/l5SgU3VexzEVTR0mJs9BML4iYSJxSZUQILM6GQyaOhFgCwq8HjTNNjsabdg0rUct6YaaOSuflTZMNMxmmGk2K2z4TlWEgiQGkdgCrPugRgLuKOlE+/L9UZ9IJZ9azRYMOJGVSN0F1tVLJAUsXKsiTrusLCaZsiZkkuRAO950461qp3JOVN5KGCSuREl0AollAg2RfeIW1uz8iaOMRci62qVqpr2D6DDqglxO4k1ycPxKPtj/9Ov3ybT3x21BK4HSUg7GjOOotJMatGWUo3OjMlgCncMMxy6V4PQndfd4DXnkkIzkSrsjLenQfztqEMasROoqW4PNRa4F/8eNK5u/mNRMti5JuhbKK9561/4JJGMaqXWeZwyoZm5XQgvQzkZn95ZKgXyBtiFbYCpao+KLtlxOTo8O4+gwfuMce+mtY8d76O17j73Ye+4de6+9E2/oUX/lf/A/+1+Cj8HX4FvwfV0a+Jue+95WBD//AjfYBQU=</latexit><latexit sha1_base64="YgH0WG6beG+mx9c1OFjwcF27oRI=">AAADIHicbVJNb9NAELXNVzFfaREnLqs2SBygsiskOKFK4cCxSKQpikM0Xo/jVfbD2l0njSz/FiQOCP4JN8QR/gaCM2snB9Iy0lqj92bmzb51WnJmbBT98IMrV69dv7FzM7x1+87de73dvVOjKk1xSBVX+iwFg5xJHFpmOZ6VGkGkHEfpfNDyowVqw5R8a1clTgTMJMsZBeug6a6/l5SgU3VexzEVTR0mJs9BML4iYSJxSZUQILM6GQyaOhFgCwq8HjTNNjsabdg0rUct6YaaOSuflTZMNMxmmGk2K2z4TlWEgiQGkdgCrPugRgLuKOlE+/L9UZ9IJZ9azRYMOJGVSN0F1tVLJAUsXKsiTrusLCaZsiZkkuRAO950461qp3JOVN5KGCSuREl0AollAg2RfeIW1uz8iaOMRci62qVqpr2D6DDqglxO4k1ycPxKPtj/9Ov3ybT3x21BK4HSUg7GjOOotJMatGWUo3OjMlgCncMMxy6V4PQndfd4DXnkkIzkSrsjLenQfztqEMasROoqW4PNRa4F/8eNK5u/mNRMti5JuhbKK9561/4JJGMaqXWeZwyoZm5XQgvQzkZn95ZKgXyBtiFbYCpao+KLtlxOTo8O4+gwfuMce+mtY8d76O17j73Ye+4de6+9E2/oUX/lf/A/+1+Cj8HX4FvwfV0a+Jue+95WBD//AjfYBQU=</latexit><latexit sha1_base64="h/8kE6GUS0+iby4eQEpTFKdIX3k=">AAADIHicbVJNj9MwEHXC1xK+usuRi0WLxAGqZIUEJ7RSLxwXiW4XNaWaOJPWWn9EttNuFeW3IHGCf8INcYQfwhkn7YHuMpKj0Xsz88bPyUrBrYvjX0F44+at23cO7kb37j94+Kh3eHRmdWUYjpkW2pxnYFFwhWPHncDz0iDITOAkuxi1/GSFxnKtPrhNiTMJC8ULzsB5aH4YHKUlmExf1knCZFNHqS0KkFxsaJQqXDMtJai8Tkejpk4luCUDUY+aZp+dTHZsltWTlvRD7QUvX5UuSg0sFpgbvli66KOuKANFLSJ1S3D+gwYp+KOVFx2oT8cDqrR66QxfcRBUVTLzF9hWr5EuYeVbNfXaZeUwzbWzEVe0ANbxthvvdDtVCKqLVsIi9SVaoRdIHZdoqRpQv7Dhly88ZR1C3tWudTPv9eNh3AW9niS7pE92cTrv/fFbsEqickyAtdMkLt2sBuM4E+jdqCyWwC5ggVOfKvD6s7p7vIY+80hOC238UY526L8dNUhrNzLzla3B9irXgv/jppUr3sxqrlqXFNsKFZVovWv/BJpzg8x5z3MOzHC/K2VLMN5Gb/eeyhLFCl1D98BMtkYlV225npwdD5N4mLyP+ydvd5YdkCfkKXlOEvKanJB35JSMCQs2wefga/At/BJ+D3+EP7elYbDreUz2Ivz9F7aIAU4=</latexit>

It is possible to do LU decomposition (with pivot) in which we end upwith a final matrix A(n) whose elements are those of L and U (insteadof zeros)

<latexit sha1_base64="5hT04tH3ERQdvmdybtDSsIDZiQI=">AAADHXicbVJNj9MwEHXC11I+tgtHLiM2SO2lShAScEGLegGJwyLR7UqbUhxn0lh17Mh22i1R/gkSJ/afcENcEX+EM07bA91lJEuj98bzRm8mKQU3Ngx/e/616zdu3tq73blz9979/e7BgxOjKs1wxJRQ+jShBgWXOLLcCjwtNdIiEThO5sOWHy9QG67kB7sqcVLQmeQZZ9Q6aHrg7ccl1Yk6r6OIFU3diU2W0YKLFXRiiUumioLKtI6Hw6aOC2pzRkU9bJpddjzesklSj1vSNTVzXj4rbSfWdDbDVPNZbjtvLXADpTKGuxHBKkgVBO9GAaToujmCt4NBb8ltDiVfKNsHLmGZc5bDEgFlClUJa5pCxiUV4IQ1P4fg9ce6J/tN4KqVcaUCC5TWANVOaQ2pzIkF4GaGwGn2uDQWadrin1Er02+m3cNwEK4DribRNjk8enmRfSKEHE+7f+JUsapVYoIacxaFpZ3UVFvOBDorKoMlZXM6wzOXSlqgmdTrzTXwxCEpZEq7Jy2s0X9/1LQwZlUkrrJ111zmWvB/3FllsxeTmsuysijZRiirRGt4ewaQco3Mui2nnDLtPGfAcqops+5YdlRyFAu0DeyASdEaFV225Wpy8nQQhYPovXPsFdnEHnlEHpMeichzckTekGMyIsxbeF+8b96F/9X/7v/wf25KfW/75yHZCf/XXwov/70=</latexit><latexit sha1_base64="cmUSm5kzmvDG4zOp8Y0k8O4F2/M=">AAADHXicbVJNb9NAELXNVwkfTeHIZUSNlFwqu0ICLqgoF5A4FIk0leIQrdfjeJX9sHbXSYPlf4LEif4Tbogr4o9wZp3kQFpGWmn03uy80ZtJS86MjaLffnDj5q3bd/budu7df/Bwv3vw6MyoSlMcUsWVPk+JQc4kDi2zHM9LjUSkHEfpfNDyowVqw5T8aFclTgSZSZYzSqyDpgf+flISnaqLOo6paOpOYvKcCMZX0EkkLqkSgsisTgaDpk4EsQUlvB40zS47Gm3ZNK1HLemamjkrn5e2k2gym2Gm2aywnXcWmIFSGcPciGAVZArC98MQMnTdHMHawaC3ZLaAki2U7QOTsCwYLWCJgDKDqoQ1TSBnknBwwppdQPjmU92T/SZ01cq4Uo4CpTVAtFNaQyp3YiG4mSF0mj0mjUWStfhn1Mr0m2n3MDqK1gHXk3ibHJ68uszbOJ12/ySZolWrRDkxZhxHpZ3URFtGOTorKoMloXMyw7FLJRFoJvV6cw08c0gGudLuSQtr9N8fNRHGrETqKlt3zVWuBf/HjSubv5zUTJaVRUk3QnnFW8PbM4CMaaTWbTljhGrnOQVaEE2odceyo1IgX6BtYAdMRWtUfNWW68nZ8VEcHcUfnGOvvU3seU+8p17Pi70X3on31jv1hh71F/4X/5t/GXwNvgc/gp+b0sDf/nns7UTw6y/W+gEE</latexit><latexit sha1_base64="cmUSm5kzmvDG4zOp8Y0k8O4F2/M=">AAADHXicbVJNb9NAELXNVwkfTeHIZUSNlFwqu0ICLqgoF5A4FIk0leIQrdfjeJX9sHbXSYPlf4LEif4Tbogr4o9wZp3kQFpGWmn03uy80ZtJS86MjaLffnDj5q3bd/budu7df/Bwv3vw6MyoSlMcUsWVPk+JQc4kDi2zHM9LjUSkHEfpfNDyowVqw5T8aFclTgSZSZYzSqyDpgf+flISnaqLOo6paOpOYvKcCMZX0EkkLqkSgsisTgaDpk4EsQUlvB40zS47Gm3ZNK1HLemamjkrn5e2k2gym2Gm2aywnXcWmIFSGcPciGAVZArC98MQMnTdHMHawaC3ZLaAki2U7QOTsCwYLWCJgDKDqoQ1TSBnknBwwppdQPjmU92T/SZ01cq4Uo4CpTVAtFNaQyp3YiG4mSF0mj0mjUWStfhn1Mr0m2n3MDqK1gHXk3ibHJ68uszbOJ12/ySZolWrRDkxZhxHpZ3URFtGOTorKoMloXMyw7FLJRFoJvV6cw08c0gGudLuSQtr9N8fNRHGrETqKlt3zVWuBf/HjSubv5zUTJaVRUk3QnnFW8PbM4CMaaTWbTljhGrnOQVaEE2odceyo1IgX6BtYAdMRWtUfNWW68nZ8VEcHcUfnGOvvU3seU+8p17Pi70X3on31jv1hh71F/4X/5t/GXwNvgc/gp+b0sDf/nns7UTw6y/W+gEE</latexit><latexit sha1_base64="krnjHrOCY5fe+yZ21juasxqY0mI=">AAADHXicbVJNixNBEJ0Zv9b4sVk9einMCMklzCyCnmQlFwUPK5jNQiaGnp6aTJP+GLp7ko3D/BPBk/4Tb+JV/COe7cnmYHYtaCjeq65XvKq05MzYKPrtBzdu3rp95+Bu5979Bw8Pu0ePzoyqNMUxVVzp85QY5Ezi2DLL8bzUSETKcZIuRy0/WaE2TMkPdlPiTJCFZDmjxDpofuQfJiXRqbqo45iKpu4kJs+JYHwDnUTimiohiMzqZDRq6kQQW1DC61HT7LOTyY5N03rSkq6pWbLyeWk7iSaLBWaaLQrbeWuBGSiVMcyNCFZBpiB8Nw4hQ9fNEawdDPprZgso2UrZATAJ64LRAtYIKDOoStjSBHImCQcnrNkFhK8/1n05aEJXrYwr5ShQWgNEO6UtpHInFoKbGUKn2WfSWCRZi39CrcygmXd70TDaBlxP4l3S83ZxOu/+STJFq1aJcmLMNI5KO6uJtoxydFZUBktCl2SBU5dKItDM6u3mGnjmkAxypd2TFrbovz9qIozZiNRVtu6aq1wL/o+bVjZ/OauZLCuLkl4K5RVvDW/PADKmkVq35YwRqp3nFGhBNKHWHcueSoF8hbaBPTAVrVHxVVuuJ2fHwzgaxu+j3smrnWUH3hPvqdf3Yu+Fd+K98U69sUf9lf/Z/+p/C74E34Mfwc/L0sDf/Xns7UXw6y82uf3Y</latexit>

If you really care about speed and memory usage, this is a good idea.But always remember: if you just want something that works, thesimplest method can still be best. . .

<latexit sha1_base64="5hGup8A5jdDdXtoLtBA9knUJpjk=">AAADKnicbVI9b9RAEF2br3B8JVBCMSJCokCnc4QEokAR10AXJJKLFJ+i8XrsW27Xa+2uE06WKwr4K0hU8Af4DXQRLb+BmnEuBZcwWkuj9+a9Gc9uVmvlw2h0EsWXLl+5em3t+uDGzVu376xv3N3ztnGSdqXV1u1n6EmrinaDCpr2a0doMk2TbD7u+ckROa9s9S4sapoaLCtVKImBocON6EFao8vshzZJpOnaQeqLAo3SCxikFR1LawxWeZuOx12bGgwzibodd90qO5mcsVnWTnqSTf1c1U/rMEgdliXlTpWzMHhTwMI2wCNqbiHREWBmmwC+JsqBzcCQsW4BjceSnkCYKQ98EEprc1A54RDgFStQH+PCsxULMnIvQC293zc+wDFW7GkNsb4q2QUZs27ue0cCr0ytiev6AraVWIEPSmvIiI8PaW6D7w7XN0fD0WnAxSQ5Sza3x58//RBC7Byu/2GhbAxVQWr0/iAZ1WHaogtKauK9NJ5qlHP+tQNOKzTkp+3pNXbwiJEcCuv44+lP0X8VLRrvFybjyn7V/jzXg//jDppQPJ+2qqqbQJVcNioaDcFC/yYgV45k4PvIFUqneFaQM3QoA7+clS4z0kcUOlgBM9MvKjm/lovJ3tYwGQ2Tt7yxl2IZa+K+eCgei0Q8E9vitdgRu0JGH6Mv0bfoe/w1/hmfxL+WpXF0prknViL+/RewswjE</latexit><latexit sha1_base64="+l3JZRzbZFIuaAlti9UY4Cd87I0=">AAADKnicbVI9b9RAEF2br3B8JVBCMSJCokCnM0ICUaCIa6ALEslFik/ReD32LbfrtXbXCSfLFQX8FSQq+AOIn0AX0fIDqKgZ51JwgdFaGr037814drNaKx9Go+MoPnf+wsVLa5cHV65eu35jfePmrreNk7QjrbZuL0NPWlW0E1TQtFc7QpNpmmTzcc9PDsl5ZavXYVHT1GBZqUJJDAwdbER30hpdZt+2SSJN1w5SXxRolF7AIK3oSFpjsMrbdDzu2tRgmEnU7bjrVtnJ5JTNsnbSk2zq56p+VIdB6rAsKXeqnIXBywIWtgEeUXMLiY4AM9sE8DVRDmwGhox1C2g8lvQAwkx54INQWpuDygmHAM9ZgfoIF56tWJCRewpq6f2m8QGOsGJPa4j1VckuyJh1c987Enhlak1c1xewrcQKfFBaQ0Z8fEhzG3x3sL45Go5OAv5NktNkc2v84f038fXX9sH6bxbKxlAVpEbv95NRHaYtuqCkJt5L46lGOedf2+e0QkN+2p5cYwf3GMmhsI4/nv4E/VvRovF+YTKu7Fftz3I9+D9uvwnFk2mrqroJVMllo6LRECz0bwJy5UgGvo9coXSKZwU5Q4cy8MtZ6TIjfUihgxUwM/2ikrNr+TfZfThMRsPkFW/smVjGmrgt7or7IhGPxZZ4IbbFjpDRu+hj9Dn6En+Kv8fH8Y9laRydam6JlYh//gEwyAp2</latexit><latexit sha1_base64="+l3JZRzbZFIuaAlti9UY4Cd87I0=">AAADKnicbVI9b9RAEF2br3B8JVBCMSJCokCnM0ICUaCIa6ALEslFik/ReD32LbfrtXbXCSfLFQX8FSQq+AOIn0AX0fIDqKgZ51JwgdFaGr037814drNaKx9Go+MoPnf+wsVLa5cHV65eu35jfePmrreNk7QjrbZuL0NPWlW0E1TQtFc7QpNpmmTzcc9PDsl5ZavXYVHT1GBZqUJJDAwdbER30hpdZt+2SSJN1w5SXxRolF7AIK3oSFpjsMrbdDzu2tRgmEnU7bjrVtnJ5JTNsnbSk2zq56p+VIdB6rAsKXeqnIXBywIWtgEeUXMLiY4AM9sE8DVRDmwGhox1C2g8lvQAwkx54INQWpuDygmHAM9ZgfoIF56tWJCRewpq6f2m8QGOsGJPa4j1VckuyJh1c987Enhlak1c1xewrcQKfFBaQ0Z8fEhzG3x3sL45Go5OAv5NktNkc2v84f038fXX9sH6bxbKxlAVpEbv95NRHaYtuqCkJt5L46lGOedf2+e0QkN+2p5cYwf3GMmhsI4/nv4E/VvRovF+YTKu7Fftz3I9+D9uvwnFk2mrqroJVMllo6LRECz0bwJy5UgGvo9coXSKZwU5Q4cy8MtZ6TIjfUihgxUwM/2ikrNr+TfZfThMRsPkFW/smVjGmrgt7or7IhGPxZZ4IbbFjpDRu+hj9Dn6En+Kv8fH8Y9laRydam6JlYh//gEwyAp2</latexit><latexit sha1_base64="sWHtSw4UQfz5eb6SU0v3vQji1FM=">AAADKnicbVJNb9NAELXNVwlfKRzhMKJC4oAiGyGBOKCKXOBWJNpUiqNovB47S3a91u66JbJ84tcgcYJ/wq3iym/gzDjNgbSM1tLovXlvxrOb1Uo6H8dnYXTl6rXrN3ZuDm7dvnP33nD3/pEzjRV0KIwy9jhDR0pWdOilV3RcW0KdKZpky3HPT07IOmmqj35V00xjWclCCvQMzXfDR2mNNjOf2yQRumsHqSsK1FKtYJBWdCqM1ljlbToed22q0S8EqnbcddvsZLJhs6yd9CSbuqWsX9R+kFosS8qtLBd+8L6AlWmAR1TcQqAlwMw0HlxNlAObgSZt7AoahyU9A7+QDvgglMbkIHPCEcBbVqA6xZVjKxZkZF+DPPf+1DgPp1ixp9HE+qpkF2TM2KXrHQmc1LUirusL2FZgBc5LpSAjPs6nufGumw/34lG8DricJJtkL9jEwXz4h4Wi0VR5odC5aRLXftai9VIo4r00jmoUS/61KacVanKzdn2NHTxhJIfCWP54+jX6r6JF7dxKZ1zZr9pd5Hrwf9y08cWrWSuruvFUifNGRaPAG+jfBOTSkvB8H7lEYSXPCmKBFoXnl7PVZUHqhHwHW2Cm+0UlF9dyOTl6PkriUfIh3tt/s1nZTvAweBw8DZLgZbAfvAsOgsNAhF/Cr+H38Ef0LfoZnUW/zkujcKN5EGxF9PsvO24Gcg==</latexit>

18

Memory -- one last thing

MATLAB is very good at dealing with vectors, which we can use tomake lists

<latexit sha1_base64="Fyrq8CQTqqJiaiDpjnY3DITGrLc=">AAACx3icbVFNixNBEO0Zv9b4sVk9eilcBA8SZkTRk2QNiIJihM1mIRNCTU/PTJP+GLp7kg3DHPxb/hP/iGd7khzMrgUNj/equqpepZXg1kXR7yC8dfvO3XtH93sPHj56fNw/eXJhdW0om1AttLlM0TLBFZs47gS7rAxDmQo2TZejTp+umLFcq3O3qdhcYqF4zik6Ty36v5IKTaqvmjimsm16ic1zlFxsoJcotqZaSlRZk4xGbZNIdCVF0Yza9lCdTvdqmjbTTvSf2iWv3lSulxgsCpYZXpSu9+3s/OvZR+AW/FAbKLTOAB1kDP0CBay5K71CnTb2FaxLTktYM6CooLYMnAaJSwadL7Zd9E+jQbQNuAniPTgdvj05HhJCxov+nyTTtJZMOSrQ2lkcVW7eoHGcCuan9j0qpEss2MxDhZLZebP1uIUXnskg18Y/5WDL/lvRoLR2I1Of2Rlhr2sd+T9tVrv8/bzhqqodU3TXKK9Ft2x3MMi48Yb4g2QcqeF+VqAlGqTOn/WgS8nEirkWDshUdkbF1225CS5eD+JoEP/wjn0guzgiz8hz8pLE5B0Zks9kTCaEBhB8Cr4H4/BLqMNVeLVLDYN9zVNyEOHPv+7W4Dg=</latexit><latexit sha1_base64="9fw+r8f2fTbfgZnN2NYPFVks9Hg=">AAACx3icbVHbihNBEO0Zb2u8bFYffSlcBB8kzIiiT5I1IAqKETabhUwINT09M036MnT3bDYM8+C3+Bf+iR/gL/hsT5IHs2tBw+Gcqq6qU2kluHVR9CsIb9y8dfvOwd3evfsPHh72jx6dWV0byiZUC23OU7RMcMUmjjvBzivDUKaCTdPlqNOnF8xYrtWpW1dsLrFQPOcUnacW/Z9JhSbVl00cU9k2vcTmOUou1tBLFFtRLSWqrElGo7ZJJLqSomhGbbuvTqc7NU2baSf6T+2SV68q10sMFgXLDC9K1/tycvr55D1wC36oNRRaZ4AOMoZ+gQJW3JVeoU4b+wJWJaclrBhQVFBbBk6DxCWDzhfbLvrH0SDaBFwH8Q4cD18fHQ5//5iPF/0/SaZpLZlyVKC1sziq3LxB4zgVzE/te1RIl1iwmYcKJbPzZuNxC888k0GujX/KwYb9t6JBae1apj6zM8Je1Tryf9qsdvnbecNVVTum6LZRXotu2e5gkHHjDfEHyThSw/2sQEs0SJ0/616XkokL5lrYI1PZGRVfteU6OHs5iKNB/M079o5s44A8IU/JcxKTN2RIPpIxmRAaQPAh+BqMw0+hDi/Cy21qGOxqHpO9CL//Bbut4h0=</latexit><latexit sha1_base64="9fw+r8f2fTbfgZnN2NYPFVks9Hg=">AAACx3icbVHbihNBEO0Zb2u8bFYffSlcBB8kzIiiT5I1IAqKETabhUwINT09M036MnT3bDYM8+C3+Bf+iR/gL/hsT5IHs2tBw+Gcqq6qU2kluHVR9CsIb9y8dfvOwd3evfsPHh72jx6dWV0byiZUC23OU7RMcMUmjjvBzivDUKaCTdPlqNOnF8xYrtWpW1dsLrFQPOcUnacW/Z9JhSbVl00cU9k2vcTmOUou1tBLFFtRLSWqrElGo7ZJJLqSomhGbbuvTqc7NU2baSf6T+2SV68q10sMFgXLDC9K1/tycvr55D1wC36oNRRaZ4AOMoZ+gQJW3JVeoU4b+wJWJaclrBhQVFBbBk6DxCWDzhfbLvrH0SDaBFwH8Q4cD18fHQ5//5iPF/0/SaZpLZlyVKC1sziq3LxB4zgVzE/te1RIl1iwmYcKJbPzZuNxC888k0GujX/KwYb9t6JBae1apj6zM8Je1Tryf9qsdvnbecNVVTum6LZRXotu2e5gkHHjDfEHyThSw/2sQEs0SJ0/616XkokL5lrYI1PZGRVfteU6OHs5iKNB/M079o5s44A8IU/JcxKTN2RIPpIxmRAaQPAh+BqMw0+hDi/Cy21qGOxqHpO9CL//Bbut4h0=</latexit><latexit sha1_base64="oMz/Wl40vpF7AN2PcID0T15fnAM=">AAACx3icbVFNixNBEO0Zv9b4FfXopTAIHiTMyIKeZNeAKChG2GwWMiHU9PTMNOmPobsn2TDMwb/lP/GPeLYnOweza0HD472qrqpXaSW4dVH0Owhv3b5z997R/cGDh48ePxk+fXZudW0om1EttLlI0TLBFZs57gS7qAxDmQo2T9eTTp9vmLFcqzO3q9hSYqF4zik6T62Gv5IKTaovmzimsm0Gic1zlFzsYJAotqVaSlRZk0wmbZNIdCVF0Uza9lCdz3s1TZt5J/pP7ZpXx5UbJAaLgmWGF6UbfDs9+3r6EbgFP9QOCq0zQAcZQ79AAVvuSq9Qp419A9uS0xK2DCgqqC0Dp0HimkHni21Xw1E0jvYBN0HcgxHpY7oa/kkyTWvJlKMCrV3EUeWWDRrHqWB+at+jQrrGgi08VCiZXTZ7j1t45ZkMcm38Uw727L8VDUprdzL1mZ0R9rrWkf/TFrXL3y8brqraMUWvGuW16JbtDgYZN94Qf5CMIzXczwq0RIPU+bMedCmZ2DDXwgGZys6o+LotN8H523EcjeMf0ejkQ2/ZEXlBXpLXJCbvyAn5TKZkRmgAwafgezANv4Q63ISXV6lh0Nc8JwcR/vwLsMvfYw==</latexit>

However, dealing with very large lists (millions or billions of entries) can

be slow<latexit sha1_base64="QV9BI9lqhKctDn4FUgtHqYhBdyo=">AAAC0HicbVHLbtNAFB2bVwmvAEs2V1RIrYQiuwLBClXKpjsKIk1RHIWZ8bUzyjysmXHTyLIQW36Lr+AH+ATWjJMIkZa7Ojrn3rlnzmWVFM4nyc8ovnHz1u07e3d79+4/ePio//jJmTO15TjiRhp7zqhDKTSOvPASzyuLVDGJY7YYdvr4Aq0TRn/yqwqnipZaFIJTH6hZ/0dWUcvMZZOmXLVNL3NFQZWQK+hlGpfcKEV13mTDYdtkivo5p7IZtu2uOh5vVcaacSeGR91CVK8q38ssLUvMrSjnvndilhjsvIQcabBcwlL4OQRmBZLaEqH7soOD4EAGfw6MBfYXF4DaW4HuEDjVwBCcNMt21t9PBsm64DpIt2D/+PWv4gsh5HTW/53lhtcqvMYldW6SJpWfNtR6wSUG+7XDivIFLXESoKYK3bRZh93Ci8DkUARjhdEe1uy/Ew1Vzq0UC51dIu6q1pH/0ya1L95OG6Gr2qPmm0VFLcEb6C4HubDIfbhMLii3IngFPqeWch/uu7NljvICfQs7JFNdUOnVWK6Ds6NBmgzSDyGxd2RTe+QZeU4OSErekGNyQk7JiPDoMHofnUef44/xZfw1/rZpjaPtzFOyU/H3PySJ5is=</latexit><latexit sha1_base64="xi3UyENu1E090SD1KJ3lkbhRnuI=">AAAC0HicbVHLihNBFK1uX2N8RV26uTgIMyChWxRdyUA2s3MUM4mkQ6iqvt0pUo+mqnoyoWnErb/lV/gDfoJrq5MgZsa7Opxzb91T57JKCueT5GcU37h56/adg7u9e/cfPHzUf/zk3JnachxxI42dMOpQCo0jL7zESWWRKiZxzJbDTh9foHXC6M9+XeFM0VKLQnDqAzXv/8gqapm5bNKUq7bpZa4oqBJyDb1M44obpajOm2w4bJtMUb/gVDbDtt1Xx+Odylgz7sTwqFuK6nXle5mlZYm5FeXC907NCoOdl5AjDZZLWAm/gMCsQVJbInRfdnAUHMjgz4GxwP7iAlB7K9AdA6caGIKTZtXO+4fJINkUXAfpDhyevPlVdHU27//OcsNrFV7jkjo3TZPKzxpqveASg/3aYUX5kpY4DVBThW7WbMJu4UVgciiCscJoDxv234mGKufWioXOLhF3VevI/2nT2hfvZo3QVe1R8+2iopbgDXSXg1xY5D5cJheUWxG8Al9QS7kP993bskB5gb6FPZKpLqj0aizXwfmrQZoM0o8hsfdkWwfkGXlOjkhK3pITckrOyIjw6Dj6EE2iL/Gn+DL+Gn/btsbRbuYp2av4+x/xVOdj</latexit><latexit sha1_base64="xi3UyENu1E090SD1KJ3lkbhRnuI=">AAAC0HicbVHLihNBFK1uX2N8RV26uTgIMyChWxRdyUA2s3MUM4mkQ6iqvt0pUo+mqnoyoWnErb/lV/gDfoJrq5MgZsa7Opxzb91T57JKCueT5GcU37h56/adg7u9e/cfPHzUf/zk3JnachxxI42dMOpQCo0jL7zESWWRKiZxzJbDTh9foHXC6M9+XeFM0VKLQnDqAzXv/8gqapm5bNKUq7bpZa4oqBJyDb1M44obpajOm2w4bJtMUb/gVDbDtt1Xx+Odylgz7sTwqFuK6nXle5mlZYm5FeXC907NCoOdl5AjDZZLWAm/gMCsQVJbInRfdnAUHMjgz4GxwP7iAlB7K9AdA6caGIKTZtXO+4fJINkUXAfpDhyevPlVdHU27//OcsNrFV7jkjo3TZPKzxpqveASg/3aYUX5kpY4DVBThW7WbMJu4UVgciiCscJoDxv234mGKufWioXOLhF3VevI/2nT2hfvZo3QVe1R8+2iopbgDXSXg1xY5D5cJheUWxG8Al9QS7kP993bskB5gb6FPZKpLqj0aizXwfmrQZoM0o8hsfdkWwfkGXlOjkhK3pITckrOyIjw6Dj6EE2iL/Gn+DL+Gn/btsbRbuYp2av4+x/xVOdj</latexit><latexit sha1_base64="PzqSqotOiReB58DZt+czd62u1Gs=">AAAC0HicbVFNb9NAEF2brxK+UjhyGREhtRKKbIQEp6pSLr1REGmC4ijaXY+dVfbD2l03jSwLceVv8Sv4I5xZpxEiLXN6em9m5+0bVknhfJL8iuI7d+/df3DwsPfo8ZOnz/qHzy+cqS3HMTfS2CmjDqXQOPbCS5xWFqliEidsNer0ySVaJ4z+4jcVzhUttSgEpz5Qi/7PrKKWmasmTblqm17mioIqITfQyzSuuVGK6rzJRqO2yRT1S05lM2rbfXUy2amMNZNODI+6lajeVb6XWVqWmFtRLn3vzKwx2HkDOdJguYS18EsIzAYktSVC92UHR8GBDP4cGAvsLy4AtbcC3TFwqoEhOGnW7aI/SIbJtuA2SHdgQHZ1vuj/znLDaxVe45I6N0uTys8bar3gEoP92mFF+YqWOAtQU4Vu3mzDbuF1YHIogrHCaA9b9t+JhirnNoqFzi4Rd1PryP9ps9oXH+aN0FXtUfPrRUUtwRvoLge5sMh9uEwuKLcieAW+pJZyH+67t2WJ8hJ9C3skU11Q6c1YboOLt8M0GaafksHpyS6yA/KSvCJHJCXvySk5I+dkTHh0HH2MptHX+HN8FX+Lv1+3xtFu5gXZq/jHH/eA5Ao=</latexit>

It’s good to ask: do I really need to store every element in the list?<latexit sha1_base64="3Ee6fs947tbrA90T6EA2Az0uDvs=">AAACwnicbVHLbtNAFB2bVzGvAAsW3YyoEKwiGyGBWEBRWFDYFInUleIouh5f20PmYWbGhcj4s/gYfqJL1oyTLEjLlUY6Ouc+js7kjeDWxfHvILxy9dr1G3s3o1u379y9N7r/4MTq1jCcMi20Oc3BouAKp447gaeNQZC5wDRfTgY9PUNjuVZf3KrBuYRK8ZIzcJ5ajH5lDZhc/+iShMm+izJbliC5WNEoU/idaSlBFV02mfRdJsHVDEQ36ftdNU23ap536SD6pXbJmxeNizIDVYWF4VXtoiP31NJK64I6TcEuX9NC0yPqHQt/UiGuBeu0QYre94qiQInKUa6oq5EOkbztF6ODeByvi14GyRYcHD46P6eEkOPF6E9WaNYOm5gAa2dJ3Lh5B8ZxJtAbbi02wJZQ4cxDBRLtvFvH29MnniloqY1/3sma/XeiA2ntSua+c8jAXtQG8n/arHXlq3nHVdM6VGxzqGzFEMHwV7TgBpnzwRQcmOHeK2U1GGDO/+jOlRrFGbqe7pC5HIJKLsZyGZw8HyfxOPnsE3tDNrVH9slj8owk5CU5JB/IMZkSFuwH74KPwafwffg1/BbaTWsYbGcekp0Kf/4F/VLfqA==</latexit><latexit sha1_base64="kDqWefHR778od2zTxm0FVaVOXaY=">AAACwnicbVHLbtNAFB2bVzGPBliw6GZEhWAV2QgJhBAUhQWFTZFIUymOovH42h4yDzNzXYiMvwrxMXwA2y5ZM06yIC1XGunonPs4OpPVUjiM419BeOnylavXdq5HN27eur07uHP32JnGchhzI409yZgDKTSMUaCEk9oCU5mESbYY9frkFKwTRn/CZQ0zxUotCsEZemo++JnWzGbmW5skXHVtlLqiYErIJY1SDV+5UYrpvE1Ho65NFcOKM9mOum5bnUw2apa1k170S91C1E9rjFLLyhJyK8oKo0N85GhpTE7RUOYWL2hu6CH1jqU/qQFWgkNjgYL3vaQgQYFGKjTFCmgfyetuPtiPh/Gq6EWQbMD+wf2zs92XP34fzQd/0tzwpt/EJXNumsQ1zlpmUXAJ3nDjoGZ8wUqYeqiZAjdrV/F29KFncloY6593smL/nWiZcm6pMt/ZZ+DOaz35P23aYPF81gpdNwiarw8Vjewj6P+K5sICRx9MLhi3wnulvGKWcfQ/unWlAnkK2NEtMlN9UMn5WC6C4yfDJB4mH31ir8i6dsgeeUAek4Q8IwfkHTkiY8KDveBN8D74EL4NP4dfQrduDYPNzD2yVeH3v5ai4Ws=</latexit><latexit sha1_base64="kDqWefHR778od2zTxm0FVaVOXaY=">AAACwnicbVHLbtNAFB2bVzGPBliw6GZEhWAV2QgJhBAUhQWFTZFIUymOovH42h4yDzNzXYiMvwrxMXwA2y5ZM06yIC1XGunonPs4OpPVUjiM419BeOnylavXdq5HN27eur07uHP32JnGchhzI409yZgDKTSMUaCEk9oCU5mESbYY9frkFKwTRn/CZQ0zxUotCsEZemo++JnWzGbmW5skXHVtlLqiYErIJY1SDV+5UYrpvE1Ho65NFcOKM9mOum5bnUw2apa1k170S91C1E9rjFLLyhJyK8oKo0N85GhpTE7RUOYWL2hu6CH1jqU/qQFWgkNjgYL3vaQgQYFGKjTFCmgfyetuPtiPh/Gq6EWQbMD+wf2zs92XP34fzQd/0tzwpt/EJXNumsQ1zlpmUXAJ3nDjoGZ8wUqYeqiZAjdrV/F29KFncloY6593smL/nWiZcm6pMt/ZZ+DOaz35P23aYPF81gpdNwiarw8Vjewj6P+K5sICRx9MLhi3wnulvGKWcfQ/unWlAnkK2NEtMlN9UMn5WC6C4yfDJB4mH31ir8i6dsgeeUAek4Q8IwfkHTkiY8KDveBN8D74EL4NP4dfQrduDYPNzD2yVeH3v5ai4Ws=</latexit><latexit sha1_base64="9Uzo1lLP5O07zRZlkPpIxJ0STmY=">AAACwnicbVHLbtNAFB2bR4t5BVh2MyJCsIpsVAnUBRSFBYVNkUhdKY6i8fjaHjIPM3NdiIw/i4/hR1gzTrMgLVca6eic+zg6kzdSOIzj30F44+at23v7d6K79+4/eDh69PjMmdZymHEjjT3PmQMpNMxQoITzxgJTuYQ0X00HPb0A64TRX3DdwEKxSotScIaeWo5+ZQ2zufnRJQlXfRdlriyZEnJNo0zDd26UYrrosum07zLFsOZMdtO+31XTdKvmeZcOol/qVqI5bDDKLKsqKKyoaoxO8LmjlTEFRUOZWx3RwtAT6h1Lf1IDbASHxgIF73tNQYICjVRoijXQIZK3/XI0jifxpuh1kGzBmGzrdDn6kxWGt8MmLplz8yRucNExi4JL8IZbBw3jK1bB3EPNFLhFt4m3p888U9DSWP+8kw3770THlHNrlfvOIQN3VRvI/2nzFsvXi07opkXQ/PJQ2cohguGvaCEscPTBFIJxK7xXymtmGUf/oztXapAXgD3dIXM1BJVcjeU6OHs5SeJJ8jkeH7/ZRrZPDshT8oIk5BU5Jh/IKZkRHhwE74KPwafwffg1/Ba6y9Yw2M48ITsV/vwLheLdVQ==</latexit>

Eg, for ODE solving, we computed and stored the whole sequence of

yn. But if the step h is small then for any practical purpose (eg plotting

a graph), we can just as well store every 10th point, or every 100th<latexit sha1_base64="jzBGcfwBzlvDH04ef/Z/nW8Z7Qo=">AAADWHicbVLNbtQwEHa6QNvlry1HLiO6SEWqVglCghOqWCohLhSJdittVivHmSRuHdvYTpdVlDPPwxvwFghO8BKccbIVYlvmNP6+8fx8M4kW3Low/B6s9W7cvLW+sdm/fefuvftb2zsnVlWG4TFTQpnThFoUXOKx407gqTZIy0TgODkftfz4Ao3lSn5wC43TkuaSZ5xR56HZdvA21tQk6lMdRaxs6n5ss4yWXCygH0ucM1WWVKZ1PBo1dVxSVzAq6lHTrLLj8SWbJPW4JX1Se871M+36saF5jqnheeH6h/k+ZMrAu9eHYJW44NIDcwSfSVcOU/DpwDplvOsKhHmhBILFjxVKhqAyGCxmcjAEeFU54FkXZB1qGBQD4BZsSYVoUdnVoXIB2lDm/MQCdGW0sgh7mIMWyjlfHijkhuriybIPKuGssg6o9U+fqesF0Gu4gEEUDlwBWnHp9sFn/wu3eDPb2g2HYWdw3Ykund2Dw+LzV0LI0Wzrd5wqVpUoHRPU2kkUajetqfHdCvQqVhY1Zec0x4l3JS3RTutu6Q089kjazZgp6aBD//1R09LaRZn4yHYx9irXgv/jJpXLXkxrLtt9SLYslFVeUwXtBUHKDTLnDyTllBnuewVW0FZjf2crVQoUF+gaWAGTshUquirLdefk6TAKh9F7r9hLsrQN8pA8InskIs/JAXlDjsgxYcGX4FvwM/i19qNHeuu9zWXoWnD55wFZsd7OH/rdEow=</latexit><latexit sha1_base64="pRxlyH6RlT8BkMriIz/oJVwVdvs=">AAADWHicbVLNbtQwEHa6QNvlry1HLiO6SEWqVglCghOqWCohLhSJdis1q5XjTBJ3HdvYTssqypnn4Q0QL4HgBG/AiTNOtkJsy5zG3zeen28m0YJbF4bfgpXetes3VtfW+zdv3b5zd2Nz68iqyjA8ZEooc5xQi4JLPHTcCTzWBmmZCBwns1HLj8/QWK7kOzfXOClpLnnGGXUemm4Gr2NNTaI+1FHEyqbuxzbLaMnFHPqxxHOmypLKtI5Ho6aOS+oKRkU9appldjy+YJOkHrekT2pnXD/Rrh8bmueYGp4Xrr+f70KmDLx5uQ9WiTMuPXCO4DPpymEKPh1Yp4x3XYFwXiiBYPF9hZIhqAwG86kcDAFeVA541gVZhxoGxQC4BVtSIVpUdnWonIM2lDk/sQBdGa0swg7moIVyzpcHCrmhuni06INKOK2sA2r902fqegH0Gs5hEIUDV4BWXLpd8Nn/wi3eTDe2w2HYGVx1ogtne2+/+PiFfP51MN34HaeKVSVKxwS19iQKtZvU1PhuBXoVK4uashnN8cS7kpZoJ3W39AYeeiTtZsyUdNCh//6oaWntvEx8ZLsYe5lrwf9xJ5XLnk1qLtt9SLYolFVeUwXtBUHKDTLnDyTllBnuewVW0FZjf2dLVQoUZ+gaWAKTshUquizLVefo8TAKh9Fbr9hzsrA1cp88IDskIk/JHnlFDsghYcGn4GvwI/i58r1Hequ99UXoSnDx5x5Zst7WH3ryFD4=</latexit><latexit sha1_base64="pRxlyH6RlT8BkMriIz/oJVwVdvs=">AAADWHicbVLNbtQwEHa6QNvlry1HLiO6SEWqVglCghOqWCohLhSJdis1q5XjTBJ3HdvYTssqypnn4Q0QL4HgBG/AiTNOtkJsy5zG3zeen28m0YJbF4bfgpXetes3VtfW+zdv3b5zd2Nz68iqyjA8ZEooc5xQi4JLPHTcCTzWBmmZCBwns1HLj8/QWK7kOzfXOClpLnnGGXUemm4Gr2NNTaI+1FHEyqbuxzbLaMnFHPqxxHOmypLKtI5Ho6aOS+oKRkU9appldjy+YJOkHrekT2pnXD/Rrh8bmueYGp4Xrr+f70KmDLx5uQ9WiTMuPXCO4DPpymEKPh1Yp4x3XYFwXiiBYPF9hZIhqAwG86kcDAFeVA541gVZhxoGxQC4BVtSIVpUdnWonIM2lDk/sQBdGa0swg7moIVyzpcHCrmhuni06INKOK2sA2r902fqegH0Gs5hEIUDV4BWXLpd8Nn/wi3eTDe2w2HYGVx1ogtne2+/+PiFfP51MN34HaeKVSVKxwS19iQKtZvU1PhuBXoVK4uashnN8cS7kpZoJ3W39AYeeiTtZsyUdNCh//6oaWntvEx8ZLsYe5lrwf9xJ5XLnk1qLtt9SLYolFVeUwXtBUHKDTLnDyTllBnuewVW0FZjf2dLVQoUZ+gaWAKTshUquizLVefo8TAKh9Fbr9hzsrA1cp88IDskIk/JHnlFDsghYcGn4GvwI/i58r1Hequ99UXoSnDx5x5Zst7WH3ryFD4=</latexit><latexit sha1_base64="dOfN0Pi74pVw+9yRbENp9lO1YOE=">AAADWHicbVJLaxRBEO7JqknWVxKPXgqzQgRZZkTQkwTXgHgxgskGMsvS01Mz06ZfdvckLsP8KH+N6En/hGd7Jou4iXWq/r7qenxVmRHc+Tj+Hq0Nbty8tb6xObx95+69+1vbO8dO15bhEdNC25OMOhRc4ZHnXuCJsUhlJnCanU06fnqO1nGtPvqFwZmkpeIFZ9QHaL4dvUsNtZn+0iQJk20zTF1RUMnFAoapwgumpaQqb9LJpG1SSX3FqGgmbbvKTqdLNsuaaUeGpO6Mm+fGD1NLyxJzy8vKDw/Kp1BoC+/fHIDT4pyrAFwghEym9phDSAfOaxtcXyFcVFogOPxco2IIuoDRYq5GY4DXtQde9EHOo4FRNQLuwEkqRIeqvg5VCzCWMh8mFmBqa7RD2MMSjNDeh/JAobTUVE8u+6AKPtXOA3XhGTL1vQAGDRcwSuKRr8BorvxTCNn/wh3ezrd243HcG1x3kqWzS5Z2ON/6neaa1RKVZ4I6d5rExs8aakO3AoOKtUND2Rkt8TS4ikp0s6ZfeguPA5L3MxZaeejRf380VDq3kFmI7BbjrnId+D/utPbFy1nDVbcPxS4LFXXQVEN3QZBzi8yHA8k5ZZaHXoFVtNM43NlKlQrFOfoWVsBMdkIlV2W57hw/GyfxOPkQ7+6/Wkq2QR6SR2SPJOQF2SdvySE5Iiz6Gn2Lfka/1n4MyGB9sHkZuhYt/zwgKzbY+QOyWhBY</latexit>

If you keep this in mind, it will help to avoid “bad programming habits”<latexit sha1_base64="htkaquJ82AHn6c7+QapVVrMKsqQ=">AAACxnicbVHLihNBFK1uX2P7irpw4cLCQcaFhG4RdCUDQRg3OoKZDKRD5lZ1dXeRelFVnRiaBn/LT/EnZuna6iQLM+OBgsM599a9nEuM4M6n6e8ovnHz1u07B3eTe/cfPHw0ePzkzOnGUjamWmh7TsAxwRUbe+4FOzeWgSSCTchi1PuTJbOOa/Xdrw2bSagULzkFH6T54FduwBL9o80yKrs2yV1ZguRijZNcsRXVUoIq2nw06tpcgq8piHbUdfvuZLJzCWknvRk+dQtu3hmf5BaqihWWV7VPPpd4rRu8YMxgX3OHucKSq+IN5h6vuBC4ZiJYGsNS8wJfXBAosLG6siBDYYVrINy7o6NuPjhMh+kG+DrJduTw+NnlJUYInc4Hf/JC00Yy5akA56ZZavysBes5FSws3ThmgC6gYtNAFUjmZu0m4g6/CkqBS23DUx5v1H87WpDOrSUJlX0O7qrXi//zpo0vP8xarkzjmaLbQWUj+gj6e+GCW0Z9uEfBgVoedsW0BgvUh6vuTQnJLZnv8J5IZB9UdjWW6+Ts7TBLh9m3kNhHtMUBeo5eotcoQ+/RMTpBp2iMaPQi+hR9ib7GJ7GKm3i1LY2jXc9TtIf45192++F2</latexit><latexit sha1_base64="PRomsMc2oEHI7lVPQPzPSeAhCow=">AAACxnicbVHLihNBFK1uX2N8TNSFCxcWDjIuJHSLoAuRgSCMGx3BTAbSIXOrurq7SL2oqk4MTYP/5MpP8QPcztK11UkWZsYDBYdz7q17OZcYwZ1Pkl9RfO36jZu39m737ty9d3+//+DhqdO1pWxEtdD2jIBjgis28twLdmYsA0kEG5P5sPPHC2Yd1+qrXxk2lVAqXnAKPkiz/s/MgCX6W5OmVLZNL3NFAZKLFe5lii2plhJU3mTDYdtkEnxFQTTDtt11x+OtS0gz7szwqZtz89r4XmahLFlueVn53scCr3SN54wZ7CvuMFdYcpW/xNzjJRcCV0wES2NYaJ7j83MCOTZWlxZkKCxxBYR7d3jYzvoHySBZA18l6ZYcHD2+uNh/9+P3yaz/J8s1rSVTngpwbpImxk8bsJ5TwcLStWMG6BxKNglUgWRu2qwjbvHzoOS40DY85fFa/bejAencSpJQ2eXgLnud+D9vUvvi7bThytSeKboZVNSii6C7F865ZdSHe+QcqOVhV0wrsEB9uOrOlJDcgvkW74hEdkGll2O5Sk5fDdJkkH4Jib1HG+yhJ+gZeoFS9AYdoWN0gkaIRk+jD9Gn6HN8HKu4jpeb0jja9jxCO4i//wUQS+M5</latexit><latexit sha1_base64="PRomsMc2oEHI7lVPQPzPSeAhCow=">AAACxnicbVHLihNBFK1uX2N8TNSFCxcWDjIuJHSLoAuRgSCMGx3BTAbSIXOrurq7SL2oqk4MTYP/5MpP8QPcztK11UkWZsYDBYdz7q17OZcYwZ1Pkl9RfO36jZu39m737ty9d3+//+DhqdO1pWxEtdD2jIBjgis28twLdmYsA0kEG5P5sPPHC2Yd1+qrXxk2lVAqXnAKPkiz/s/MgCX6W5OmVLZNL3NFAZKLFe5lii2plhJU3mTDYdtkEnxFQTTDtt11x+OtS0gz7szwqZtz89r4XmahLFlueVn53scCr3SN54wZ7CvuMFdYcpW/xNzjJRcCV0wES2NYaJ7j83MCOTZWlxZkKCxxBYR7d3jYzvoHySBZA18l6ZYcHD2+uNh/9+P3yaz/J8s1rSVTngpwbpImxk8bsJ5TwcLStWMG6BxKNglUgWRu2qwjbvHzoOS40DY85fFa/bejAencSpJQ2eXgLnud+D9vUvvi7bThytSeKboZVNSii6C7F865ZdSHe+QcqOVhV0wrsEB9uOrOlJDcgvkW74hEdkGll2O5Sk5fDdJkkH4Jib1HG+yhJ+gZeoFS9AYdoWN0gkaIRk+jD9Gn6HN8HKu4jpeb0jja9jxCO4i//wUQS+M5</latexit><latexit sha1_base64="61KGMhzex+tJFs3ahRkwgXkuyMM=">AAACxnicbVFdi9NAFJ3Er7V+VX30wcEi64OUZBHcp2WhCOuLrmC3C03p3plMkqHzxcyktYSAf8uf4h/x2Uk3D3bXAwOHc+6dezmXGMGdT5LfUXzn7r37Dw4eDh49fvL02fD5iwuna0vZlGqh7SUBxwRXbOq5F+zSWAaSCDYjq0nnz9bMOq7Vd781bCGhVLzgFHyQlsNfmQFL9I8mTalsm0HmigIkF1s8yBTbUC0lqLzJJpO2yST4ioJoJm27785mvUtIM+vM8KlbcfPB+EFmoSxZbnlZ+cHnAm91jVeMGewr7jBXWHKVv8fc4w0XAldMBEtjWGue46srAjk2VpcWZCgscQWEe3d42C6Ho2Sc7IBvk7QnI9TjfDn8k+Wa1pIpTwU4N08T4xcNWM+pYGHp2jEDdAUlmweqQDK3aHYRt/htUHJcaBue8nin/tvRgHRuK0mo7HJwN71O/J83r31xvGi4MrVnil4PKmrRRdDdC+fcMurDPXIO1PKwK6YVWKA+XHVvSkhuzXyL90Qiu6DSm7HcJhdH4zQZp9+S0elJH9kBeoXeoHcoRR/RKTpD52iKaPQ6+hR9ib7GZ7GK63hzXRpHfc9LtIf451//fN8j</latexit>

19

... next lectureprograms that use random numbers (in particular for computing high-dimensional integrals)

... todaywe showed how to build up a reasonably complicated algorithm (LU decomposition with pivot)

started to think about what makes a "good program"

20