All pastes #241604 Raw Edit

Someone

public text v1 · immutable
·published 2006-11-06 11:11 UTC
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;
}