RcdMathLib_doc
Open Source Library for Linear and Non-linear Algebra
levenberg_marquardt.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2020 Zakaria Kasmi <zkasmi@inf.fu-berlin.de>
3  * 2020 Freie Universität Berlin
4  *
5  * This file is subject to the terms and conditions of the GNU Lesser General
6  * Public License v2.1. See the file LICENSE in the top level directory for more
7  * details.
8  */
9 
24 #ifndef LEVENBERG_MARQUARDT_H_
25 #define LEVENBERG_MARQUARDT_H_
26 
27 #include <inttypes.h>
28 
29 #include "matrix.h"
30 #include "vector.h"
31 
53 uint8_t opt_levenberg_marquardt(uint8_t f_length, uint8_t n,
54  vector_t x0_vec[n],
55  vector_t data_vec[f_length],
56  matrix_t eps, matrix_t tau, matrix_t beta0,
57  matrix_t beta1,
58  uint8_t max_iter_num,
59  vector_t est_x_vec[n],
60  void (*get_f_error)(vector_t x0_vec[],
61  vector_t data_vec[],
62  vector_t f_vec[]),
63  void (*get_jacobian)(vector_t x0_vec[],
64  matrix_t J[][n])
65  );
66 
79  matrix_t JTJ[][n]);
80 
81 #endif /* LEVENBERG_MARQUARDT_H_ */
opt_levenberg_marquardt_get_mu0
matrix_t opt_levenberg_marquardt_get_mu0(uint8_t n, matrix_t tau, matrix_t JTJ[][n])
Compute the initial value of the Levenberg–Marquardt (LVM) algorithm.
Definition: levenberg_marquardt.c:227
vector_t
#define vector_t
Define the data type of the vector elements.
Definition: vector.h:33
matrix.h
Matrix computations.
opt_levenberg_marquardt
uint8_t opt_levenberg_marquardt(uint8_t f_length, uint8_t n, vector_t x0_vec[n], vector_t data_vec[f_length], matrix_t eps, matrix_t tau, matrix_t beta0, matrix_t beta1, uint8_t max_iter_num, vector_t est_x_vec[n], void(*get_f_error)(vector_t x0_vec[], vector_t data_vec[], vector_t f_vec[]), void(*get_jacobian)(vector_t x0_vec[], matrix_t J[][n]))
Implements the Levenberg–Marquardt (LVM) algorithm.
Definition: levenberg_marquardt.c:143
matrix_t
#define matrix_t
Define the data type of the matrix elements.
Definition: matrix.h:38
vector.h
Vector computations.