Nicolas
03-02-2005, 20:12
Hallo!
Ich bin gerade dabei, eine Klasse zu bauen, die in der Lage sein soll, eine vollständige Funktionsuntersuchung von ganzrationalen Funktionen durchführt. Das Ableiten und Ausrechnen eines Funktionswertes funktioniert schon. Aber mit den Nullstellen habe ich meine liebe Not. Ich hab es zwar geschafft, mithilfe des Newton-Verfahrens und einem bestimmten Startwert eine Nullstelle zu berechnen. Ich habe nur eine Ahnung, wie ich mehrere geeignete Startwerte finden soll. Ich habe mir schon überlegt, von der letzten Nullstelle einfach z.B. 1 dazu zu zählen und dies wieder als Startwert zu nehmen. Aber dann kann es mir passieren, daß ich entweder wieder die gleiche Nullstelle herausbekomme oder aber schon eine Nullstelle übersprungen habe.
Hier habe ich mal den Codeausschnitt zur Nullstellenberechnung eingefügt:
const double abbruch = 0.0000001;
double x = 0, xold;
do
{
xold = x;
x = x - f(x)/Ableiten()->f(x);
}
while ( fabs(x-xold) > abbruch );
cout << "Nullstelle bei x = " << x << endl;
return ret;
Vielleicht kann mir ja jemand weiterhelfen.
Ich bin gerade dabei, eine Klasse zu bauen, die in der Lage sein soll, eine vollständige Funktionsuntersuchung von ganzrationalen Funktionen durchführt. Das Ableiten und Ausrechnen eines Funktionswertes funktioniert schon. Aber mit den Nullstellen habe ich meine liebe Not. Ich hab es zwar geschafft, mithilfe des Newton-Verfahrens und einem bestimmten Startwert eine Nullstelle zu berechnen. Ich habe nur eine Ahnung, wie ich mehrere geeignete Startwerte finden soll. Ich habe mir schon überlegt, von der letzten Nullstelle einfach z.B. 1 dazu zu zählen und dies wieder als Startwert zu nehmen. Aber dann kann es mir passieren, daß ich entweder wieder die gleiche Nullstelle herausbekomme oder aber schon eine Nullstelle übersprungen habe.
Hier habe ich mal den Codeausschnitt zur Nullstellenberechnung eingefügt:
const double abbruch = 0.0000001;
double x = 0, xold;
do
{
xold = x;
x = x - f(x)/Ableiten()->f(x);
}
while ( fabs(x-xold) > abbruch );
cout << "Nullstelle bei x = " << x << endl;
return ret;
Vielleicht kann mir ja jemand weiterhelfen.