Multibody system

From formulasearchengine
Revision as of 22:22, 31 January 2014 by en>Catskul (→Minimal coordinates: fix awkward non-standard term for software.)
Jump to navigation Jump to search

In numerical optimization, the nonlinear conjugate gradient method generalizes the conjugate gradient method to nonlinear optimization. For a quadratic function f(x):

f(x)=‖Ax−b‖2

The minimum of f is obtained when the gradient is 0:

∇xf=2A⊤(Ax−b)=0.

Whereas linear conjugate gradient seeks a solution to the linear equation A⊤Ax=A⊤b, the nonlinear conjugate gradient method is generally used to find the local minimum of a nonlinear function using its gradient ∇xf alone. It works when the function is approximately quadratic near the minimum, which is the case when the function is twice differentiable at the minimum.

Given a function f(x) of N variables to minimize, its gradient ∇xf indicates the direction of maximum increase. One simply starts in the opposite (steepest descent) direction:

Δx0=−∇xf(x0)

with an adjustable step length α and performs a line search in this direction until it reaches the minimum of f:

α0:=arg⁡minαf(x0+αΔx0),
x1=x0+α0Δx0

After this first iteration in the steepest direction Δx0, the following steps constitute one iteration of moving along a subsequent conjugate direction sn, where s0=Δx0:

  1. Calculate the steepest direction: Δxn=−∇xf(xn),
  2. Compute βn according to one of the formulas below,
  3. Update the conjugate direction: sn=Δxn+βnsn−1
  4. Perform a line search: optimize αn=arg⁡minαf(xn+αsn),
  5. Update the position: xn+1=xn+αnsn,

With a pure quadratic function the minimum is reached within N iterations (excepting roundoff error), but a non-quadratic function will make slower progress. Subsequent search directions lose conjugacy requiring the search direction to be reset to the steepest descent direction at least every N iterations, or sooner if progress stops. However, resetting every iteration turns the method into steepest descent. The algorithm stops when it finds the minimum, determined when no progress is made after a direction reset (i.e. in the steepest descent direction), or when some tolerance criterion is reached.

Within a linear approximation, the parameters α and β are the same as in the linear conjugate gradient method but have been obtained with line searches. The conjugate gradient method can follow narrow (ill-conditioned) valleys where the steepest descent method slows down and follows a criss-cross pattern.

Three of the best known formulas for βn are titled Fletcher-Reeves (FR), Polak-Ribière (PR), and Hestenes-Stiefel (HS) after their developers. They are given by the following formulas:

  • Fletcher–Reeves:
βnFR=Δxn⊤ΔxnΔxn−1⊤Δxn−1
  • Polak–Ribière:
βnPR=Δxn⊤(Δxn−Δxn−1)Δxn−1⊤Δxn−1
  • Hestenes-Stiefel:
βnHS=−Δxn⊤(Δxn−Δxn−1)sn−1⊤(Δxn−Δxn−1).

These formulas are equivalent for a quadratic function, but for nonlinear optimization the preferred formula is a matter of heuristics or taste. A popular choice is β=max⁡{0,βPR} which provides a direction reset automatically.

Newton based methods - Newton-Raphson Algorithm, Quasi-Newton methods (e.g., BFGS method) - tend to converge in fewer iterations, although each iteration typically requires more computation than a conjugate gradient iteration as Newton-like methods require computing the Hessian (matrix of second derivatives) in addition to the gradient. Quasi-Newton methods also require more memory to operate (see also the limited memory L-BFGS method).

ru:Метод сопряжённых градиентов

Template:Optimization algorithms