Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Help! librerie matematiche C++ Builder
Forum - C/C++ - Help! librerie matematiche C++ Builder

Avatar
yuzha (Normal User)
Newbie


Messaggi: 4
Iscritto: 27/02/2008

Segnala al moderatore
Postato alle 12:07
Mercoledì, 27/02/2008
Ciao a tutti, finora ho programmato in Delphi, ma devo passare a C++ per implementare dei programmini pesantucci in parallelo da far girare nella Griglia. Ho provato con il Visual C++ della MS , ma da diversi problemi di stabilità e conflitto con altri programmi.(funziona bene solo per poco tempo, dopo l'istallazione). ora sono passato al C++ Builder, che mi ricorda molto il delphi come interfaccia essendo prodotto dalla stessa casa (e questo mi piace molto). Il problema è che tutte le librerie matematiche o scientifiche che ho trovato non funzionano. Dalla GNU scientific lib alla LAPACK++. Ho estremo bisogno di poter utilizzare funzioni come derivate o integrali, ma per equazioni in cui l'incognita non viene sostituita..numericamente è molto facile fare un'integrale, ma se bisogna farlo lasciando esplicita l'incognita, allora bisognerebbe implementare qualche libreria che permetta di salvare le funzioni in incognite come x,y e z e che permetta di processarle senza sostituire valori numerici. Tutto ciò mi ruberebbe troppo tempo.
Se qualcuno può aiutarmi ne sarei molto felice.
Ricapitolando , ho bisogno di una libreria con le "palle" che sia compatibile con C++ Builder.
saluti

PM Quote
Avatar
xshell32 (Normal User)
Rookie


Messaggi: 34
Iscritto: 08/02/2008

Segnala al moderatore
Postato alle 19:15
Mercoledì, 27/02/2008
La GNU Scientific Library funziona con un compilatore Borland Builder C++. Forse hai scaricato la libreria per i sistemi Linux. Esiste la versione di questa libreria per Windows, ma è parte di CygWin ( http://www.cygwin.com ), che contiene programmi per Linux riscritti per Windows.
Scarica la versione più aggiornata di CygWin, seleziona nelle opzioni di installazione la libreria GSL e, alla fine, copia la libreria installata in CygWin nella cartella "include" di Borland Builder C++.

Potresti incontrare delle difficoltà nell'installare CygWin. Innanzitutto, dopo aver scaricato l'eseguibile (~ 450 Kb), avvialo. Ti chiederà di selezionare un indirizzo HTTP o FTP da una lista per scaricare i componenti. Provane un po': non sempre il primo che si sceglie è efficiente. Poi ti mostrerà la lista dei componenti da installare. Cerca quello che ti interessa nella sezione "LIB". Per essere sicuro che il componente sarà installato, devi accertarti che ci sia una X nella colonna BIN e non nella colonna SRC.

Ciao! ;)

Ultima modifica effettuata da xshell32 il 27/02/2008 alle 19:50
PM Quote
Avatar
yuzha (Normal User)
Newbie


Messaggi: 4
Iscritto: 27/02/2008

Segnala al moderatore
Postato alle 17:23
Giovedì, 28/02/2008
grazie, ho fatto una cosa simile con il buider C++, ma mi dava cmq problemi. Allora cercando meglio trovato nella home page del DEV C++ , un autoinstaller della GNU Scientific Library ! Proprio quello che cercavo. Allora ho installato il Dev C++ per Win e la libreria GSL.. Dopo di che ho aperto un nuovo progetto, e nel file main.cpp (che è l'unico che mi compare) ho semplicemente aggiunto le librerie necessarie ed il seguente condice :
#include <gsl/gsl_math.h>
#include <gsl/gsl_deriv.h>
double f (double x, void * params)
{
return pow (x, 1.5);
}
int
main (void)
{
gsl_function F;
double result, abserr;
F.function = &f;
F.params = 0;
printf ("f(x) = x^(3/2)\n");
gsl_deriv_central (&F, 2.0, 1e-8, &result, &abserr);
printf ("x = 2.0\n");
printf ("f’(x) = %.10f +/- %.10f\n", result, abserr);
printf ("exact = %.10f\n\n", 1.5 * sqrt(2.0));
gsl_deriv_forward (&F, 0.0, 1e-8, &result, &abserr);
printf ("x = 0.0\n");
printf ("f’(x) = %.10f +/- %.10f\n", result, abserr);
printf ("exact = %.10f\n", 0.0);
return 0;
}

trovato nella guida della Libreria stessa.
Quando compilo, riconosce le librerie e tutte le funzioni fino a gsl_deriv_central e gsl_deriv_forward , dove scrive :
[Linker Error] Undefined reference to 'gsl_deriv_central' e così per l'altro.
Potete provare a installare questa GSL e mettere questo codice, è un bug o un errore grossolano mio?
ciao

p.s. ovviamente ho provato pure ad aggiungere un nuovo file .cpp con solo il testo di cui sopra, ma  da lo stesso risultato.

Ultima modifica effettuata da yuzha il 28/02/2008 alle 17:26
PM Quote
Avatar
xshell32 (Normal User)
Rookie


Messaggi: 34
Iscritto: 08/02/2008

Segnala al moderatore
Postato alle 22:18
Giovedì, 28/02/2008
Potresti dirmi che versione del compilatore e della libreria hai?

Provo a risolvere il problema compilando il sorgente che hai inserito con un Borland Builder C++ 6 e con GSL 1.10.

Se riesco nell'intento ti avviso.

PM Quote
Avatar
yuzha (Normal User)
Newbie


Messaggi: 4
Iscritto: 27/02/2008

Segnala al moderatore
Postato alle 22:26
Giovedì, 28/02/2008
perfetto, ho le stesse anche io, ti ringrazio.
ciao

PM Quote
Avatar
xshell32 (Normal User)
Rookie


Messaggi: 34
Iscritto: 08/02/2008

Segnala al moderatore
Postato alle 22:46
Giovedì, 28/02/2008
devi aggiungere anche la libreria: include <stdio.h> per la funzione printf();.

Questo non risolve ancora il problema, ma lo riduce soltanto...

Il problema risiede nella libreria: gsl_deriv.h

Proverò a ricostruire le funzioni...

Ultima modifica effettuata da xshell32 il 28/02/2008 alle 22:50
PM Quote
Avatar
xshell32 (Normal User)
Rookie


Messaggi: 34
Iscritto: 08/02/2008

Segnala al moderatore
Postato alle 23:12
Giovedì, 28/02/2008
Ho provato a compialre un'altro sorgente, che utilizza la GSL, con Visual Studio e sembra che tutto funzioni... non sò che dire... ma non bisogna perdere la speranza...

Ultima modifica effettuata da xshell32 il 28/02/2008 alle 23:59
PM Quote
Avatar
yuzha (Normal User)
Newbie


Messaggi: 4
Iscritto: 27/02/2008

Segnala al moderatore
Postato alle 10:06
Venerdì, 29/02/2008
sì, la stdio l'avevo messa, infatti il problema era solo per le funzioni di quella libreria sulle derivate.. forse è un bug! Ho visto che ci sono altre librerie matematiche come la root scritta nel CERN in svizzera. Dicono sia buona. L'ho installata, ma avvia una interfaccia in DOS, a me serviva in DEV C++ o Buider C++. Grazie del tuo aiuto.

PM Quote
Avatar
xshell32 (Normal User)
Rookie


Messaggi: 34
Iscritto: 08/02/2008

Segnala al moderatore
Postato alle 15:47
Venerdì, 29/02/2008
Proviamo una seconda via... :D

Questo è il sito in cui scaricare la versione per DevC++ di ROOT:

ftp://root.cern.ch/root/root_v5.18.00.win32gcc.tar.gz


Ti consiglio di scaricare il compilatore WX-DevC++ (aggiornamento della versione ormai abbandonata di DevC++ che ha anche il supporto di wxWidgets per creare GUI come alternativa alle API di Windows):

http://wxdsgn.sourceforge.net/

Dopo aver installato il compilatore (prima rimuovere la versione vecchia di DevC++ se precedentemente installato), decomprimi il pacchetto della ROOT e copia il contenuto nella cartella di WX-DevC++ rispettando lo schema gerarchico delle cartelle.

Ad esempio in WX-DevC++ sono presenti le cartelle:
bin, include, ecc...

Nella cartella ROOT ci sono più o meno le stesse cartelle. Copia i file contenuti nelle cartelle della ROOT in quelle del compilatore in modo da aggiungere gli eseguibili e le DLL nella cartella "bin" di WX-DevC++, le librerie in "include" e così via, aggiungendo anche le cartelle non preesistenti. (Spero di essermi fatto capire dopo questo mio discorso abbastanza contorto... eh eh)

Purtroppo non ho molto tempo per cercare una soluzione a causa dello studio per l'università: lascio quindi spazio ad altri se il metodo da me proposto non funziona.

Ultima modifica effettuata da xshell32 il 02/03/2008 alle 12:59
PM Quote