1 / 22

Knihovna GSL

Knihovna GSL. GSL. GNU Scientific Library numerická knihovna pro programátory v C/C++ převažují rysy klasického C aktuální verze 1.15 (květen 2011) verze pro Linux i se zdrojovými kódy verze pro MS Windows - 1.8 pro překladač GCC. Webové stránky. hlavní stránka

Télécharger la présentation

Knihovna GSL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Knihovna GSL

  2. GSL • GNU Scientific Library • numerická knihovna pro programátory v C/C++ • převažují rysy klasického C • aktuální verze 1.15 (květen 2011) • verze pro Linux i se zdrojovými kódy • verze pro MS Windows - 1.8 • pro překladač GCC

  3. Webové stránky • hlavní stránka • http://www.gnu.org/software/gsl/ • zkompilovaná verze pro MS Windows • http://www.cygwin.com

  4. Oblasti využití • komplexní čísla • hledání kořenů polynomů • vektory a matice • generování permutací • lineární algebra • vlastní čísla matic • FFT (Fast FourierTransforms) • speciální generátory náhodných čísel

  5. Oblasti využití • statistika – histogramy • integrace metodou Monte Carlo • simulované žíhání • řešení diferenciálních rovnic • interpolace • Čebyševova aproximace • hledání kořenů

  6. Oblasti využití • minimalizace metodou nejmenších čtverců • spline funkce

  7. Integrace metodou Monte Carlo • stochastická metoda • založena na sérii náhodných pokusů

  8. Integrace metodou Monte Carlo y d I a x b

  9. Integrace metodou Monte Carlo • generuji náhodně s rovnoměrným rozložením body do "modrého obdélníka" • poměr plochy pod křivkou I ku ploše obdélníka S je roven poměru počtu bodů NI, které padnou pod křivku, ku celkovému počtu vygenerovaných bodů N

  10. Hlavičkové soubory • gsl_math.h • gsl_monte.h • gsl_monte_plain.h • gsl_monte_miser.h • gsl_monte_vegas.h

  11. Obecný princip práce z knihovnou • volání inicializačních a alokačních funkcí • použití vlastních funkcí numerickým metod • volání dealokačních funkcí

  12. Funkce pro základní metodu Inicializace gsl_monte_plain_state *gsl_monte_plain_alloc (size_tdim) • parametry • dim – dimenze funkce, kterou integruji • návratová hodnota • ukazatel na strukturugsl_monte_plain_state

  13. Funkce pro základní metodu Výpočet intgsl_monte_plain_integrate (gsl_monte_function * f, const double xl[], const double xu[], size_t dim, size_t calls, gsl_rng * r, gsl_monte_plain_state * s, double * result, double * abserr) • parametry • f – ukazatel na funkci, kterou integruji (speciální struktura knihovny) • xl, xu – interval, na kterém integruji • dim – dimenze problému • calls – počet pokusů • r – ukazatel na generátor náhodných čísel • s - ukazatel na strukturugsl_monte_plain_state vytvořenou voláním funkce gsl_monte_plain_alloc • result – hodnota integrálu • abserr – odhad chyby • návratová hodnota • 0 – bez chyby, jinak chyba

  14. Funkce pro základní metodu Dealokace • voidgsl_monte_plain_free (gsl_monte_plain_state * s) • praktická ukázka na cvičení

  15. Integrace jednodimenzionální funkce • funkce y = x2 na intervalu <0,2> • definuji funkci double funkce(double *x, size_t dim, void *params) { return x[0]*x[0]; }

  16. Integrace jednodimenzionální funkce • hlavní program intmain (void) { doubleintegral, err; doublexl[1] = { 0 }; doublexu[1] = { 2 }; constgsl_rng_type *T; gsl_rng *r; gsl_monte_function G = { &funkce, 1, 0 };

  17. Integrace jednodimenzionální funkce • hlavní program size_tpocet_volani = 100000; gsl_rng_env_setup (); T = gsl_rng_default; r = gsl_rng_alloc(T); gsl_monte_plain_state *s = gsl_monte_plain_alloc(1); gsl_monte_plain_integrate (&G, xl, xu, 1, pocet_volani, r, s,&integral, &err); gsl_monte_plain_free (s);

  18. Integrace jednodimenzionální funkce • hlavní program cout << "Integral = " << integral << endl; cout << "Odhadchyby = " << err << endl; return 0; }

  19. Integrace dvouimenzionální funkce • funkce z= x2 + y2 na intervalu <0,2> x <0,1> • definuji funkci double funkce(double *x, size_t dim, void *params) { return x[0]*x[0]+x[1]*x[1]; }

  20. Integrace jednodimenzionální funkce • hlavní program intmain (void) { doubleintegral, err; doublexl[2] = { 0,0 }; doublexu[2] = { 2,1 }; constgsl_rng_type *T; gsl_rng *r; gsl_monte_function G = { &funkce, 2, 0 };

  21. Integrace jednodimenzionální funkce • hlavní program size_tpocet_volani = 100000; gsl_rng_env_setup (); T = gsl_rng_default; r = gsl_rng_alloc(T); gsl_monte_plain_state *s = gsl_monte_plain_alloc(2); gsl_monte_plain_integrate (&G, xl, xu, 2, pocet_volani, r, s,&integral, &err); gsl_monte_plain_free (s);

  22. Integrace jednodimenzionální funkce • hlavní program cout << "Integral = " << integral << endl; cout << "Odhadchyby = " << err << endl; return 0; }

More Related