|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 704
|
[c/c++] librerie matematiche e funzioni..help..
ciao a tutti.. ragazzi ho questo problema...devo usare una funzione matematica che ti trova già implementata all'interno di una libreria e passargli un valore che dovrà usare appunto per avere in ritorno il risultato...
Ho scaricato le librerie in questione che si trovano a questo indirizzo http://www.gnu.org/software/gsl/ e dopo averle incluse ho fatto il seguente programma: Codice:
#include <iostream>
#include <math.h>
#include <gsl/gsl_math.h>
#include <gsl/rng/gsl_rng.h>
#include <gsl/randist/gsl_randist.h>
#include <gsl/specfunc/gsl_sf_bessel.h>
using namespace std;
int main (void){
double media = 180;
double sigma = (0.5*media)/3;
double result = gsl_ran_gaussian (sigma);
double traslazione = result + media;
cout << traslazione << endl;
cout << "Press ENTER to continue..." << endl;
cin.get();
return 0;
}
gli errori che mi da sono : 14 C:\Dev-Cpp\febbraio 01 07.cpp invalid conversion from `int' to `const gsl_rng*' 77 C:\Dev-Cpp\include\gsl\randist\gsl_randist.h too few arguments to function `double gsl_ran_gaussian(const gsl_rng*, double)' 14 C:\Dev-Cpp\febbraio 01 07.cpp at this point in file mi sapreste dare una mano? Grazie |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
double gsl_ran_gaussian (const gsl_rng * r, double sigma) E da quanto ho visto, gsl_rng ha a che fare con le funzioni per la generazione di numeri casuali contenute in quella libreria. Quindi deduco: prima crei un generatore di numeri casuali, poi chiami la funzione gsl_ran_gaussian.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 704
|
per generatore numeri casuali intendi generare il seme per i numeri casuali.. cioè questo in sostanza?
srand(time(0)); // inizializza il seme per il calcolo dei numeri random oppure non c'ho capito niente? please help me!! |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Questa libreria GSL fa tutta una serie di cose (che non conosco nei dettagli) come la gestione dei numeri complessi, equazioni polinomiali, ecc.... Tra tutte queste cose c'è anche la gestione dei numeri casuali. Vedi <qui> le funzioni. Deduco (da quello che ho letto), che dovrai chiamare la funzione gsl_rng_alloc(), poi impostare il seed con gsl_rng_set(), quindi usare questo gsl_rng* (lo passi alla funzione gsl_ran_gaussian) e infine, chiamare la funzione gsl_rng_free(). Comunque magari cerca nella documentazione della GSL per vedere se c'è qualche esempio. Non saprei dirti di più ... posso solo andare "per logica" ma ovviamente non conosco tale libreria.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 704
|
mamma mia che casino non ci capisco un granchè...
vedendo l'esempio dovrei aggiungerci gsl_rng * r = gsl_rng_alloc (gsl_randist_gauss); si ma dove? E' giusto o sto ritoppando alla grande? |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Posso dirti, andando per logica, che sicuramente dovresti avere come minimo una cosa del tipo: Codice:
....
gsl_rng *r = gsl_rng_alloc (???);
if (r != NULL)
{
....
double result = gsl_ran_gaussian (r, sigma);
....
gsl_rng_free (r);
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:36.



















