fork(1) download
  1. #include <iostream>
  2. #include <fstream>
  3. #include <cmath>
  4.  
  5. using namespace std;
  6.  
  7. // Definicja funkcji
  8. double f(double x) {
  9. return 0.25 * x * x - 2.0;
  10. }
  11.  
  12. int main() {
  13. double a = 2.0;
  14. double b = 4.0;
  15. double eps = 0.0001; // dokładność
  16. double c;
  17.  
  18. // Sprawdzenie warunku koniecznego
  19. if (f(a) * f(b) >= 0) {
  20. cout << "Brak miejsca zerowego w podanym przedziale." << endl;
  21. return 1;
  22. }
  23.  
  24. // Metoda bisekcji
  25. while ((b - a) / 2.0 > eps) {
  26. c = (a + b) / 2.0;
  27.  
  28. if (f(c) == 0.0)
  29. break;
  30. else if (f(a) * f(c) < 0)
  31. b = c;
  32. else
  33. a = c;
  34. }
  35.  
  36. cout << "Przyblizone miejsce zerowe: x = " << (a + b) / 2.0 << endl;
  37.  
  38. // Zapis danych do pliku (do wykresu)
  39. ofstream dane("funkcja.dat");
  40. for (double x = 1.5; x <= 4.5; x += 0.05) {
  41. dane << x << " " << f(x) << endl;
  42. }
  43. dane.close();
  44.  
  45. cout << "Dane do wykresu zapisane w pliku funkcja.dat" << endl;
  46.  
  47. return 0;
  48. }
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
Przyblizone miejsce zerowe: x = 2.82843
Dane do wykresu zapisane w pliku funkcja.dat