Guest User

Untitled

a guest
Jun 16th, 2015
277
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.84 KB | None | 0 0
  1. // Program znajduje miejsce zerowe funkcji f(x)
  2. // za pomocą algorytmu połowienia - bisekcji
  3. //---------------------------------------------
  4. // (C)2006 mgr J.Wałaszek I LO w Tarnowie
  5.  
  6. #include <iostream>
  7. #include <iomanip>
  8. #include <cmath>
  9. #include <cstdlib>
  10.  
  11. using namespace std;
  12.  
  13. const double EPS0 = 0.0000000001; // dokładność porównania z zerem
  14. const double EPSX = 0.0000000001; // dokładność wyznaczenia pierwiastka
  15.  
  16. // Funkcja, której miejsce zerowe obliczamy
  17. // f(x) = x^3*(x+sin(x^2-1)-1)-1
  18. // <-1,0> i <1,2>
  19. //-----------------------------------------
  20.  
  21. double f(double x)
  22. {
  23. return x * x * x * (x + sin(x * x - 1) - 1) - 1;
  24. }
  25.  
  26. //-----------------------------------------------------
  27. // Program główny
  28. //-----------------------------------------------------
  29.  
  30. int main()
  31. {
  32.  
  33. double a,b,x0,fa,fb,f0;
  34.  
  35. cout << setprecision(5) // 5 cyfr po przecinku
  36. << fixed; // format stałoprzecinkowy
  37.  
  38. cout << "Obliczanie pierwiastka funkcji - metoda bisekcji\n"
  39. "f(x) = x^3*(x+sin(x^2-1)-1)-1\n"
  40. "------------------------------------------------\n"
  41. "(C)2006 mgr Jerzy Walaszek I LO w Tarnowie\n\n"
  42. "Podaj zakres poszukiwan pierwiastka:\n\n";
  43. cout << "a = "; cin >> a;
  44. cout << "b = "; cin >> b;
  45. cout << "\n------------------------------------------------\n\n"
  46. "WYNIK:\n\n";
  47. fa = f(a); fb = f(b);
  48. if(fa * fb > 0) cout << "Funkcja nie spelnia zalozen\n";
  49. else
  50. {
  51. while(fabs(a - b) > EPSX)
  52. {
  53. x0 = (a + b) / 2; f0 = f(x0);
  54. if(fabs(f0) < EPS0) break;
  55. if(fa * f0 < 0) b = x0;
  56. else
  57. {
  58. a = x0; fa = f0;
  59. }
  60. }
  61. cout << "x0 = " << setw(15) << x0 << endl;
  62. }
  63. cout << "\n------------------------------------------------\n\n";
  64. system("pause");
  65. return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment