Loading...
Searching...
No Matches
solvers_direct.c File Reference
`#include <math.h>`
`#include <unistd.h>`
`#include <stdio.h>`
`#include <string.h>`
`#include <grass/gis.h>`
`#include <grass/gmath.h>`
`#include <grass/glocale.h>`
Include dependency graph for solvers_direct.c:

Go to the source code of this file.

## Macros

#define | TINY 1.0e-20
#define | COMP_PIVOT 100

## Functions

int | G_math_solver_gauss (double **A, double *x, double *b, int rows)
| The gauss elimination solver for quardatic matrices.
int | G_math_solver_lu (double **A, double *x, double *b, int rows)
| The LU solver for quardatic matrices.
int | G_math_solver_cholesky (double **A, double *x, double *b, int bandwidth, int rows)
| The choleksy decomposition solver for quardatic, symmetric positive definite matrices.
void | G_math_gauss_elimination (double **A, double *b, int rows)
| Gauss elimination.
void | G_math_lu_decomposition (double **A, double *b, int rows)
| lu decomposition
int | G_math_cholesky_decomposition (double **A, int rows, int bandwidth)
| cholesky decomposition for symmetric, positive definite matrices with bandwidth optimization
void | G_math_backward_substitution (double **A, double *x, double *b, int rows)
| backward substitution
void | G_math_forward_substitution (double **A, double *x, double *b, int rows)
| forward substitution

## Macro Definition Documentation

## COMP_PIVOT

#define COMP_PIVOT 100

Definition at line 27 of file solvers_direct.c.

## TINY

#define TINY 1.0e-20

Definition at line 26 of file solvers_direct.c.

## Function Documentation

## G_math_backward_substitution()

void G_math_backward_substitution | ( | double ** | A,
|  | double * | x,
|  | double * | b,
|  | int | rows )

backward substitution

Parameters

  A | double **
  x | double *
  b | double *
  rows | int

Returns
  void

Definition at line 286 of file solvers_direct.c.

References b, and x.

Referenced by G_math_solver_cholesky(), G_math_solver_gauss(), and G_math_solver_lu().

## G_math_cholesky_decomposition()

int G_math_cholesky_decomposition | ( | double ** | A,
|  | int | rows,
|  | int | bandwidth )

cholesky decomposition for symmetric, positive definite matrices with bandwidth optimization

The provided matrix will be overwritten with the lower and upper triangle matrix A = LL^T

Parameters

  A | double **
  rows | int
  bandwidth | int – the bandwidth of the matrix (0 > bandwidth <= cols)

Returns
  void

Definition at line 217 of file solvers_direct.c.

References G_warning().

Referenced by G_math_solver_cholesky().

## G_math_forward_substitution()

void G_math_forward_substitution | ( | double ** | A,
|  | double * | x,
|  | double * | b,
|  | int | rows )

forward substitution

Parameters

  A | double **
  x | double *
  b | double *
  rows | int

Returns
  void

Definition at line 310 of file solvers_direct.c.

References b, and x.

Referenced by G_math_solver_cholesky(), and G_math_solver_lu().

## G_math_gauss_elimination()

void G_math_gauss_elimination | ( | double ** | A,
|  | double * | b,
|  | int | rows )

Gauss elimination.

To run this solver efficiently, no pivoting is supported. The matrix will be overwritten with the decomposite form

Parameters

  A | double **
  b | double *
  rows | int

Returns
  void

Definition at line 153 of file solvers_direct.c.

References b.

Referenced by G_math_solver_gauss().

## G_math_lu_decomposition()

void G_math_lu_decomposition | ( | double ** | A,
|  | double * | b,
|  | int | rows )

lu decomposition

To run this solver efficiently, no pivoting is supported. The matrix will be overwritten with the decomposite form

Parameters

  A | double **
  b | double * – this vector is needed if its part of the linear equation system, otherwise set it to NULL
  rows | int

Returns
  void

Definition at line 186 of file solvers_direct.c.

References b.

Referenced by G_math_solver_lu().

## G_math_solver_cholesky()

int G_math_solver_cholesky | ( | double ** | A,
|  | double * | x,
|  | double * | b,
|  | int | bandwidth,
|  | int | rows )

The choleksy decomposition solver for quardatic, symmetric positive definite matrices.

This solver does not support sparse matrices The matrix A will be overwritten. The result is written to the vector x

Parameters

  A | double **
  x | double *
  b | double *
  bandwidth | int – the bandwidth of the band matrix, if unsure set to rows
  rows | int

Returns
  int – 1 success

Definition at line 124 of file solvers_direct.c.

References b, G_math_backward_substitution(), G_math_cholesky_decomposition(), G_math_forward_substitution(), G_message(), G_warning(), and x.

## G_math_solver_gauss()

int G_math_solver_gauss | ( | double ** | A,
|  | double * | x,
|  | double * | b,
|  | int | rows )

The gauss elimination solver for quardatic matrices.

This solver does not support sparse matrices The matrix A will be overwritten. The result is written to the vector x

Parameters

  A | double **
  x | double *
  b | double *
  rows | int

Returns
  int – 1 success

Definition at line 42 of file solvers_direct.c.

References b, G_math_backward_substitution(), G_math_gauss_elimination(), G_message(), and x.

## G_math_solver_lu()

int G_math_solver_lu | ( | double ** | A,
|  | double * | x,
|  | double * | b,
|  | int | rows )

The LU solver for quardatic matrices.

This solver does not support sparse matrices The matrix A will be overwritten. The result is written to the vector x in the G_math_les structure

Parameters

  A | double **
  x | double *
  b | double *
  rows | int

Returns
  int – 1 success

Definition at line 66 of file solvers_direct.c.

References b, G_alloc_vector(), G_free(), G_math_backward_substitution(), G_math_forward_substitution(), G_math_lu_decomposition(), G_message(), and x.