Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <math.h>
- using namespace std;
- double fun(double x);
- double find_zero(double start, double end, double epsil, bool& flag, double (*f) (double));
- int main()
- {
- cout << "Please, enter start and end: ";
- double a, b, epsil, result; // объявляем переменные
- cin >> a >> b; // вводим границы поиска
- cout << "Please, enter epsil: ";
- cin >> epsil; // Вводим погрешность
- bool flag;
- result = find_zero(a, b, epsil, flag, fun); // и передаем это все функции
- if (flag) // Параметр нужен в том случае, если нуля нет в заданном промежутке
- cout << "Zeroes on x = " << result << endl; // Выводим результат, если корень найден
- else
- cout << "Zeroes not found." << endl; // Выводим ошибку поиска корня
- return 0;
- }
- double fun(double x)
- {
- return pow(log(x + 0.2), 3); // Сама функция
- }
- double find_zero(double start, double end, double epsil, bool& flag, double (*f) (double))
- {
- flag = true; // Допустим, что мы нашли этот корень
- for (double x = start; x<=end; x+=epsil)
- if (f(x)*f(x-epsil)<0) // Если знаки функции поменялись, значит где-то рядом корень
- return x; // Возвращаем этот корень
- flag = false; // А если ничего не вернули, возвращаем, что мы не нашли этот корень
- return end; // И возвращаем любое значение, в данном случае конечное
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement