fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. double func(double x)
  5. {
  6. double coeff[] = {1, 0, -4, -9};
  7. double result = coeff[0];
  8. for (int i = 1; i < 4; i++)
  9. result = result * x + coeff[i];
  10. return result;
  11. }
  12.  
  13. int main()
  14. {
  15. double a, b, c, fa, fb, fc;
  16.  
  17. cout << "Enter first guess a: ";
  18. cin >> a;
  19. cout << "Enter second guess b: ";
  20. cin >> b;
  21.  
  22. fa = func(a);
  23. fb = func(b);
  24.  
  25. if (fa * fb > 0)
  26. {
  27. cout << "Invalid guesses! f(a) and f(b) must have opposite signs.\n";
  28. return 0;
  29. }
  30.  
  31. cout << "\n--------------------------------------------------------------\n";
  32. cout << " Iteration" << setw(10) << "a" << setw(12) << "b"
  33. << setw(12) << "c" << setw(14) << "f(a)" << setw(12) << "f(b)" << endl;
  34. cout << "--------------------------------------------------------------\n";
  35.  
  36. for (int i = 1; i <= 8; i++)
  37. {
  38. c = (a * fb - b * fa) / (fb - fa);
  39. fc = func(c);
  40.  
  41. cout << setw(6) << i << setw(14) << fixed << setprecision(6)
  42. << a << setw(12) << b << setw(12) << c
  43. << setw(12) << fa << setw(12) << fb << endl;
  44.  
  45. if (fabs(fc) < 0.00001)
  46. break;
  47.  
  48. a = b;
  49. fa = fb;
  50. b = c;
  51. fb = fc;
  52. }
  53.  
  54. cout << "--------------------------------------------------------------\n";
  55. cout << "\nApproximate Root = " << fixed << setprecision(6) << c << endl;
  56. cout << "--------------------------------------------------------------\n";
  57.  
  58. return 0;
  59. }
  60.  
Success #stdin #stdout 0.01s 5320KB
stdin
4
2
stdout
Enter first guess a: Enter second guess b: 
--------------------------------------------------------------
 Iteration         a           b           c          f(a)        f(b)
--------------------------------------------------------------
     1      4.000000    2.000000    2.375000   39.000000   -9.000000
     2      2.000000    2.375000    2.866165   -9.000000   -5.103516
     3      2.375000    2.866165    2.681284   -5.103516    3.080613
     4      2.866165    2.681284    2.704785    3.080613   -0.448618
     5      2.681284    2.704785    2.706548   -0.448618   -0.031298
     6      2.704785    2.706548    2.706528   -0.031298    0.000360
--------------------------------------------------------------

Approximate Root = 2.706528
--------------------------------------------------------------