Ero sivun ”GNU Scientific Library” versioiden välillä
Siirry navigaatioon
Siirry hakuun
p (Malline:Kirjasto) |
p (<syntaxhighlight>) |
||
(2 välissä olevaa versiota samalta käyttäjältä ei näytetä) | |||
Rivi 11: | Rivi 11: | ||
| kehityspvm = | | kehityspvm = | ||
| ohjelmoitu = [[C]] | | ohjelmoitu = [[C]] | ||
| kirjasto = tieteellinen laskenta | |||
| lisenssi = [[GPL]] | | lisenssi = [[GPL]] | ||
| kotisivu = [http://www.gnu.org/software/gsl/ gnu.org/software/gsl] | | kotisivu = [http://www.gnu.org/software/gsl/ gnu.org/software/gsl] | ||
Rivi 24: | Rivi 25: | ||
== Esimerkki == | == Esimerkki == | ||
Seuraava koodi integroi numeerisesti funktion f(x)=e^(-x^2) välillä [0,ääretön]: | Seuraava koodi integroi numeerisesti funktion f(x)=e^(-x^2) välillä [0,ääretön]: | ||
< | <syntaxhighlight lang="C"> | ||
#include <iostream> | #include <iostream> | ||
#include <gsl/gsl_math.h> | #include <gsl/gsl_math.h> | ||
Rivi 59: | Rivi 60: | ||
return 0; | return 0; | ||
} | } | ||
</ | </syntaxhighlight> | ||
Ohjelma käännettäisiin komennolla | Ohjelma käännettäisiin komennolla | ||
$ g++ integraali.cpp -o integraali $(gsl-config --cflags) $(gsl-config --libs) | $ g++ integraali.cpp -o integraali $(gsl-config --cflags) $(gsl-config --libs) | ||
Rivi 75: | Rivi 76: | ||
== Asiasta muualla == | == Asiasta muualla == | ||
*[http://www.gnu.org/software/gsl/manual/html_node/ Dokumentaatio] | *[http://www.gnu.org/software/gsl/manual/html_node/ Dokumentaatio] | ||
*[[wikipedia:GNU Scientific Library|GSL-artikkeli]] englanninkielisessä Wikipediassa | *[[wikipedia:GNU Scientific Library|GSL-artikkeli]] englanninkielisessä Wikipediassa | ||
[[Luokka: Numeerinen laskenta]] | [[Luokka: Numeerinen laskenta]] |
Nykyinen versio 18. helmikuuta 2022 kello 09.42
GNU Scientific Library | |
---|---|
Ohjelmoitu | C |
Kirjasto | tieteellinen laskenta |
Lisenssi | GPL |
Kotisivu | gnu.org/software/gsl |
GNU Scientific Library (GSL) on GNU-projektin C-kielellä toteutettu numeeriseen tieteelliseen laskentaan tarkoitettu kirjasto. Se on yksi parhaista vapaista tieteelliseen laskentaan soveltuvista kirjastoista.
Kirjastossa on laadukkaita numeerisia funktioita moniin eri tarkoituksiin, esimerkiksi numeeriseen integrointiin ja derivointiin, kompleksilukujen käsittelyyn, lineaarialgebraan ja tilastolliseen analyysiin.
GNU Scientific Library löytyy useimpien jakeluiden paketinhallinnasta nimellä libgsl-dev. Lisätietoja ohjelmien asentamisesta löytyy artikkelista Ohjelmien asentaminen.
Esimerkki[muokkaa]
Seuraava koodi integroi numeerisesti funktion f(x)=e^(-x^2) välillä [0,ääretön]:
#include <iostream>
#include <gsl/gsl_math.h>
#include <gsl/gsl_integration.h>
#include <gsl/gsl_sf_exp.h>
struct parametrit{double a; double b;};
double funktio(double x, void*p)
{
parametrit* param=(parametrit*)p;
double a=param->a;
double b=param->b;
return a*gsl_sf_exp(-b*x*x);
}
int main (void)
{
gsl_function F;
parametrit param={1.0, 1.0}; // f(x) = exp(-x^2)
F.function=&funktio;
F.params=¶m;
double tulos,abserr; // Laskun tulos ja virhe
double epsabs=0,epsrel=0.001; // Haluttu absoluuttinen ja suhteellinen virhe
size_t eval; // Montako kertaa funktion arvo lasketaan
// Lasketaan integraali
gsl_integration_qng(&F,0,20,epsabs,epsrel,&tulos,&abserr,&eval);
std::cout << "Integrate[F[x],{x,0,Infinity}]=" << tulos << std::endl;
std::cout << "Virhe: " << abserr << ", funktio laskettiin " << eval << " kertaa."<< std::endl;
std::cout << "Analyyttisesti Integrate[F[x],{x,0,Infinity}]=Sqrt[Pi]/2=" << sqrt(M_PI)/2 << std::endl;
return 0;
}
Ohjelma käännettäisiin komennolla
$ g++ integraali.cpp -o integraali $(gsl-config --cflags) $(gsl-config --libs)
Ohjelman tuloste on seuraava:
$ ./integraali Integrate[F[x],{x,0,Infinity}]=0.886227 Virhe: 9.43295e-06, funktio laskettiin 43 kertaa. Analyyttisesti Integrate[F[x],{x,0,Infinity}]=Sqrt[Pi]/2=0.886227
Katso myös[muokkaa]
Asiasta muualla[muokkaa]
- Dokumentaatio
- GSL-artikkeli englanninkielisessä Wikipediassa