25
Solving Linear Systems: Iterative Methods and Sparse Systems COS 323

Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Solving Linear Systems: Iterative Methods and Sparse Systems

COS 323

Page 2: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Direct vs. Iterative Methods

• So far, have looked at direct methods for solving linear systems – Predictable number of steps

– No answer until the very end

• Alternative: iterative methods – Start with approximate answer

– Each iteration improves accuracy

– Stop once estimated error below tolerance

Page 3: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Benefits of Iterative Algorithms

• Some iterative algorithms designed for accuracy: – Direct methods subject to roundoff error

– Iterate to reduce error to O(ε )

• Some algorithms produce answer faster – Most important class: sparse matrix solvers

– Speed depends on # of nonzero elements, not total # of elements

• Today: iterative improvement of accuracy, solving sparse systems (not necessarily iteratively)

Page 4: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Iterative Improvement

• Suppose you’ve solved (or think you’ve solved) some system Ax=b

• Can check answer by computing residual: r = b – Axcomputed

• If r is small (compared to b), x is accurate

• What if it’s not?

Page 5: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Iterative Improvement

• Large residual caused by error in x: e = xcorrect – xcomputed

• If we knew the error, could try to improve x: xcorrect = xcomputed + e

• Solve for error: Axcomputed = A(xcorrect – e) = b – r Axcorrect – Ae = b – r Ae = r

Page 6: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Iterative Improvement

• So, compute residual, solve for e, and apply correction to estimate of x

• If original system solved using LU, this is relatively fast (relative to O(n3), that is): • O(n2) matrix/vector multiplication +

O(n) vector subtraction to solve for r

• O(n2) forward/backsubstitution to solve for e

• O(n) vector addition to correct estimate of x

Page 7: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Sparse Systems

• Many applications require solution of large linear systems (n = thousands to millions) – Local constraints or interactions: most entries are 0

– Wasteful to store all n2 entries

– Difficult or impossible to use O(n3) algorithms

• Goal: solve system with: – Storage proportional to # of nonzero elements

– Running time << n3

Page 8: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Special Case: Band Diagonal

• Last time: tridiagonal (or band diagonal) systems – Storage O(n): only relevant diagonals

– Time O(n): Gaussian elimination with bookkeeping

Page 9: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Cyclic Tridiagonal

• Interesting extension: cyclic tridiagonal

• Could derive yet another special case algorithm, but there’s a better way

bx

aaaaaa

aaaaaa

aaaaaa

=

666561

565554

454443

343332

232221

161211

Page 10: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Updating Inverse

• Suppose we have some fast way of finding A-1 for some matrix A

• Now A changes in a special way: A* = A + uvT

for some n×1 vectors u and v

• Goal: find a fast way of computing (A*)-1 – Eventually, a fast way of solving (A*) x = b

Page 11: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Analogue for Scalars

+

−=

+

−+=

+=

+

+

ββ

α

βββ

α

βαβα

αβαα

α

α

α

αα

α

1

1

1

11

1

111

111

)1(11:

?by division without 1computetohow,1Knowing:

A

Q

Page 12: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Sherman-Morrison Formula

( )

xAAx

AAxAx

AAIAAIAAA

λλλλ

===

==

+=

+=+=

−−

−−

−−−−

T1T12

T1T12

T1

11T11*

T1T*

itCallScalar!thatNote

Let

)()(

uvvu

vuvuuv

uvuvuv

Page 13: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Sherman-Morrison Formula

( ) ( )( )

( )

( )

( )

( )uv

uv1T

1T111*

1

2

1

1

1

1

01

1

−−−−

+−=∴

+=

+−∴

=+

+−

=++

−+

=++

+−

+=+=

AAAAA

xIxI

IxIxI

IxIxxI

xIxx

xxIxxx

λ

λ

λ

λ

λλ

Page 14: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Sherman-Morrison Formula

( )

( )

zvyvzyxuzby

bxzv

yvzyxuzby

uvbvubbx

T

T

*

T

T11

1T

1T111*

1 , , solve

, solve to So,1

that so , ,Let

1

+−===

=+

−===

+−==

−−

−−−−

AA

A

AA

AAAAA

Page 15: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Applying Sherman-Morrison

• Let’s consider cyclic tridiagonal again:

• Take

bx

aaaaaa

aaaaaa

aaaaaa

=

666561

565554

454443

343332

232221

161211

=

=

=

166116616665

565554

454443

343332

232221

1211 1

,

1

,

1

a

v

a

u

aaaaaaa

aaaaaa

aaaaa

A

Page 16: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Applying Sherman-Morrison

• Solve Ay=b, Az=u using special fast algorithm

• Applying Sherman-Morrison takes a couple of dot products

• Total: O(n) time

• Generalization for several corrections: Woodbury

( ) ( ) 1T11T111*

T*

−−−−−−+−=

+=

AVUAVIUAAAUVAA

Page 17: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

More General Sparse Matrices

• More generally, we can represent sparse matrices by noting which elements are nonzero

• Critical for Ax and ATx to be efficient: proportional to # of nonzero elements – We’ll see an algorithm for solving Ax=b

using only these two operations!

Page 18: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Compressed Sparse Row Format

• Three arrays – Values: actual numbers in the matrix

– Cols: column of corresponding entry in values

– Rows: index of first entry in each row

– Example: (zero-based! C/C++/Java, not Matlab!)

3210000031023230

values 3 2 3 2 1 3 1 2 3 cols 1 2 3 0 2 3 1 2 3 rows 0 3 6 6 9

Page 19: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Compressed Sparse Row Format

• Multiplying Ax: for (i = 0; i < n; i++) { out[i] = 0; for (j = rows[i]; j < rows[i+1]; j++) out[i] += values[j] * x[ cols[j] ]; }

3210000031023230

values 3 2 3 2 1 3 1 2 3 cols 1 2 3 0 2 3 1 2 3 rows 0 3 6 6 9

Page 20: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Solving Sparse Systems

• Transform problem to a function minimization! Solve Ax=b ⇒ Minimize f(x) = xTAx – 2bTx

• To motivate this, consider 1D: f(x) = ax2 – 2bx df/dx = 2ax – 2b = 0 ax = b

Page 21: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Solving Sparse Systems

• Preferred method: conjugate gradients

• Recall: plain gradient descent has a problem…

Page 22: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Solving Sparse Systems

• … that’s solved by conjugate gradients

• Walk along direction

• Polak and Ribiere formula:

kkkk dgd β+−= ++ 11

kk

kkk gg

gggk

T1

T )(1

−= ++β

Page 23: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Solving Sparse Systems

• Easiest to think about A = symmetric

• First ingredient: need to evaluate gradient

• As advertised, this only involves A multiplied by a vector

( )bxxfxbxxxf

−=∇−=

AA

2)(2)( TT

Page 24: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Solving Sparse Systems

• Second ingredient: given point xi, direction di, minimize function in that direction

( )( )

iii

ii

ii

iiiii

ii

iii

dtxxdd

bxdt

ddtbxddt

tdm

tmdtdtm

dtxftm

min1

T

T

min

wantTT 022)(

0)(:)(Minimize

)()(Define

+=

−−=

=+−=

=

+=

+

AA

AA

Page 25: Solving Linear Systems: Iterative Methods and Sparse Systems€¦ · Sparse Systems •Many applications require solution of large linear systems (n = thousands to millions) – Local

Solving Sparse Systems

• Just a few sparse matrix-vector multiplies (plus some dot products, etc.) per iteration

• For m nonzero entries, each iteration O(max(m,n))

• Conjugate gradients may need n iterations for “perfect” convergence, but often get decent answer well before then

• For non-symmetric matrices: biconjugate gradient (maintains 2 residuals, requires ATx multiplication)