GRASS GIS 8 Programmer's Manual 8.4.1(2025)-45ca3179ab
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 UNUSED, 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
Adouble **
xdouble *
bdouble *
rowsint
Returns
void

Definition at line 285 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
Adouble **
rowsint
bandwidthint – 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
Adouble **
xdouble *
bdouble *
rowsint
Returns
void

Definition at line 309 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
Adouble **
bdouble *
rowsint
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 UNUSED,
int rows )

lu decomposition

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

Parameters
Adouble **
bdouble * – this vector is needed if its part of the linear equation system, otherwise set it to NULL
rowsint
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
Adouble **
xdouble *
bdouble *
bandwidthint – the bandwidth of the band matrix, if unsure set to rows
rowsint
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
Adouble **
xdouble *
bdouble *
rowsint
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
Adouble **
xdouble *
bdouble *
rowsint
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.