Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.63
AK3RN
307 / 18 / 3
Регистрация: 01.05.2010
Сообщений: 250
#1

Решение уравнения методом бисекции с использованием рекурсии - C++

13.04.2013, 14:30. Просмотров 1207. Ответов 1

Добрый день!

Задачу задали в универе...
Написать программу, использующую рекурсивную функцию rооt(f, а, b, ерs),
которая методом деления отрезка пополам находит с точностью ерs корень
уравнения f(x) = 0 на отрезке [а, b]. Считать, что ерs > 0, а < b и f(x)
– непрерывная и монотонная функция на отрезке [a, b], .
Написать-то написал, сам метод халявный, но с рекурсией что-то запарился.
1. Codeblocks с g++ выдает "nan" на выходе, т.е. никакого осмысленного результата.
2. Непонятно, как оформить функцию саму, формулировка странная: rооt(f, а, b, ерs), т.е. первым аргументом по идее надо передавать саму функцию, но это же будет тупо строка и значение f(x) не получится посчитать. Я сделал обходной путь, но интересно было бы понять, как сделать ПО ЗАДАНИЮ.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <math.h>
 
double f(double x)
{
    return pow(x, 3) - 2 * pow(x, 2) - 6 * x - 1;
}
 
double root (double a, double b, double eps)
{
    double c;
    if(fabs(b-a) < eps)
        return (a+b)/2;
    else
    {
        c=(a+b)/2;
        if(f(a)*f(c) <= 0)
            root(a,c,eps);
        else
            root(c,b, eps);
    }
}
 
int main()
{
    std::cout << root(1,2, 0.00001) << std::endl;
    return 0;
}
Что нужно поправить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2013, 14:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Решение уравнения методом бисекции с использованием рекурсии (C++):

Решение уравнения X^3+3x^2-24x-3=0 методом бисекции - C++
На языке программирования DEV C++ X^3+3x^2-24x-3=0 решение методом бисекции! На отрезке (-1 и 0) Помогите плизз!

решение задач с использованием рекурсии - C++
Ув Форумчане подскажите пожалуйста либо ресурс где это можно прочитать мне нужно эту тему расписать помогите пожалуйста :)

Решение уравнения методом половинного деления и методом итераций - C++
Решить уравнение следующими способами: 1) Метод половинного деления 2) Метод итераций Уравнение: e^(x) - e^(-x) - 2 = 0 Отрезок,...

Решение уравнения методом ломаных - C++
Помогите, пожалуйста! Не пойму, почему цикл, не доходя до конца, вылетает. int i,L=16; float x,p,d,E,x1,x2,P,e; ...

Решение квадратного уравнения методом Ньютона - C++
напишите прогу метод ньютона на С

Решение нелинейного уравнения методом итераций - C++
Я не знаю куда кидать, кто поможет сделать эту работу Программа должна вычислять корень нелинейного уравнения методами: простых...

1
w8me
496 / 11 / 1
Регистрация: 10.04.2013
Сообщений: 44
13.04.2013, 15:26 #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
24
25
26
27
 double f(double x)
 {
     return pow(x, 3) - 2 * pow(x, 2) - 6 * x - 1;
 }
 typedef double (*function_f)(double x);
 
 double root (function_f f_,double a, double b, double eps)
 {
     double c;
     if(fabs(b-a) < eps)
         return (a+b)/2;
     else
     {
         c=(a+b)/2;
         if(f_(a)*f_(c) <= 0.)
            return root(f_,a,c,eps);
         else
            return root(f_, c,b, eps);
     }
 }
 
 
int main(int argc, _TCHAR* argv[])
{
    std::cout << root(&f,0,4, 0.00001) << std::endl;
    return 0;
}
http://www.wolframalpha.com/input/?i=N[Solve[x^3+-+2*x^2+-+6*x+-+1+%3D%3D+0%2C+x]]
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2013, 15:26
Привет! Вот еще темы с ответами:

Решение уравнения c методом касательных (Ньютона) - C++
На интервале с точностью Е(Е &gt; 0) определить значение одного корня уравнения: tg(7x) + (x^2)^sin(x) + 1 Определить максимальное...

Решение уравнения методом хорд и касательных - C++
Комбінований метод хорд та дотичних x належить Перевожу. Решение уравнения комбинированным методом хорд и касательных. х...

Решение уравнения методом простой итерации - C++
День добрый. Мне необходимо решить уравнение x-10cos(x)=0 разным методами и с методом простой итерации возникла проблема. Однако мой...

Решение уравнения методом половинного деления - C++
Решение уравнения методом половинного деления. \sqrt{x} - x + 3 = 0 Программа работает только положительных значениях...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru