#include #include #include "testfunctions.hh" #include "bisection_method.hh" // Hauptprogramm int main() { // Wahl der Fehlerschranke (Genauigkeit) eps const double eps = 1e-8; // Erzeugen der Funktionsobjekte mit dem jeweiligen Default-Konstruktor F1 f1; F2 f2; F3 f3; F4 f4; // Anlegen von Variablen zur Speicherung der benoetigten Iterationen unsigned int n_count1; unsigned int n_count2; unsigned int n_count3; unsigned int n_count4; // Aufrufen des Bisektionsalgorithmus double root1 = bisection_method(f1,0.6,1.2,eps,n_count1); double root2 = bisection_method(f2,0.0,1.0,eps,n_count2); double root3 = bisection_method(f3,-2.0,7.0,eps,n_count3); double root4 = bisection_method(f4,-1.5,1.5,eps,n_count4); // Konfiguration des Ausgabestreams std::cout std::cout << std::showpos << std::setprecision(12) << std::left; const int width = std::cout.precision() + 4; // Ausgabe der Iterationsanzahl, der approximierten Nullstellen und der zugehoerigen Funktionswerte std::cout << n_count1 << " Iterationen, Nullstelle bei x=" << std::setw(width) << root1 << "mit Funktionswert f(x)=" << std::setw(width) << f1.evaluate(root1) << std::endl; std::cout << n_count2 << " Iterationen, Nullstelle bei x=" << std::setw(width) << root2 << "mit Funktionswert f(x)=" << std::setw(width) << f2.evaluate(root2) << std::endl; std::cout << n_count3 << " Iterationen, Nullstelle bei x=" << std::setw(width) << root3 << "mit Funktionswert f(x)=" << std::setw(width) << f3.evaluate(root3) << std::endl; std::cout << n_count4 << " Iterationen, Nullstelle bei x=" << std::setw(width) << root4 << "mit Funktionswert f(x)=" << std::setw(width) << f4.evaluate(root4) << std::endl; return 0; }