Conjugate gradient squared method

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

In numerical linear algebra, the conjugate gradient squared method (CGS) is an iterative algorithm for solving systems of linear equations of the form A๐ฑ=๐›, particularly in cases where computing the transpose AT is impractical.[1] The CGS method was developed as an improvement to the biconjugate gradient method.[2][3][4]

Background

[edit | edit source]

A system of linear equations A๐ฑ=๐› consists of a known matrix A and a known vector ๐›. To solve the system is to find the value of the unknown vector ๐ฑ.[3][5] A direct method for solving a system of linear equations is to take the inverse of the matrix A, then calculate ๐ฑ=Aโˆ’1๐›. However, computing the inverse is computationally expensive. Hence, iterative methods are commonly used. Iterative methods begin with a guess ๐ฑ(0), and on each iteration the guess is improved. Once the difference between successive guesses is sufficiently small, the method has converged to a solution.[6][7]

As with the conjugate gradient method, biconjugate gradient method, and similar iterative methods for solving systems of linear equations, the CGS method can be used to find solutions to multi-variable optimisation problems, such as power-flow analysis, hyperparameter optimisation, and facial recognition.[8]

Algorithm

[edit | edit source]

The algorithm is as follows:[9]

  1. Choose an initial guess ๐ฑ(0)
  2. Compute the residual ๐ซ(0)=๐›โˆ’A๐ฑ(0)
  3. Choose ๐ซ~(0)=๐ซ(0)
  4. For i=1,2,3, do:
    1. ฯ(iโˆ’1)=๐ซ~T(iโˆ’1)๐ซ(iโˆ’1)
    2. If ฯ(iโˆ’1)=0, the method fails.
    3. If i=1:
      1. ๐ฉ(1)=๐ฎ(1)=๐ซ(0)
    4. Else:
      1. ฮฒ(iโˆ’1)=ฯ(iโˆ’1)/ฯ(iโˆ’2)
      2. ๐ฎ(i)=๐ซ(iโˆ’1)+ฮฒiโˆ’1๐ช(iโˆ’1)
      3. ๐ฉ(i)=๐ฎ(i)+ฮฒ(iโˆ’1)(๐ช(iโˆ’1)+ฮฒ(iโˆ’1)๐ฉ(iโˆ’1))
    5. Solve M๐ฉ^=๐ฉ(i), where M is a pre-conditioner.
    6. ๐ฏ^=A๐ฉ^
    7. ฮฑ(i)=ฯ(iโˆ’1)/๐ซ~T๐ฏ^
    8. ๐ช(i)=๐ฎ(i)โˆ’ฮฑ(i)๐ฏ^
    9. Solve M๐ฎ^=๐ฎ(i)+๐ช(i)
    10. ๐ฑ(i)=๐ฑ(iโˆ’1)+ฮฑ(i)๐ฎ^
    11. ๐ช^=A๐ฎ^
    12. ๐ซ(i)=๐ซ(iโˆ’1)โˆ’ฮฑ(i)๐ช^
    13. Check for convergence: if there is convergence, end the loop and return the result

See also

[edit | edit source]

References

[edit | edit source]
  1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  3. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  7. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  8. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  9. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).