Probleme bei der Berechnung von extrema, nullstellen, usw bei fkt 3.grades
-
Moin Leute,
Ich hänge jetzt schon ziemlich lange am selben Problem..
und zwar möchte ich ein Programm schreiben, welches die Extrema, die Nullstellen und den y-Achsenabschnitt errechnet.
Nun steckt aber irgendwo ein Fehler drinn und ich finde ihn nicht
vielleicht kann mir ja jemand weiterhelfen
Code-Auszug:
float a,b,c,d,e,x,y[1001]; int i; float berechnung(float a,float b, float c,float d, float x) { float y; y=a*x*x*x+b*x*x+c*x+d; return y; } int main() { cout << "Polynome 3.Grades" << endl; cout << "================" << endl; cout << "Berechnet werden:" << endl; cout << "----------------: Nullstellen" << endl; cout << "----------------: Extrema" << endl; cout << "Ausgangsformel: y=ax³+bx²+cx+d" << endl; cout << "===========================" << endl; cout << "Bitte gebe Werte für a-d ein" << endl; cout << "a = " ; cin >> a; cout << "b = " ; cin >> b; cout << "c = " ; cin >> c; cout << "d = " ; cin >> d; x=-50; for (i=1;i<1000;i++) { y[i-1]=berechnung(a,b,c,d,x-0.1); y[i]=berechnung(a,b,c,d,x); y[i+1]=berechnung(a,b,c,d,x+0.1); //Maximum if((y[i]>y[i-1])&&(y[i+1]<y[i])) { cout << "Maximum: ("<< x << "/" << y[i] << ")"<<endl; } //Minimum if((y[i]<y[i-1])&&(y[i+1]>y[i])) { cout << "Minimum: ("<< x<< "/" << y[i] << ")"<<endl; } //Nullstelle if ((y[i-1]<0 && y[i]>0) || (y[i-1]>0 && y[i]<0)) { cout << "Nullstelle liegt bei x = " << (y[i-1]+y[i+1])/2; } //y-Achsenabschnitt if (x==0) { cout << "Y-Achsenabschnitt liegt bei y = "<<y[i] <<endl; } x+=0.1; }mfg black Sheep
-
wo liegt den dein problem ?
-
Warum berechnest du die Werte nicht numerisch exakt anstelle deiner Näherungsmessungen (ja, die Lösungsformel für Polynome dritten Grades ist ein wenig komplex, aber sie existiert - und bei den Ableitungen der Funktion wird es sogar noch einfacher).
-
-
Stelfer schrieb:
wo liegt den dein problem ?
Also wenn ich das Programm ausführen lasse,bekomme ich manchmal nur das Minimum , manchmal nur eine Nullstelle und manchmal garnichts ausgespuckt...:-(
-
Wie ich schon sagte, lös die Aufgabe lieber exakt (bei Polynomen dritten Grades ist das noch möglich).
PS: Und dir ist klar, daß ein Polynom dritten Grades maximal 3 Nullstellen und zwei Extrema haben kann?