Biblioteka GSL (index)


Biblioteka GSL (5) - root-finding

WPROWADZENIE

ZADANIE 5.1 (ONE DIMENSIONAL ROOT-FINDING)

W jednym wymiarze mamy dwa rodzaje algorytmów szukania rozwiązań:


#include <gsl/gsl_roots.h>

// Inicjalizacja solvera.

const gsl_root_fsolver_type *T;
gsl_root_fsolver *s;

// T = gsl_root_fsolver_bisection;
// T = gsl_root_fsolver_falsepos;
T = gsl_root_fsolver_brent;
s = gsl_root_fsolver_alloc (T);

// Nazwę solvera zwraca funkcja gsl_root_fsolver_name(s).
// Trzeba przygotować funkcję i przedział.

int status;
double x_lower, x_upper;
double epsabs, epsrel;
gsl_function F;

gsl_root_fsolver_set (s, &F, x_lower, x_upper);

// Dalej biegną iteracje, w czasie których możemy pobierać
// rozwiązanie tymczasowe i tymczasowe granice przedziału.
// Warunek zakończenia to za dużo iteracji lub osiągnięta dokładność
//   |a - b| < epsabs + epsrel min(|a|,|b|).
// Funkcja testująca zwraca GSL_SUCCESS, jeżeli warunek został osiągnięty.

status = gsl_root_test_interval (x_lower, x_upper, epsabs, epsrel);
if (status == GSL_SUCCESS) printf ("Converged:\n");

// Na końcu zwalniamy pamięć.

gsl_root_fsolver_free (s);

ZADANIE 5.2 (MULTIDIMENSIONAL ROOT-FINDING)

Metody poszukiwania rozwiązań są podzielone na metody korzystające z pochodnych (gsl_multiroot_fdfsolver) i metody nie korzystające z pochodnych (gsl_multiroot_fsolver).


#include <gsl/gsl_multiroots.h>



ZADANIE 5.3


Biblioteka GSL (index)