top of page
Search
cedarcantab

LCP

The Linear Complementarity Problem (LCP) is a fundamental concept in mathematical optimization and computational mechanics. It involves finding vectors that satisfy certain linear inequalities and complementarity conditions. The LCP can be formally defined as follows:

Given a real matrix ( M ) and vector ( q ), the LCP seeks vectors ( z ) and ( w ) which satisfy:

  1. ( w, z \geq 0 ) (non-negativity)

  2. ( w = Mz + q ) (system of equations)

  3. ( z^T w = 0 ) (complementarity condition)

The complementarity condition implies that for each index ( i ), at least one of ( w_i ) and ( z_i ) must be zero. This condition is central to the LCP as it represents a situation where either the original variable or its complement must be active, but not both simultaneously.


The key methods for solving Linear Complementarity Problems (LCPs) can be broadly categorized into two types: pivoting methods and iterative methods. Here’s a brief overview of these methods:

Pivoting Methods:

Pivoting methods are finite algorithms that involve a series of transformations to the problem until a solution is found. The most notable pivoting method is:

  • Lemke’s Method: This method incrementally constructs a solution by performing pivots, similar to the simplex method in linear programming. It’s particularly well-known for its application to LCPs and is one of the foundational algorithms in this area.

Iterative Methods:

Iterative methods start with an initial guess and refine it iteratively until the solution satisfies the LCP conditions. Some of the iterative methods include:

  • Interior-Point Methods: These methods approach the solution by traversing the interior of the feasible region and are known for their polynomial time complexity, making them suitable for large-scale problems.

  • Projection Methods: These methods project an arbitrary point onto the feasible region defined by the LCP constraints and iteratively improve the solution.

  • Relaxation Methods: These methods relax some of the constraints of the LCP and solve a sequence of easier problems that converge to the solution of the original LCP.



The Gauss-Seidel algorithm, also known as the Liebmann method or the method of successive displacement, is an iterative method used to solve a system of linear equations. It is named after the German mathematicians Carl Friedrich Gauss and Philipp Ludwig von Seidel.

Here’s how the Gauss-Seidel algorithm works:

  1. The algorithm starts with an initial guess for the solution vector.

  2. It then iteratively updates each component of the solution vector by solving the corresponding equation for that component while using the most recent values for all other components.

The key formula for the Gauss-Seidel iteration for each component ( x_i ) is given by:

where:

( a_{ii} ) is the diagonal element of the matrix in the ( i^{th} ) row,

( b_i ) is the ( i^{th} ) element of the constant vector,

( x_j^{(new)} ) is the latest updated value of the ( j^{th} ) component, and

( x_j^{(old)} ) is the previous value of the ( j^{th} ) component.

The Gauss-Seidel method is particularly effective when the matrix is either strictly diagonally dominant or symmetric and positive definite. It is similar to the Jacobi method but differs in that it uses the latest updated values as soon as they are available, which can lead to faster convergence.


the Gauss-Seidel method can be adapted to solve Linear Complementarity Problems (LCPs). Specifically, variations of the Gauss-Seidel method, such as the projected Gauss-Seidel method, have been developed for this purpose. These methods are particularly useful for solving LCPs characterized by matrices with positive diagonal entries and certain dominance properties.

The projected Gauss-Seidel method works by applying the standard Gauss-Seidel iteration to a modified problem where the complementarity conditions are enforced through projection operations. This allows the method to iteratively approach a solution that satisfies both the linear equations and the complementarity conditions inherent in LCPs.


These adaptations of the Gauss-Seidel method are part of a broader class of iterative methods for solving LCPs, which also includes other techniques like the Jacobi method and relaxation methods.





The Jacobi method is an iterative algorithm used for solving a system of linear equations, particularly those that are strictly diagonally dominant. Here’s a step-by-step explanation of how it works:

Initialization: Start with an initial guess for the solution vector, often denoted as ( x^{(0)} ).

Decomposition: Decompose the coefficient matrix ( A ) into its diagonal component ( D ) and its off-diagonal components ( R ), such that ( A = D + R ).

Iteration: For each iteration ( k ), update each component of the solution vector ( x ) using the formula

where ( a_{ii} ) is the diagonal element of ( A ), ( b_i ) is the ( i )-th element of the constant vector ( b ), and ( x_j^{(k)} ) is the ( j )-th component of the solution vector from the previous iteration.

Convergence Check: After each iteration, check if the solution has converged. This can be done by checking if the difference between successive iterations is below a certain tolerance level.

Repeat: If convergence has not been reached, repeat the iteration process using the newly calculated values.

The Jacobi method requires that the matrix ( A ) be strictly or irreducibly diagonally dominant for convergence. This means that for each row of ( A ), the absolute value of the diagonal term must be greater than the sum of the absolute values of the other terms in that row.

The method is particularly useful for large, sparse systems where direct methods like Gaussian elimination are less efficient. It’s also relatively simple to implement and parallelize, which can be advantageous for computational purposes

6 views0 comments

Recent Posts

See All

p2 naive broadphase

var Broadphase = require('../collision/Broadphase'); module.exports = NaiveBroadphase; /** * Naive broadphase implementation. Does N^2...

sopiro motor constranit

import { Matrix2, Vector2 } from "./math.js"; import { RigidBody } from "./rigidbody.js"; import { Settings } from "./settings.js";...

コメント


記事: Blog2_Post
bottom of page