fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. double f(double co[], int n, double x)
  5. {
  6. double result = co[0];
  7. for (int i = 1; i <= n; i++)
  8. result = result * x + co[i];
  9. return result;
  10. }
  11.  
  12. double df(double co[], int n, double x)
  13. {
  14. double result = co[0] * n;
  15. for (int i = 1; i < n; i++)
  16. result = result * x + co[i] * (n - i);
  17. return result;
  18. }
  19.  
  20. int main()
  21. {
  22. int n;
  23. double co[20], x0, x1, fx, dfx, E, err;
  24.  
  25. cout << "ENTER THE TOTAL NO. OF POWER: ";
  26. cin >> n;
  27.  
  28. for (int i = 0; i <= n; i++)
  29. {
  30. cout << "x^" << i << " : ";
  31. cin >> co[i];
  32. }
  33.  
  34. cout << "\nEnter initial guess x0: ";
  35. cin >> x0;
  36. cout << "Enter tolerance (e.g. 0.0001): ";
  37. cin >> E;
  38.  
  39. cout << "\n***********************************************";
  40. cout << "\nIter\t x\t\t f(x)\t\t f'(x)\t\t Error\t\t %Error";
  41. cout << "\n***********************************************\n";
  42.  
  43. for (int i = 1; i <= 20; i++)
  44. {
  45. fx = f(co, n, x0);
  46. dfx = df(co, n, x0);
  47.  
  48. if (dfx == 0) {
  49. cout << "Division by zero! Stopping.\n";
  50. return 0;
  51. }
  52.  
  53. x1 = x0 - fx / dfx;
  54. err = fabs((x1 - x0) / x1);
  55.  
  56. cout << fixed << setprecision(6);
  57. cout << setw(5) << i << "\t" << setw(10) << x1 << "\t" << setw(10) << fx << "\t"<< setw(10) << dfx << "\t"
  58. << setw(10) << err<< "\t"
  59. << setw(10) << err* 100 << endl;
  60. if (err< E) {
  61. cout << "\n***********************************************";
  62. cout << "\nTHE ROOT OF EQUATION IS " << x1 << endl;
  63. cout << "***********************************************\n";
  64. return 0;
  65. }
  66. x0 = x1;
  67. }
  68.  
  69. return 0;
  70. }
Success #stdin #stdout 0.01s 5280KB
stdin
3
-3
-1
0
1
3
stdout
ENTER THE TOTAL NO. OF POWER: x^0 : x^1 : x^2 : x^3 : 
Enter initial guess x0: Enter tolerance (e.g. 0.0001): 
***********************************************
Iter	 x		 f(x)		 f'(x)		 Error		 %Error
***********************************************
    1	  1.977011	-89.000000	-87.000000	  0.517442	 51.744186
    2	  1.310268	-26.090464	-39.131193	  0.508860	 50.886028
    3	  0.897181	 -7.465217	-18.071759	  0.460428	 46.042844
    4	  0.679071	 -1.971444	 -9.038759	  0.321189	 32.118908
    5	  0.606350	 -0.400570	 -5.508373	  0.119931	 11.993108
    6	  0.598288	 -0.036454	 -4.521647	  0.013475	  1.347541
    7	  0.598194	 -0.000418	 -4.418115	  0.000158	  0.015821
    8	  0.598193	 -0.000000	 -4.416906	  0.000000	  0.000002
    9	  0.598193	 -0.000000	 -4.416906	  0.000000	  0.000000
   10	  0.598193	  0.000000	 -4.416906	  0.000000	  0.000000

***********************************************
THE ROOT OF EQUATION IS 0.598193
***********************************************