fork(1) download
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. double f(double x)
  7. {
  8. return x*x - 4;
  9. }
  10.  
  11. int main()
  12. {
  13. double a, b, srodek;
  14. int iter = 0;
  15. double eps = 0.000001;
  16.  
  17. cout << "Podaj a: ";
  18. cin >> a;
  19. cout << "Podaj b: ";
  20. cin >> b;
  21.  
  22. if (f(a) * f(b) >= 0)
  23. {
  24. cout << "Brak miejsca zerowego w przedziale." << endl;
  25. return 0;
  26. }
  27.  
  28. while ((b - a) / 2 > eps)
  29. {
  30. srodek = (a + b) / 2;
  31. iter++;
  32.  
  33. cout << "Iteracja " << iter
  34. << " x = " << srodek
  35. << " f(x) = " << f(srodek) << endl;
  36.  
  37. if (f(a) * f(srodek) < 0)
  38. b = srodek;
  39. else
  40. a = srodek;
  41. }
  42.  
  43. cout << "\nMiejsce zerowe: " << (a + b) / 2 << endl;
  44. cout << "Liczba iteracji: " << iter << endl;
  45.  
  46. return 0;
  47. }
  48.  
Success #stdin #stdout 0.01s 5284KB
stdin
1 10
stdout
Podaj a: Podaj b: Iteracja 1 x = 5.5 f(x) = 26.25
Iteracja 2 x = 3.25 f(x) = 6.5625
Iteracja 3 x = 2.125 f(x) = 0.515625
Iteracja 4 x = 1.5625 f(x) = -1.55859
Iteracja 5 x = 1.84375 f(x) = -0.600586
Iteracja 6 x = 1.98438 f(x) = -0.0622559
Iteracja 7 x = 2.05469 f(x) = 0.221741
Iteracja 8 x = 2.01953 f(x) = 0.0785065
Iteracja 9 x = 2.00195 f(x) = 0.00781631
Iteracja 10 x = 1.99316 f(x) = -0.027297
Iteracja 11 x = 1.99756 f(x) = -0.00975966
Iteracja 12 x = 1.99976 f(x) = -0.000976503
Iteracja 13 x = 2.00085 f(x) = 0.0034187
Iteracja 14 x = 2.00031 f(x) = 0.0012208
Iteracja 15 x = 2.00003 f(x) = 0.000122071
Iteracja 16 x = 1.99989 f(x) = -0.000427235
Iteracja 17 x = 1.99996 f(x) = -0.000152586
Iteracja 18 x = 2 f(x) = -1.52588e-05
Iteracja 19 x = 2.00001 f(x) = 5.34059e-05
Iteracja 20 x = 2 f(x) = 1.90735e-05
Iteracja 21 x = 2 f(x) = 1.90735e-06
Iteracja 22 x = 2 f(x) = -6.67572e-06
Iteracja 23 x = 2 f(x) = -2.38419e-06

Miejsce zerowe: 2
Liczba iteracji: 23