Mmg
Simplicial remeshers (mesh adaptation, isovalue discretization, lagrangian movement)
|
Find eigenvalues and eigenvectors of matrix. More...
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <assert.h>
#include <stdlib.h>
#include <stdint.h>
#include "eigenv_private.h"
#include "mmgcommon_private.h"
Go to the source code of this file.
Macros | |
#define | MG_EIGENV_EPS27 1.e-27 |
#define | MG_EIGENV_EPS13 1.e-13 |
#define | MG_EIGENV_EPS10 1.e-10 |
#define | MG_EIGENV_EPS5e6 5.e-06 |
#define | MG_EIGENV_EPS6 1.e-06 |
#define | MG_EIGENV_EPS2e6 2.e-06 |
#define | MG_EIGENV_EPS5 1.e-05 |
#define | MAXTOU 50 |
#define | egal(x, y) |
Functions | |
static int | newton3 (double p[4], double x[3]) |
Find root(s) of a polynomial of degree 3. | |
static int | MMG5_check_accuracy (double mat[6], double lambda[3], double v[3][3], double w1[3], double w2[3], double w3[3], double maxm, int order, int symmat) |
int | MMG5_eigenv3d (int symmat, double *mat, double lambda[3], double v[3][3]) |
Find eigenvalues and vectors of a 3x3 matrix. | |
int | MMG5_eigenv2d (int symmat, double *mat, double lambda[2], double vp[2][2]) |
Find eigenvalues and vectors of a 2x2 matrix. | |
int | MMG5_eigen2 (double *mm, double *lambda, double vp[2][2]) |
Find eigenvalues and vectors of a 2x2 matrix. | |
int | MMG5_eigensym (double m[3], double lambda[2], double vp[2][2]) |
Variables | |
static double | Id [3][3] |
Identity matrix. | |
Find eigenvalues and eigenvectors of matrix.
Find eigenvalues and eigenvectors of 2x2 or 3x3 symetric definite positive matrix.
Definition in file eigenv.c.
#define egal | ( | x, | |
y | |||
) |
Check if numbers x and y are equal.
|
static |
mat | pointer to a 3x3 matrix. |
lambda | eigenvalues. |
v | eigenvectors. |
w1 | temporary array to perform the matrix cross product. |
w2 | temporary array to perform the matrix cross product. |
w3 | temporary array to perform the matrix cross product. |
maxm | maximal value of the matrix used for normalization. |
order | order of eigenvalues (1,2,3) or 0 if failed. |
symmat | 0 if matrix is not symetric, 1 otherwise. |
Check the accuracy of the eigenvalues and vectors computation of a 3x3 matrix (symetric).
Definition at line 311 of file eigenv.c.
int MMG5_eigen2 | ( | double * | mm, |
double * | lambda, | ||
double | vp[2][2] | ||
) |
|
inline |
int MMG5_eigenv2d | ( | int | symmat, |
double * | mat, | ||
double | lambda[2], | ||
double | vp[2][2] | ||
) |
Find eigenvalues and vectors of a 2x2 matrix.
symmat | 0 if matrix is not symetric, 1 otherwise. |
mat | pointer to the matrix. |
lambda | eigenvalues. |
v | eigenvectors. |
Definition at line 780 of file eigenv.c.
int MMG5_eigenv3d | ( | int | symmat, |
double * | mat, | ||
double | lambda[3], | ||
double | v[3][3] | ||
) |
Find eigenvalues and vectors of a 3x3 matrix.
symmat | 0 if matrix is not symetric, 1 otherwise. |
mat | pointer to the matrix. |
lambda | eigenvalues. |
v | eigenvectors. |
rows of A-lambda[2]*I
rows of A-lambda[0]*I
Definition at line 385 of file eigenv.c.
|
static |
Find root(s) of a polynomial of degree 3.
p | polynomial coefficients (b=p[2], c=p[1], d=p[0]). |
x | root(s) of polynomial. |
Find root(s) of a polynomial of degree 3: \(P(x) = x^3+bx^2+cx+d\).
Definition at line 86 of file eigenv.c.