gleichungen3. grades
-
Hallo zusammen,
wenn du das Rad nicht neu erfinden möchtest kannst du auf die Funktionalität der GNU Scientific Library (kurz GSL) zurückgreifen. Es handelt sich um eine flexible und (meines erachtens) sehr performante Bibliothek, welche in C geschrieben wurde. Hierzu unten ein kleines Beispiel.
Wenn du bereits Erfahrung in C/C++ gesammelt hast, würde ich auch ein Blick in die Quellen dieser Library wagen.

#include <cstdlib> #include <iostream> #include <vector> #include <gsl/gsl_poly.h> using namespace std; int main() { /* Wir besitzen die Gleichung f:x->f(x)=ax^3 + bx^2 + cx + d. Nun möchten wir x für f(x)=y bestimmen. Bsp.: 5x^3 + 3x^2 + 2x + 7 = 2 */ double a=5; double b=3; double c=2; double d=7; double y=2; /* Die Gleichung wird umgeformt, sodass die Nullstelle bestimmt werden kann Bsp.: 5x^3 + 3x^2 + 2x + 5 = 0 */ d -= y; // Berechnung der Lösungsmenge und Ausgabe vector<double> x(3); gsl_poly_solve_cubic(b, c, d, &x[0], &x[1], &x[2]); cout << "x0 = " << x[0] << endl; cout << "x1 = " << x[1] << endl; cout << "x3 = " << x[2] << endl; return EXIT_SUCCESS; }Einige Teile liesen sich noch eleganter umsetzen, aber für ein kleines Beispiel muss das reichen.

Grüße
Martin
-
danke dafür
ich hab das ding auch direkt mal probiert devc++ sagt aber das in derzeile
gsl_poly_solve_cubic(b, c, d, &x[0], &x[1], &x[2]);
etwas nicht stimmt!
weihnachtzmann
-
weihnachtzmann schrieb:
devc++ sagt aber das in derzeile [...] etwas nicht stimmt!
Also das sagt er bestimmt nicht. Normalerweise sind die Fehlermeldungen eines Compilers ausführlicher

@tux: kann es sein, daß du in der solve_cubic() den a-Koeffizienten ausgelassen hast?
-
okee er sgat das:
32 C:\Dokumente und Einstellungen\name\Desktop\neu.cpp `gsl_poly_solve_cubic' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)
bittesehr
-
Bevor du die GSL verwenden kannst, mußt du sie erstmal in dein Programm einbinden
(und vorher natürlich dir besorgen)
-
sorry aber ich hab kein planw as gsl ist !
was ist das wo bekomme ich das her und wie binde ichdas ein ?thx
-
Das: http://devpaks.org/details.php?devpak=19
und danach das: http://devpaks.org/details.php?devpak=91
installieren...Danach die richtigen Header inkludieren ( welche das auch sind
)
-
der 2. link ginga ber beim ersten liess es sich unter keinem mirrir loaden
was tun ?
thx
-
wenn ich jetzt kompidingse dann sagt das proggi:
[Linker error] undefined reference to `gsl_poly_solve_cubic'
ld returned 1 exit statuskiegt das dadran das ich nur den ersten installiert hab ?
-
weihnatztyp schrieb:
was tun ?
Verständliche Sätze schreiben, ansonsten anworte ich nicht mehr

-
Hallo,
Verzeihung, dass ich erst ein wenig verspätet antworte. Wenn alle nötigen Bibliotheken vorhanden sind, müsste sich die Quelldatei mit folgendem Befehl kompilieren lassen:
g++ -I/usr/include/gsl -L/usr/lib -lm -lgsl -lgslcblas main.cpp
Das Parameter -I gibt weitere Verzeichnisse an, in denen nach Headerdateien gesucht werden soll. Das Argument -L erweitert die Liste der Ordner, in welchen sich die Bibliotheken befinden und -l sorgt für das Einbinden der Bibliotheken.
Selbstverständlich müssen die Pfadangaben korrekt sein, da ansonsten der Objektcode der Bibliothek nicht zu deinem Programm gelinkt werden kann.
Welches OS verwendest du?
Grüße Martin