/* * Programmieren fuer Physiker, SS 2010 * * Klausur, Aufg. 1 */ #include #include using namespace std ; double f( double x) { return exp(x)-x-2 ; } int main() { double x0=0, x1=3 ; // Nullstelle von f liegt in[0,2] // da f(0) = -2 und f(3) =e^3-5 > 0 double epsx=0.001 ; // gewuenschte Genauigkeit des Intervalls double epsf=0.01 ; // gewuenschte Genauigkeit des Funktionswerts double xneu ; do { xneu = (x0+x1)/2 ; if (f(x0)*f(xneu) < 0) // so: geht fuer steigende und fallende f x1=xneu ; else x0=xneu ; cout << " Intervall: " << x0 << " ... " << x1 << endl ; } while ((abs(f(xneu))>epsf) and (x1-x0 > epsx)) ; cout << "Nullstelle ist bei: " << xneu << " Funktionswert: " << f(xneu) << endl ; }