220 likes | 545 Views
Solution of linear equations using Gaussian elimination. Home. HOME. Introduction. Gaussian Elimination Procedure. Gaussian Elimination Method. Programming Exercise. Resources. Learning Objectives. Learning objectives in this module
E N D
Home HOME Introduction Gaussian Elimination Procedure Gaussian Elimination Method Programming Exercise Resources
Learning Objectives • Learning objectives in this module • Develop problem solution skills using computers and numerical methods • Review the Gaussian elimination method for solving simultaneous linear equations • Develop programming skills using FORTRAN • New FORTRAN elements in this module • -use ofNAG-library
Introduction Solution of sets of linear equations is required in many petroleum applications. Many methods exist for this purpose, direct methods as well as iterative methods. The reference mentioned in the end may be consulted for a review of such methods. A direct method frequently used in petroleum applications is the Gaussian elimination method, and the simplest form of this method will be discussed below. First, let’s review the concept of simultaneous linear equations. A set of linear simultaneous equations may be written as: .......
Introduction • Here we have a total of N unknowns (xj, j=1, 2… N), related through M equations. The coefficients in the left sides of the equations (aij, i=1, 2… N ; j=1, 2… M ) are known parameters, and so are also the coefficients on the right side (bi, i=1, 2… M). .......
Introduction The equations may alternatively be written in a compact form: where A is the coefficient matrix, and b is the right hand side vector: If the number of unknowns is equal to the number of equations, N=M, we may be able to solve the set of equations, provided that the equations are unique. Gaussian Elimination Method
Gaussian elimination method For simplicity, let’s use the following set of 3 equations and 3 unknowns, ie. N=3 and M=3, in order to illustrate the Gaussian elimination method: The method starts by multiplying Eq. (4) by –a21/a11 and then add it to Eq. (5). The resulting equation becomes: We then multiply Eq.(4) by and add it to Eq.(6), resulting in: (4) (5) (6)
Gaussian elimination method The set of equation has now become Next, we multiply Eq. (8) by –a’32/a’22 and add it to Eq. (9), so that the set of equations become: This completes the first part of the Gaussian elimination method, called the forward elimination process. (7) (8) (9) (10) (11) (12) Continue to the Second Part
Gaussian elimination method Eq. (12) may now be used to solve directly for x3: After completion of the forward elimination process, determined the last unknown of the vector (x3) by Eq. (13), we will perform a back substitution process. This simply means that as the unknowns are calculated, in our simple example from x3 and downwards, they are substituted into the equations above, and the next unknown may be computed. For Eqs. (12) and (11) this process is carried out as follows: Based on the example above, we may formulate a general procedure for the forward elimination, solution for the last unknown, and back substitution to get the rest of the unknowns (13) (14) (15) Gaussian Elimination Procedure
Gaussian elimination procedure 1) Forward elimination: 2) Solving for xN: 3) Back substitution:
Programming Exercise Make a FORTRAN program consisting of a main program, that reads the coefficients of the system of equations (n, a1,1…an,n , d1…dn) from an input file (IN.DAT) and writes the results (x1…xn) to an out-file (OUT.DAT), and a subroutine, SUBROUTINE GAUSS(X,A,D,N), that uses the Gaussian elimination method in order to solve the set of equations and returns n values of x to the main program Test the program on the following set of equations: Push • 2x • +3y • +4z • -5s • +7t • = • -35 • 8x • -2y • -3z • +9s • +3t • = • +53 • 4y • +6z • -3s • -2t • = • -33 • 5x • -7y • +8z • +3s • -9t • = • -19 • 3x • +5y • -2z • +4s • +6t • = • +27 Continue
Programming Exercise • The Petra-server includes a NAG-library of scientific subroutines. Find a subroutine in this library (use naghelp) that may be used for solution of simultaneous equations (Gaussian elimination method or some other method). Modify the program above so that is asks you on the screen if you want to use the programmed Gaussian-routine or the NAG-routine for the solution. Check that the solutions from the two methods are identical. (Note that all real variables should be declared as REAL*8 (double precision) since the NAG-routines require this) • The NAG-routine may be linked in by the command • xlf –o prog fil.f –L/localiptibm3/lib –l nag Resources
Resources Introduction to Fortran Fortran Template here The whole exercise in a printable format here Web sites • Numerical Recipes In Fortran • Fortran Tutorial • Professional Programmer's Guide to Fortran77 • Programming in Fortran77
General information About the author
FAQ • No questions have been posted yet. However, when questions are asked they will be posted here. • Remember, if something is unclear to you, it is a good chance that there are more people that have the same question For more general questions and definitions try these Dataleksikon Webopedia Schlumberger Oilfield Glossary
References W. H. Preuss, et al., “Numerical Recipes in Fortran”, 2nd edition Cambridge University Press, 1992 References to the textbook : • Gauss Jordan elimination: page 27 • Gaussian Elimination with backsubstitution: page 33
Summary Subsequent to this module you should... • be familiar with the Gaussian Elimination Method • have a good feel for how Nag routines are used • know how to efficiently use subroutines • have obtained a better understanding on solving problems in Fortran