GNU Libmatheval in C++ Programm verwenden
-
Hallo!
ich habe ein kleinclass geschrieben;zwei Methoden dieses Classes sollten Werte an X und y Pair in globale Struct zuweisen; num möchte ich die Werte durch eine Funktion, die ich über Konsole eingebe,erstmal auswerten und dafür benutze GNU Libmathavel(C- Bibleotheck) die der eingegebenen mathematischen Funktionen für spezifizierte variable Werte auswerten kann; ich habe sie in Funktionparser schön verwendet;
Nun meine Frage wie Kann ich die in meiner classmathoden (dezim() gibt Funktionsplottwerte zurück und inter() liefer Funcktionstransmittwerte), verwenden;hier ist die Funktionsparser code:
void f_eingeben(){ char buffer[BUFFER_SIZE]; int length; void *f; char **names; int count j,i; double X; double *x_f; cout <<"f(x_f) = "; cin.getline(buffer, BUFFER_SIZE); length = strlen (buffer); if (length > 0 && buffer[length - 1] == '\n') buffer[length - 1] = '\0'; f = evaluator_create (buffer); /* Create evaluator for function. */ assert (f); /* Print variable names appearing in function. */ evaluator_get_variables (f,&names, &count); cout <<" " ; for (j = 0; j < count; j++) // printf ("%s ", names[j]); cout <<'\n'; double* y= new double [N_SAMPLES]; double X=0.001; for(j=0;j<=N_SAMPLES-1;j++){ y[j]=evaluator_evaluate_x (f,X); / Funktion evalutator_evaluate_x() zur Auswertung von f(x) X=X*j; // cout <<y_z[j]<<'\t'<< j<<'\n'; } /* Destroy evaluators. */ evaluator_destroy (f);hier class.h
struct XYpair{ double x; double y; }; class INPUT{ private: int psize; double xmin,xmax; XYpair* ptr; int intep; int dacrate; int ns; public: void setvalue(); XYpair* Dezim(int& psize, XYpair* ptr); XYpair* Interp(int& ns, XYpair* ptr);class.pp
XYpair* INPUT::Dezim(int& psize, struct XYpair* ptr){ double xr=xmax-xmin/psize; double X=0.0; int i; XYpair *dptr= new XYpair [psize]; for(i=0;i<psize;i++){ dptr[i].x=X; dptr[i].y=sin(X); <-----//mit f_eingeben() ausgewertet X+=xr; } delete[]dptr; return dptr; } XYpair* INPUT::Interp(int& ns, XYpair* ptr){ double xr=(double)(intep*4/dacrate); XYpair *iptr; iptr=new XYpair[ns]; int i; for(i=0;i<ns;i++) { iptr[i].x=xr; iptr[i].y=sin(iptr[i].x*i); <-----//mit f_eingeben() ausgewertet xr++; } delete[]iptr; return iptr; }ich überlege mir die f_eingeben() als golable funktion zu definieren;
aber ich weis nicht wie die in Dezim() bzw interp() aufrufen kann;
also wenn man eine Idee für mich hat wie ich meine Aufgaben lösen kann dann bin sehr Dankbar.Gruß
Sebleb
-
Doppelpost: http://www.c-plusplus.net/forum/289997
[Edit] Lassen wir den Thread hier besser.
-
Nexus schrieb:
Doppelpost: http://www.c-plusplus.net/forum/289997
Und da ein Thread zu dem Thema reicht, mache ich mal diesen hier dicht.