Advertisement
ilyakanyshev

Untitled

Jan 23rd, 2020
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.74 KB | None | 0 0
  1. #include <iostream>
  2. #include <math.h>
  3.  
  4. using namespace std;
  5.  
  6. double fun(double x);
  7. double find_zero(double start, double end, double epsil, bool& flag, double (*f) (double));
  8.  
  9. int main()
  10. {
  11. cout << "Please, enter start and end: ";
  12. double a, b, epsil, result; // объявляем переменные
  13. cin >> a >> b; // вводим границы поиска
  14. cout << "Please, enter epsil: ";
  15. cin >> epsil; // Вводим погрешность
  16. bool flag;
  17. result = find_zero(a, b, epsil, flag, fun); // и передаем это все функции
  18. if (flag) // Параметр нужен в том случае, если нуля нет в заданном промежутке
  19. cout << "Zeroes on x = " << result << endl; // Выводим результат, если корень найден
  20. else
  21. cout << "Zeroes not found." << endl; // Выводим ошибку поиска корня
  22. return 0;
  23. }
  24.  
  25. double fun(double x)
  26. {
  27. return pow(log(x + 0.2), 3); // Сама функция
  28. }
  29.  
  30. double find_zero(double start, double end, double epsil, bool& flag, double (*f) (double))
  31. {
  32. flag = true; // Допустим, что мы нашли этот корень
  33. for (double x = start; x<=end; x+=epsil)
  34. if (f(x)*f(x-epsil)<0) // Если знаки функции поменялись, значит где-то рядом корень
  35. return x; // Возвращаем этот корень
  36. flag = false; // А если ничего не вернули, возвращаем, что мы не нашли этот корень
  37. return end; // И возвращаем любое значение, в данном случае конечное
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement