Tridiagonal Matrix Algorithm

607 Words3 Pages
Tridiagonal matrix algorithm - Wikipedia, the free encyclopedia Page 1 of 3 H p us improve Wikipedia by supporting Tridiagonal elmatrix algorithmit financially. From Wikipedia, the free encyclopedia The tridiagonal matrix algorithm (TDMA), also known as the Thomas algorithm, is a simplified form of Gaussian elimination that can be used to solve tridiagonal systems of equations. A tridiagonal system may be written as where and . In matrix form, this system is written as For such systems, the solution can be obtained in O(n) operations instead of O(n3) required by Gaussian elimination. A first sweep eliminates the ai's, and then an (abbreviated) backward substitution produces the solution. Example of such matrices commonly arise from the discretization of 1D problems (e.g. the 1D Poisson problem). Contents 1 Method 1.1 Implementation in C 2 Variants 3 References 4 External links Method See the derivation. The first step consists of modifying the coefficients as follows, denoting the new modified coefficients with primes: http://en.wikipedia.org/wiki/Tridiagonal_matrix_algorithm 10/6/2007 Tridiagonal matrix algorithm - Wikipedia, the free encyclopedia Page 2 of 3 This is the forward sweep. The solution is then obtained by back substitution: Implementation in C The following C function will solve a general tridiagonal system. Note that the index i here is zero based, in other words where n is the number of unknowns. //Fills solution into x. Warning: will modify c and d! void TridiagonalSolve(const double *a, const double *b, double *c, double *d, double *x, unsigned int int i; //Modify the coefficients. c[0] = c[0]/b[0]; d[0] = d[0]/b[0]; double id; for(i = 1; i != n; i++){ id = 1.0/(b[i] - c[i - 1]*a[i]); c[i] = c[i]*id; d[i] = (d[i] - a[i]*d[i - 1])*id; } //Division by zero risk.

More about Tridiagonal Matrix Algorithm

Open Document