rendered paste body
// Einbinden der Header-Datei
#include "unit2.h"
//#include "stdio.h"
#include <iostream>
#include <algorithm>
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;
}