Форум программистов, компьютерный форум CyberForum.ru

Найти все корни функции f(x) на интервале [-1;1] методом дихотомии с погрешностью 0.02. f(x)= (e^x)-arccos(x) - C++

Восстановить пароль Регистрация
 
sadomy
0 / 0 / 0
Регистрация: 23.07.2014
Сообщений: 4
09.07.2015, 10:41     Найти все корни функции f(x) на интервале [-1;1] методом дихотомии с погрешностью 0.02. f(x)= (e^x)-arccos(x) #1
Найти все корни функции f(x) на интервале [-1;1] методом дихотомии с погрешностью 0.02. f(x)= (e^x)-arccos(x).
Помогите пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2015, 10:41     Найти все корни функции f(x) на интервале [-1;1] методом дихотомии с погрешностью 0.02. f(x)= (e^x)-arccos(x)
Посмотрите здесь:

C++ найти все корни уравнения на заданном интервале [a;b] с заданной точностью
C++ Найти все корни уравнения на заданном интервале
Использование стандартных функций (найти все корни уравнения на заданном интервале [a;b] с заданной точностью) C++
C++ Посчитать корни уравнения по методу дихотомии
C++ Найти корень уравнения на заданном интервале методом Ньютона
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
10.07.2015, 19:52     Найти все корни функции f(x) на интервале [-1;1] методом дихотомии с погрешностью 0.02. f(x)= (e^x)-arccos(x) #2
Вообще этот метод не ищет все корни, для этого есть другие методы.
А так примерно следующий код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# include <stdio.h>
# include <math.h>
double f (double x);
double dixi(double(*f)(double), double a, double b, double eps){
    while (b - a > eps){
        double c = (a + b) / 2.0;
        if(f(a) * f(c) <= 0)
            b = c;
        else
            a = c;
    }
    return (a + b) / 2;
}
 
int main (){
    printf("%lf", dixi(func,-1.0, 1.0, 0.02 ));
    return 0;
}
double func (double x)
{
    return exp(x)-acos(x);
    //return x*x*x;
}
Он работает только тогда, когда корень есть.
Для определения факта наличия (или области локализации) корня тоже есть другие методы
sadomy
0 / 0 / 0
Регистрация: 23.07.2014
Сообщений: 4
13.07.2015, 09:55  [ТС]     Найти все корни функции f(x) на интервале [-1;1] методом дихотомии с погрешностью 0.02. f(x)= (e^x)-arccos(x) #3
почему то в 16 строке выдает ошибку(
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
13.07.2015, 21:57     Найти все корни функции f(x) на интервале [-1;1] методом дихотомии с погрешностью 0.02. f(x)= (e^x)-arccos(x) #4
поменяйте 3 строку double func (double x);
Yandex
Объявления
13.07.2015, 21:57     Найти все корни функции f(x) на интервале [-1;1] методом дихотомии с погрешностью 0.02. f(x)= (e^x)-arccos(x)
Ответ Создать тему
Опции темы

Текущее время: 18:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru