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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Оптимизировать добавление элемента в линейный список http://www.cyberforum.ru/cpp-beginners/thread836601.html
Функция void add_pered() добавляет перед элементов номер 5 нужный нам элемент. Как можно оптимизировать работу программы? Она работает, но охота немного поизгаляться над ней #include <stdio.h> #include <stdlib.h> struct Node { int num; Node *next; }*Head, *pered, *help_before, *help_after;
C++ Найти в n-мерном пространстве min расстояние от начала координат до отрезка, заданного координатами концов Найти в n-мерном пространстве минимальное расстояние от начала координат до отрезка , заданного координатами своих концов. Минимальное расстояние будет в том случае если на этот отрезок падает перпендикуляр, а если допустим координаты отрезка заданы такими точками, что перпендикуляр будет за отрезком где-то на прямой и минимальное расстояние будет уже к какой-то из точек. Я не знаю как это все... http://www.cyberforum.ru/cpp-beginners/thread836586.html
C++ Написать программу для вычисления значения выражения(C++)
Байт, а еще вот это можно? G=ln\left|\prod_{i=0}^{4}({x}_{i}+\sum_{k=0}^{i}{x}_{k}) \right|
C++ Где могу прочитать про основы ООП?
Где могу прочитать про основы ООП?
C++ Перевести математическую формулу в С++ http://www.cyberforum.ru/cpp-beginners/thread836545.html
Ребят помогите.... очень нужно. Всю программу написал, а вот формулу одну не могу вывести G=\sum_{i=0}^{4}*\frac{cos(\prod_{k=0}^{i}({x}_{k}-0.5))}{{x}_{i}-1.2}
C++ Список модулей в массив Получаю список модулей кодом: int PrintModules( DWORD processID ) { HMODULE hMods; HANDLE hProcess; DWORD cbNeeded; unsigned int i; // Print the process identifier. подробнее

Показать сообщение отдельно
AK3RN
 Аватар для AK3RN
307 / 18 / 2
Регистрация: 01.05.2010
Сообщений: 250
13.04.2013, 14:30     Решение уравнения методом бисекции с использованием рекурсии
Добрый день!

Задачу задали в универе...
Написать программу, использующую рекурсивную функцию 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;
}
Что нужно поправить?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru