Computational Projects Lecture 5: Gaussian Elimination / LU decomposition http://www.maths.cam.ac.uk/undergrad/catam/part-ia-lectures Dr Rob Jack, DAMTP 1 Motivation So far we considered algorithms that correspond to very short MATLAB programs, eg the main part of Euler's method is simply x(1) = xstart; y(1) = ystart; for i=1:n yprime = x(i)*y(i)^2; y(i+1) = y(i) + h*yprime; x(i+1) = x(i) + h; end If we want to do something more complicated, we need to understand how to build up a longer program, based on simple ingredients. In the next 2 lectures, we discuss an extended example of this 2 The problem If the inverse does not exist then our method should notice and return an error You might remember that this can be done by a method called Gaussian elimination. The method that we use is almost equivalent, it is called LU decomposition. Given an n ⇥ n matrix A and an n-vector b (both with real-valued elements), we want to solve Ax = b to obtain x = A -1 b Our method will also work if b is a matrix of size n ⇥ m. If we set b to be the identity then we obtain x = A -1 (if it exists). 3 LU decomposition Our method is based on a trick, which is to write A = LU . . . where L is a lower triangular matrix and U is upper triangular 2 4 3 5 = 2 4 @ @ @ 3 5 ⇥ 2 4 @ @ @ 3 5 L ij = 0 for i>j U ij = 0 for i<j A L U 0 0 We assume (for now) that this is possible. In fact we assume that it is possible with L ii =1 for all i. . . . cases where this is not possible are discussed later. 4
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Computational Projects
Lecture 5: Gaussian Elimination / LU decomposition
You might remember that this can be done by a method calledGaussian elimination. The method that we use is almost equivalent, itis called LU decomposition.
Our method will also work if b is a matrix of size n⇥m. If we set b to be
the identity then we obtain x = A�1 (if it exists).<latexit sha1_base64="vY7TwT3gG/JsbZcRqufSCqm10HI=">AAADCXicbVLLjtMwFE3CayivAks2VzRIw4KqGSHBAqRB3cCKQaLTkZpS2c5NY9WPyHamLVH2SKzgT9ghtnwFP8KKBU6nCzrDlSxdn3NfPte0FNy6weBXGF26fOXqtb3rnRs3b92+071779jqyjAcMS20OaHEouAKR447gSelQSKpwDFdDFt+fIrGcq3eu3WJU0nmiuecEeehWfdPWhJD9apOEiabupPaPCeSizV0UoVLpqUkKqvT4bCpU0lcwYioh02zy47HW5bSetySvqhd8PJp6TqpIfM5ZobPC9d5WxmQ6AqdwZILAURYDUttFsBziGkM3AIBX8nwFegcLP+IEKvUcYkWZNwHeJPDEsGi28Q7DRTBFQg8Q+UFWLcX1YZo6ghXEK9evvpQP0maGPZ9E+4AV15X+7jfzLq9QX+wMbjoJFunF2ztaNb9nWaaVdJ3YoJYO0kGpZvWxDjOBPp3VxZLwhZkjhPvKuKnntabLTXwyCMZ5Nr4oxxs0H8zaiKtXUvqI1sp7XmuBf/HTSqXP5/WXJWVQ8XOGuWVaLVpVw4ZN8icX2nGCTPczwqsIIYw5z/GTpcCxSm6BnZAKluhkvOyXHSOD/rJoJ+8O+gdvthKthc8CB4G+0ESPAsOg9fBUTAKWEjDT+GX8Gv0OfoWfY9+nIVG4TbnfrBj0c+/nHL2TA==</latexit><latexit sha1_base64="vY7TwT3gG/JsbZcRqufSCqm10HI=">AAADCXicbVLLjtMwFE3CayivAks2VzRIw4KqGSHBAqRB3cCKQaLTkZpS2c5NY9WPyHamLVH2SKzgT9ghtnwFP8KKBU6nCzrDlSxdn3NfPte0FNy6weBXGF26fOXqtb3rnRs3b92+071779jqyjAcMS20OaHEouAKR447gSelQSKpwDFdDFt+fIrGcq3eu3WJU0nmiuecEeehWfdPWhJD9apOEiabupPaPCeSizV0UoVLpqUkKqvT4bCpU0lcwYioh02zy47HW5bSetySvqhd8PJp6TqpIfM5ZobPC9d5WxmQ6AqdwZILAURYDUttFsBziGkM3AIBX8nwFegcLP+IEKvUcYkWZNwHeJPDEsGi28Q7DRTBFQg8Q+UFWLcX1YZo6ghXEK9evvpQP0maGPZ9E+4AV15X+7jfzLq9QX+wMbjoJFunF2ztaNb9nWaaVdJ3YoJYO0kGpZvWxDjOBPp3VxZLwhZkjhPvKuKnntabLTXwyCMZ5Nr4oxxs0H8zaiKtXUvqI1sp7XmuBf/HTSqXP5/WXJWVQ8XOGuWVaLVpVw4ZN8icX2nGCTPczwqsIIYw5z/GTpcCxSm6BnZAKluhkvOyXHSOD/rJoJ+8O+gdvthKthc8CB4G+0ESPAsOg9fBUTAKWEjDT+GX8Gv0OfoWfY9+nIVG4TbnfrBj0c+/nHL2TA==</latexit><latexit sha1_base64="vY7TwT3gG/JsbZcRqufSCqm10HI=">AAADCXicbVLLjtMwFE3CayivAks2VzRIw4KqGSHBAqRB3cCKQaLTkZpS2c5NY9WPyHamLVH2SKzgT9ghtnwFP8KKBU6nCzrDlSxdn3NfPte0FNy6weBXGF26fOXqtb3rnRs3b92+071779jqyjAcMS20OaHEouAKR447gSelQSKpwDFdDFt+fIrGcq3eu3WJU0nmiuecEeehWfdPWhJD9apOEiabupPaPCeSizV0UoVLpqUkKqvT4bCpU0lcwYioh02zy47HW5bSetySvqhd8PJp6TqpIfM5ZobPC9d5WxmQ6AqdwZILAURYDUttFsBziGkM3AIBX8nwFegcLP+IEKvUcYkWZNwHeJPDEsGi28Q7DRTBFQg8Q+UFWLcX1YZo6ghXEK9evvpQP0maGPZ9E+4AV15X+7jfzLq9QX+wMbjoJFunF2ztaNb9nWaaVdJ3YoJYO0kGpZvWxDjOBPp3VxZLwhZkjhPvKuKnntabLTXwyCMZ5Nr4oxxs0H8zaiKtXUvqI1sp7XmuBf/HTSqXP5/WXJWVQ8XOGuWVaLVpVw4ZN8icX2nGCTPczwqsIIYw5z/GTpcCxSm6BnZAKluhkvOyXHSOD/rJoJ+8O+gdvthKthc8CB4G+0ESPAsOg9fBUTAKWEjDT+GX8Gv0OfoWfY9+nIVG4TbnfrBj0c+/nHL2TA==</latexit><latexit sha1_base64="vY7TwT3gG/JsbZcRqufSCqm10HI=">AAADCXicbVLLjtMwFE3CayivAks2VzRIw4KqGSHBAqRB3cCKQaLTkZpS2c5NY9WPyHamLVH2SKzgT9ghtnwFP8KKBU6nCzrDlSxdn3NfPte0FNy6weBXGF26fOXqtb3rnRs3b92+071779jqyjAcMS20OaHEouAKR447gSelQSKpwDFdDFt+fIrGcq3eu3WJU0nmiuecEeehWfdPWhJD9apOEiabupPaPCeSizV0UoVLpqUkKqvT4bCpU0lcwYioh02zy47HW5bSetySvqhd8PJp6TqpIfM5ZobPC9d5WxmQ6AqdwZILAURYDUttFsBziGkM3AIBX8nwFegcLP+IEKvUcYkWZNwHeJPDEsGi28Q7DRTBFQg8Q+UFWLcX1YZo6ghXEK9evvpQP0maGPZ9E+4AV15X+7jfzLq9QX+wMbjoJFunF2ztaNb9nWaaVdJ3YoJYO0kGpZvWxDjOBPp3VxZLwhZkjhPvKuKnntabLTXwyCMZ5Nr4oxxs0H8zaiKtXUvqI1sp7XmuBf/HTSqXP5/WXJWVQ8XOGuWVaLVpVw4ZN8icX2nGCTPczwqsIIYw5z/GTpcCxSm6BnZAKluhkvOyXHSOD/rJoJ+8O+gdvthKthc8CB4G+0ESPAsOg9fBUTAKWEjDT+GX8Gv0OfoWfY9+nIVG4TbnfrBj0c+/nHL2TA==</latexit>
3
LU decomposition
Our method is based on a trick, which is to write A = LU
. . . where L is a lower triangular matrix and U is upper triangular<latexit sha1_base64="HdoWt/gq+mXlTlKpyp6QhsQnUt8=">AAAC/3icbVLLjtMwFHXCawivAks2Fi0SC1Qlo5FgMSMN6obFSAwSnVZqqurGcRKrfkS2M50qChIr+BN2iC2fwm+wYI3d6YLOcCVL1+ec62uf66zmzNg4/hWEN27eun1n72507/6Dh496j5+cGdVoQsdEcaWnGRjKmaRjyyyn01pTEBmnk2w58vzknGrDlPxo1zWdCyglKxgB66BF73dag87URZskRHRtlJqiAMH4GkeppCuihACZt+lo1LWpAFsR4O2o63bZyWTLZlk78aQ71CxZfVDbKNVQljTXrKxs9L7RWFBbqRwzg/3Fc6wkBmw1I8tXeFUxUnnKKrzSzFI8eHt0Mh5EUZoraxxPtcNOBl4DmKsV1b4WZNlwcGeD21xgdyk8GG9ETV3vSKJu0evHw3gT+HqSbJM+2sbpovfHNSeNoNISDsbMkri28xa0ZYRT99rG0BrIEko6c6kEQc283cymwy8a/8ZCabekxRv034oWhDFrkTmlN9Bc5Tz4P27W2OLNvGWybiyV5LJR0XDvnB80zpmmxLpB5gyIs5IRTCrQQKz7DjtdKsrPqe3wDpgJb1Ry1Zbrydn+MImHyYf9/vHh1rI99Aw9Ry9Rgl6jY/QOnaIxIsE0+BR8Cb6Gn8Nv4ffwx6U0DLY1T9FOhD//AvXX86c=</latexit><latexit sha1_base64="HdoWt/gq+mXlTlKpyp6QhsQnUt8=">AAAC/3icbVLLjtMwFHXCawivAks2Fi0SC1Qlo5FgMSMN6obFSAwSnVZqqurGcRKrfkS2M50qChIr+BN2iC2fwm+wYI3d6YLOcCVL1+ec62uf66zmzNg4/hWEN27eun1n72507/6Dh496j5+cGdVoQsdEcaWnGRjKmaRjyyyn01pTEBmnk2w58vzknGrDlPxo1zWdCyglKxgB66BF73dag87URZskRHRtlJqiAMH4GkeppCuihACZt+lo1LWpAFsR4O2o63bZyWTLZlk78aQ71CxZfVDbKNVQljTXrKxs9L7RWFBbqRwzg/3Fc6wkBmw1I8tXeFUxUnnKKrzSzFI8eHt0Mh5EUZoraxxPtcNOBl4DmKsV1b4WZNlwcGeD21xgdyk8GG9ETV3vSKJu0evHw3gT+HqSbJM+2sbpovfHNSeNoNISDsbMkri28xa0ZYRT99rG0BrIEko6c6kEQc283cymwy8a/8ZCabekxRv034oWhDFrkTmlN9Bc5Tz4P27W2OLNvGWybiyV5LJR0XDvnB80zpmmxLpB5gyIs5IRTCrQQKz7DjtdKsrPqe3wDpgJb1Ry1Zbrydn+MImHyYf9/vHh1rI99Aw9Ry9Rgl6jY/QOnaIxIsE0+BR8Cb6Gn8Nv4ffwx6U0DLY1T9FOhD//AvXX86c=</latexit><latexit sha1_base64="HdoWt/gq+mXlTlKpyp6QhsQnUt8=">AAAC/3icbVLLjtMwFHXCawivAks2Fi0SC1Qlo5FgMSMN6obFSAwSnVZqqurGcRKrfkS2M50qChIr+BN2iC2fwm+wYI3d6YLOcCVL1+ec62uf66zmzNg4/hWEN27eun1n72507/6Dh496j5+cGdVoQsdEcaWnGRjKmaRjyyyn01pTEBmnk2w58vzknGrDlPxo1zWdCyglKxgB66BF73dag87URZskRHRtlJqiAMH4GkeppCuihACZt+lo1LWpAFsR4O2o63bZyWTLZlk78aQ71CxZfVDbKNVQljTXrKxs9L7RWFBbqRwzg/3Fc6wkBmw1I8tXeFUxUnnKKrzSzFI8eHt0Mh5EUZoraxxPtcNOBl4DmKsV1b4WZNlwcGeD21xgdyk8GG9ETV3vSKJu0evHw3gT+HqSbJM+2sbpovfHNSeNoNISDsbMkri28xa0ZYRT99rG0BrIEko6c6kEQc283cymwy8a/8ZCabekxRv034oWhDFrkTmlN9Bc5Tz4P27W2OLNvGWybiyV5LJR0XDvnB80zpmmxLpB5gyIs5IRTCrQQKz7DjtdKsrPqe3wDpgJb1Ry1Zbrydn+MImHyYf9/vHh1rI99Aw9Ry9Rgl6jY/QOnaIxIsE0+BR8Cb6Gn8Nv4ffwx6U0DLY1T9FOhD//AvXX86c=</latexit><latexit sha1_base64="HdoWt/gq+mXlTlKpyp6QhsQnUt8=">AAAC/3icbVLLjtMwFHXCawivAks2Fi0SC1Qlo5FgMSMN6obFSAwSnVZqqurGcRKrfkS2M50qChIr+BN2iC2fwm+wYI3d6YLOcCVL1+ec62uf66zmzNg4/hWEN27eun1n72507/6Dh496j5+cGdVoQsdEcaWnGRjKmaRjyyyn01pTEBmnk2w58vzknGrDlPxo1zWdCyglKxgB66BF73dag87URZskRHRtlJqiAMH4GkeppCuihACZt+lo1LWpAFsR4O2o63bZyWTLZlk78aQ71CxZfVDbKNVQljTXrKxs9L7RWFBbqRwzg/3Fc6wkBmw1I8tXeFUxUnnKKrzSzFI8eHt0Mh5EUZoraxxPtcNOBl4DmKsV1b4WZNlwcGeD21xgdyk8GG9ETV3vSKJu0evHw3gT+HqSbJM+2sbpovfHNSeNoNISDsbMkri28xa0ZYRT99rG0BrIEko6c6kEQc283cymwy8a/8ZCabekxRv034oWhDFrkTmlN9Bc5Tz4P27W2OLNvGWybiyV5LJR0XDvnB80zpmmxLpB5gyIs5IRTCrQQKz7DjtdKsrPqe3wDpgJb1Ry1Zbrydn+MImHyYf9/vHh1rI99Aw9Ry9Rgl6jY/QOnaIxIsE0+BR8Cb6Gn8Nv4ffwx6U0DLY1T9FOhD//AvXX86c=</latexit>
Thi
sis
asu
perv
isor
’sco
pyof
the
note
s.P
leas
edo
not
dist
ribu
teto
stud
ents
.
5 Gaussian Elimination
5.0 Introduction
One of the aims of this section is to write a slightly longer piece of Matlab code, showing how it canbe constructed piece by piece. It is generally easier to write a basic code, and then refine it to make itmore sophisticated.
Remark. This section also illustrates how to write a standard method, in this case [a very close relativeof] Gaussian elimination, in a neater algorithmic form using matrices. Needless to say, matrices areimportant; as the abstract of a research seminar given this time last year put it:
‘Functions of matrices are widely used in science, engineering and the social sciences, due
to the succinct and insightful way they allow problems to be formulated and solutions
to be expressed. New applications involving matrix functions are regularly being found,
ranging from small but difficult problems in medicine to huge, sparse systems arising in
the solution of partial differential equations. . . . ’
5.1 LU factorization
5.1.1 Definition
Let A be a real n⇥ n matrix. We say that the n⇥ n matrices L and U are an LU factorization of A if
(i) L is lower-triangular, i.e. Li j = 0 for i < j,
(ii) U is upper-triangular, i.e. Ui j = 0 for i > j, and
(iii) A = LU.
Therefore the factorization takes the form2
4
3
5 =
2
4@
@@
3
5⇥
2
4@@@
3
5 .
5.1.2 Application: solution of linear systems
Let A = LU and suppose we wish to solve Ax = b. This is the same as L(Ux) = b, which we decomposeinto
Ly = b, Ux = y.
Both latter systems are triangular and can be solved using forward/backward substitution. Specifically,first we solve for y; thus
. . . cases where this is not possible are discussed later.<latexit sha1_base64="T8K+mV9ih1wvxVxAOQxupnI3pYI=">AAACuHicbVFLb9NAEF6bVwmvFI5cVkRInCK7QmqFOATlwrFItKkUR2G8Htur7MPaWbdEln8Rv4g/wpl1mgNpGe1K3843szPzTd4oST5Jfkfxg4ePHj85ejp69vzFy1fj49eXZFsn8EJYZd1VDoRKGrzw0iu8ahyCzhUu8s184BfX6Eha891vG1xpqIwspQAfXOvxr6wBl9ufXZoK3XejjMoStFRbPsoM3girNZiiy+bzvss0+FqA6uZ9f8guFns2z7vFQIZPaSObj40fZQ6qCgsnqzo8CuuJi9Aw8ZsaHXJfS+LhGOt5Y4lk6JxDIApJoiXCgivw6Kajfj2eJNNkZ/w+SPdgwvZ2vh7/CfVEq9F4oYBomSaNX3XgvBQKQ5stYQNiAxUuAzSgkVbdTtSev2+H2qV14RrPd95/MzrQRFudh8hhcrrLDc7/ccvWl2erTpqm9WjEbaGyVdxbPmwoDO5Q+LCBQoJwMvTKRQ0ORFDhsEqN6hp9zw+cuR6ESu/Kch9cnkzTZJp+O5nMPu8lO2Jv2Tv2gaXslM3YV3bOLpiIjqPTaBZ9iT/FP+IqlrehcbTPecMOLHZ/AVj32lE=</latexit><latexit sha1_base64="T8K+mV9ih1wvxVxAOQxupnI3pYI=">AAACuHicbVFLb9NAEF6bVwmvFI5cVkRInCK7QmqFOATlwrFItKkUR2G8Htur7MPaWbdEln8Rv4g/wpl1mgNpGe1K3843szPzTd4oST5Jfkfxg4ePHj85ejp69vzFy1fj49eXZFsn8EJYZd1VDoRKGrzw0iu8ahyCzhUu8s184BfX6Eha891vG1xpqIwspQAfXOvxr6wBl9ufXZoK3XejjMoStFRbPsoM3girNZiiy+bzvss0+FqA6uZ9f8guFns2z7vFQIZPaSObj40fZQ6qCgsnqzo8CuuJi9Aw8ZsaHXJfS+LhGOt5Y4lk6JxDIApJoiXCgivw6Kajfj2eJNNkZ/w+SPdgwvZ2vh7/CfVEq9F4oYBomSaNX3XgvBQKQ5stYQNiAxUuAzSgkVbdTtSev2+H2qV14RrPd95/MzrQRFudh8hhcrrLDc7/ccvWl2erTpqm9WjEbaGyVdxbPmwoDO5Q+LCBQoJwMvTKRQ0ORFDhsEqN6hp9zw+cuR6ESu/Kch9cnkzTZJp+O5nMPu8lO2Jv2Tv2gaXslM3YV3bOLpiIjqPTaBZ9iT/FP+IqlrehcbTPecMOLHZ/AVj32lE=</latexit><latexit sha1_base64="T8K+mV9ih1wvxVxAOQxupnI3pYI=">AAACuHicbVFLb9NAEF6bVwmvFI5cVkRInCK7QmqFOATlwrFItKkUR2G8Htur7MPaWbdEln8Rv4g/wpl1mgNpGe1K3843szPzTd4oST5Jfkfxg4ePHj85ejp69vzFy1fj49eXZFsn8EJYZd1VDoRKGrzw0iu8ahyCzhUu8s184BfX6Eha891vG1xpqIwspQAfXOvxr6wBl9ufXZoK3XejjMoStFRbPsoM3girNZiiy+bzvss0+FqA6uZ9f8guFns2z7vFQIZPaSObj40fZQ6qCgsnqzo8CuuJi9Aw8ZsaHXJfS+LhGOt5Y4lk6JxDIApJoiXCgivw6Kajfj2eJNNkZ/w+SPdgwvZ2vh7/CfVEq9F4oYBomSaNX3XgvBQKQ5stYQNiAxUuAzSgkVbdTtSev2+H2qV14RrPd95/MzrQRFudh8hhcrrLDc7/ccvWl2erTpqm9WjEbaGyVdxbPmwoDO5Q+LCBQoJwMvTKRQ0ORFDhsEqN6hp9zw+cuR6ESu/Kch9cnkzTZJp+O5nMPu8lO2Jv2Tv2gaXslM3YV3bOLpiIjqPTaBZ9iT/FP+IqlrehcbTPecMOLHZ/AVj32lE=</latexit><latexit sha1_base64="T8K+mV9ih1wvxVxAOQxupnI3pYI=">AAACuHicbVFLb9NAEF6bVwmvFI5cVkRInCK7QmqFOATlwrFItKkUR2G8Htur7MPaWbdEln8Rv4g/wpl1mgNpGe1K3843szPzTd4oST5Jfkfxg4ePHj85ejp69vzFy1fj49eXZFsn8EJYZd1VDoRKGrzw0iu8ahyCzhUu8s184BfX6Eha891vG1xpqIwspQAfXOvxr6wBl9ufXZoK3XejjMoStFRbPsoM3girNZiiy+bzvss0+FqA6uZ9f8guFns2z7vFQIZPaSObj40fZQ6qCgsnqzo8CuuJi9Aw8ZsaHXJfS+LhGOt5Y4lk6JxDIApJoiXCgivw6Kajfj2eJNNkZ/w+SPdgwvZ2vh7/CfVEq9F4oYBomSaNX3XgvBQKQ5stYQNiAxUuAzSgkVbdTtSev2+H2qV14RrPd95/MzrQRFudh8hhcrrLDc7/ccvWl2erTpqm9WjEbaGyVdxbPmwoDO5Q+LCBQoJwMvTKRQ0ORFDhsEqN6hp9zw+cuR6ESu/Kch9cnkzTZJp+O5nMPu8lO2Jv2Tv2gaXslM3YV3bOLpiIjqPTaBZ9iT/FP+IqlrehcbTPecMOLHZ/AVj32lE=</latexit>
4
Solving Ax = b
Suppose Ax = LUx = b. Let y = Ux. Then Ly = b.<latexit sha1_base64="B0phj1PnHMbwOeoRyOTW+Gp/q8c=">AAACr3icbVHLbtswEKTUl6u+3PbYC1G7QE+GFARIDjWQwJcefEjRKApguS5FrWzCJEWQVGJB0M/0r/ojPZdydKiTLkBiOLPLXQ4zxZmxYfjb8x89fvL02eB58OLlq9dvhm/fXZmy0hRiWvJSX2fEAGcSYsssh2ulgYiMQ5JtZ52e3IA2rJSXtlawFGQtWcEosY5aDX+liuis3DVRREXbBKkpCiIYr3GQSrilpRBE5k06m7VNKojdUMKbWdseqknSq1nWJJ3oLjVbpo6VDVJN1mvINVtvbPC9Uqo0gMfnOzzF87jbs/EE4zlYPK6n8a47XG5A4vG8njopaFfDUTgJ94EfgqgHI9THxWr4J81LWgmQlnJizCIKlV02RFtGObjpKgOK0C1Zw8JBSQSYZbP3ssWfHJPjotRuSYv37L8VDRHG1CJzmd2DzX2tI/+nLSpbnC4bJlVlQdK7RkXFsS1x9zE4ZxqodcbnjFDN3KyYbogm1LrvO+iyAX4DtsUHZCY6o6L7tjwEV0eTKJxE345GZ196ywboA/qIPqMInaAz9BVdoBhRb+BNvBPv1I/8xP/h/7xL9b2+5j06CJ/9BTN40gY=</latexit><latexit sha1_base64="B0phj1PnHMbwOeoRyOTW+Gp/q8c=">AAACr3icbVHLbtswEKTUl6u+3PbYC1G7QE+GFARIDjWQwJcefEjRKApguS5FrWzCJEWQVGJB0M/0r/ojPZdydKiTLkBiOLPLXQ4zxZmxYfjb8x89fvL02eB58OLlq9dvhm/fXZmy0hRiWvJSX2fEAGcSYsssh2ulgYiMQ5JtZ52e3IA2rJSXtlawFGQtWcEosY5aDX+liuis3DVRREXbBKkpCiIYr3GQSrilpRBE5k06m7VNKojdUMKbWdseqknSq1nWJJ3oLjVbpo6VDVJN1mvINVtvbPC9Uqo0gMfnOzzF87jbs/EE4zlYPK6n8a47XG5A4vG8njopaFfDUTgJ94EfgqgHI9THxWr4J81LWgmQlnJizCIKlV02RFtGObjpKgOK0C1Zw8JBSQSYZbP3ssWfHJPjotRuSYv37L8VDRHG1CJzmd2DzX2tI/+nLSpbnC4bJlVlQdK7RkXFsS1x9zE4ZxqodcbnjFDN3KyYbogm1LrvO+iyAX4DtsUHZCY6o6L7tjwEV0eTKJxE345GZ196ywboA/qIPqMInaAz9BVdoBhRb+BNvBPv1I/8xP/h/7xL9b2+5j06CJ/9BTN40gY=</latexit><latexit sha1_base64="B0phj1PnHMbwOeoRyOTW+Gp/q8c=">AAACr3icbVHLbtswEKTUl6u+3PbYC1G7QE+GFARIDjWQwJcefEjRKApguS5FrWzCJEWQVGJB0M/0r/ojPZdydKiTLkBiOLPLXQ4zxZmxYfjb8x89fvL02eB58OLlq9dvhm/fXZmy0hRiWvJSX2fEAGcSYsssh2ulgYiMQ5JtZ52e3IA2rJSXtlawFGQtWcEosY5aDX+liuis3DVRREXbBKkpCiIYr3GQSrilpRBE5k06m7VNKojdUMKbWdseqknSq1nWJJ3oLjVbpo6VDVJN1mvINVtvbPC9Uqo0gMfnOzzF87jbs/EE4zlYPK6n8a47XG5A4vG8njopaFfDUTgJ94EfgqgHI9THxWr4J81LWgmQlnJizCIKlV02RFtGObjpKgOK0C1Zw8JBSQSYZbP3ssWfHJPjotRuSYv37L8VDRHG1CJzmd2DzX2tI/+nLSpbnC4bJlVlQdK7RkXFsS1x9zE4ZxqodcbnjFDN3KyYbogm1LrvO+iyAX4DtsUHZCY6o6L7tjwEV0eTKJxE345GZ196ywboA/qIPqMInaAz9BVdoBhRb+BNvBPv1I/8xP/h/7xL9b2+5j06CJ/9BTN40gY=</latexit><latexit sha1_base64="B0phj1PnHMbwOeoRyOTW+Gp/q8c=">AAACr3icbVHLbtswEKTUl6u+3PbYC1G7QE+GFARIDjWQwJcefEjRKApguS5FrWzCJEWQVGJB0M/0r/ojPZdydKiTLkBiOLPLXQ4zxZmxYfjb8x89fvL02eB58OLlq9dvhm/fXZmy0hRiWvJSX2fEAGcSYsssh2ulgYiMQ5JtZ52e3IA2rJSXtlawFGQtWcEosY5aDX+liuis3DVRREXbBKkpCiIYr3GQSrilpRBE5k06m7VNKojdUMKbWdseqknSq1nWJJ3oLjVbpo6VDVJN1mvINVtvbPC9Uqo0gMfnOzzF87jbs/EE4zlYPK6n8a47XG5A4vG8njopaFfDUTgJ94EfgqgHI9THxWr4J81LWgmQlnJizCIKlV02RFtGObjpKgOK0C1Zw8JBSQSYZbP3ssWfHJPjotRuSYv37L8VDRHG1CJzmd2DzX2tI/+nLSpbnC4bJlVlQdK7RkXFsS1x9zE4ZxqodcbnjFDN3KyYbogm1LrvO+iyAX4DtsUHZCY6o6L7tjwEV0eTKJxE345GZ196ywboA/qIPqMInaAz9BVdoBhRb+BNvBPv1I/8xP/h/7xL9b2+5j06CJ/9BTN40gY=</latexit>
It turns out to be easy to invert triangular matrices. So if we know Land U then we can obtain y as L�1b and then x as U�1y.
Plan for writing our program to solve Ax = b.<latexit sha1_base64="uo+7alfgj10ER+52c0PNy5o8Dx0=">AAACs3icbVFNb9NAEF2bj5ZQIMCRy4oUiVNkR0UgtUhFuXAMEqkrxVE0u147q+yHtbtuE638d/hP/BHOrFMfSMuc3r43szPzhtSCW5ckv6P40eMnT4+Onw2en7x4+Wr4+s2V1Y2hbE610OaagGWCKzZ33Al2XRsGkgiWkc2007MbZizX6qfb1WwpoVK85BRcoFbDX3kNhuitT1MqWz/IbVmC5GKHB7lit1RLCarw+XTa+lyCW1MQftq2h2qW9SohPuvE8Knd8PqsdoPcQFWxwvBqHR6ObR0p/UyAanGpDb413HFV4bAQro2uDEjsNLZa3DB8+m37lZyOB+1qOErGyT7wQ5D2YIT6mK2Gf/JC00Yy5agAaxdpUrulB+M4FSxM2FhWA91AxRYBKpDMLv3ezxZ/CEyxn67UyuE9+2+FB2ntTpKQ2S1t72sd+T9t0bjyy9JzVTeOKXrXqGxEt3B3HFxww6gL5hccaGcMxXQNBqgLJzzosmbBH9fiA5LIzqj0vi0PwdVknCbj9MdkdHnRW3aM3qH36CNK0Wd0ib6jGZojGp1Ek+g8uog/xYuYxMVdahz1NW/RQcTyL9We1/M=</latexit><latexit sha1_base64="uo+7alfgj10ER+52c0PNy5o8Dx0=">AAACs3icbVFNb9NAEF2bj5ZQIMCRy4oUiVNkR0UgtUhFuXAMEqkrxVE0u147q+yHtbtuE638d/hP/BHOrFMfSMuc3r43szPzhtSCW5ckv6P40eMnT4+Onw2en7x4+Wr4+s2V1Y2hbE610OaagGWCKzZ33Al2XRsGkgiWkc2007MbZizX6qfb1WwpoVK85BRcoFbDX3kNhuitT1MqWz/IbVmC5GKHB7lit1RLCarw+XTa+lyCW1MQftq2h2qW9SohPuvE8Knd8PqsdoPcQFWxwvBqHR6ObR0p/UyAanGpDb413HFV4bAQro2uDEjsNLZa3DB8+m37lZyOB+1qOErGyT7wQ5D2YIT6mK2Gf/JC00Yy5agAaxdpUrulB+M4FSxM2FhWA91AxRYBKpDMLv3ezxZ/CEyxn67UyuE9+2+FB2ntTpKQ2S1t72sd+T9t0bjyy9JzVTeOKXrXqGxEt3B3HFxww6gL5hccaGcMxXQNBqgLJzzosmbBH9fiA5LIzqj0vi0PwdVknCbj9MdkdHnRW3aM3qH36CNK0Wd0ib6jGZojGp1Ek+g8uog/xYuYxMVdahz1NW/RQcTyL9We1/M=</latexit><latexit sha1_base64="uo+7alfgj10ER+52c0PNy5o8Dx0=">AAACs3icbVFNb9NAEF2bj5ZQIMCRy4oUiVNkR0UgtUhFuXAMEqkrxVE0u147q+yHtbtuE638d/hP/BHOrFMfSMuc3r43szPzhtSCW5ckv6P40eMnT4+Onw2en7x4+Wr4+s2V1Y2hbE610OaagGWCKzZ33Al2XRsGkgiWkc2007MbZizX6qfb1WwpoVK85BRcoFbDX3kNhuitT1MqWz/IbVmC5GKHB7lit1RLCarw+XTa+lyCW1MQftq2h2qW9SohPuvE8Knd8PqsdoPcQFWxwvBqHR6ObR0p/UyAanGpDb413HFV4bAQro2uDEjsNLZa3DB8+m37lZyOB+1qOErGyT7wQ5D2YIT6mK2Gf/JC00Yy5agAaxdpUrulB+M4FSxM2FhWA91AxRYBKpDMLv3ezxZ/CEyxn67UyuE9+2+FB2ntTpKQ2S1t72sd+T9t0bjyy9JzVTeOKXrXqGxEt3B3HFxww6gL5hccaGcMxXQNBqgLJzzosmbBH9fiA5LIzqj0vi0PwdVknCbj9MdkdHnRW3aM3qH36CNK0Wd0ib6jGZojGp1Ek+g8uog/xYuYxMVdahz1NW/RQcTyL9We1/M=</latexit><latexit sha1_base64="uo+7alfgj10ER+52c0PNy5o8Dx0=">AAACs3icbVFNb9NAEF2bj5ZQIMCRy4oUiVNkR0UgtUhFuXAMEqkrxVE0u147q+yHtbtuE638d/hP/BHOrFMfSMuc3r43szPzhtSCW5ckv6P40eMnT4+Onw2en7x4+Wr4+s2V1Y2hbE610OaagGWCKzZ33Al2XRsGkgiWkc2007MbZizX6qfb1WwpoVK85BRcoFbDX3kNhuitT1MqWz/IbVmC5GKHB7lit1RLCarw+XTa+lyCW1MQftq2h2qW9SohPuvE8Knd8PqsdoPcQFWxwvBqHR6ObR0p/UyAanGpDb413HFV4bAQro2uDEjsNLZa3DB8+m37lZyOB+1qOErGyT7wQ5D2YIT6mK2Gf/JC00Yy5agAaxdpUrulB+M4FSxM2FhWA91AxRYBKpDMLv3ezxZ/CEyxn67UyuE9+2+FB2ntTpKQ2S1t72sd+T9t0bjyy9JzVTeOKXrXqGxEt3B3HFxww6gL5hccaGcMxXQNBqgLJzzosmbBH9fiA5LIzqj0vi0PwdVknCbj9MdkdHnRW3aM3qH36CNK0Wd0ib6jGZojGp1Ek+g8uog/xYuYxMVdahz1NW/RQcTyL9We1/M=</latexit>
2. Assume that A is given and write a function for obtaining L and U .<latexit sha1_base64="kNP8cXkLePav5HHS5rMWB8m6O8g=">AAACyHicbVHLjtNAEByb12JeAY5cBmIkTpEdIcGBw65yACEOWYlsVoqjVXs8dkaZhzXTTogsX/gtvoQf4cw4mwPZpU+lqu6uVnVeS+EwSX4H4Z279+4/OHkYPXr85OmzwfMXF840lvEZM9LYyxwcl0LzGQqU/LK2HFQu+TxfT3p9vuHWCaO/467mSwWVFqVggJ66GvzKarC5+dGmKVNdG2WuLEEJuaNRpvmWGaVAF202mXRtpgBXDGQ76bpjdT4/qHneznvRL3VrUb+vMcosVBUvrKhWGI1H9My5RnGKK0Aan8VUOFqJDdfUb6JbK5BToGWjWX8gLY2lJkcQWuiKxt/ifVs8i0dRdzUYJqNkX/Q2SA9gSA41vRr8yQrDvLtGJsG5RZrUuGzBomCS+7Mbx2tga6j4wkMNirtluw+5o289U+zvKY1Gumf/nWhBObdTue/sk3A3tZ78n7ZosPy4bIWuG+SaXRuVjaRoaP8xWgjLGfqPFAKYz0cwylZggaH/65HLissNx44ekbnqg0pvxnIbXIxHaTJKz8fD00+HyE7IK/KGvCMp+UBOyRcyJTPCgtfB52AanIdfwzrchrvr1jA4zLwkRxX+/Au57N18</latexit><latexit sha1_base64="kNP8cXkLePav5HHS5rMWB8m6O8g=">AAACyHicbVHLjtNAEByb12JeAY5cBmIkTpEdIcGBw65yACEOWYlsVoqjVXs8dkaZhzXTTogsX/gtvoQf4cw4mwPZpU+lqu6uVnVeS+EwSX4H4Z279+4/OHkYPXr85OmzwfMXF840lvEZM9LYyxwcl0LzGQqU/LK2HFQu+TxfT3p9vuHWCaO/467mSwWVFqVggJ66GvzKarC5+dGmKVNdG2WuLEEJuaNRpvmWGaVAF202mXRtpgBXDGQ76bpjdT4/qHneznvRL3VrUb+vMcosVBUvrKhWGI1H9My5RnGKK0Aan8VUOFqJDdfUb6JbK5BToGWjWX8gLY2lJkcQWuiKxt/ifVs8i0dRdzUYJqNkX/Q2SA9gSA41vRr8yQrDvLtGJsG5RZrUuGzBomCS+7Mbx2tga6j4wkMNirtluw+5o289U+zvKY1Gumf/nWhBObdTue/sk3A3tZ78n7ZosPy4bIWuG+SaXRuVjaRoaP8xWgjLGfqPFAKYz0cwylZggaH/65HLissNx44ekbnqg0pvxnIbXIxHaTJKz8fD00+HyE7IK/KGvCMp+UBOyRcyJTPCgtfB52AanIdfwzrchrvr1jA4zLwkRxX+/Au57N18</latexit><latexit sha1_base64="kNP8cXkLePav5HHS5rMWB8m6O8g=">AAACyHicbVHLjtNAEByb12JeAY5cBmIkTpEdIcGBw65yACEOWYlsVoqjVXs8dkaZhzXTTogsX/gtvoQf4cw4mwPZpU+lqu6uVnVeS+EwSX4H4Z279+4/OHkYPXr85OmzwfMXF840lvEZM9LYyxwcl0LzGQqU/LK2HFQu+TxfT3p9vuHWCaO/467mSwWVFqVggJ66GvzKarC5+dGmKVNdG2WuLEEJuaNRpvmWGaVAF202mXRtpgBXDGQ76bpjdT4/qHneznvRL3VrUb+vMcosVBUvrKhWGI1H9My5RnGKK0Aan8VUOFqJDdfUb6JbK5BToGWjWX8gLY2lJkcQWuiKxt/ifVs8i0dRdzUYJqNkX/Q2SA9gSA41vRr8yQrDvLtGJsG5RZrUuGzBomCS+7Mbx2tga6j4wkMNirtluw+5o289U+zvKY1Gumf/nWhBObdTue/sk3A3tZ78n7ZosPy4bIWuG+SaXRuVjaRoaP8xWgjLGfqPFAKYz0cwylZggaH/65HLissNx44ekbnqg0pvxnIbXIxHaTJKz8fD00+HyE7IK/KGvCMp+UBOyRcyJTPCgtfB52AanIdfwzrchrvr1jA4zLwkRxX+/Au57N18</latexit><latexit sha1_base64="kNP8cXkLePav5HHS5rMWB8m6O8g=">AAACyHicbVHLjtNAEByb12JeAY5cBmIkTpEdIcGBw65yACEOWYlsVoqjVXs8dkaZhzXTTogsX/gtvoQf4cw4mwPZpU+lqu6uVnVeS+EwSX4H4Z279+4/OHkYPXr85OmzwfMXF840lvEZM9LYyxwcl0LzGQqU/LK2HFQu+TxfT3p9vuHWCaO/467mSwWVFqVggJ66GvzKarC5+dGmKVNdG2WuLEEJuaNRpvmWGaVAF202mXRtpgBXDGQ76bpjdT4/qHneznvRL3VrUb+vMcosVBUvrKhWGI1H9My5RnGKK0Aan8VUOFqJDdfUb6JbK5BToGWjWX8gLY2lJkcQWuiKxt/ifVs8i0dRdzUYJqNkX/Q2SA9gSA41vRr8yQrDvLtGJsG5RZrUuGzBomCS+7Mbx2tga6j4wkMNirtluw+5o289U+zvKY1Gumf/nWhBObdTue/sk3A3tZ78n7ZosPy4bIWuG+SaXRuVjaRoaP8xWgjLGfqPFAKYz0cwylZggaH/65HLissNx44ekbnqg0pvxnIbXIxHaTJKz8fD00+HyE7IK/KGvCMp+UBOyRcyJTPCgtfB52AanIdfwzrchrvr1jA4zLwkRxX+/Au57N18</latexit>
3. Deal with cases where A can’t be written as LU (“pivoting”)<latexit sha1_base64="ClooqdjeRKnklSKCXCC8U7U+jcY=">AAACwXicbVFNj9MwEHXC1xI+tsANLhYt6nKpkgUJDhyKygEQh0Wi25Waqus4k8Sq7Vi201JZ+Vf8Gf4IZ5xuD3SXkSw9vzfjGb/JFGfGxvHvILx1+87de0f3owcPHz0+7j15em7qRlOY0prX+iIjBjiTMLXMcrhQGojIOMyy1aTTZ2vQhtXyh90qWAhSSlYwSqynlr1fqSI6q3+6JKGidVFqioIIxrc4SiVsaC0EkblLJ5PWpYLYihLuJm17qM5mezXL3KwT/aNmxdRbZaNUk7KEXLOystGbEf4EhOMNsxWmfm6DNxVowIOPA3+XQ4szwBvNrAWJicGDb9MBPrm8VGxdWybL4fB11C57/XgU7wLfBMke9NE+zpa9P2le00aAtJQTY+ZJrOzCEW0Z5eDnbQwoQlekhLmHkggwC7dzt8WvPJPjotb+SIt37L8VjghjtiLzmZ0F5rrWkf/T5o0t3i8ck6rxn6VXjYqGY1vjblU4Zxqo9avIGaHeEkYxrYgm1PqFHnSpgK/BtviAzERnVHLdlpvg/HSUxKPk+2l//GFv2RF6gV6iE5Sgd2iMPqMzNEU0eB6Mgy/B13ASslCF+io1DPY1z9BBhO4vZg3akw==</latexit><latexit sha1_base64="ClooqdjeRKnklSKCXCC8U7U+jcY=">AAACwXicbVFNj9MwEHXC1xI+tsANLhYt6nKpkgUJDhyKygEQh0Wi25Waqus4k8Sq7Vi201JZ+Vf8Gf4IZ5xuD3SXkSw9vzfjGb/JFGfGxvHvILx1+87de0f3owcPHz0+7j15em7qRlOY0prX+iIjBjiTMLXMcrhQGojIOMyy1aTTZ2vQhtXyh90qWAhSSlYwSqynlr1fqSI6q3+6JKGidVFqioIIxrc4SiVsaC0EkblLJ5PWpYLYihLuJm17qM5mezXL3KwT/aNmxdRbZaNUk7KEXLOystGbEf4EhOMNsxWmfm6DNxVowIOPA3+XQ4szwBvNrAWJicGDb9MBPrm8VGxdWybL4fB11C57/XgU7wLfBMke9NE+zpa9P2le00aAtJQTY+ZJrOzCEW0Z5eDnbQwoQlekhLmHkggwC7dzt8WvPJPjotb+SIt37L8VjghjtiLzmZ0F5rrWkf/T5o0t3i8ck6rxn6VXjYqGY1vjblU4Zxqo9avIGaHeEkYxrYgm1PqFHnSpgK/BtviAzERnVHLdlpvg/HSUxKPk+2l//GFv2RF6gV6iE5Sgd2iMPqMzNEU0eB6Mgy/B13ASslCF+io1DPY1z9BBhO4vZg3akw==</latexit><latexit sha1_base64="ClooqdjeRKnklSKCXCC8U7U+jcY=">AAACwXicbVFNj9MwEHXC1xI+tsANLhYt6nKpkgUJDhyKygEQh0Wi25Waqus4k8Sq7Vi201JZ+Vf8Gf4IZ5xuD3SXkSw9vzfjGb/JFGfGxvHvILx1+87de0f3owcPHz0+7j15em7qRlOY0prX+iIjBjiTMLXMcrhQGojIOMyy1aTTZ2vQhtXyh90qWAhSSlYwSqynlr1fqSI6q3+6JKGidVFqioIIxrc4SiVsaC0EkblLJ5PWpYLYihLuJm17qM5mezXL3KwT/aNmxdRbZaNUk7KEXLOystGbEf4EhOMNsxWmfm6DNxVowIOPA3+XQ4szwBvNrAWJicGDb9MBPrm8VGxdWybL4fB11C57/XgU7wLfBMke9NE+zpa9P2le00aAtJQTY+ZJrOzCEW0Z5eDnbQwoQlekhLmHkggwC7dzt8WvPJPjotb+SIt37L8VjghjtiLzmZ0F5rrWkf/T5o0t3i8ck6rxn6VXjYqGY1vjblU4Zxqo9avIGaHeEkYxrYgm1PqFHnSpgK/BtviAzERnVHLdlpvg/HSUxKPk+2l//GFv2RF6gV6iE5Sgd2iMPqMzNEU0eB6Mgy/B13ASslCF+io1DPY1z9BBhO4vZg3akw==</latexit><latexit sha1_base64="ClooqdjeRKnklSKCXCC8U7U+jcY=">AAACwXicbVFNj9MwEHXC1xI+tsANLhYt6nKpkgUJDhyKygEQh0Wi25Waqus4k8Sq7Vi201JZ+Vf8Gf4IZ5xuD3SXkSw9vzfjGb/JFGfGxvHvILx1+87de0f3owcPHz0+7j15em7qRlOY0prX+iIjBjiTMLXMcrhQGojIOMyy1aTTZ2vQhtXyh90qWAhSSlYwSqynlr1fqSI6q3+6JKGidVFqioIIxrc4SiVsaC0EkblLJ5PWpYLYihLuJm17qM5mezXL3KwT/aNmxdRbZaNUk7KEXLOystGbEf4EhOMNsxWmfm6DNxVowIOPA3+XQ4szwBvNrAWJicGDb9MBPrm8VGxdWybL4fB11C57/XgU7wLfBMke9NE+zpa9P2le00aAtJQTY+ZJrOzCEW0Z5eDnbQwoQlekhLmHkggwC7dzt8WvPJPjotb+SIt37L8VjghjtiLzmZ0F5rrWkf/T5o0t3i8ck6rxn6VXjYqGY1vjblU4Zxqo9avIGaHeEkYxrYgm1PqFHnSpgK/BtviAzERnVHLdlpvg/HSUxKPk+2l//GFv2RF6gV6iE5Sgd2iMPqMzNEU0eB6Mgy/B13ASslCF+io1DPY1z9BBhO4vZg3akw==</latexit>
1. Assume that L,U, b are given and write functions for obtainingy = L�1b and x = U�1y.
General plan: split a big task into pieces and deal with them one at a time. It's good if the pieces correspond to MATLAB functions
5
Algorithm for inverting L and U
. . . since we already know y1 we can compute y2<latexit sha1_base64="SsLRar69KlolImk59a815oYDWyc=">AAACp3icbVHLjtMwFHXCayivDixYsLGYgmBTkhEjWKGRumHHINGH1FTVjXMztepHZDtTIis/wp/xE7NkjdN2QWe4kqWjc67v49y8Ety6JPkdxXfu3rv/4Ohh79HjJ0+f9Y+fT6yuDcMx00KbWQ4WBVc4dtwJnFUGQeYCp/l61OnTKzSWa/XDNRUuJFwqXnIGLlDL/q+sApPrnz5NhmdMtr6X2bIEyUVDe5nCDdNSgip8Nhq1PpPgVgyEH7XtoTqd7tU899NODGXtmlcfK9fLCu0stVwxpBukIMKARUPXSm/ooFmmg45loGioVtUOO/J00C77J8kw2Qa9DdI9ODl/eX1NCSEXy/6f0InVEpVjAqydp0nlFh6M40xgmKm2WAFbwyXOA1Qg0S781sOWvglMQUttwlOObtl/f3iQ1jYyD5ndmvam1pH/0+a1Kz8vPFfdZortGpW1oE7T7iC04AaZC3YXHJjhYVbKVmCAuXC2gy4rFFfoWnpA5rIzKr1py20wOR2GG6ffg2NfyC6OyCvymrwjKflEzslXckHGhEUkeht9iJL4ffwtnsSzXWoc7f+8IAcRw199o9Ps</latexit><latexit sha1_base64="ALFA1tjwQmNrHGgyRWnFjqJp/Uw=">AAACp3icbVHLjtMwFHXCayiP6cCCBRuLKQg2JRmBhgVCI3XDjkGiTaWmqm6cm6lV24lsZ0pk5Uf4Db6GD2A7S9Y4bRd0hitZOjrn+j7OzSrBjY2iX0F46/adu/cO7vcePHz0+LB/9GRiylozHLNSlHqagUHBFY4ttwKnlUaQmcAkW406PblEbXipvtmmwrmEC8ULzsB6atH/kVags/K7i6PheyZb10tNUYDkoqG9VOGalVKCyl06GrUulWCXDIQbte2+miQ7Nctc0om+rFnx6l1le2leWkMNVwzpGikIP2De0JUq13TQLOJBxzJQ1FeraosdeTJoF/3jaBhtgt4E8Q4cnz27ujr8+PP3+aL/x3ditURlmQBjZnFU2bkDbTkT6GeqDVbAVnCBMw8VSDRzt/GwpS89k9Oi1P4pSzfsvz8cSGMamfnMbk1zXevI/2mz2hYf5o6rbjPFto2KWlBb0u4gNOcamfV25xyY5n5WypaggVl/tr0uSxSXaFu6R2ayMyq+bstNMDkZ+hvHX71jn8g2Dshz8oK8JjE5JWfkMzknY8ICErwK3gZR+Cb8Ek7C6TY1DHZ/npK9COEvFvPVrw==</latexit><latexit sha1_base64="ALFA1tjwQmNrHGgyRWnFjqJp/Uw=">AAACp3icbVHLjtMwFHXCayiP6cCCBRuLKQg2JRmBhgVCI3XDjkGiTaWmqm6cm6lV24lsZ0pk5Uf4Db6GD2A7S9Y4bRd0hitZOjrn+j7OzSrBjY2iX0F46/adu/cO7vcePHz0+LB/9GRiylozHLNSlHqagUHBFY4ttwKnlUaQmcAkW406PblEbXipvtmmwrmEC8ULzsB6atH/kVags/K7i6PheyZb10tNUYDkoqG9VOGalVKCyl06GrUulWCXDIQbte2+miQ7Nctc0om+rFnx6l1le2leWkMNVwzpGikIP2De0JUq13TQLOJBxzJQ1FeraosdeTJoF/3jaBhtgt4E8Q4cnz27ujr8+PP3+aL/x3ditURlmQBjZnFU2bkDbTkT6GeqDVbAVnCBMw8VSDRzt/GwpS89k9Oi1P4pSzfsvz8cSGMamfnMbk1zXevI/2mz2hYf5o6rbjPFto2KWlBb0u4gNOcamfV25xyY5n5WypaggVl/tr0uSxSXaFu6R2ayMyq+bstNMDkZ+hvHX71jn8g2Dshz8oK8JjE5JWfkMzknY8ICErwK3gZR+Cb8Ek7C6TY1DHZ/npK9COEvFvPVrw==</latexit><latexit sha1_base64="uzzfJu126xz6/BJp51ebeV2YSEQ=">AAACp3icbVHLjtMwFHXCayiPKbBkY9GCYFOSEQhWaKRu2DFI9CE1VXXj3Eyt+hHZzpTIyo/wZ/wIa5xOFnSGK1k6Ouf6Ps7NK8GtS5LfUXzn7r37D04eDh49fvL0dPjs+dzq2jCcMS20WeZgUXCFM8edwGVlEGQucJHvpp2+uEJjuVY/XFPhWsKl4iVn4AK1Gf7KKjC5/unTZPKRydYPMluWILlo6CBTuGdaSlCFz6bT1mcS3JaB8NO2PVYXi17Nc7/oxFDW7nj1oXKDrNDOUssVQ7pHCiIMWDR0p/SejptNOu5YBoqGalXtsCPPxu1mOEomySHobZD2YET6uNgM/4ROrJaoHBNg7SpNKrf2YBxnAsNMtcUK2A4ucRWgAol27Q8etvR1YApaahOecvTA/vvDg7S2kXnI7Na0N7WO/J+2ql35ee256jZT7LpRWQvqNO0OQgtukLlgd8GBGR5mpWwLBpgLZzvqskVxha6lR2QuO6PSm7bcBvOzSbhx+j0ZnX/pLTshL8kr8pak5BM5J1/JBZkRFpHoTfQ+SuJ38bd4Hi+vU+Oo//OCHEUMfwEGM9GZ</latexit>
. . . we already know y1 . . . yk�1 so can compute yk<latexit sha1_base64="1LWbTsNJJRq4NAjj12LgnmVbU0Q=">AAACrnicbVHLbtNAFB2bR0t4pbCDzYgGiU0juwLKClWEBcsikbhSbFnX43Ez8jysmXFTa2SJX+Gz+BHWjJMsSMuVRjo65859nFs0nBkbRb+D8N79Bw8PDh+NHj95+uz5+OjFwqhWEzoniit9WYChnEk6t8xyetloCqLgNCnq2aAn11QbpuQP2zU0E3AlWcUIWE/l419pA7pQNy6Oph+I6N0oNVUFgvEOj1JJ10QJAbJ06WzWu1SAXRHgbtb3+2qS7NSicMkg+rKmZs37xo7SUlmD1xQD96OVHa6lWuNJl8dbpctdfRL3E2wUJiCxL9q0lg4Z9aTPx8fRNNoEvgviHTg+f/X1y0+E0EU+/uPLklZQaQkHY5Zx1NjMgbaMcOpHaw1tgNRwRZceShDUZG5jZY/feqbEldL+SYs37L8/HAhjOlH4zGFbc1sbyP9py9ZWnzLH5LCZJNtGVcuxVXi4Cy6ZpsR610sGRDM/KyYr0ECsv95elxXl19T2eI8sxGBUfNuWu2BxOvWnjr97xz6jbRyi1+gNeodidIbO0Td0geaIBAfBSfAxOAujcBFmYb5NDYPdn5doL8LVX3hT1hs=</latexit><latexit sha1_base64="gbc0nWeHHQGx94QfMN73+v5YLz4=">AAACrnicbVHLjtMwFHXCY4byKrCDjcUUic1UyQgYVmhEWbAcJNqM1ETRjeNMrfgR2c6UyMqOH+GH2LPiL1jjtF3QGa5k6eic6/s4t2g4MzaKfgXhrdt37h4c3hvdf/Dw0ePxk6cLo1pN6JworvRFAYZyJuncMsvpRaMpiILTpKhng55cUW2Ykl9t19BMwKVkFSNgPZWPf6QN6EJ9c3E0fUtE70apqSoQjHd4lEq6JkoIkKVLZ7PepQLsigB3s77fV5NkpxaFSwbRlzU1a940dpSWyhq8phi4H63scC3VGk+6PN4qXe7q47ifYKMwAYl90aa1dMioJ30+Poqm0SbwTRDvwNHZ808fv//+GZ/n4z++LGkFlZZwMGYZR43NHGjLCKd+tNbQBkgNl3TpoQRBTeY2Vvb4lWdKXCntn7R4w/77w4EwphOFzxy2Nde1gfyftmxt9T5zTA6bSbJtVLUcW4WHu+CSaUqsd71kQDTzs2KyAg3E+uvtdVlRfkVtj/fIQgxGxddtuQkWJ1N/6viLd+wD2sYheoFeotcoRqfoDH1G52iOSHAQHAfvgtMwChdhFubb1DDY/XmG9iJc/QVA6tf9</latexit><latexit sha1_base64="gbc0nWeHHQGx94QfMN73+v5YLz4=">AAACrnicbVHLjtMwFHXCY4byKrCDjcUUic1UyQgYVmhEWbAcJNqM1ETRjeNMrfgR2c6UyMqOH+GH2LPiL1jjtF3QGa5k6eic6/s4t2g4MzaKfgXhrdt37h4c3hvdf/Dw0ePxk6cLo1pN6JworvRFAYZyJuncMsvpRaMpiILTpKhng55cUW2Ykl9t19BMwKVkFSNgPZWPf6QN6EJ9c3E0fUtE70apqSoQjHd4lEq6JkoIkKVLZ7PepQLsigB3s77fV5NkpxaFSwbRlzU1a940dpSWyhq8phi4H63scC3VGk+6PN4qXe7q47ifYKMwAYl90aa1dMioJ30+Poqm0SbwTRDvwNHZ808fv//+GZ/n4z++LGkFlZZwMGYZR43NHGjLCKd+tNbQBkgNl3TpoQRBTeY2Vvb4lWdKXCntn7R4w/77w4EwphOFzxy2Nde1gfyftmxt9T5zTA6bSbJtVLUcW4WHu+CSaUqsd71kQDTzs2KyAg3E+uvtdVlRfkVtj/fIQgxGxddtuQkWJ1N/6viLd+wD2sYheoFeotcoRqfoDH1G52iOSHAQHAfvgtMwChdhFubb1DDY/XmG9iJc/QVA6tf9</latexit><latexit sha1_base64="ELdX9RRVsy1kuDU/aUtLpCvM460=">AAACrnicbVHLjtMwFHXCY4byKrBkY9EisZkqGQHDCo3UDctBos1ITRTdOM7Uih+R7UyJrHwMn8WPsMZps6AzXMnS0TnX93Fu0XBmbBT9DsIHDx89Pjl9Mnn67PmLl9NXr9dGtZrQFVFc6esCDOVM0pVlltPrRlMQBadJUS8HPbml2jAlf9iuoZmAG8kqRsB6Kp/+ShvQhfrp4mjxiYjeTVJTVSAY7/AklXRHlBAgS5cul71LBdgtAe6WfX+sJsmoFoVLBtGXNTVrPjZ2kpbKGryjGLgfrexwLdUOz7s8Pihd7uqzuJ9jozABiX3RprV0yKjnfT6dRYtoH/g+iEcwQ2Nc5dM/vixpBZWWcDBmE0eNzRxoywinfrTW0AZIDTd046EEQU3m9lb2+L1nSlwp7Z+0eM/++8OBMKYThc8ctjV3tYH8n7ZpbfUlc0wOm0lyaFS1HFuFh7vgkmlKrHe9ZEA087NisgUNxPrrHXXZUn5LbY+PyEIMRsV3bbkP1ucLf+r4ezS7/DpadoreonfoA4rRBbpE39AVWiESnARnwefgIozCdZiF+SE1DMY/b9BRhNu/a53Uuw==</latexit>
We can use a loop to compute y1, y2, . . . , yn<latexit sha1_base64="dD5+LM/2ttJnz1TQ3Umb9YP9Ggg=">AAACqHicbVFNj9MwEHXC11K+Chw4cLHYRSC0qpIVCE5opV44FoluFjVVZDuTrVV/yXYWIiu/hF/Gn9gjZ5y2B7rLSJae3pvxzLyhRnDns+x3kt66fefuvYP7owcPHz1+Mn767Mzp1jKYMy20PafEgeAK5p57AefGApFUQEHX00EvLsE6rtU33xlYSnKheMMZ8ZGqxr9KQyzVP0OeTT4w2YdR6ZqGSC46PCoV/GBaSqLqUE6nfSgl8StGRJj2/b5aFDuV0lAMYvzWrbl5b/yoBGlWoQDMiMKtA0yw0Npgr3GsN60HfNRV+XFXnRyXtfYuInXU99X4MJtkm8A3Qb4Dh6cvrq4wQmhWjf/EctZKUJ4J4twiz4xfBmI9ZwLiULG5IWxNLmARoSIS3DJsTOzx68jUuNE2PuXxhv23IhDpXCdpzBz2dNe1gfyftmh982kZuBoWVWzbqGnFsP5wEVxzC8xHv2tOmOVxVsxWxBLm4932uqxAXILv8R5J5WBUft2Wm+DsZBKPnH+Njn1G2zhAL9Er9Bbl6CM6RV/QDM0RS5LkTZIlefounaVF+n2bmia7mudoL1L6F0oq1NI=</latexit><latexit sha1_base64="XlnDWr66rOaOTuh43lNjr3uJJJc=">AAACqHicbVFNbxMxEPUuXyV8NMCBAxeLFoFQFe1WIDggVCkXjkEi3aJstLKd2caKv2R7Cytrfwk/g1/DD+DaI2e8SQ6kZSRLT+/NeGbeUCO481n2K0lv3Lx1+87e3cG9+w8e7g8fPT51urEMpkwLbc8ocSC4gqnnXsCZsUAkFVDQ1bjXiwuwjmv1xbcG5pKcK15zRnykquGP0hBL9feQZ6O3THZhULq6JpKLFg9KBd+YlpKoRSjH4y6UkvglIyKMu25XLYqtSmkoejF+61bcvDF+UII0y1AAZkThxgEmWGhtsNc41pvGAz5sq/yorY6PyoX2LiJ12HXV8CAbZevA10G+BQcnTy8v9z/8/D2phn9iOWskKM8EcW6WZ8bPA7GeMwFxqNjcELYi5zCLUBEJbh7WJnb4RWQWuNY2PuXxmv23IhDpXCtpzOz3dFe1nvyfNmt8/X4euOoXVWzTqG5Ev35/EbzgFpiPfi84YZbHWTFbEkuYj3fb6bIEcQG+wzsklb1R+VVbroPT41E8cv45OvYRbWIPPUPP0SuUo3foBH1CEzRFLEmSl0mW5OnrdJIW6ddNappsa56gnUjpX+Nr1pU=</latexit><latexit sha1_base64="XlnDWr66rOaOTuh43lNjr3uJJJc=">AAACqHicbVFNbxMxEPUuXyV8NMCBAxeLFoFQFe1WIDggVCkXjkEi3aJstLKd2caKv2R7Cytrfwk/g1/DD+DaI2e8SQ6kZSRLT+/NeGbeUCO481n2K0lv3Lx1+87e3cG9+w8e7g8fPT51urEMpkwLbc8ocSC4gqnnXsCZsUAkFVDQ1bjXiwuwjmv1xbcG5pKcK15zRnykquGP0hBL9feQZ6O3THZhULq6JpKLFg9KBd+YlpKoRSjH4y6UkvglIyKMu25XLYqtSmkoejF+61bcvDF+UII0y1AAZkThxgEmWGhtsNc41pvGAz5sq/yorY6PyoX2LiJ12HXV8CAbZevA10G+BQcnTy8v9z/8/D2phn9iOWskKM8EcW6WZ8bPA7GeMwFxqNjcELYi5zCLUBEJbh7WJnb4RWQWuNY2PuXxmv23IhDpXCtpzOz3dFe1nvyfNmt8/X4euOoXVWzTqG5Ev35/EbzgFpiPfi84YZbHWTFbEkuYj3fb6bIEcQG+wzsklb1R+VVbroPT41E8cv45OvYRbWIPPUPP0SuUo3foBH1CEzRFLEmSl0mW5OnrdJIW6ddNappsa56gnUjpX+Nr1pU=</latexit><latexit sha1_base64="jxz8tN54WeBYKchDYB10cNSTl4w=">AAACqHicbVFNbxMxEPUuXyV8NIUjF4sUgVAV7VagckKVcuEYJNItykYr25ltrPhLtrewsvaX8Mv4I5zxpnsgLSNZenpvxjPzhhrBnc+y30l67/6Dh48OHo+ePH32/HB89OLC6cYyWDAttL2kxIHgChaeewGXxgKRVEBBt7NeL67BOq7VN98aWElypXjNGfGRqsa/SkMs1T9Dnk0/MtmFUenqmkguWjwqFfxgWkqi1qGczbpQSuI3jIgw67p9tSgGldJQ9GL81m25+WD8qARpNqEAzIjCjQNMsNDaYK9xrDeNB3zcVvlJW52elGvtXUTquOuq8SSbZrvAd0E+gAkaYl6N/8Ry1khQngni3DLPjF8FYj1nAuJQsbkhbEuuYBmhIhLcKuxM7PCbyKxxrW18yuMd+29FINK5VtKY2e/pbms9+T9t2fj60ypw1S+q2E2juhH9+v1F8JpbYD76veaEWR5nxWxDLGE+3m2vywbENfgO75FU9kblt225Cy5Op/HI+ddscv55sOwAvUKv0TuUozN0jr6gOVogliTJ2yRL8vR9Ok+L9PtNapoMNS/RXqT0L9Kr0n8=</latexit>
Ly = b means that<latexit sha1_base64="yl94lrwovgMpESyYb0s4nfiHwWk=">AAACjnicbVFNb9QwFHTCR0ugNIAEBy4WWyROq6RClAMVlfbSA4cisU2lzWr17DiJtbYT2U5hZeXAz+QX8A8442xzYFueZGk0894be0xawY1Nkl9BeO/+g4d7+4+ix08Onh7Gz55fmqbTlM1pIxp9RcAwwRWbW24Fu2o1A0kEy8h6NujZNdOGN+qb3bRsKaFSvOQUrKdW8c+8BU2aHy5NqexdlJuyBMnFBke5Yt9pIyWowuWzWe9yCbamINys73fVLBtVQlw2iH6pWfP2fWujXENVsULzqrbR0ZfNKTnCkoEy2NZgo34VT5Jpsi18F6QjmKCxLlbxn7xoaCeZslSAMYs0ae3SgbacCubNO8NaoGuo2MJDBZKZpdtG1eO3nilw2Wh/lMVb9t8JB9KYjSS+c3iPua0N5P+0RWfLj0vHVdtZpuiNUdkJbBs85I4Lrhm1PteCA9Xc3xXTGjRQ639nx6Vm4prZHu+QRA5BpbdjuQsuj6dpMk2/Hk/OPo2R7aPX6A16h1J0gs7QObpAc0TR7+AgeBm8CuPwQ3gafr5pDYNx5gXaqfD8L/bqyXI=</latexit><latexit sha1_base64="yl94lrwovgMpESyYb0s4nfiHwWk=">AAACjnicbVFNb9QwFHTCR0ugNIAEBy4WWyROq6RClAMVlfbSA4cisU2lzWr17DiJtbYT2U5hZeXAz+QX8A8442xzYFueZGk0894be0xawY1Nkl9BeO/+g4d7+4+ix08Onh7Gz55fmqbTlM1pIxp9RcAwwRWbW24Fu2o1A0kEy8h6NujZNdOGN+qb3bRsKaFSvOQUrKdW8c+8BU2aHy5NqexdlJuyBMnFBke5Yt9pIyWowuWzWe9yCbamINys73fVLBtVQlw2iH6pWfP2fWujXENVsULzqrbR0ZfNKTnCkoEy2NZgo34VT5Jpsi18F6QjmKCxLlbxn7xoaCeZslSAMYs0ae3SgbacCubNO8NaoGuo2MJDBZKZpdtG1eO3nilw2Wh/lMVb9t8JB9KYjSS+c3iPua0N5P+0RWfLj0vHVdtZpuiNUdkJbBs85I4Lrhm1PteCA9Xc3xXTGjRQ639nx6Vm4prZHu+QRA5BpbdjuQsuj6dpMk2/Hk/OPo2R7aPX6A16h1J0gs7QObpAc0TR7+AgeBm8CuPwQ3gafr5pDYNx5gXaqfD8L/bqyXI=</latexit><latexit sha1_base64="yl94lrwovgMpESyYb0s4nfiHwWk=">AAACjnicbVFNb9QwFHTCR0ugNIAEBy4WWyROq6RClAMVlfbSA4cisU2lzWr17DiJtbYT2U5hZeXAz+QX8A8442xzYFueZGk0894be0xawY1Nkl9BeO/+g4d7+4+ix08Onh7Gz55fmqbTlM1pIxp9RcAwwRWbW24Fu2o1A0kEy8h6NujZNdOGN+qb3bRsKaFSvOQUrKdW8c+8BU2aHy5NqexdlJuyBMnFBke5Yt9pIyWowuWzWe9yCbamINys73fVLBtVQlw2iH6pWfP2fWujXENVsULzqrbR0ZfNKTnCkoEy2NZgo34VT5Jpsi18F6QjmKCxLlbxn7xoaCeZslSAMYs0ae3SgbacCubNO8NaoGuo2MJDBZKZpdtG1eO3nilw2Wh/lMVb9t8JB9KYjSS+c3iPua0N5P+0RWfLj0vHVdtZpuiNUdkJbBs85I4Lrhm1PteCA9Xc3xXTGjRQ639nx6Vm4prZHu+QRA5BpbdjuQsuj6dpMk2/Hk/OPo2R7aPX6A16h1J0gs7QObpAc0TR7+AgeBm8CuPwQ3gafr5pDYNx5gXaqfD8L/bqyXI=</latexit><latexit sha1_base64="yl94lrwovgMpESyYb0s4nfiHwWk=">AAACjnicbVFNb9QwFHTCR0ugNIAEBy4WWyROq6RClAMVlfbSA4cisU2lzWr17DiJtbYT2U5hZeXAz+QX8A8442xzYFueZGk0894be0xawY1Nkl9BeO/+g4d7+4+ix08Onh7Gz55fmqbTlM1pIxp9RcAwwRWbW24Fu2o1A0kEy8h6NujZNdOGN+qb3bRsKaFSvOQUrKdW8c+8BU2aHy5NqexdlJuyBMnFBke5Yt9pIyWowuWzWe9yCbamINys73fVLBtVQlw2iH6pWfP2fWujXENVsULzqrbR0ZfNKTnCkoEy2NZgo34VT5Jpsi18F6QjmKCxLlbxn7xoaCeZslSAMYs0ae3SgbacCubNO8NaoGuo2MJDBZKZpdtG1eO3nilw2Wh/lMVb9t8JB9KYjSS+c3iPua0N5P+0RWfLj0vHVdtZpuiNUdkJbBs85I4Lrhm1PteCA9Xc3xXTGjRQ639nx6Vm4prZHu+QRA5BpbdjuQsuj6dpMk2/Hk/OPo2R7aPX6A16h1J0gs7QObpAc0TR7+AgeBm8CuPwQ3gafr5pDYNx5gXaqfD8L/bqyXI=</latexit>
[if Lkk = 0 for some k then L�1 does not exist and this (usually) fails]<latexit sha1_base64="hrr/ug5KyVuhspLAWGaMN1SnpCw=">AAACw3icbVHLbhMxFPUMrxIeDbCEhaGDVBZEMwhEN6CKCAmJLorUdCplQuTx3Gms8WNke0ojyxJfxb/wI6zxJFmQlrs6Oude3+tzypYzY9P0dxTfuHnr9p2du4N79x883B0+enxqVKcpTKjiSp+VxABnEiaWWQ5nrQYiSg552Yx7Pb8AbZiSJ3bZwkyQc8lqRokN1Hz4q2iJLtWly9LROyq8GxSmrolgfIkHhYQfVAlBZOWK8di7QhC7oIS7sffbap5v1LJ0eS+GZ03D2retHUxZjZOjuWsa/yFNcK00NkoATpoE2wXIIH53rzOf4EqBwVJZDJfh6zi8HBqYwfud6Qjny1e4JoybmZ8P99JRuip8HWQbsHf4/ODkJ0LoeD78U1SKdgKkpZwYM83S1s4c0ZZRDuHezkBLaEPOYRqgJALMzK389fhlYKrV3bWSFq/YfyccEcYsRRk6ewvMVa0n/6dNO1sfzByTbWdB0vWiuuPYKtyHhSumgdoQRcUI1SzciumCaEJtiHRrywL4BViPt8hS9EZlV225Dk7fjEL+2bfg2Ee0rh30FL1A+yhD79Eh+oKO0QTR6Fn0KfoaHcWf4ybWsV23xtFm5gnaqtj/BbWq3Sg=</latexit><latexit sha1_base64="DJaYT5AbiX2is1z2E1vq1MPR/zI=">AAACw3icbVHLbtQwFHXCqwyvKSxhYWiQyoJRgqjoBlQxQkKiiyJ1mkqTMHKcm44VPyLbKR1Z+QF+gf/gN1ix4EdY48zMgmm5q6Nz7vW9PqdoODM2jn8H4bXrN27e2ro9uHP33v0Hw+2HJ0a1msKEKq70aUEMcCZhYpnlcNpoIKLgkBb1uNfTc9CGKXlsFw3kgpxJVjFKrKdmwx9ZQ3ShLlwSj/ao6NwgM1VFBOMLPMgkfKVKCCJLl43HncsEsXNKuBt33aaapmu1KFzai/5ZU7PmdWMHU1bh6HDm6rp7G0e4UhobJQBHdYTtHKQXv7iXSRfhUoHBUlkMF/7r2L/sG5jBu61pCeeLF7gijJu8mw134lG8LHwVJGuwc/B0//jb95+/jmbDP1mpaCtAWsqJMdMkbmzuiLaMcvD3tgYaQmtyBlMPJRFgcrf0t8PPPVMu766UtHjJ/jvhiDBmIQrf2VtgLms9+T9t2tpqP3dMNq0FSVeLqpZjq3AfFi6ZBmp9FCUjVDN/K6Zzogm1PtKNLXPg52A7vEEWojcquWzLVXDyauTzTz57x96hVW2hx+gZ2kUJeoMO0Ed0hCaIBk+C98Gn4DD8ENahDu2qNQzWM4/QRoXdXxWK33E=</latexit><latexit sha1_base64="DJaYT5AbiX2is1z2E1vq1MPR/zI=">AAACw3icbVHLbtQwFHXCqwyvKSxhYWiQyoJRgqjoBlQxQkKiiyJ1mkqTMHKcm44VPyLbKR1Z+QF+gf/gN1ix4EdY48zMgmm5q6Nz7vW9PqdoODM2jn8H4bXrN27e2ro9uHP33v0Hw+2HJ0a1msKEKq70aUEMcCZhYpnlcNpoIKLgkBb1uNfTc9CGKXlsFw3kgpxJVjFKrKdmwx9ZQ3ShLlwSj/ao6NwgM1VFBOMLPMgkfKVKCCJLl43HncsEsXNKuBt33aaapmu1KFzai/5ZU7PmdWMHU1bh6HDm6rp7G0e4UhobJQBHdYTtHKQXv7iXSRfhUoHBUlkMF/7r2L/sG5jBu61pCeeLF7gijJu8mw134lG8LHwVJGuwc/B0//jb95+/jmbDP1mpaCtAWsqJMdMkbmzuiLaMcvD3tgYaQmtyBlMPJRFgcrf0t8PPPVMu766UtHjJ/jvhiDBmIQrf2VtgLms9+T9t2tpqP3dMNq0FSVeLqpZjq3AfFi6ZBmp9FCUjVDN/K6Zzogm1PtKNLXPg52A7vEEWojcquWzLVXDyauTzTz57x96hVW2hx+gZ2kUJeoMO0Ed0hCaIBk+C98Gn4DD8ENahDu2qNQzWM4/QRoXdXxWK33E=</latexit><latexit sha1_base64="B59Hg+iPClIewFqTy32OqP0yWQY=">AAACw3icbVHLbtQwFHXCqwyPDrCEhcUEqSwYJQgEG1DFCAmJLorENJUmw8hxbjpW/Ihsp3Rk+bf4F36ENc40C6blro7Oudf3+pyy5czYNP0dxTdu3rp9Z+/u6N79Bw/3x48enxjVaQpzqrjSpyUxwJmEuWWWw2mrgYiSQ142s17Pz0EbpuR3u2lhKciZZDWjxAZqNf5VtESX6sJl6fQtFd6NClPXRDC+waNCwk+qhCCycsVs5l0hiF1Twt3M+101zwe1LF3ei+FZ07D2TWtHC1bj5GjlmsZ/SBNcK42NEoCTJsF2DTKIP9yrzCe4UmCwVBbDRfg6Di+HBmbwQWc6wvnmJa4J42bpV+NJOk23ha+DbAATNNTxavynqBTtBEhLOTFmkaWtXTqiLaMcwr2dgZbQhpzBIkBJBJil2/rr8YvAVNu7ayUt3rL/TjgijNmIMnT2FpirWk/+T1t0tn6/dEy2nQVJLxfVHcdW4T4sXDEN1IYoKkaoZuFWTNdEE2pDpDtb1sDPwXq8Q5aiNyq7ast1cPJ6GvLPvqWTw4+DZXvoKXqODlCG3qFD9AUdozmi0bPoU/Q1Ooo/x02sY3vZGkfDzBO0U7H/C5WZ27s=</latexit>
6
MATLAB function
function [ y ] = Lsolve( L,b )%Lsolve: solve Ly = b (for y) where L is lower triangular and b is a vector% note: it is not checked that L is actually lower triangular [bRows,bCols] = size(b); [LRows,LCols] = size(L); if LRows ~= LCols || bRows ~= LRows || bCols ~= 1 error('Either L or b is the wrong size.') end if any( diag(L) == 0 ) error('There are zeros on the diagonal of L') end y = b; for k = 1:LRows for j = 1:k-1 y(k) = y(k) - L(k,j)*y(j); end y(k) = y(k)/L(k,k); endend
A key advantage of breaking up the complex task into functions is that we can test each function separately
Tests for the various functions that we write here are given in LUtest.m
It's a good idea to test some easy cases, but also to check what happens in nasty cases (eg if L and b don't have the right size, or L is a singular matrix).
8
Similar algorithm for U
You might imagine that there is a similar method that works for U . . .<latexit sha1_base64="Z68t11q4uwDxJka/wP+XcYaq5II=">AAACuXicbVFNb9NAEF2bj5bwFcqBA5cVLRKnyEYgKlVChVw4FonURXEUjdfjeMmu19odt0SW/xF/iD/RI2fWSQ6kZQ6rp/d2dt7Oy2olHUXR7yC8c/fe/b39B4OHjx4/eTp8dnDuTGMFToRRxl5k4FDJCickSeFFbRF0pjDJluNeTy7ROmmqb7SqcaZhUclCCiBPzYe/0hpsZn62cTR6L3TXDlJXFKClWvFBWuGVMFpDlbfpeNy1qQYqBah23HW7apJs1Sxrk170z7qlrN/VNPhuGq7loiQu/XRvlFMJ5A+0yKXjwJ30A8FyjVSafCNfGbt0vDCWH02O0tyQ6+bDw2gUrYvfBvEWHJ6+uL7mjLGz+fCPbxSNxoqEAuemcVTTrAVLUij0LhuHNYglLHDqYQUa3axdb7Xjrz2Trw0UpiK+Zv/taEE7t9KZv9l/3N3UevJ/2rSh4njWyqpuCCuxGVQ0ipPhfUQ8lxYF+QByCcJK75WLEiwI8kHuTClRXSJ1fIfMdL+o+OZaboPztyOfevzVb+wj29Q+e8lesTcsZh/YKfvCztiEieAgOA4+BZ/DkxDCMvyxuRoG257nbKdC9xcZ0tw2</latexit><latexit sha1_base64="BmNnOXY80nCK59oPwgRIAhcU4ic=">AAACuXicbVFNb9NAEF2brxI+mpYDBy4rWiROkY1AVCpChVw4Fok0RXEUjdfjeMmu19odt0SW/xE3fg0/gGuPnFknOZCWOaye3tvZeTsvrZR0FEW/gvDW7Tt37+3c7z14+Ojxbn9v/8yZ2gocCaOMPU/BoZIljkiSwvPKIuhU4ThdDDt9fIHWSVN+oWWFUw3zUuZSAHlq1v+RVGBT872Jo8Eboduml7g8By3VkveSEi+F0RrKrEmGw7ZJNFAhQDXDtt1Wx+ONmqbNuBP9s24hq9cV9b6amms5L4hLP90b5VQA+QMtcuk4cCf9QLBcIxUmW8uXxi4cz43lh6PDJDPk2ln/IBpEq+I3QbwBBydPr6523/38fTrr//GNotZYklDg3CSOKpo2YEkKhd5l7bACsYA5TjwsQaObNquttvyFZ7KVgdyUxFfsvx0NaOeWOvU3u4+761pH/k+b1JQfTRtZVjVhKdaD8lpxMryLiGfSoiAfQCZBWOm9clGABUE+yK0pBaoLpJZvkanuFhVfX8tNcPZq4FOPP/uNvWfr2mHP2HP2ksXsLTthn9gpGzER7AdHwYfgY3gcQliE39ZXw2DT84RtVej+ArMT3fk=</latexit><latexit sha1_base64="BmNnOXY80nCK59oPwgRIAhcU4ic=">AAACuXicbVFNb9NAEF2brxI+mpYDBy4rWiROkY1AVCpChVw4Fok0RXEUjdfjeMmu19odt0SW/xE3fg0/gGuPnFknOZCWOaye3tvZeTsvrZR0FEW/gvDW7Tt37+3c7z14+Ojxbn9v/8yZ2gocCaOMPU/BoZIljkiSwvPKIuhU4ThdDDt9fIHWSVN+oWWFUw3zUuZSAHlq1v+RVGBT872Jo8Eboduml7g8By3VkveSEi+F0RrKrEmGw7ZJNFAhQDXDtt1Wx+ONmqbNuBP9s24hq9cV9b6amms5L4hLP90b5VQA+QMtcuk4cCf9QLBcIxUmW8uXxi4cz43lh6PDJDPk2ln/IBpEq+I3QbwBBydPr6523/38fTrr//GNotZYklDg3CSOKpo2YEkKhd5l7bACsYA5TjwsQaObNquttvyFZ7KVgdyUxFfsvx0NaOeWOvU3u4+761pH/k+b1JQfTRtZVjVhKdaD8lpxMryLiGfSoiAfQCZBWOm9clGABUE+yK0pBaoLpJZvkanuFhVfX8tNcPZq4FOPP/uNvWfr2mHP2HP2ksXsLTthn9gpGzER7AdHwYfgY3gcQliE39ZXw2DT84RtVej+ArMT3fk=</latexit><latexit sha1_base64="FgHCiyfeyryr2zoN87InXG+wn2w=">AAACuXicbVFNb9NAEF2bj5bwFcqRy4oUiVNkIxCVKqFCLhyLRJqiOIrG63G8za7X2h23RJb/EX+IP8KZdeIDaZnD6um9nZ2389JKSUdR9DsI791/8PDg8NHg8ZOnz54PXxxdOFNbgVNhlLGXKThUssQpSVJ4WVkEnSqcpetJp8+u0Tppyu+0qXChYVXKXAogTy2Hv5IKbGp+NnE0/iB02wwSl+egpdrwQVLijTBaQ5k1yWTSNokGKgSoZtK2++ps1qtp2sw60T/r1rJ6X9Hgh6m5lquCuPTTvVFOBZA/0CKXjgN30g8EyzVSYbKdfGPs2vHcWH48PU4yQ65dDkfRONoWvwviHoxYX+fL4R/fKGqNJQkFzs3jqKJFA5akUOhd1g4rEGtY4dzDEjS6RbPdasvfeCbbGshNSXzL/tvRgHZuo1N/s/u4u6115P+0eU35yaKRZVUTlmI3KK8VJ8O7iHgmLQryAWQShJXeKxcFWBDkg9ybUqC6Rmr5HpnqblHx7bXcBRfvxj71+Fs0OvvUr+yQvWKv2VsWs4/sjH1l52zKRHAUnASfgy/haQhhEV7troZB3/OS7VXo/gKiU9nj</latexit>
We consider the rows in turn, but now starting from the last (nth) row<latexit sha1_base64="O1d+qyqRwSBPTjNETRP5FjZE2UA=">AAACwHicbVHLihNBFK1uX2N8RV2JIIUzwggSukXRlQ5mM+5GMNMD6RCqK7fTRerRVt2eGIv+kNn5D36NP+La6iQLM+OFgss591XnFLUUDpPkdxRfu37j5q292707d+/df9B/+OjUmcZyGHEjjT0rmAMpNIxQoISz2gJThYSsWAw7PjsH64TRX3FVw0SxuRal4AwDNO3/ymtmC/Pdp8ngLVet7+WuLJkSckV7uYYlN0oxPfP5cNj6XDGsOJN+2La7bJZt2aLwWUeGsW4h6jc19jKg3GgnZmApVkCtWToqNMXG6le0aJBqs6QOmUWh57S0Rq3rclB15SVzLdLDA32A1cuut53295NBsg56NUm3yf7Rs4uLn4SQk2n/Tz4zvFGgkYdxbpwmNU58t49LCMc2DmrGF2wO45BqpsBN/Frclr4IyIyWxoanka7Rfzs8U86tVBEqu/+7y1wH/o8bN1i+n3ih6wZB882ispEUDe2cojNhgWPwYSYYtyLcSnnFLOMY/NzZUoE8B2zpDlioTqj0sixXk9PXg2B++iUo9oFsYo88Jc/JIUnJO3JEjskJGREePYk+RsfR5/hTXMUm/rYpjaNtz2OyE/GPv8Kt3sg=</latexit><latexit sha1_base64="DEAklTGH/eRrRCfk2IxwGA1r23s=">AAACwHicbVHLihNBFK1uX2N8TNSVCFI4I4wgoVsUXelgNuNuBDM9kA6hunI7XaQebdXtibHoD9Hf8Gv8EddWJ1mYGS8UXM65rzqnqKVwmCS/o/ja9Rs3b+3d7t25e+/+fv/BwzNnGsthxI009rxgDqTQMEKBEs5rC0wVErJiMez47AKsE0Z/wVUNE8XmWpSCMwzQtP8rr5ktzDefJoM3XLW+l7uyZErIFe3lGpbcKMX0zOfDYetzxbDiTPph2+6yWbZli8JnHRnGuoWoX9fYy4Byo52YgaVYAbVm6ajQFBurX9KiQarNkjpkFoWe09Iata7LQdWVl8y1SI8O9SFWL7redto/SAbJOujVJN0mB8dPf3Tx83Ta/5PPDG8UaORhnBunSY0T3+3jEsKxjYOa8QWbwzikmilwE78Wt6XPAzKjpbHhaaRr9N8Oz5RzK1WEyu7/7jLXgf/jxg2W7yZe6LpB0HyzqGwkRUM7p+hMWOAYfJgJxq0It1JeMcs4Bj93tlQgLwBbugMWqhMqvSzL1eTs1SCYn34Oir0nm9gjT8gzckRS8pYckxNySkaER4+jD9FJ9Cn+GFexib9uSuNo2/OI7ET8/S9freCN</latexit><latexit sha1_base64="DEAklTGH/eRrRCfk2IxwGA1r23s=">AAACwHicbVHLihNBFK1uX2N8TNSVCFI4I4wgoVsUXelgNuNuBDM9kA6hunI7XaQebdXtibHoD9Hf8Gv8EddWJ1mYGS8UXM65rzqnqKVwmCS/o/ja9Rs3b+3d7t25e+/+fv/BwzNnGsthxI009rxgDqTQMEKBEs5rC0wVErJiMez47AKsE0Z/wVUNE8XmWpSCMwzQtP8rr5ktzDefJoM3XLW+l7uyZErIFe3lGpbcKMX0zOfDYetzxbDiTPph2+6yWbZli8JnHRnGuoWoX9fYy4Byo52YgaVYAbVm6ajQFBurX9KiQarNkjpkFoWe09Iata7LQdWVl8y1SI8O9SFWL7redto/SAbJOujVJN0mB8dPf3Tx83Ta/5PPDG8UaORhnBunSY0T3+3jEsKxjYOa8QWbwzikmilwE78Wt6XPAzKjpbHhaaRr9N8Oz5RzK1WEyu7/7jLXgf/jxg2W7yZe6LpB0HyzqGwkRUM7p+hMWOAYfJgJxq0It1JeMcs4Bj93tlQgLwBbugMWqhMqvSzL1eTs1SCYn34Oir0nm9gjT8gzckRS8pYckxNySkaER4+jD9FJ9Cn+GFexib9uSuNo2/OI7ET8/S9freCN</latexit><latexit sha1_base64="aXnHyBoQzOUSK4Tf3nC1E7PY2Ec=">AAACwHicbVHLjtMwFHXCayivAivExqKDNEioShAIVjCim2E3SHQyUlNVjnPTWPUj2DdTipWv4mv4EdY4nS7oDFeydHXOffmcopHCYZL8juIbN2/dvnNwd3Dv/oOHj4aPn5w501oOU26ksecFcyCFhikKlHDeWGCqkJAVq0nPZxdgnTD6G24amCu21KISnGGAFsNfecNsYX74NBm/46rzg9xVFVNCbugg17DmRimmS59PJp3PFcOaM+knXbfPZtmOLQqf9WQY61aiedvgIAPKjXaiBEuxBmrN2lGhKbZWv6ZFi1SbNXXILAq9pJU1aluXg2pqL5nrkB4d6kOsX/W93WI4SsbJNuj1JN0lI7KL08XwT14a3irQyMM4N0uTBue+38clhGNbBw3jK7aEWUg1U+DmfituR18GpKSVseFppFv03w7PlHMbVYTK/v/uKteD/+NmLVYf5l7opkXQ/HJR1UqKhvZO0VJY4Bh8KAXjVoRbKa+ZZRyDn3tbapAXgB3dAwvVC5VeleV6cvZmHMxPvyaj4487yQ7Ic/KCHJGUvCfH5ISckinh0bPoU3QSfYk/x3Vs4u+XpXG063lK9iL++ReAG9yY</latexit>
We solve Ux = y (for x)<latexit sha1_base64="6JkfkRiiciZdiGiF9UCcatN5+zE=">AAACjHicbVHLahsxFNVMH0mdNnX6WBWKaFxIN2amJCRQUgKG0mUKdSbgMUajuRML64WkSWzE0O/Irr/VD+gvdF2N7UWd9K4O59yrc3VuoTmzLkl+RfGDh48eb20/6ew8fbb7vLv34sKq2lAYUsWVuSyIBc4kDB1zHC61ASIKDlkxG7R6dg3GMiW/u4WGsSBXklWMEheoSfdHrokp1NynSf+IisZ3cltVRDC+wJ1cwg1VQhBZ+nwwaHwuiJtSwv2gaTbVLFurReGzVgzP2hnTh9p1MsBW8WvAveEcn+JFDx9UyuDevPehmXT3k36yLHwfpGuwf/b29vYnQuh80v2Tl4rWAqSjnFg7ShPtxp4YxyiHYFxb0ITOyBWMApREgB37ZVANfh+YErfmlZIOL9l/JzwR1i5EETrbv9i7Wkv+TxvVrjoZeyZ17UDSlVFVc+wUblPHJTNAXci0ZIQaFnbFdEoMoS7cZsNlCiEp1+ANshBtUOndWO6Di4/9cMj0W0jsM1rVNnqD3qEDlKJjdIa+onM0RBT9jnaiV9HreDc+jD/Fp6vWOFrPvEQbFX/5CyvvyQ8=</latexit><latexit sha1_base64="hcuKEAVZ1z7vu/CzwXOxg6hEMGM=">AAACjHicbVHdahNBGJ3d+lNTbVOrV4IMNkK9CbvSolAqhYB4WcF0C9kQZme/bYbMHzOzNWFY+hz6Zj6Ar+C1s0kuTOu5OpzzzZyZ8xWaM+uS5FcUbz14+Ojx9pPOztNnu3vd/eeXVtWGwpAqrsxVQSxwJmHomONwpQ0QUXDIitmg9bMbMJYp+c0tNIwFuZasYpS4IE26t7kmplBznyb9Eyoa38ltVRHB+AJ3cgnfqRKCyNLng0Hjc0HclBLuB02z6WbZ2i0Kn7VmuNbOmD7WrpMBtorfAO4N5/gML3r4qFIG9+a9d82ke5j0kyXwfZKuyeH56x8tfl5Mun/yUtFagHSUE2tHaaLd2BPjGOUQgmsLmtAZuYZRoJIIsGO/LKrBb4NS4ja8UtLhpfrvCU+EtQtRhMn2L/au14r/80a1qz6OPZO6diDpKqiqOXYKt63jkhmgLnRaMkINC2/FdEoMoS7sZiNlCqEp1+ANsRBtUendWu6Ty/f9sMj0a2jsE1phG71Cb9ARStEHdI6+oAs0RBT9jnaiF9HLeDc+jk/js9VoHK3PHKANxJ//AsjgytQ=</latexit><latexit sha1_base64="hcuKEAVZ1z7vu/CzwXOxg6hEMGM=">AAACjHicbVHdahNBGJ3d+lNTbVOrV4IMNkK9CbvSolAqhYB4WcF0C9kQZme/bYbMHzOzNWFY+hz6Zj6Ar+C1s0kuTOu5OpzzzZyZ8xWaM+uS5FcUbz14+Ojx9pPOztNnu3vd/eeXVtWGwpAqrsxVQSxwJmHomONwpQ0QUXDIitmg9bMbMJYp+c0tNIwFuZasYpS4IE26t7kmplBznyb9Eyoa38ltVRHB+AJ3cgnfqRKCyNLng0Hjc0HclBLuB02z6WbZ2i0Kn7VmuNbOmD7WrpMBtorfAO4N5/gML3r4qFIG9+a9d82ke5j0kyXwfZKuyeH56x8tfl5Mun/yUtFagHSUE2tHaaLd2BPjGOUQgmsLmtAZuYZRoJIIsGO/LKrBb4NS4ja8UtLhpfrvCU+EtQtRhMn2L/au14r/80a1qz6OPZO6diDpKqiqOXYKt63jkhmgLnRaMkINC2/FdEoMoS7sZiNlCqEp1+ANsRBtUendWu6Ty/f9sMj0a2jsE1phG71Cb9ARStEHdI6+oAs0RBT9jnaiF9HLeDc+jk/js9VoHK3PHKANxJ//AsjgytQ=</latexit><latexit sha1_base64="G0d4u/0fgV5M8+EA2FJdlcCdIeU=">AAACjHicbVHLahsxFNVM+kidNnX6WHUjahfSjZkpKQmUlIChdJlCnQl4jNFo7sTCeiFpEhsx5Dv7Af2FrqtxZlEnvavDOffqXJ1baM6sS5JfUbzz6PGTp7vPenvPX+y/7B+8urCqNhQmVHFlLgtigTMJE8cch0ttgIiCQ1Ysx62eXYOxTMmfbq1hJsiVZBWjxAVq3r/NNTGFWvk0GX2movG93FYVEYyvcS+XcEOVEESWPh+PG58L4haUcD9umm01yzq1KHzWiuFZu2T6SLteBtgqfg14OFnhU7we4sNKGTxcDT828/4gGSWbwg9B2oEB6up83v+Tl4rWAqSjnFg7TRPtZp4YxyiHYFxb0IQuyRVMA5REgJ35TVAN/hCYErfmlZIOb9h/JzwR1q5FETrbv9j7Wkv+T5vWrjqZeSZ17UDSO6Oq5tgp3KaOS2aAupBpyQg1LOyK6YIYQl24zZbLAkJSrsFbZCHaoNL7sTwEF59G4ZDpj2Rw9rWLbBe9Q+/RIUrRMTpD39E5miCKfkd70ZvobbwfH8Vf4tO71jjqZl6jrYq//QXpTsbf</latexit>
Last row: Unnxn = yn<latexit sha1_base64="MVf+EzKheqS0eH7g/yok6BprRsw=">AAACjXicbVHPaxQxGM2Mv+pa7aqoBy/BVvC0zBSLIiqFPejBQwW3U9hZhi+ZTDdsfpFk2i5hwH/Tf8Bjj57NbPfgtn4QeLz3fXnJ+4gR3Pks+5Wkt27fuXtv6/7gwfbDRzvDx0+OnW4tZROqhbYnBBwTXLGJ516wE2MZSCJYQRbjXi/OmHVcqx9+adhMwqniDafgI1UNf5YGLNEXIc9GB1R2YVC6pgHJxRIPSsXOqZYSVB3K8bgLpQQ/pyDCuOs21aJYq4SEohfjtW7BzVvjB9/AeWz1+Qe8N6mCUh2+qBT+hJeV2uuq4W42ylaFb4J8DXYPX1xeYoTQUTX8U9aatpIpTwU4N80z42cBrOdUsOjcOmaALuCUTSNUIJmbhVVSHX4dmRo32sajPF6x/04EkM4tJYmd/Wfcda0n/6dNW9+8nwWuTOuZoldGTSuw17iPHdfcMupjqDUHanl8K6ZzsEB9XM6Gy5yJM+Y7vEES2QeVX4/lJjjeH8VN5t9jYp/RVW2hl+gVeoNy9A4doq/oCE0QRb+T7eRZ8jzdSQ/Sj+m6N03WM0/RRqVf/gJkBsrS</latexit><latexit sha1_base64="YI/IwYNukjZ0rO9/vzpSYcJwUbA=">AAACjXicbVHLbhMxFPVMeZRQSKACFmwsWiRW0QyiAqEWVcoCFiyKRDqVMtHo2uNprPgxsj1tI2uk/hNfwwfAskvWeNIsSMuVLB2dc6+PfS6pBbcuSX5G8cadu/fubz7oPdx69Lg/ePL02OrGUDamWmhzQsAywRUbO+4EO6kNA0kEy8h81OnZGTOWa/XdLWo2lXCqeMUpuEAVg8u8BkP0hU+T4R6Vre/ltqpAcrHAvVyxc6qlBFX6fDRqfS7BzSgIP2rbdTXLViohPuvEcK2d8/pd7XpfwTps9PlHvDsuvFItvigUPsCLQu22xWAnGSbLwrdBugI7hy+urvr7P34dFYM/ealpI5lyVIC1kzSp3dSDcZwKFpwby2qgczhlkwAVSGanfplUi18HpsSVNuEoh5fsvxMepLULSUJn9xl7U+vI/2mTxlUfpp6runFM0WujqhHYadzFjktuGHUh1JIDNTy8FdMZGKAuLGfNZcbEGXMtXiOJ7IJKb8ZyGxy/HYZNpt9CYp/QdW2il+gVeoNS9B4doi/oCI0RRb+jrehZ9Dzux3vxfrzqjaPVzDZaq/jzX/1HzJU=</latexit><latexit sha1_base64="YI/IwYNukjZ0rO9/vzpSYcJwUbA=">AAACjXicbVHLbhMxFPVMeZRQSKACFmwsWiRW0QyiAqEWVcoCFiyKRDqVMtHo2uNprPgxsj1tI2uk/hNfwwfAskvWeNIsSMuVLB2dc6+PfS6pBbcuSX5G8cadu/fubz7oPdx69Lg/ePL02OrGUDamWmhzQsAywRUbO+4EO6kNA0kEy8h81OnZGTOWa/XdLWo2lXCqeMUpuEAVg8u8BkP0hU+T4R6Vre/ltqpAcrHAvVyxc6qlBFX6fDRqfS7BzSgIP2rbdTXLViohPuvEcK2d8/pd7XpfwTps9PlHvDsuvFItvigUPsCLQu22xWAnGSbLwrdBugI7hy+urvr7P34dFYM/ealpI5lyVIC1kzSp3dSDcZwKFpwby2qgczhlkwAVSGanfplUi18HpsSVNuEoh5fsvxMepLULSUJn9xl7U+vI/2mTxlUfpp6runFM0WujqhHYadzFjktuGHUh1JIDNTy8FdMZGKAuLGfNZcbEGXMtXiOJ7IJKb8ZyGxy/HYZNpt9CYp/QdW2il+gVeoNS9B4doi/oCI0RRb+jrehZ9Dzux3vxfrzqjaPVzDZaq/jzX/1HzJU=</latexit><latexit sha1_base64="GLl+yg3CGtNS/F25lz4u0coRy7w=">AAACjXicbVFdaxQxFM2MX3WtdlvRF1+CW8GnZaZYlFKlsA/64EMFt1PYWYY7mUw3bL5IMm2XMODf9A/0J/TZzDoPbuuFwOGce3OSc0vNmXVJ8juKHzx89PjJ1tPBs+3nL3aGu3tnVjWG0ClRXJnzEizlTNKpY47Tc20oiJLTrFxOOj27pMYyJX+6laZzAReS1YyAC1Qx/JVrMKW69mkyPiSi9YPc1jUIxld4kEt6RZQQICufTyatzwW4BQHuJ227qWZZr5alzzoxXGuXTH/QbvAdrMNGXR3h/WnhpWzxdSHxZ7wq5H5bDEfJOFkXvg/SHoxQX6fF8DavFGkElY5wsHaWJtrNPRjHCKfBubFUA1nCBZ0FKEFQO/frpFr8LjAVrpUJRzq8Zv+d8CCsXYkydHafsXe1jvyfNmtc/WnumdSNo5L8Naobjp3CXey4YoYSF0KtGBDDwlsxWYAB4sJyNlwWlF9S1+INshRdUOndWO6Ds4Nx2GT6IxmdfOkj20Jv0Fv0HqXoIzpB39ApmiKCbqLt6FX0Ot6JD+PjuO+No37mJdqo+Osf7IfIfw==</latexit>
. . . we know xj for j > k so we can compute xk.<latexit sha1_base64="8A1ufwL237E5gmtTyVcI7F87YUE=">AAACqHicbVHLbtNAFB2bVzGvAEuENKJGIBaRjajKqqqUDcsgkboojsKdybiZeh7WzLhpNPKX8GVs+AzWjJMsSMtdHZ1zn+eSRnDrsuxXFN+5e+/+g4OHyaPHT54+Gzx/cWZ1ayibUC20OSdgmeCKTRx3gp03hoEkghWkHvV6ccWM5Vp9c+uGzSRcKF5xCi5Q88HPsgFD9LXPs+ERlZ1PSltVILlY46RUbEW1lKAWvhyNOl9KcEsKwo+6bl8tip1KiC96MbS1NW8+NS4pF9pZvGK4VnqF0+v5ZYorbXB6eVKn2OpeoqBwaNa0jvUZdTrskvngMBtmm8C3Qb4Dh6ev1e8fCKHxfPAnjKKtZMpRAdZO86xxMw/GcSpYWKq1rAFawwWbBqhAMjvzGxM7/DYwi81elVYOb9h/KzxIa9eShMz+TntT68n/adPWVZ9nnqv+NkW3g6pWYKdx/xG84IZRF/xecKCGh10xXYIB6sLf9qYsmbhirsN7JJFdMCq/acttcPZxGJ6cfw2OnaBtHKBX6A16j3J0jE7RFzRGE0SjKHoXZVEef4jHcRF/36bG0a7mJdqLmPwFOPrTBA==</latexit><latexit sha1_base64="8PigtneAPN2n4Gh10+7avo2ymkI=">AAACqHicbVHLbtNAFB2bR4t5NMASIY2oEYhFZCMqkJCqStmwDFJTF8VRNDMeN1PPSzPjptHIn8AX8Bv8DBs+gzXjJAvScldH59znuVhzZl2W/YriO3fv3d/bf5A8fPT4ycHg6bMzq1pD6IQorsw5RpZyJunEMcfpuTYUCcxpgZtRrxdX1Fim5KlbaToT6EKymhHkAjUf/Cg1Mlhd+zwbHhHR+aS0dY0E4yuYlJIuiRICycqXo1HnS4HcgiDuR123qxbFVsXYF70Y2tqG6Q/aJWWlnIVLChupljC9nl+msFYGppfHTQqt6iWCJAzNdOton9Gkwy6ZDw6zYbYOeBvkW3B48lL+Pv35/fN4PvgTRpFWUOkIR9ZO80y7mUfGMcJpWKq1VCPSoAs6DVAiQe3Mr03s4OvAVOu9aiUdXLP/VngkrF0JHDL7O+1NrSf/p01bV3+aeSb72yTZDKpbDp2C/UdgxQwlLvhdMUQMC7tCskAGERf+tjNlQfkVdR3cIbHoglH5TVtug7P3w/Dk/Gtw7BhsYh+8AK/AW5CDj+AEfAFjMAEkiqI3URbl8bt4HBfxt01qHG1rnoOdiPFfWNnUdA==</latexit><latexit sha1_base64="8PigtneAPN2n4Gh10+7avo2ymkI=">AAACqHicbVHLbtNAFB2bR4t5NMASIY2oEYhFZCMqkJCqStmwDFJTF8VRNDMeN1PPSzPjptHIn8AX8Bv8DBs+gzXjJAvScldH59znuVhzZl2W/YriO3fv3d/bf5A8fPT4ycHg6bMzq1pD6IQorsw5RpZyJunEMcfpuTYUCcxpgZtRrxdX1Fim5KlbaToT6EKymhHkAjUf/Cg1Mlhd+zwbHhHR+aS0dY0E4yuYlJIuiRICycqXo1HnS4HcgiDuR123qxbFVsXYF70Y2tqG6Q/aJWWlnIVLChupljC9nl+msFYGppfHTQqt6iWCJAzNdOton9Gkwy6ZDw6zYbYOeBvkW3B48lL+Pv35/fN4PvgTRpFWUOkIR9ZO80y7mUfGMcJpWKq1VCPSoAs6DVAiQe3Mr03s4OvAVOu9aiUdXLP/VngkrF0JHDL7O+1NrSf/p01bV3+aeSb72yTZDKpbDp2C/UdgxQwlLvhdMUQMC7tCskAGERf+tjNlQfkVdR3cIbHoglH5TVtug7P3w/Dk/Gtw7BhsYh+8AK/AW5CDj+AEfAFjMAEkiqI3URbl8bt4HBfxt01qHG1rnoOdiPFfWNnUdA==</latexit><latexit sha1_base64="D4M1nzOntR6TA9bKz9U3sLx7EiM=">AAACqHicbVHLbtNAFB2bVwmvAEs2I2IEYhHZFQhWVaVsWAaJ1EVxFM2Mr5up52HNjJtGI38JX8aPsGacekFa7uronPs8lzaCW5emv6P43v0HDx8dPR49efrs+Yvxy1dnVreGwYJpoc05JRYEV7Bw3Ak4bwwQSQXktJ71en4FxnKtfrhdAytJLhSvOCMuUOvxr6Ihhuprn6XTz0x2flTYqiKSix0eFQq2TEtJVOmL2azzhSRuw4jws647VPN8UCn1eS+GtrbmzafGjYpSO4u3gGultzi5Xl8muNIGJ5cndYKt7iVGFA7NmtZBn1En0260Hk/SaboPfBdkA5igIebr8Z8wirUSlGOCWLvM0satPDGOMwFhqdZCQ1hNLmAZoCIS7MrvTezwu8CU+70qrRzes/9WeCKt3UkaMvs77W2tJ/+nLVtXfV15rvrbFLsZVLUCO437j+CSG2Au+F1ywgwPu2K2IYYwF/52MGUD4gpchw9IKrtgVHbblrvg7Hganpx9TyenJ4NlR+gNeos+oAx9QafoG5qjBWJRFL2P0iiLP8bzOI9/3qTG0VDzGh1ETP8CMGDQ+w==</latexit>
Again, use a loop to compute x1, x2, . . . , xn<latexit sha1_base64="xrYQOveqpJjOXaum0nXieiEWz9U=">AAACqHicbVFNj9MwEHXC11K+Chw4cLHYRSBUVckKBCe0qBeORaKbRU0VjV2nteov2c7Sysov4ZfxJ/bIGaftge4ykqWn92Y8M2+IEdz5LPudpLdu37l77+h+78HDR4+f9J8+O3e6sZRNqBbaXhBwTHDFJp57wS6MZSCJYAVZjTq9uGTWca2++41hMwkLxWtOwUeq6v8qDVii1yHPhh+obEOvdHUNkosN7pWK/aRaSlDzUI5GbSgl+CUFEUZte6gWxV4lJBSdGL91K27eG98rmTTL8GUBXA1w4xgGLLQ22Gsc603jGT5ZV/lgXZ0Oyrn2LiJ10rZV/zgbZtvAN0G+B8dnL66uMEJoXPX/xHLaSKY8FeDcNM+MnwWwnlPB4lCxuQG6ggWbRqhAMjcLWxNb/Doyc1xrG5/yeMv+WxFAOreRJGZ2e7rrWkf+T5s2vv40C1x1iyq6a1Q3olu/uwiec8uoj37POVDL46yYLsEC9fFuB12WTFwy3+IDksjOqPy6LTfB+ekwHjn/Fh37jHZxhF6iV+gtytFHdIa+ojGaIJokyZskS/L0XTpOi/THLjVN9jXP0UGk5C9B2dTN</latexit><latexit sha1_base64="rA5UIGl7DUvSWmQDCyUksT5We6c=">AAACqHicbVFNj9MwEHXC11I+tsCBAxeLXQRCVZWsQHBAaFEvHItEN4uaKho7TmvVX4qdpZWVX8LP4NfwA7jukTNO2wPdZSRLT+/NeGbeECO4dUnyK4pv3Lx1+87B3d69+w8eHvYfPT6zuqkpm1AtdH1OwDLBFZs47gQ7NzUDSQTLyHLU6dkFqy3X6qtbGzaTMFe84hRcoIr+j9xATfTKp8nwLZWt7+W2qkBysca9XLHvVEsJqvT5aNT6XIJbUBB+1Lb7apbtVEJ81onhW7vk5o1xvZxJs/Cf5sDVADeWYcBCa4OdxqHeNI7h41WRDlbFySAvtbMBqeO2LfpHyTDZBL4O0h04On16eXn44efvcdH/E8ppI5lyVIC10zQxbuahdpwKFoYKzQ3QJczZNEAFktmZ35jY4heBKXGl6/CUwxv23woP0tq1JCGz29Ne1Tryf9q0cdX7meeqW1TRbaOqEd363UVwyWtGXfC75EBrHmbFdAE1UBfuttdlwcQFcy3eI4nsjEqv2nIdnJ0Mw5HTL8Gxj2gbB+gZeo5eoRS9Q6foMxqjCaJRFL2MkiiNX8fjOIu/bVPjaFfzBO1FTP4C2xrWkA==</latexit><latexit sha1_base64="rA5UIGl7DUvSWmQDCyUksT5We6c=">AAACqHicbVFNj9MwEHXC11I+tsCBAxeLXQRCVZWsQHBAaFEvHItEN4uaKho7TmvVX4qdpZWVX8LP4NfwA7jukTNO2wPdZSRLT+/NeGbeECO4dUnyK4pv3Lx1+87B3d69+w8eHvYfPT6zuqkpm1AtdH1OwDLBFZs47gQ7NzUDSQTLyHLU6dkFqy3X6qtbGzaTMFe84hRcoIr+j9xATfTKp8nwLZWt7+W2qkBysca9XLHvVEsJqvT5aNT6XIJbUBB+1Lb7apbtVEJ81onhW7vk5o1xvZxJs/Cf5sDVADeWYcBCa4OdxqHeNI7h41WRDlbFySAvtbMBqeO2LfpHyTDZBL4O0h04On16eXn44efvcdH/E8ppI5lyVIC10zQxbuahdpwKFoYKzQ3QJczZNEAFktmZ35jY4heBKXGl6/CUwxv23woP0tq1JCGz29Ne1Tryf9q0cdX7meeqW1TRbaOqEd363UVwyWtGXfC75EBrHmbFdAE1UBfuttdlwcQFcy3eI4nsjEqv2nIdnJ0Mw5HTL8Gxj2gbB+gZeo5eoRS9Q6foMxqjCaJRFL2MkiiNX8fjOIu/bVPjaFfzBO1FTP4C2xrWkA==</latexit><latexit sha1_base64="sosv7JhDAMOZXZTBnCuebiIFF3g=">AAACqHicbVFNj9MwEHXC11I+tgtHLhZdBEJVlaxAcEKLeuFYJLpZ1FTR2HFaq/5S7Oy2svJL+GX8Ec443RzoLiNZenpvxjPzhhjBrUuS31F87/6Dh4+OHg+ePH32/Hh48uLC6qambE610PUlAcsEV2zuuBPs0tQMJBEsI5tpp2dXrLZcqx9uZ9hSwkrxilNwgSqGv3IDNdFbnyaTj1S2fpDbqgLJxQ4PcsWuqZYSVOnz6bT1uQS3piD8tG0P1SzrVUJ81onhW7vh5oNxg5xJs/ZfV8DVGDeWYcBCa4OdxqHeNI7h022RjrfF2TgvtbMBqdO2LYajZJLsA98FaQ9GqI9ZMfwTymkjmXJUgLWLNDFu6aF2nAoWhgrNDdANrNgiQAWS2aXfm9jiN4EpcaXr8JTDe/bfCg/S2p0kIbPb097WOvJ/2qJx1eel56pbVNGbRlUjuvW7i+CS14y64HfJgdY8zIrpGmqgLtztoMuaiSvmWnxAEtkZld625S64OJuEI6ffk9H5l96yI/QKvUbvUIo+oXP0Dc3QHNEoit5GSZTG7+NZnMU/b1LjqK95iQ4iJn8BylrSeg==</latexit>
9
Matlab translation
function [ x ] = Usolve( U,y )%Usolve: solve Ux = y (for x) where U is upper triangular% note: it is not checked that U is actually upper triangular [yRows,yCols] = size(y); [URows,UCols] = size(U); if URows ~= UCols || yRows ~= URows || yCols ~= 1 error('Either L or b is the wrong size.') end if any( diag(U) == 0 ) error('There are zeros on the diagonal of U') end n = URows; x = y; for k = n:-1:1 % loop downwards from n to 1 for j = k+1:n x(k) = x(k) - U(k,j)*x(j); end x(k) = x(k)/U(k,k); endend
Write y = Ux so x = U�1y and y = L�1b<latexit sha1_base64="ydccOR5yZxC55trd5Fxmfjb0c5Y=">AAACnHicbVFbb9MwGHXCZaNcVrbHSmCxTOKFKkFM7GXTpPKABEhDIs1QUyrbcVarvkS2MxpZ+Q38Pt74E/CM0/aBbnySpeNzvot9PlxxZmwc/wzCO3fv3d/ZfdB7+Ojxk73+0/2xUbUmNCWKK32JkaGcSZpaZjm9rDRFAnOa4cWo07Nrqg1T8ottKjoV6EqykhFkPTXr/8grpLFauiQeHhPRul5uyhIJxhvYyyX9TpQQSBYuH41alwtk5wRxN2rbbTXLNirGLutE39YsWPWmsr1MM0th1JymywgaBaPlafrNvUraJoK+uFM+ru44amf9w3gYrwLeBskGHJ4/H3z9BQC4mPX/5IUitaDSEo6MmSRxZacOacsIp/4htaEVIgt0RSceSiSombqVcS088kwBS6X9kRau2H8rHBLGNAL7zO5v5qbWkf/TJrUtT6aOyaq2VJL1oLLm0CrYbQEWTFNivccFQ8Tbwwgkc6QRsX5XW1PmlF9T28ItEovOqOSmLbfB+PXQLzb57B07A+vYBQPwArwECXgLzsF7cAFSQMDvYBBEwVH4LHwXfgg/rVPDYFNzALYiHP8FPb3O1A==</latexit><latexit sha1_base64="iOlVn4PBFwwHABHbq55Fiz+GvsI=">AAACnHicbVHLjtMwFHXCY2bKq8CyElhMRmJDlaBBsBk0UlkgAdIgkWZQUyrbcaZW/YhsZ2hk5RvY8T/zGSxY8wWwxmm7oDNcydLxOfdhn4srzoyN4x9BeO36jZs7u3u9W7fv3L3Xv/9gbFStCU2J4kqfYmQoZ5KmlllOTytNkcCcZngx6vTsnGrDlPxkm4pOBTqTrGQEWU/N+t/yCmmsli6Jhy+IaF0vN2WJBOMN7OWSfiVKCCQLl49GrcsFsnOCuBu17baaZRsVY5d1om9rFqw6rGwv08xSGDVH6TKCRsFoeZR+cc+StomgL+6U96s7jtpZfz8exquAV0GyAfvHjweff178+n4y6//JC0VqQaUlHBkzSeLKTh3SlhFO/UNqQytEFuiMTjyUSFAzdSvjWnjgmQKWSvsjLVyx/1Y4JIxpBPaZ3d/MZa0j/6dNalu+mjomq9pSSdaDyppDq2C3BVgwTYn1HhcMEW8PI5DMkUbE+l1tTZlTfk5tC7dILDqjksu2XAXj50O/2OSjd+w1WMcuGIAn4ClIwEtwDN6CE5ACAn4HgyAKDsJH4ZvwXfhhnRoGm5qHYCvC8V+JLdEP</latexit><latexit sha1_base64="iOlVn4PBFwwHABHbq55Fiz+GvsI=">AAACnHicbVHLjtMwFHXCY2bKq8CyElhMRmJDlaBBsBk0UlkgAdIgkWZQUyrbcaZW/YhsZ2hk5RvY8T/zGSxY8wWwxmm7oDNcydLxOfdhn4srzoyN4x9BeO36jZs7u3u9W7fv3L3Xv/9gbFStCU2J4kqfYmQoZ5KmlllOTytNkcCcZngx6vTsnGrDlPxkm4pOBTqTrGQEWU/N+t/yCmmsli6Jhy+IaF0vN2WJBOMN7OWSfiVKCCQLl49GrcsFsnOCuBu17baaZRsVY5d1om9rFqw6rGwv08xSGDVH6TKCRsFoeZR+cc+StomgL+6U96s7jtpZfz8exquAV0GyAfvHjweff178+n4y6//JC0VqQaUlHBkzSeLKTh3SlhFO/UNqQytEFuiMTjyUSFAzdSvjWnjgmQKWSvsjLVyx/1Y4JIxpBPaZ3d/MZa0j/6dNalu+mjomq9pSSdaDyppDq2C3BVgwTYn1HhcMEW8PI5DMkUbE+l1tTZlTfk5tC7dILDqjksu2XAXj50O/2OSjd+w1WMcuGIAn4ClIwEtwDN6CE5ACAn4HgyAKDsJH4ZvwXfhhnRoGm5qHYCvC8V+JLdEP</latexit><latexit sha1_base64="+2ZIKXtC7J62giGytGp4OXlPmQQ=">AAACnHicbVFbi9QwGE3rbR1voz4uSHC64ItDK4q+rCyMD4IKK9jpwnQckjTdCZMbSbpOCf0N/j5/iD6bzvbB2fWDwMk53yU5H9acWZemv6L4xs1bt+8c3B3du//g4aPx4ydzqxpDaE4UV+YMI0s5kzR3zHF6pg1FAnNa4M2s14sLaixT8ptrNV0KdC5ZzQhygVqNf5YaGay2Pkunb4jo/Ki0dY0E4y0clZL+IEoIJCtfzmadLwVya4K4n3XdvloUg4qxL3oxtLUbpl9rNyoMcxQm7XG+TaBVMNke59/9y6xrExiKe+Xz7o6TbjWepNN0F/A6yAYwAUOcrsZ/ykqRRlDpCEfWLrJUu6VHxjHCaXhIY6lGZIPO6SJAiQS1S78zroNHgalgrUw40sEd+2+FR8LaVuCQ2f/NXtV68n/aonH1u6VnUjeOSnI5qG44dAr2W4AVM5S44HHFEAn2MALJGhlEXNjV3pQ15RfUdXCPxKI3Krtqy3UwfzUNi82+ppOT94NlB+AQPAcvQAbeghPwEZyCHBDwOzqMkugofhZ/iD/FXy5T42ioeQr2Ip7/BbXwzSE=</latexit>
. . . this is the “philosophy of structured programming”
. . . break the task into functions and write each one separately, thenstick them together at the end
function [ x ] = LUsolve( L,U,b )%LUsolve: solve LUx=b where U is upper triag and L is lower triag y = Lsolve(L,b); x = Usolve(U,y);end
. . . we have done the hard part so this is easy now(!). . .<latexit sha1_base64="KRUMiQq1FmV/Vj3FXVIH/qgFh/I=">AAACrXicbVFNb9NAEF0bKCV8BTgioYUKqUgotREFTqhSLhyLROpKcYjW63Gyyn7Ju06IVv4hvfVv8Uc4M05yIC2jXWn2vZmdmTeFlcL5JPkdxXfu3ju4f/ig9/DR4ydP+8+eXzjT1BxG3EhTXxbMgRQaRl54CZe2BqYKCVmxGHZ8toTaCaN/+LWFiWIzLSrBmUdo2r/OLasL8yukyeCUqzb0cldVTAm5pr1cw4obpZguQz4ctiFXzM85k2HYtvtslu3YoghZR+K3biHsR+t7eWm8oyugc7YEWhoN1M+7V11SDPPUGQSEo3iAuTXVZnX8+t0mrZ32j5JBsjF620l3ztHZq6ura0LI+bT/BxN5o0B7Lplz4zSxfhKwjuASsLPGgWV8wWYwRlczBW4SNkq29C0iJa1MjVd7ukH/zQhMObdWBUZ2w7qbXAf+jxs3vvoyCULbxoPm20JVI6nH0XEttBQ1cI+il4LxWmCvlKNAjHtc3l6VOcgl+JbugYXqhEpvynLbufgwwE2n31Gxr2Rrh+QleUOOSUo+kzPyjZyTEeHRQfQ+Oo0+xSfxKM7jn9vQONrlvCB7Fs/+AiNx1sk=</latexit><latexit sha1_base64="kzGxKun1cL6zT9qYmtnAetAoRrs=">AAACrXicbVFNj9MwEHUCLEv56sIRCRlWSIuESoJ2gRNaqReOi0Q3KzWlcpxJa9Ufke20VFZ+CJz4W/wRzkzaHuguI1savzfjmXlT1FI4nyS/o/jW7TsHdw/v9e4/ePjocf/oyaUzjeUw4kYae1UwB1JoGHnhJVzVFpgqJGTFYtjx2RKsE0Z/9esaJorNtKgEZx6haf9XXjNbmO8hTQZnXLWhl7uqYkrINe3lGlbcKMV0GfLhsA25Yn7OmQzDtt1ns2zHFkXIOhK/dQtRn9a+l5fGO7oCOmdLoKXRQP28e9mSYpinziAgHMUDzK2pNquTF683ae20f5wMko3Rm066c47Pn//o7OfFtP8HE3mjQHsumXPjNKn9JGAdwSVgZ42DmvEFm8EYXc0UuEnYKNnSV4iUtDIWr/Z0g/6bEZhybq0KjOyGdde5DvwfN2589XEShK4bD5pvC1WNpB5Hx7XQUljgHkUvBeNWYK+Uo0CMe1zeXpU5yCX4lu6BheqESq/LctO5fDfATadfULFPZGuH5Bl5SU5ISj6Qc/KZXJAR4dFB9CY6i97Hb+NRnMfftqFxtMt5SvYsnv0FwGLYjg==</latexit><latexit sha1_base64="kzGxKun1cL6zT9qYmtnAetAoRrs=">AAACrXicbVFNj9MwEHUCLEv56sIRCRlWSIuESoJ2gRNaqReOi0Q3KzWlcpxJa9Ufke20VFZ+CJz4W/wRzkzaHuguI1savzfjmXlT1FI4nyS/o/jW7TsHdw/v9e4/ePjocf/oyaUzjeUw4kYae1UwB1JoGHnhJVzVFpgqJGTFYtjx2RKsE0Z/9esaJorNtKgEZx6haf9XXjNbmO8hTQZnXLWhl7uqYkrINe3lGlbcKMV0GfLhsA25Yn7OmQzDtt1ns2zHFkXIOhK/dQtRn9a+l5fGO7oCOmdLoKXRQP28e9mSYpinziAgHMUDzK2pNquTF683ae20f5wMko3Rm066c47Pn//o7OfFtP8HE3mjQHsumXPjNKn9JGAdwSVgZ42DmvEFm8EYXc0UuEnYKNnSV4iUtDIWr/Z0g/6bEZhybq0KjOyGdde5DvwfN2589XEShK4bD5pvC1WNpB5Hx7XQUljgHkUvBeNWYK+Uo0CMe1zeXpU5yCX4lu6BheqESq/LctO5fDfATadfULFPZGuH5Bl5SU5ISj6Qc/KZXJAR4dFB9CY6i97Hb+NRnMfftqFxtMt5SvYsnv0FwGLYjg==</latexit><latexit sha1_base64="e1qSt+sPWTin0E8sZyMFcBSgk+4=">AAACrXicbVFNj9MwEHUCLEv52AJHLoYKaZFQSRALnNBKvXBcJLpZqSmV40xaq/6I7ElLZeW/8Lf4I5xxujnQXUa2NH5vxjPzpqilcJgkv6P4zt17R/ePHwwePnr85GT49NmlM43lMOVGGntVMAdSaJiiQAlXtQWmCglZsZ50fLYB64TR33FXw1yxpRaV4AwDtBj+ymtmC/PTp8n4jKvWD3JXVUwJuaODXMOWG6WYLn0+mbQ+VwxXnEk/adtDNst6tih81pHhW7cW9YcaB3lp0NEt0BXbAC2NBoqr7mVLGsKQOhMA4Wg4wNyOarM9fflmn9YuhqNknOyN3nbS3hmR3i4Wwz8hkTcKNHLJnJulSY1zH+oILiF01jioGV+zJcyCq5kCN/d7JVv6OiAlrYwNVyPdo/9meKac26kiRHbDuptcB/6PmzVYfZ57oesGQfPrQlUjKYbRw1poKSxwDKKXgnErQq+UB4EYx7C8gyorkBvAlh6AheqESm/Kctu5fD8Om06/JaPzL71kx+QFeUVOSUo+kXPylVyQKeHRUfQ2Oos+xu/iaZzHP65D46jPeU4OLF7+BeDQ1Jk=</latexit>
M (n�1)<latexit sha1_base64="HBSNu9mxxn1lmgYewjTRXN2em8I=">AAACfHicbVHLihNBFK1uZ3SMj4m6cOGmcCKMyIRu8bWSgWzcCCOY6YF0DLeqqydF6kVV9Wgo+kP8G3/ChSv/wo0gVidZmBkvFBzOubfO5VxiBHc+y34k6bWd3es39m72bt2+c3e/f+/+qdONpWxMtdD2jIBjgis29twLdmYsA0kEK8hi1OnFBbOOa/XRLw2bSjhXvOYUfKRmfV0asER/CXk2fEllG3qlq2uQXCxxr1TsM9VSgqpCORq1oZTg5xREGLXttloUG5WQUHRi/NYtuHlhfG/w/lM4VEf503bQzvoH2TBbFb4K8g04OH748+s3hNDJrP+rrDRtJFOeCnBukmfGTwNYz6lg0ahxzABdwDmbRKhAMjcNq2Ba/CQyFa61jU95vGL/nQggnVtKEju73d1lrSP/p00aX7+ZBq5M45mia6O6Edhr3KWMK24Z9THDigO1PO6K6RwsUB9vseUyZ+KC+RZvkUR2QeWXY7kKTp8P4+HyDzGxt2hde+gReowOUY5eo2P0Dp2gMaLoO/qd7CS7yZ90kD5Lj9atabKZeYC2Kn31Fw6jxgw=</latexit><latexit sha1_base64="Lh2urYVQDLLQngrkyGb8qnvzY/A=">AAACfHicbVHLbhMxFPUMKZTwaCgLFmwsGqQi1GgGAWWFKmXDBqlIpFMpE6Jrj6ex4sfI9rSNrPkCvoBv4DP4Bhas+As2SAhPkgVpuZKlo3Pu9bk6l1SCW5ckP6L4Rmfr5q3t2907d+/d3+k92D2xujaUjagW2pwSsExwxUaOO8FOK8NAEsEyMh+2enbOjOVafXSLik0knClecgouUNOeziswRF/6NBm8orLx3dyWJUguFribK3ZBtZSgCp8Ph43PJbgZBeGHTbOpZtlaJcRnrRi+tXNevaxct//+k99XB+mzpt9Me3vJIFkWvg7SNdg7evTzy7fPna/H096vvNC0lkw5KsDacZpUbuLBOE4FC0a1ZRXQOZyxcYAKJLMTvwymwU8DU+BSm/CUw0v23wkP0tqFJKGz3d1e1Vryf9q4duWbieeqqh1TdGVU1gI7jduUccENoy5kWHCghoddMZ2BAerCLTZcZkycM9fgDZLINqj0aizXwcmLQThc+iEk9hatahs9Rk/QPkrRITpC79AxGiGKvqPfUSfaiv7E/fh5fLBqjaP1zEO0UfHrv+Kqx0k=</latexit><latexit sha1_base64="Lh2urYVQDLLQngrkyGb8qnvzY/A=">AAACfHicbVHLbhMxFPUMKZTwaCgLFmwsGqQi1GgGAWWFKmXDBqlIpFMpE6Jrj6ex4sfI9rSNrPkCvoBv4DP4Bhas+As2SAhPkgVpuZKlo3Pu9bk6l1SCW5ckP6L4Rmfr5q3t2907d+/d3+k92D2xujaUjagW2pwSsExwxUaOO8FOK8NAEsEyMh+2enbOjOVafXSLik0knClecgouUNOeziswRF/6NBm8orLx3dyWJUguFribK3ZBtZSgCp8Ph43PJbgZBeGHTbOpZtlaJcRnrRi+tXNevaxct//+k99XB+mzpt9Me3vJIFkWvg7SNdg7evTzy7fPna/H096vvNC0lkw5KsDacZpUbuLBOE4FC0a1ZRXQOZyxcYAKJLMTvwymwU8DU+BSm/CUw0v23wkP0tqFJKGz3d1e1Vryf9q4duWbieeqqh1TdGVU1gI7jduUccENoy5kWHCghoddMZ2BAerCLTZcZkycM9fgDZLINqj0aizXwcmLQThc+iEk9hatahs9Rk/QPkrRITpC79AxGiGKvqPfUSfaiv7E/fh5fLBqjaP1zEO0UfHrv+Kqx0k=</latexit><latexit sha1_base64="XScbCk2zEv1XWkApTz3OWV+xF9o=">AAACfHicbVFdaxNBFJ1dW63xo1EffRlMhIo07IpfT1LIiy9CBdMtZGO4MzvbDJkvZmarYdif6YN/xBdBnE33wbReGDicc++cy7nECO58lv1M0lt7+7fvHNwd3Lv/4OHh8NHjM6cbS9mMaqHtOQHHBFds5rkX7NxYBpIIVpD1tNOLS2Yd1+qL3xi2kHCheM0p+Egth7o0YIn+HvJs8obKNgxKV9cgudjgQanYN6qlBFWFcjptQynBryiIMG3bXbUoepWQUHRi/NatuXlt/GD86Ws4Usf5i3bcLoejbJJtC98EeQ9GqK/T5fBXWWnaSKY8FeDcPM+MXwSwnlPBolHjmAG6hgs2j1CBZG4RtsG0+HlkKlxrG5/yeMv+OxFAOreRJHZ2u7vrWkf+T5s3vn6/CFyZxjNFr4zqRmCvcZcyrrhl1McMKw7U8rgrpiuwQH28xY7LiolL5lu8QxLZBZVfj+UmOHs1iYfLP2ejkw99ZAfoKXqGjlCO3qET9BGdohmi6Af6newl+8mfdJy+TI+vWtOkn3mCdip9+xc+h8N9</latexit>
14
LU algorithm - summary
A(0) = ALet
k = 1, 2, . . . , nIterate
What can go wrong?
In this way, we can work out all elements of L and U :<latexit sha1_base64="hf1pgpXNZdsvTm8xW9h7BPnTRZE=">AAACqnicbVHLbtNAFB27PEp4BViwYHNFgwRSFdkFBGKBKmUDEouCSF0UR9H1eNyMMg9rZtwQjfwpfBg/0SVrxkkWpOVKIx2dc19zblELbl2S/I7ivRs3b93ev9O7e+/+g4f9R49PrW4MZWOqhTZnBVomuGJjx51gZ7VhKAvBsmIx6vTsghnLtfruVjWbSjxXvOIUXaBm/V95jabQP32aDN9S2fpebqsKJRcr6OWKLamWElXp89Go9blEN6co/Khtd9Us26pF4bNODG3tgtdvatf7rMDNuYUlrg5hyYCigqU2C9CNAxQCmGCSKWdBVzD4MoDQEQbjwYd21j9Ihsk64DpIt+Dg+OnlJRBCTmb9P3mpadN1owKtnaRJ7aYejeNUsLBWY1mNdIHnbBKgQsns1K9tbOFFYEqotAlPOViz/1Z4lNauZBEyu5/aq1pH/k+bNK56P/Vc1Y1jim4GVY0Ap6G7CZTcMOqC4yVHanjYFegcDVIXLrczZc7EBXMt7JCF7IxKr9pyHZweDcOZ06/BsY9kE/vkGXlOXpKUvCPH5BM5IWNCo73oVXQUvY4P42/xj3iySY2jbc0TshNx+RfQfNQ1</latexit><latexit sha1_base64="YOSrimiPxUohyWJii0fngxMEcJw=">AAACqnicbVHLihNBFK3u8THGx0RduHBzcSIoDKF7VBQRGchGwcUoZjKSDqG6+vakSD2aquqJoehP8Sv8Gj/A7SxdW51kYWa8UHA4577q3LwS3Lok+RXFO9eu37i5e6tz+87de3vd+w9OrK4NwyHTQpvTnFoUXOHQcSfwtDJIZS5wlM8HrT46R2O5Vl/dssKJpGeKl5xRF6hp90dWUZPr7z5N+q+YbHwns2VJJRdL6GQKF0xLSVXhs8Gg8Zmkbsao8IOm2VZHo42a537UiqGtnfPqZeU6HxW4GbewoMsDWCAwqmChzRx07YAKAShQonIWdAm9Tz0IHaE37L1tpt39pJ+sAq6CdAP2jx5dXOy9+/n7eNr9kxWa1W03Jqi14zSp3MRT4zgTGNaqLVaUzekZjgNUVKKd+JWNDTwNTAGlNuEpByv23wpPpbVLmYfM9qf2staS/9PGtSvfTDxXVe1QsfWgshbgNLQ3gYIbZC44XnDKDA+7AptRQ5kLl9uaMkNxjq6BLTKXrVHpZVuugpPDfjhz+jk49p6sY5c8Jk/IM5KS1+SIfCDHZEhYtBM9jw6jF/FB/CX+Fo/XqXG0qXlItiIu/gJpzNX4</latexit><latexit sha1_base64="YOSrimiPxUohyWJii0fngxMEcJw=">AAACqnicbVHLihNBFK3u8THGx0RduHBzcSIoDKF7VBQRGchGwcUoZjKSDqG6+vakSD2aquqJoehP8Sv8Gj/A7SxdW51kYWa8UHA4577q3LwS3Lok+RXFO9eu37i5e6tz+87de3vd+w9OrK4NwyHTQpvTnFoUXOHQcSfwtDJIZS5wlM8HrT46R2O5Vl/dssKJpGeKl5xRF6hp90dWUZPr7z5N+q+YbHwns2VJJRdL6GQKF0xLSVXhs8Gg8Zmkbsao8IOm2VZHo42a537UiqGtnfPqZeU6HxW4GbewoMsDWCAwqmChzRx07YAKAShQonIWdAm9Tz0IHaE37L1tpt39pJ+sAq6CdAP2jx5dXOy9+/n7eNr9kxWa1W03Jqi14zSp3MRT4zgTGNaqLVaUzekZjgNUVKKd+JWNDTwNTAGlNuEpByv23wpPpbVLmYfM9qf2staS/9PGtSvfTDxXVe1QsfWgshbgNLQ3gYIbZC44XnDKDA+7AptRQ5kLl9uaMkNxjq6BLTKXrVHpZVuugpPDfjhz+jk49p6sY5c8Jk/IM5KS1+SIfCDHZEhYtBM9jw6jF/FB/CX+Fo/XqXG0qXlItiIu/gJpzNX4</latexit><latexit sha1_base64="mmUb0L3lhL3ZEkSpnFUV+0GyTAI=">AAACqnicbVHLbtNAFB27PEp4NMCSzRUJEkhVZRcQiAWqlA1ILAoiTVEcRdfj62aUeVgz44bI8qfwYfwIa8ZpFqTlSiMdnXNfc25eSeF8kvyO4r1bt+/c3b/Xu//g4aOD/uMnZ87UltOYG2nseY6OpNA09sJLOq8socolTfLlqNMnl2SdMPq7X1c0U3ihRSk4+kDN+7+yCm1ufjZpcvSWq7bpZa4sUQm5hl6macWNUqiLJhuN2iZT6BccZTNq2111Mtmqed5MOjG0dUtRval877MGvxAOVrg+hBUBRw0rY5dgag8oJZAkRdo7MCUMvwwhdIThePihnfcHyVGyCbgJ0i0YsG2czvt/ssLwuuvGJTo3TZPKzxq0XnBJYa3aUYV8iRc0DVCjIjdrNja28CIwBZTGhqc9bNh/KxpUzq1VHjK7n7rrWkf+T5vWvnw/a4Suak+aXw0qawneQHcTKIQl7oPjhUBuRdgV+AItch8utzNlQfKSfAs7ZK46o9LrttwEZ8dH4czp12Rw8nFr2T57xp6zlyxl79gJ+8RO2ZjxaC96FR1Hr+PD+Fv8I55epcbRtuYp24m4+AtZDNHi</latexit>
Ukj = A(k�1)kj
Lik = A(k�1)ik /A(k�1)
kk
A(k)ij = A(k�1)
ij � LikUkj
j = k, . . . , n
i = k, . . . , n
kth row of U :<latexit sha1_base64="LDwczRK2RGNSM5MTWLDJ/SWNBQM=">AAACgnicbVFdixMxFM2Mq9ZZP6o++hLcCuJDmVkVRUQW+uLjCnZnoVPKTSazDc0XSWbXGubdn+HfEv+Hz2baPthdLwQO59ybk5xLjODO5/mvJL11cPvO3cG97PD+g4ePho+fnDndWsqmVAttzwk4JrhiU8+9YOfGMpBEsJKsJr1eXjLruFZf/dqwuYQLxRtOwUdqMWwrA5bob6HIx2+p7EJWuaYBycUaZ5ViV1RLCaoO1WTShUqCX1IQYdJ1+2pZ7lRCQtmL8Vq34uaN8dloNfJLbPUV1g0eTUcfusXwKB/nm8I3QbEDRyeDH99/IoROF8M/Va1pK5nyVIBzsyI3fh7Aek4Fi3atYwboCi7YLEIFkrl52MTT4ReRqXGjbTzK4w3770QA6dxaktjZ/8Bd13ryf9qs9c37eeDKtJ4pujVqWoG9xn3WuOaWUR+TrDlQy+NbMV2CBerjRvZclkxcMt/hPZLIPqjieiw3wdnxOK6v+BIT+4S2NUDP0HP0EhXoHTpBn9EpmiKKfidJkiWH6UH6Ki3S19vWNNnNPEV7lX78C9WHxZA=</latexit><latexit sha1_base64="UrRyc9sZKIB9d11a5EwBCIf0cHM=">AAACgnicbVFNbxMxFPRuCw1bPkI5crFokBCHaLeAihCqKuXCsUikWykbRW+93saKv2R7W4K19174fQjxK7hwxpvkQFqeZGk0857HnldqzqxL059RvLN77/5e70Gy//DR4yf9pwfnVjWG0DFRXJmLEizlTNKxY47TC20oiJLTvFyMOj2/osYyJb+4paZTAZeS1YyAC9Ss3xQaTKm++iwdviOi9Ulh6xoE40ucFJJeEyUEyMoXo1HrCwFuToD7Udtuq3m+UcvS550YrrULpt9qlwwWAzfHRl1jVePBePChnfUP02G6KnwXZBtweNq7+fa9+vH7bNb/U1SKNIJKRzhYO8lS7aYejGOE02DXWKqBLOCSTgKUIKid+lU8LX4ZmArXyoQjHV6x/054ENYuRRk6ux/Y21pH/k+bNK5+P/VM6sZRSdZGdcOxU7jLGlfMUOJCkhUDYlh4KyZzMEBc2MiWy5zyK+pavEWWogsqux3LXXB+NAzryz6HxE7QunroOXqBXqEMHaNT9AmdoTEi6FcURUm0H+/Gr+MsfrNujaPNzDO0VfHHv+3rx6k=</latexit><latexit sha1_base64="UrRyc9sZKIB9d11a5EwBCIf0cHM=">AAACgnicbVFNbxMxFPRuCw1bPkI5crFokBCHaLeAihCqKuXCsUikWykbRW+93saKv2R7W4K19174fQjxK7hwxpvkQFqeZGk0857HnldqzqxL059RvLN77/5e70Gy//DR4yf9pwfnVjWG0DFRXJmLEizlTNKxY47TC20oiJLTvFyMOj2/osYyJb+4paZTAZeS1YyAC9Ss3xQaTKm++iwdviOi9Ulh6xoE40ucFJJeEyUEyMoXo1HrCwFuToD7Udtuq3m+UcvS550YrrULpt9qlwwWAzfHRl1jVePBePChnfUP02G6KnwXZBtweNq7+fa9+vH7bNb/U1SKNIJKRzhYO8lS7aYejGOE02DXWKqBLOCSTgKUIKid+lU8LX4ZmArXyoQjHV6x/054ENYuRRk6ux/Y21pH/k+bNK5+P/VM6sZRSdZGdcOxU7jLGlfMUOJCkhUDYlh4KyZzMEBc2MiWy5zyK+pavEWWogsqux3LXXB+NAzryz6HxE7QunroOXqBXqEMHaNT9AmdoTEi6FcURUm0H+/Gr+MsfrNujaPNzDO0VfHHv+3rx6k=</latexit><latexit sha1_base64="fst+I/SE9aHe2tlJELiziZreFgw=">AAACgnicbVFdaxQxFM2MVevUj1UffQnuCuLDMuMHLSJS2BcfK7idws6yJJk73bD5Ism0LmF+qPg/fDaznQe39ULgcM69Ocm51AjufJ7/StJ7B/cfPDx8lB09fvL02ej5i3OnW8tgzrTQ9oISB4IrmHvuBVwYC0RSASXdzHq9vALruFY//NbAUpJLxRvOiI/UatRWhliqf4Yin35isgtZ5ZqGSC62OKsUXDMtJVF1qGazLlSS+DUjIsy6bl8ty0GlNJS9GK91G24+Gp9NNhO/xlZfY93gyXzyuVuNxvk03xW+C4oBjNFQZ6vRn6rWrJWgPBPEuUWRG78MxHrOBES71oEhbEMuYRGhIhLcMuzi6fCbyNS40TYe5fGO/XciEOncVtLY2f/A3dZ68n/aovXNyTJwZVoPit0YNa3AXuM+a1xzC8zHJGtOmOXxrZitiSXMx43suaxBXIHv8B5JZR9UcTuWu+D8/TSur/iej0+/DpEdolfoNXqLCnSMTtE3dIbmiKHfSZJkyVF6kL5Li/TDTWuaDDMv0V6lX/4C+2DDpg==</latexit>
kth column of L:<latexit sha1_base64="co4Tbk+U4htEL6zQu7qd4WEZVRo=">AAAChXicbVHLbhMxFPUMhYZAS4AlG4sGiQ3RTFUeYgGVsmHBokikUykTRbbH01jxS/ad0mDNns/gt9jwGazxJFmQlitZOjrnvnwutVJ4yLJfSXpn7+69/d79/oOHB4ePBo+fnHvTOMYnzEjjLijxXArNJyBA8gvrOFFU8oIux51eXHHnhdFfYWX5TJFLLWrBCERqPrguLXHUXIc8G71mqg390tc1UUKucL/U/BszShFdhXI8bkOpCCwYkWHctrtqUWxVSkPRibGtXwp7YqE/XA5hgeOujdLY1Hj4efi+nQ+OslG2Dnwb5FtwdNr78f0nQuhsPvhTVoY1imtgkng/zTMLs0AcCCZ5nNh4bglbkks+jVATxf0srB1q8YvIVLg2Lj4NeM3+WxGI8n6laMzsPuFvah35P23aQP1uFoS2DXDNNoPqRmIwuLMbV8JxBtHMShDmRNwVswVxhEE8ys6UBZdXHFq8Q1LVGZXftOU2OD8exQvmX6JjH9AmeugZeo5eohy9RafoEzpDE8TQ72QvOUgO0/30VXqSvtmkpsm25inaifTjX8CMxts=</latexit><latexit sha1_base64="vWX9SAz86zMWHppvrlxoGuQIYTo=">AAAChXicbVE9bxMxGPZdCw2BlrSMLBYNEgvRXVWg6gCVsjAwFIn0KuWiyOfzNVb8Jfu9tsG6nYXfh1j4DyzM+JIMpOWVLD16nvfLz1sYwR0kyc8o3tp+8HCn86j7+Mnu3tPe/sGF07WlbES10PayII4JrtgIOAh2aSwjshAsK+bDVs+umXVcqy+wMGwiyZXiFacEAjXt3eaG2ELf+jQZvKGy8d3cVRWRXCxwN1fshmopiSp9Phw2PpcEZpQIP2yaTTXL1mpR+KwVQ1s35+bYQLc/78MMh11rqbCucP9T/7SZ9g6TQbIMfB+ka3B41vn29Xv54/f5tPcnLzWtJVNABXFunCYGJp5Y4FSwMLF2zBA6J1dsHKAikrmJXzrU4JeBKXGlbXgK8JL9t8IT6dxCFiGz/YS7q7Xk/7RxDdXJxHNlamCKrgZVtcCgcWs3LrllFIKZJSfU8rArpjNiCYVwlI0pMyauGTR4gyxka1R615b74OJoEC6Yfg6OvUer6KDn6AV6hVL0Dp2hj+gcjRBFv6LtaDfai3fi1/Fx/HaVGkfrmmdoI+IPfwHY8Mj0</latexit><latexit sha1_base64="vWX9SAz86zMWHppvrlxoGuQIYTo=">AAAChXicbVE9bxMxGPZdCw2BlrSMLBYNEgvRXVWg6gCVsjAwFIn0KuWiyOfzNVb8Jfu9tsG6nYXfh1j4DyzM+JIMpOWVLD16nvfLz1sYwR0kyc8o3tp+8HCn86j7+Mnu3tPe/sGF07WlbES10PayII4JrtgIOAh2aSwjshAsK+bDVs+umXVcqy+wMGwiyZXiFacEAjXt3eaG2ELf+jQZvKGy8d3cVRWRXCxwN1fshmopiSp9Phw2PpcEZpQIP2yaTTXL1mpR+KwVQ1s35+bYQLc/78MMh11rqbCucP9T/7SZ9g6TQbIMfB+ka3B41vn29Xv54/f5tPcnLzWtJVNABXFunCYGJp5Y4FSwMLF2zBA6J1dsHKAikrmJXzrU4JeBKXGlbXgK8JL9t8IT6dxCFiGz/YS7q7Xk/7RxDdXJxHNlamCKrgZVtcCgcWs3LrllFIKZJSfU8rArpjNiCYVwlI0pMyauGTR4gyxka1R615b74OJoEC6Yfg6OvUer6KDn6AV6hVL0Dp2hj+gcjRBFv6LtaDfai3fi1/Fx/HaVGkfrmmdoI+IPfwHY8Mj0</latexit><latexit sha1_base64="2TeFyVwqZoO2us6MTF/2zEf2hNQ=">AAAChXicbVHLbhMxFPUMhZZAS4AlG4sEiQ3RDCq0YgGVsmHBokikUykTRdceT2PFL9me0siaD2XDZ7DGk86CtFzJ0tE59+VziRHc+Sz7laQP9h4+2j94PHjy9PDo2fD5iwunG0vZjGqh7SUBxwRXbOa5F+zSWAaSCFaQ9bTTi2tmHdfqh98YtpBwpXjNKfhILYc3pQFL9E3Is8kHKtswKF1dg+RigwelYj+plhJUFcrptA2lBL+iIMK0bXfVouhVQkLRibGtW3NzbPxgvB77FY67NlJhXePxt/GndjkcZZNsG/g+yHswQn2cL4d/ykrTRjLlqQDn5nlm/CKA9ZwKFic2jhmga7hi8wgVSOYWYetQi99EpsK1tvEpj7fsvxUBpHMbSWJm9wl3V+vI/2nzxteni8CVaTxT9HZQ3QjsNe7sxhW3jPpoZsWBWh53xXQFFqiPR9mZsmLimvkW75BEdkbld225Dy7eT+IF8+/Z6Oxzb9kBeoVeo7coRyfoDH1F52iGKPqd7CWHyVG6n75Lj9OPt6lp0te8RDuRfvkL5mXE8Q==</latexit>
subtract M (k�1):<latexit sha1_base64="VZHjxJeEKP17j9+gIXIZJ5jHbYI=">AAAChnicbVHLbhMxFPUMFEKANsCCBRuLFqksiGYQVRELFCkbNkhFIp1KmRBdezyNFb9kewqRNR/C3/AbrPoXrPEkWZCWK1k6OudeH/tcYgR3Pst+J+mdu3v37vce9B8+erx/MHjy9NzpxlI2oVpoe0HAMcEVm3juBbswloEkghVkOe704opZx7X66leGzSRcKl5zCj5S88GqNGCJ/hHybHhCZRv6patrkFyscL9U7DvVUoKqQjket6GU4BcURBi37a5aFFuVkFB0YrzWLbl5Z3zfNcRboB4fff4Wjpdv8tft0Yd2PjjMhtm68G2Qb8Hh6Pn1z18IobP54E9ZadpIpjwV4Nw0z4yfBbCeU8GiZeOYAbqESzaNUIFkbhbWEbX4VWQqXGsbj/J4zf47EUA6t5Ikdna/cDe1jvyfNm18/X4WuDKNZ4pujOpGYK9xlzeuuGXUxzQrDtTy+FZMF9DFEbey47Jg4or5Fu+QRHZB5TdjuQ3O3w7jCvMvMbGPaFM99AK9RMcoR6dohD6hMzRBFF0ne8l+cpD20mF6kp5uWtNkO/MM7VQ6+gsmocgx</latexit><latexit sha1_base64="g26oJxhPH4AK2KUJiV9+BC69mWA=">AAAChnicbVHLbhMxFPUMLYQAbYAFCzYWLVJZEM1UVEUsUKRs2CAViXQqZUJ07fE0VvwY2Z5CZM0X9Av6DXxGv6Kr/gVrPEkWpOVKlo7OudfHPpdUgluXJDdR/GBr++GjzuPuk6fPdnZ7z1+cWl0bykZUC23OCFgmuGIjx51gZ5VhIIlgGZkPWz27YMZyrb67RcUmEs4VLzkFF6hpb5FXYIj+5dOkf0Rl47u5LUuQXCxwN1fsJ9VSgip8Phw2PpfgZhSEHzbNpppla5UQn7ViuNbOefWhcl1bE2eAOrz/9Yc/mL9P3zX7n5ppby/pJ8vC90G6BnuDV7dX15dbv0+mvT95oWktmXJUgLXjNKncxINxnAoWLGvLKqBzOGfjABVIZid+GVGD3wamwKU24SiHl+y/Ex6ktQtJQmf7C3tXa8n/aePalR8nnquqdkzRlVFZC+w0bvPGBTeMupBmwYEaHt6K6QzaOMJWNlxmTFww1+ANksg2qPRuLPfB6WE/rDD9FhL7jFbVQa/RG3SAUnSMBugLOkEjRNFttB3tRLtxJ+7HR/HxqjWO1jMv0UbFg7/6qMlu</latexit><latexit sha1_base64="g26oJxhPH4AK2KUJiV9+BC69mWA=">AAAChnicbVHLbhMxFPUMLYQAbYAFCzYWLVJZEM1UVEUsUKRs2CAViXQqZUJ07fE0VvwY2Z5CZM0X9Av6DXxGv6Kr/gVrPEkWpOVKlo7OudfHPpdUgluXJDdR/GBr++GjzuPuk6fPdnZ7z1+cWl0bykZUC23OCFgmuGIjx51gZ5VhIIlgGZkPWz27YMZyrb67RcUmEs4VLzkFF6hpb5FXYIj+5dOkf0Rl47u5LUuQXCxwN1fsJ9VSgip8Phw2PpfgZhSEHzbNpppla5UQn7ViuNbOefWhcl1bE2eAOrz/9Yc/mL9P3zX7n5ppby/pJ8vC90G6BnuDV7dX15dbv0+mvT95oWktmXJUgLXjNKncxINxnAoWLGvLKqBzOGfjABVIZid+GVGD3wamwKU24SiHl+y/Ex6ktQtJQmf7C3tXa8n/aePalR8nnquqdkzRlVFZC+w0bvPGBTeMupBmwYEaHt6K6QzaOMJWNlxmTFww1+ANksg2qPRuLPfB6WE/rDD9FhL7jFbVQa/RG3SAUnSMBugLOkEjRNFttB3tRLtxJ+7HR/HxqjWO1jMv0UbFg7/6qMlu</latexit><latexit sha1_base64="hHvQ89mLTtItSaTr2fIWW0MoqpA=">AAAChnicbVFNbxMxFPQuFEKANsCRi0WKVA5Eu4iqiAOKlAsXpCKRbqVsiGyvt7HiL9lvC5G1P5QT/4Iz3nQPpOVJlkYz73nsedRK4SHLfiXpvfsHDx4OHg0fP3l6eDR69vzCm8YxPmdGGndJiedSaD4HAZJfWseJopIXdDPr9OKaOy+M/gZby5eKXGlRC0YgUqvRtrTEUfMz5NnklKk2DEtf10QJucXDUvMfzChFdBXK2awNpSKwZkSGWdvuq0XRq5SGohPjtX4j7HsLQ99QcIQBPv7yPZxs3uZv2uOP7Wo0zibZrvBdkPdgjPo6X43+lJVhjeIamCTeL/LMwjIQB4JJHi0bzy1hG3LFFxFqorhfhl1ELX4dmQrXxsWjAe/YfycCUd5vFY2d3S/8ba0j/6ctGqg/LIPQtgGu2Y1R3UgMBnd540o4ziCmWQnCnIhvxWxNujjiVvZc1lxec2jxHklVF1R+O5a74OLdJK4w/5qNp5/6yAboJXqFTlCOztAUfUbnaI4Y+p0cJIfJUTpIJ+lpenbTmib9zAu0V+n0L1aFxaI=</latexit>
i, j � k<latexit sha1_base64="UhKl5Vjx0MXkh8XMwL1s8OFoMSk=">AAAB8nicbVBNS8NAEJ3Ur1q/qh69LBbBg5REBD1JwYvHCvYD2lA220m7dpONuxuhhP4MLx4U8eqv8ea/cdvmoK0PBh7vzTAzL0gE18Z1v53Cyura+kZxs7S1vbO7V94/aGqZKoYNJoVU7YBqFDzGhuFGYDtRSKNAYCsY3Uz91hMqzWV8b8YJ+hEdxDzkjBordfgZeSDdAT6SUa9ccavuDGSZeDmpQI56r/zV7UuWRhgbJqjWHc9NjJ9RZTgTOCl1U40JZSM6wI6lMY1Q+9ns5Ak5sUqfhFLZig2Zqb8nMhppPY4C2xlRM9SL3lT8z+ukJrzyMx4nqcGYzReFqSBGkun/pM8VMiPGllCmuL2VsCFVlBmbUsmG4C2+vEya51XPrXp3F5XadR5HEY7gGE7Bg0uowS3UoQEMJDzDK7w5xnlx3p2PeWvByWcO4Q+czx/SspBH</latexit><latexit sha1_base64="UhKl5Vjx0MXkh8XMwL1s8OFoMSk=">AAAB8nicbVBNS8NAEJ3Ur1q/qh69LBbBg5REBD1JwYvHCvYD2lA220m7dpONuxuhhP4MLx4U8eqv8ea/cdvmoK0PBh7vzTAzL0gE18Z1v53Cyura+kZxs7S1vbO7V94/aGqZKoYNJoVU7YBqFDzGhuFGYDtRSKNAYCsY3Uz91hMqzWV8b8YJ+hEdxDzkjBordfgZeSDdAT6SUa9ccavuDGSZeDmpQI56r/zV7UuWRhgbJqjWHc9NjJ9RZTgTOCl1U40JZSM6wI6lMY1Q+9ns5Ak5sUqfhFLZig2Zqb8nMhppPY4C2xlRM9SL3lT8z+ukJrzyMx4nqcGYzReFqSBGkun/pM8VMiPGllCmuL2VsCFVlBmbUsmG4C2+vEya51XPrXp3F5XadR5HEY7gGE7Bg0uowS3UoQEMJDzDK7w5xnlx3p2PeWvByWcO4Q+czx/SspBH</latexit><latexit sha1_base64="UhKl5Vjx0MXkh8XMwL1s8OFoMSk=">AAAB8nicbVBNS8NAEJ3Ur1q/qh69LBbBg5REBD1JwYvHCvYD2lA220m7dpONuxuhhP4MLx4U8eqv8ea/cdvmoK0PBh7vzTAzL0gE18Z1v53Cyura+kZxs7S1vbO7V94/aGqZKoYNJoVU7YBqFDzGhuFGYDtRSKNAYCsY3Uz91hMqzWV8b8YJ+hEdxDzkjBordfgZeSDdAT6SUa9ccavuDGSZeDmpQI56r/zV7UuWRhgbJqjWHc9NjJ9RZTgTOCl1U40JZSM6wI6lMY1Q+9ns5Ak5sUqfhFLZig2Zqb8nMhppPY4C2xlRM9SL3lT8z+ukJrzyMx4nqcGYzReFqSBGkun/pM8VMiPGllCmuL2VsCFVlBmbUsmG4C2+vEya51XPrXp3F5XadR5HEY7gGE7Bg0uowS3UoQEMJDzDK7w5xnlx3p2PeWvByWcO4Q+czx/SspBH</latexit><latexit sha1_base64="UhKl5Vjx0MXkh8XMwL1s8OFoMSk=">AAAB8nicbVBNS8NAEJ3Ur1q/qh69LBbBg5REBD1JwYvHCvYD2lA220m7dpONuxuhhP4MLx4U8eqv8ea/cdvmoK0PBh7vzTAzL0gE18Z1v53Cyura+kZxs7S1vbO7V94/aGqZKoYNJoVU7YBqFDzGhuFGYDtRSKNAYCsY3Uz91hMqzWV8b8YJ+hEdxDzkjBordfgZeSDdAT6SUa9ccavuDGSZeDmpQI56r/zV7UuWRhgbJqjWHc9NjJ9RZTgTOCl1U40JZSM6wI6lMY1Q+9ns5Ak5sUqfhFLZig2Zqb8nMhppPY4C2xlRM9SL3lT8z+ukJrzyMx4nqcGYzReFqSBGkun/pM8VMiPGllCmuL2VsCFVlBmbUsmG4C2+vEya51XPrXp3F5XadR5HEY7gGE7Bg0uowS3UoQEMJDzDK7w5xnlx3p2PeWvByWcO4Q+czx/SspBH</latexit>
This all works (and the decomposition exists) if A(k�1)kk 6= 0 for all k,
otherwise it fails (see later)<latexit sha1_base64="euDDMOaKHwb9tCQjMswS5TIYGVc=">AAAC53icbVLLbtNAFB2bVzGPprBkc0WDlEpQ2QgEKxSUDcsiNU2lOETj8XUz8ozHzIybRiN/AzvEls+CD2HNOMmCtNzV1Tlz7uPcyWrBjY3jX0F46/adu/f27kcPHj56vN87eHJmVKMZjpkSSp9n1KDgFY4ttwLPa41UZgInWTnq+MklasNVdWpXNc4kvah4wRm1Hpr3fqc11Zm6ckl8/JbJ1kWpKQoquVhBlFa4ZEpKWuUuHY1al0pqF4wKN2rbXXYy2bJZ5iYd6cuaktdvahudLrgBKgQslS4NDLwA7AIhRy+vleHdKIBXfltzBLyA/scvblC+So7auSvL1jf6CnEfCqXXZfpl/2WUppHyRfSSGwRuoaBc+NoGEQS1qL22dxgfx+uAm0myTQ6HHw72h4SQk3nvT5or1kisLBPUmGkS13bmqLacCfQ7NQZrykp6gVOfVlSimbn1DVp44ZF8PWKhKgtr9F+Fo9KYlcz8y84mc53rwP9x08YW72eOV3VjsWKbRkUjwCroDgo518isP1fOKdPeSwZsQTVl3oTdLgsUl2hb2AEz2RmVXLflZnL2+tj/keRz5xjZxB55Rp6TAUnIOzIkn8gJGRMWDIMiUEEd8vBb+D38sXkaBlvNU7IT4c+/ByLqyQ==</latexit><latexit sha1_base64="lQC5SDiSIaP+1p+hCvLKdlUdhR8=">AAAC53icbVLLjtMwFHXCawiP6cCSjcUUqSNBlSAQrFBRNywHaTodqSmV49xMrdixsZ3pVFa+gR1ii/gq2PMLrHHSLugMd3V1js99nOtMcWZsHP8Mwhs3b92+s3c3unf/wcP93sGjUyNrTWFCJZf6LCMGOKtgYpnlcKY0EJFxmGbluOWnF6ANk9WJXSuYC3JesYJRYj206P1KFdGZvHRJPHxNReOi1BQFEYyvcZRWsKJSCFLlLh2PG5cKYpeUcDduml12Ot2yWeamLenLmpKpV8pGJ0tmMOEcr6QuDR54AbZLwDl4uZKGtaNguPTbmiPMCtx//8kNyhfJUbNwZdn4Rp9x3MeF1F2Zftl/HqVpJH0RvWIGMLO4IIz72gYAc2JBe23vMB7GXeDrSbJNDkfvDvZHv3/Mjxe9P2kuaS2gspQTY2ZJrOzcEW0Z5eB3qg0oQktyDjOfVkSAmbvuBg1+5pG8G7GQlcUd+q/CEWHMWmT+ZWuTucq14P+4WW2Lt3PHKlVbqOimUVFzbCVuD4pzpoFaf66cEaq9lxTTJdGEehN2uyyBX4Bt8A6Yidao5Kot15PTl0P/R5KPrWNoE3voCXqKBihBb9AIfUDHaIJoMAqKQAYqZOGX8Gv4bfM0DLaax2gnwu9/AdPq7K4=</latexit><latexit sha1_base64="lQC5SDiSIaP+1p+hCvLKdlUdhR8=">AAAC53icbVLLjtMwFHXCawiP6cCSjcUUqSNBlSAQrFBRNywHaTodqSmV49xMrdixsZ3pVFa+gR1ii/gq2PMLrHHSLugMd3V1js99nOtMcWZsHP8Mwhs3b92+s3c3unf/wcP93sGjUyNrTWFCJZf6LCMGOKtgYpnlcKY0EJFxmGbluOWnF6ANk9WJXSuYC3JesYJRYj206P1KFdGZvHRJPHxNReOi1BQFEYyvcZRWsKJSCFLlLh2PG5cKYpeUcDduml12Ot2yWeamLenLmpKpV8pGJ0tmMOEcr6QuDR54AbZLwDl4uZKGtaNguPTbmiPMCtx//8kNyhfJUbNwZdn4Rp9x3MeF1F2Zftl/HqVpJH0RvWIGMLO4IIz72gYAc2JBe23vMB7GXeDrSbJNDkfvDvZHv3/Mjxe9P2kuaS2gspQTY2ZJrOzcEW0Z5eB3qg0oQktyDjOfVkSAmbvuBg1+5pG8G7GQlcUd+q/CEWHMWmT+ZWuTucq14P+4WW2Lt3PHKlVbqOimUVFzbCVuD4pzpoFaf66cEaq9lxTTJdGEehN2uyyBX4Bt8A6Yidao5Kot15PTl0P/R5KPrWNoE3voCXqKBihBb9AIfUDHaIJoMAqKQAYqZOGX8Gv4bfM0DLaax2gnwu9/AdPq7K4=</latexit><latexit sha1_base64="jwf9vfMB7uakjzU4ZtuLEvc0LIw=">AAAC53icbVLLjtMwFHXCawivAks2V7RIHQmqBIFghYq6YTlI0+lITakc52ZqxY6D7UynsvIN7BBbPgs+hDVOpws6w11dneNzH+c6qwU3No5/BeGNm7du3zm4G927/+Dho97jJydGNZrhlCmh9GlGDQpe4dRyK/C01khlJnCWlZOOn52jNlxVx3ZT40LSs4oXnFHroWXvd1pTnakLl8Sjt0y2LkpNUVDJxQaitMI1U1LSKnfpZNK6VFK7YlS4Sdvus7PZjs0yN+tIX9aUvH5T2+h4xQ1QIWCtdGlg6AVgVwg5enmtDO9GAbzw25pD4AUMPn5xw/JVctguXVm2vtFXiAdQKL0tMygHL6M0jZQvotfcIHALBeXC1zaIIKhF7bW9fjyKtwHXk2SX9Mkujpa9P2muWCOxskxQY+ZJXNuFo9pyJtDv1BisKSvpGc59WlGJZuG2N2jhhUfy7YiFqixs0X8VjkpjNjLzLzubzFWuA//HzRtbvF84XtWNxYpdNioaAVZBd1DIuUZm/blyTpn2XjJgK6op8ybsd1mhOEfbwh6Yyc6o5Kot15OT1yP/R5LPcX/8YWfZAXlGnpMhScg7MiafyBGZEhaMgyJQQR3y8Fv4Pfxx+TQMdpqnZC/Cn38Bu5Hp6w==</latexit>
15
Matlabfunction [ L,U ] = LUdecomp(A)%LUdecomp: decompose square matrix A as A=LU% where L is lower triag and U is upper triag [m, n]=size(A); if m ~= n, error('Input must be a square matrix.'), end L=zeros(n); U=zeros(n); % remember A^(0) is A AofK = A; for k = 1:n % at this point AofK is A^(k-1) 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 LU decomp') end for i = k:n L(i,k) = AofK(i,k)/U(k,k); end % now modify AofK so that we can use it in the % next iteration for i = k:n for j = k:n AofK(i,j) = AofK(i,j) - L(i,k)*U(k,j); end end endend Example: LUdecomp.m
16
function [ L,U ] = LUdecomp(A)%LUdecomp: decompose square matrix A as A=LU% where L is lower triag and U is upper triag [m, n]=size(A); if m ~= n, error('Input must be a square matrix.'), end L=zeros(n); U=zeros(n); AofK = A; % this is A^(0) for k = 1:n AofK for j = k:n U(k,j) = AofK(k,j); end for i = k:n L(i,k) = AofK(i,k)/U(k,k); end % now modify AofK so that we can use it in the % next iteration for i = k:n for j = k:n AofK(i,j) = AofK(i,j) - L(i,k)*U(k,j); end end end end
All togetherfunction [ x ] = Asolve( A,b )%Asolve: solve Ax=b by LU decomposition [L,U] = LUdecomp(A) y = Lsolve(L,b); x = Usolve(U,y);end
function [ y ] = Lsolve( L, b )%Lsolve: solve Ly=b where L is lower triangular [n,m] = size(b); s = size(L); if any( s ~= [n,n] ) || m ~= 1 error('Either L or b is the wrong size.') end y = b; for k = 1:n for j = 1:k-1 y(k) = y(k) - L(k,j)*y(1:k-1); end y(k) = y(k)/L(k,k); endend
function [ x ] = Usolve( U, y )%Usolve: solve Ux=y where U is upper triangular [n,m] = size(y); s = size(U); if any( s ~= [n,n] ) || m ~= 1 error('Either U or y is the wrong size.') end x = y; for k = n:-1:1 for j = k+1:n x(k) = x(k) - U(k,j)*x(j); end x(k) = x(k)/U(k,k); endend
17
Complexity
LU decomposition: we loop over k = 1, 2, . . . n and for each k weneed to compute the elements A(k)
Given L and U , solving for x is easily checked to be O(n2).<latexit sha1_base64="ySQ0uafwhAhk6hQqjelj/h9os3o=">AAACy3icbVLLjtMwFHXCayivDizZGCZIg4SqZASaWaGRugAhEINopyM1pXKcm9SqH5HtlBYTiQ2/xX/wI6xx2i7oDHd1dM69vsfHzirOjI3j30F47fqNm7f2bnfu3L13/0F3/+G5UbWmMKSKK32REQOcSRhaZjlcVBqIyDiMsnm/1UcL0IYpObCrCiaClJIVjBLrqWn3V1oRnamlS+LeKyoa10lNURDB+Ap3UglfqRKCyNyl/X7jUkHsjBLu+k2zq45GWzXL3KgV/bFmzqqXle2kmpQl5JqVM9t5wxYgcfQ+wn4OR8PoBU4tLG1WOKP4gskSF0rjaBk1mBkMxLRW6AzoHHJsFc4ARx8P5Zej51GvmXYP4l68LnwVJFtwcPrkZPADIXQ27f5Jc0VrAdJSTowZJ3FlJ45oyygH77s2UBE6JyWMPZREgJm4dc4NfuaZfG2vUNLiNfvvhCPCmJXIfGcbhbmsteT/tHFti5OJY7KqLUi6WVTUvL1u+2g4Zxqo9TnkjFDNvFefCNGEWv+0O1tmwBdgG7xDZqINKrkcy1VwftTz/yD55BN7jTa1hx6jp+gQJegYnaK36AwNEQ2i4F3wORiEH0ITfgu/b1rDYDvzCO1U+PMvD8DfxA==</latexit><latexit sha1_base64="jlVTNrBFoG0SaYS9gPW91me99mA=">AAACy3icbVLLjtMwFHXCayiPKbBkY5ggDRKqkhGIWaGRugAhEINopyM1ZeQ4N6lVPyLbKS0mSzb8Av/CL7BiwY+wxmm7oDPc1dE59/oeHzurODM2jn8H4aXLV65e27neuXHz1u3d7p27J0bVmsKQKq70aUYMcCZhaJnlcFppICLjMMpm/VYfzUEbpuTALiuYCFJKVjBKrKfOuj/SiuhMLVwS955R0bhOaoqCCMaXuJNK+ESVEETmLu33G5cKYqeUcNdvmm11NNqoWeZGreiPNTNWPa1sJ9WkLCHXrJzazks2B4mjNxH2czgaRk9wamFhs8IZxedMlrhQGkeLqMHMYCCmtUKnQGeQY6twBjh6ty8/HjyOes1Zdy/uxavCF0GyAXtHDw4H377//HV81v2T5orWAqSlnBgzTuLKThzRllEO3ndtoCJ0RkoYeyiJADNxq5wb/Mgz+cpeoaTFK/bfCUeEMUuR+c42CnNea8n/aePaFocTx2RVW5B0vaioeXvd9tFwzjRQ63PIGaGaea8+EaIJtf5pt7ZMgc/BNniLzEQbVHI+lovg5KDn/0Hy3if2Aq1rB91HD9E+StBzdIReoWM0RDSIgtfBh2AQvg1N+Dn8sm4Ng83MPbRV4de/b5HiDQ==</latexit><latexit sha1_base64="jlVTNrBFoG0SaYS9gPW91me99mA=">AAACy3icbVLLjtMwFHXCayiPKbBkY5ggDRKqkhGIWaGRugAhEINopyM1ZeQ4N6lVPyLbKS0mSzb8Av/CL7BiwY+wxmm7oDPc1dE59/oeHzurODM2jn8H4aXLV65e27neuXHz1u3d7p27J0bVmsKQKq70aUYMcCZhaJnlcFppICLjMMpm/VYfzUEbpuTALiuYCFJKVjBKrKfOuj/SiuhMLVwS955R0bhOaoqCCMaXuJNK+ESVEETmLu33G5cKYqeUcNdvmm11NNqoWeZGreiPNTNWPa1sJ9WkLCHXrJzazks2B4mjNxH2czgaRk9wamFhs8IZxedMlrhQGkeLqMHMYCCmtUKnQGeQY6twBjh6ty8/HjyOes1Zdy/uxavCF0GyAXtHDw4H377//HV81v2T5orWAqSlnBgzTuLKThzRllEO3ndtoCJ0RkoYeyiJADNxq5wb/Mgz+cpeoaTFK/bfCUeEMUuR+c42CnNea8n/aePaFocTx2RVW5B0vaioeXvd9tFwzjRQ63PIGaGaea8+EaIJtf5pt7ZMgc/BNniLzEQbVHI+lovg5KDn/0Hy3if2Aq1rB91HD9E+StBzdIReoWM0RDSIgtfBh2AQvg1N+Dn8sm4Ng83MPbRV4de/b5HiDQ==</latexit><latexit sha1_base64="uYOk2z7FdrpuiRXOiVVABdZjtHQ=">AAACy3icbVLLjtMwFHXCayiPKbBkY9EgDRKqkhEIVmikLkAIxCCm05GaMrKdm9SqH5HtlBaTJb/Ff/AjrHE6XdAZ7uronHt9j49Na8GtS9PfUXzt+o2bt/Zu9+7cvXd/v//g4anVjWEwZlpoc0aJBcEVjB13As5qA0RSARO6GHX6ZAnGcq1O3LqGmSSV4iVnxAXqvP8rr4mheuWzdPiSydb3cluWRHKxxr1cwTempSSq8Plo1PpcEjdnRPhR2+6qk8lWpdRPOjEcaxe8flG7Xm5IVUFheDV3vbd8CQonHxIc5nAyTp7j3MHK0dJbLZZcVbjUBierpMXcYiC2s8LmwBZQYKcxBZx8OlBfD58lw/a8P0iH6abwVZBtwQBt6/i8/ycvNGskKMcEsXaapbWbeWIcZwKC78ZCTdiCVDANUBEJduY3Obf4aWCKjb1SK4c37L8Tnkhr15KGzi4Ke1nryP9p08aVr2eeq7pxoNjForIR3XW7R8MFN8BcyKHghBkevIZEiCHMhafd2TIHsQTX4h2Syi6o7HIsV8Hp4TD8g+xzOjh6s41sDz1GT9ABytArdITeoWM0RixKovfRl+gk/hjb+Hv846I1jrYzj9BOxT//Au+g3lc=</latexit>
The complexity of solving Ax = b by this method is O(n3), and thedominant cost is the LU decomposition.
We only need to modify Lsolve and Usolve<latexit sha1_base64="SjsgBkDr9PZJJKvkWI1Y2E6rpQw=">AAACsnicbVHLbtNAFB2bR4vLI8CCBZsRFRKryEZFoCKhStmwYFEkUlfEUXQ9vk5GmYc1My5EI38OH8VPdMmacZwFabnSSEfn3NecWzaCW5emv6P4zt179w8OHyRHDx89fjJ6+uzC6tYwnDIttLkswaLgCqeOO4GXjUGQpcC8XE96Pb9CY7lW39ymwbmEpeI1Z+ACtRj9Khowpf7ps3T8jsnOJ4Wta5BcbGhSKPzBtJSgKl9MJp0vJLgVA+EnXbev5vlOLUuf92Joa9e8OWlcUhhYLrEyfLlySY5Uq9BcIVbUaSp1xesN9YVz9IvV4go7GjoOxHQgusXoOB2n26C3QbYDx2cvrq8pIeR8MfpTVJq1EpVjAqydZWnj5h6M40xgWK+12ABbwxJnASqQaOd+a2dHXwemorU24SlHt+y/FR6ktRtZhsz+x/am1pP/02atqz/MPVdN61CxYVDdit6G/ja04gaZC+ZUHJjhYVfKVmCAuXDBvSkrDL64ju6RpeyNym7achtcvB2Hc2dfg2OfyBCH5CV5Rd6QjLwnZ+QzOSdTwqKjKItOo4/xSfw9hpgNqXG0q3lO9iIWfwFO+toY</latexit><latexit sha1_base64="5yN6GNpT7+nyU0GPiR6TRksn79Y=">AAACsnicbVHLbtNAFB2bV0mBBliwYDOiQmIV2agI1CJUKRsWLIpE6oo4isbj62SUeVgz14Vo5M/hC/gaPoBtl6wZx1mQliuNdHTOfc25RS2FwyT5FcW3bt+5e2/v/mD/wcNHB8PHT86daSyHCTfS2IuCOZBCwwQFSrioLTBVSMiK1bjTs0uwThj9Bdc1zBRbaFEJzjBQ8+GPvGa2MN99mozecNX6Qe6qiikh13SQa/jGjVJMlz4fj1ufK4ZLzqQft+2ummVbtSh81omhrVuJ+qjGQW7ZYgGlFYslDjKgRofmGqCkaKgypajW1OeI9JMz8hJaGjr2xKQn2vnwMBklm6A3QboFh6fPrq4O3v/8fTYf/slLwxsFGrlkzk3TpMaZZxYFlxDWaxzUjK/YAqYBaqbAzfzGzpa+DExJK2PD00g37L8Vninn1qoImd2P3XWtI/+nTRus3s280HWDoHk/qGpkZ0N3G1oKCxyDOaVg3IqwK+VLZhnHcMGdKUsIvmBLd8hCdUal1225Cc5fj8K508/BsQ+kjz3ynLwgr0hK3pJT8pGckQnh0X6URsfRSXwUf41ZzPvUONrWPCU7Ecu/6Dvb2w==</latexit><latexit sha1_base64="5yN6GNpT7+nyU0GPiR6TRksn79Y=">AAACsnicbVHLbtNAFB2bV0mBBliwYDOiQmIV2agI1CJUKRsWLIpE6oo4isbj62SUeVgz14Vo5M/hC/gaPoBtl6wZx1mQliuNdHTOfc25RS2FwyT5FcW3bt+5e2/v/mD/wcNHB8PHT86daSyHCTfS2IuCOZBCwwQFSrioLTBVSMiK1bjTs0uwThj9Bdc1zBRbaFEJzjBQ8+GPvGa2MN99mozecNX6Qe6qiikh13SQa/jGjVJMlz4fj1ufK4ZLzqQft+2ummVbtSh81omhrVuJ+qjGQW7ZYgGlFYslDjKgRofmGqCkaKgypajW1OeI9JMz8hJaGjr2xKQn2vnwMBklm6A3QboFh6fPrq4O3v/8fTYf/slLwxsFGrlkzk3TpMaZZxYFlxDWaxzUjK/YAqYBaqbAzfzGzpa+DExJK2PD00g37L8Vninn1qoImd2P3XWtI/+nTRus3s280HWDoHk/qGpkZ0N3G1oKCxyDOaVg3IqwK+VLZhnHcMGdKUsIvmBLd8hCdUal1225Cc5fj8K508/BsQ+kjz3ynLwgr0hK3pJT8pGckQnh0X6URsfRSXwUf41ZzPvUONrWPCU7Ecu/6Dvb2w==</latexit><latexit sha1_base64="0T3f8T6dqixnD5BGfxJtnX2n2+M=">AAACsnicbVHLbtNAFB2bR4vLI8CSzYgIiVVko1YgKqFK2bBgUSRSV8RRdD2+TkaZhzUzLkQjfw4fxY+wZpx4QVquNNLROfc155aN4Nal6e8ovnf/wcOj40fJyeMnT5+Nnr+4sro1DGdMC22uS7AouMKZ407gdWMQZCkwLzfTXs9v0Fiu1Te3bXAhYaV4zRm4QC1Hv4oGTKl/+iydnDHZ+aSwdQ2Siy1NCoU/mJYSVOWL6bTzhQS3ZiD8tOsO1Twf1LL0eS+GtnbDm9PGJYWB1Qorw1drl+RItQrNFWJFnaZSV7zeUl84R79YLW6wo6HjnpjtiW45GqeTdBf0LsgGMCZDXC5Hf4pKs1aickyAtfMsbdzCg3GcCQzrtRYbYBtY4TxABRLtwu/s7OibwFS01iY85eiO/bfCg7R2K8uQ2f/Y3tZ68n/avHX1h4XnqmkdKrYfVLeit6G/Da24QeaCORUHZnjYlbI1GGAuXPBgyhqDL66jB2Qpe6Oy27bcBVfvJuHc2dd0fPFpsOyYvCKvyVuSkffkgnwml2RGWHQSZdHH6Dw+jb/HELN9ahwNNS/JQcTiL9d718U=</latexit>
Eg, to solve Ly = b we must now compute<latexit sha1_base64="DfSl58OlZd5aZZx8KH06GbkYQTU=">AAACmHicbVFbaxNBFJ5dbzXeUn0o6MtoK/ggYVcs7UslEEQFH6qYbiEbwszs2WTIXJaZ2aZh2F/gL/RPFHzx2dkkD6b1wMDH9505l+/QSnDrkuRXFN+6fefuvZ37nQcPHz1+0t19emZ1bRgMmRbanFNiQXAFQ8edgPPKAJFUQEbng1bPLsBYrtUPt6xgLMlU8ZIz4gI16f7MK2KovvRp0jtksvGd3JYlkVwscSdXsGBaSqIKnw8Gjc8lcTNGhB80zbaaZRuVUp+1Yihr57x6X7nOx+lb7DS2WlwAPvi6PKEHeAFY1tZhpRc4FKlqB82ku5/0klXgmyDdgP3+3tUVRgidTrp/8kKzWoJyTBBrR2lSubEnxnEmIAxRW6gIm5MpjAJURIId+5VpDX4dmAKX2oSnHF6x//7wRFq7lDRktnvZ61pL/k8b1a48Hnuu2p0UWzcqa9Fa0F4AF9wAc8HfghNmeJgVsxkxhLlwp60uMwiOuQZvkVS2RqXXbbkJzt71wlHTb8GxD2gdO+gFeoXeoBQdoT76jE7REDH0O9qLcPQyfh7340/xl3VqHG3+PENbEX//C8bFz0g=</latexit><latexit sha1_base64="zyIfk9aV2TYc/lws0+UrPYXwH0k=">AAACmHicbVHLihNBFK1uX2N8TEYXA7opnRFcSOgWZVyoBIKo4GIUMz2QDqGq+nZSpB5NVfXEUPQX+Dl+jR/gdsCNa6uTLMyMFwoO59y6j3NpJbh1SfIziq9cvXb9xs7Nzq3bd+7udvfunVhdGwZDpoU2p5RYEFzB0HEn4LQyQCQVkNH5oNWzMzCWa/XVLSsYSzJVvOSMuEBNut/zihiqv/k06b1ksvGd3JYlkVwscSdXsGBaSqIKnw8Gjc8lcTNGhB80zbaaZRuVUp+1Yihr57x6UbnOu+kz7DS2WpwBPvy0fEMP8QKwrK3DSi9wKFLVDppJ9yDpJavAl0G6AQf9/fPz3dc/fh1Pun/yQrNagnJMEGtHaVK5sSfGcSYgDFFbqAibkymMAlREgh37lWkNfhKYApfahKccXrH//vBEWruUNGS2e9mLWkv+TxvVrnw19ly1Oym2blTWorWgvQAuuAHmgr8FJ8zwMCtmM2IIc+FOW11mEBxzDd4iqWyNSi/achmcPO+Fo6afg2Nv0Tp20EP0GD1FKTpCffQBHaMhYuh3tB/h6FH8IO7H7+OP69Q42vy5j7Yi/vIXYBXRCw==</latexit><latexit sha1_base64="zyIfk9aV2TYc/lws0+UrPYXwH0k=">AAACmHicbVHLihNBFK1uX2N8TEYXA7opnRFcSOgWZVyoBIKo4GIUMz2QDqGq+nZSpB5NVfXEUPQX+Dl+jR/gdsCNa6uTLMyMFwoO59y6j3NpJbh1SfIziq9cvXb9xs7Nzq3bd+7udvfunVhdGwZDpoU2p5RYEFzB0HEn4LQyQCQVkNH5oNWzMzCWa/XVLSsYSzJVvOSMuEBNut/zihiqv/k06b1ksvGd3JYlkVwscSdXsGBaSqIKnw8Gjc8lcTNGhB80zbaaZRuVUp+1Yihr57x6UbnOu+kz7DS2WpwBPvy0fEMP8QKwrK3DSi9wKFLVDppJ9yDpJavAl0G6AQf9/fPz3dc/fh1Pun/yQrNagnJMEGtHaVK5sSfGcSYgDFFbqAibkymMAlREgh37lWkNfhKYApfahKccXrH//vBEWruUNGS2e9mLWkv+TxvVrnw19ly1Oym2blTWorWgvQAuuAHmgr8FJ8zwMCtmM2IIc+FOW11mEBxzDd4iqWyNSi/achmcPO+Fo6afg2Nv0Tp20EP0GD1FKTpCffQBHaMhYuh3tB/h6FH8IO7H7+OP69Q42vy5j7Yi/vIXYBXRCw==</latexit><latexit sha1_base64="ZUqh65WTamvf+vuVoIsEeoyjB8I=">AAACmHicbVHLihNBFK1uX2N8TNTFgG5KM4ILCd2i6MYhEEQFF6OY6YF0CFXVt5Mi9WiqqicTiv4Cv3A+w41rqzO9MDNeKDicc+s+zqWV4NYlyUUU37h56/advbu9e/cfPNzvP3p8YnVtGEyYFtqcUmJBcAUTx52A08oAkVRARlfjVs/OwFiu1U+3qWAmyULxkjPiAjXv/8orYqg+92kyfMdk43u5LUsiudjgXq5gzbSURBU+H48bn0vilowIP26aXTXLOpVSn7ViKGtXvHpbud6nxWvsNLZanAE+/Lb5SA/xGrCsrcNKr3EoUtUOmnl/kAyTbeDrIO3AAHVxPO//yQvNagnKMUGsnaZJ5WaeGMeZgDBEbaEibEUWMA1QEQl25remNfhlYApcahOecnjL/vvDE2ntRtKQ2e5lr2ot+T9tWrvyw8xz1e6k2GWjshatBe0FcMENMBf8LThhhodZMVsSQ5gLd9rpsoTgmGvwDklla1R61Zbr4OTNMBw1/Z4MRkedZXvoGXqBXqEUvUcj9AUdowli6Hd0EOHoefw0HsWf46+XqXHU/XmCdiL+8RdPVcz1</latexit>
20
Improvements
y = b; for k = 1:Lrows for j = 1:k-1 y(k) = y(k) - L(k,j)*y(j); end y(k) = y(k)/L(k,k); end
y = b; for m = 1:bCols for k = 1:Lrows for j = 1:k-1 y(k,m) = y(k,m) - L(k,j)*y(j,m); end y(k,m) = y(k,m)/L(k,k); end end
Option 1 : use an extra loop to deal with the columns of b
Note the complexity of this part is now O(n2m) where m is the number
of columns in b. We expect m n so the LU decomposition is likelystill to be the dominant cost.