![]() |
QPMS
Electromagnetic multiple scattering library and toolkit.
|
Beyn's algorithm for nonlinear eigenvalue problems. More...
#include <stddef.h>#include <complex.h>
Go to the source code of this file.
Data Structures | |
| struct | beyn_contour_t |
| Complex plane integration contour structure. More... | |
| struct | beyn_result_t |
| Beyn algorithm result structure (pure C array version). More... | |
Typedefs | |
| typedef int(* | beyn_function_M_t) (complex double *target_M, size_t m, complex double z, void *params) |
| User-supplied function that provides the (row-major) m × m matrix M(z) whose "roots" are to be found. More... | |
| typedef int(* | beyn_function_M_inv_Vhat_t) (complex double *target_M_inv_Vhat, size_t m, size_t l, const complex double *Vhat, complex double z, void *params) |
| (optional) User-supplied function that, given \( \hat V \), calculates \( M(z)^{-1} \hat V \). More... | |
| typedef struct beyn_contour_t | beyn_contour_t |
| Complex plane integration contour structure. | |
| typedef struct beyn_result_t | beyn_result_t |
| Beyn algorithm result structure (pure C array version). | |
Functions | |
| beyn_contour_t * | beyn_contour_ellipse (complex double centre, double halfax_re, double halfax_im, size_t npoints) |
| Complex plane elliptic integration contour with axes parallel to the real, imaginary axes. More... | |
| beyn_contour_t * | beyn_contour_halfellipse (complex double centre, double halfax_re, double halfax_im, size_t npoints, beyn_contour_halfellipse_orientation or) |
| Complex plane "half-elliptic" integration contour with axes parallel to the real, imaginary axes. More... | |
| beyn_contour_t * | beyn_contour_kidney (complex double centre, double halfax_re, double halfax_im, double rounding, size_t n, beyn_contour_halfellipse_orientation or) |
| Similar to halfellipse but with rounded corners. More... | |
| void | beyn_result_free (beyn_result_t *result) |
| beyn_result_t * | beyn_solve (size_t m, size_t l, beyn_function_M_t M, beyn_function_M_inv_Vhat_t M_inv_Vhat, void *params, const beyn_contour_t *contour, double rank_tol, size_t rank_min_sel, double res_tol) |
| Solve a non-linear eigenproblem using Beyn's algorithm. More... | |
Beyn's algorithm for nonlinear eigenvalue problems.
| typedef int(* beyn_function_M_inv_Vhat_t) (complex double *target_M_inv_Vhat, size_t m, size_t l, const complex double *Vhat, complex double z, void *params) |
(optional) User-supplied function that, given \( \hat V \), calculates \( M(z)^{-1} \hat V \).
Pure C array version
| typedef int(* beyn_function_M_t) (complex double *target_M, size_t m, complex double z, void *params) |
User-supplied function that provides the (row-major) m × m matrix M(z) whose "roots" are to be found.
Pure C array version
| beyn_contour_t* beyn_contour_ellipse | ( | complex double | centre, |
| double | halfax_re, | ||
| double | halfax_im, | ||
| size_t | npoints | ||
| ) |
Complex plane elliptic integration contour with axes parallel to the real, imaginary axes.
Free using free().
| beyn_contour_t* beyn_contour_halfellipse | ( | complex double | centre, |
| double | halfax_re, | ||
| double | halfax_im, | ||
| size_t | npoints, | ||
| beyn_contour_halfellipse_orientation | or | ||
| ) |
Complex plane "half-elliptic" integration contour with axes parallel to the real, imaginary axes.
Free using free().
| beyn_contour_t* beyn_contour_kidney | ( | complex double | centre, |
| double | halfax_re, | ||
| double | halfax_im, | ||
| double | rounding, | ||
| size_t | n, | ||
| beyn_contour_halfellipse_orientation | or | ||
| ) |
Similar to halfellipse but with rounded corners.
| rounding | Must be in interval [0, 0.5) |
| beyn_result_t* beyn_solve | ( | size_t | m, |
| size_t | l, | ||
| beyn_function_M_t | M, | ||
| beyn_function_M_inv_Vhat_t | M_inv_Vhat, | ||
| void * | params, | ||
| const beyn_contour_t * | contour, | ||
| double | rank_tol, | ||
| size_t | rank_min_sel, | ||
| double | res_tol | ||
| ) |
Solve a non-linear eigenproblem using Beyn's algorithm.
| m | Dimension of the matrix M. |
| l | Number of columns of the random matrix \( \hat V \) (larger than the expected number of solutions). |
| M | Function providing the matrix \( M(z) \). |
| M_inv_Vhat | Fuction providing the matrix \( M^{-1}(z) \hat V \) (optional). |
| params | Parameter pointer passed to M() and M_inv_Vhat(). |
| contour | Integration contour. |
| rank_tol | (default: `1e-4`) TODO DOC. |
| rank_min_sel | Minimum number of eigenvalue candidates, even if they don't pass rank_tol. |
| res_tol | (default: `0.0`) TODO DOC. |