Vous êtes sur la page 1sur 16

SSC335/394 Scientific and Technical Computing

Non-Linear Problems and Optimization

The University of Texas at Austin, 2012 Please see the final slide for Copyright and licensing information

Linear PDEs
u_t - \Delta(u) = f

Linear PDE review: Methods to solution Spacial discretization ( FDM, FVM, FEM ) Time stepping methods ( Forward Euler, Crank Nicholson, Runga Kutta )

Slide 2

Non-linear Problem
The heat equation also takes the following form:

u_t div( q(u) * grad(u)) = f


Previously q(u) = k, which can be taken out of the equations and thus all variables separated. If q(u) is based upon the heat of the system (such as a linear heat disappation q(u) = u), we have a non-linear system

Slide 3

Non-linear Problem
Simplify it a bit

div( u * grad(u)) = f
Methods for attacking: Initialize: the current guess Update: Determine a new guess from the current guess Stop or Repeat: If the stopping criterion is not satisfied and progress is being made, use the new guess as the current guess and repeat the process from step 2.
Slide 4

Picard Iteration
Simplify it a bit

div( u * grad(u)) = f
Simplify further by using the previous solution to model q(u) div( u_old * grad(u)) = f

Slide 5

Picard Iteration
Pick initial guess that makes sense,

div( u_old * grad(u)) = f


in this case u_0 = {1} Why does this make sense?

Slide 6

Picard Iteration
How will we stop?

div( u_old * grad(u)) = f

Slide 7

Picard Iteration
How will we stop?

div( u_old * grad(u)) = f

Measure the difference between u_old and u. Absolute difference: ||u_old u|| < eps Relative difference: ||u_old u || / ||u|| < eps
What makes these two different?
Slide 8

Picard Iteration
How will we stop?

div( u_old * grad(u)) = f


After iterating a critical number of times. The iteration might not converge to true solution May be unacceptably slow

Slide 9

Picard Iteration
Successively substitute non-linear parts of equations

Initialize: Guess or previous linear solution Update: Substitute previous guess into non-linear method Stop or Repeat: Until difference between successive iterates is small or reached too many iterations

Slide 10

Problems with Picard


Numerous iterations Only solves very small non linearities i.e. small perturbations on linear equations.

How do we improve? Better guess Better update

Slide 11

Newton Iteration
Basic idea, use the derivative of the function to update. That is:

Take the non-linear function as:


F(u) = 0 Then the iteration is formed by: u_new = u_old F(u_old) / F^-1 (u_old)

Slide 12

Newton Iteration
What does it mean to take derivative step in multiple dimentions? Same as solving: J(u) \delta u = F(u) Then the iteration is formed by: u_new = u_old w \delta u Where w is a parameter in [0,1]
Slide 13

Newton Iteration
J(u) is called the Jacobian:

J_ij = F^i_j
What does this mean for div(q(u) * grad(u)) = f

Slide 14

Newton Iteration
F(u) = div(q(u) * grad(u)) - f

J(u) = div(q(u) \delta u * grad(u) + div( q(u)*grad(u)) \delta(u)

Update turns into solve for delta(u) with u = u_old


div(q(u) \delta u * grad(u) + div( q(u)*grad(u)) \delta(u) =div(q(u) * grad(u)) - f

Slide 15

The University of Texas at Austin, 2012 This work is licensed under the Creative Commons Attribution Non-Commercial 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc/3.0/ When attributing this work, please use the following text: "[Title of this Slide Deck] by The Texas Advanced Computing Center, 2012. Available under a Creative Commons Attribution Non-Commercial 3.0 Unported License

Vous aimerez peut-être aussi