// Einbinden der Header-Datei #include "unit2.h" //#include "stdio.h" #include #include using namespace std; int main () { // hier folgt Ihr Programm double x0, x1, gamma, fi, fiMinus, fiPlus, xi, xiPlus, xiMinus; int verf, bsp; bool feddisch; cout << "Beispiel?" << endl; cin >> bsp; if (bsp > AnzahlBeispiele) exit (0); //error cout << "Verfahren?" << endl; cin >> verf; Start (bsp, x0, x1, 1); xiMinus = x0; xi = x1; fiMinus = f (xiMinus); fi = f (xi); do { //interpolate here xiPlus = xiMinus - ((xi - xiMinus) / (fi - fiMinus) * fiMinus); fiPlus = f (xiPlus); if (fiPlus == 0) { Ausgabe (verf, xi, fi, xiPlus, fiPlus); break; } //decide on side to use if ((fiPlus / abs (fiPlus)) == (fi / abs (fi))) { switch (verf) { case RegFalsi: gamma = 1; break; case Illinois: gamma = 0.5; break; case Pegasus: gamma = fi/(fi+fiPlus); break; case AndBjrk: gamma = (1 - fiPlus/fi); if (gamma <= 0) gamma = 0.5; break; default: cout << "Skandal!!!" << endl; //error exit (0); } fi = gamma * fiMinus; xi = xiMinus; } // use this only to generate gamma (if needed) //callback Ausgabe (verf, xi, fi, xiPlus, fiPlus); //shift i => i+1 xiMinus = xi; fiMinus = fi; xi = xiPlus; fi = fiPlus; feddisch = (abs(fi)<=eps)&&((abs(xi-xiMinus)<= eps)||(verf==RegFalsi)); } while (!feddisch); //Abbruchbedingung hier //printf("%f %f\n",x0, f(x0)); Ergebnis (verf, xiPlus); return 0; }