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

Кубическое уравнение методом половинного деления - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Кубическое уравнение методом биссекции http://www.cyberforum.ru/cpp-beginners/thread89276.html
Дано кубическое уравнение x^3 + a*x^2 + b*x + c = 0 имеющие три действительных корня на отрезке (-10; 10). Найти корни уравнения с точностью до 1/1000 методом половинного деления. Проверить...
C++ Преобразовать символьную запись целого десятичного числа без знака в целое число Преобразовать символьную запись целого десятичного числа без знака в целое число. В записи исходного числа могут быть пробелы (до и после числа) после числа могут быть и другие записи. http://www.cyberforum.ru/cpp-beginners/thread89268.html
C++ Про возвращение значения 2...
если в строке идентификатор,то возвратить ф-ции значение 1=да, 0=нет как индефикатор в общем показать?
C++ Последовательность
Нужна помощь в решении вот такой задачки : " Сортирование последовательности элементов следующим образом : ищем максимальный элемент последовательности и переносим его в конец последовательности ,...
C++ C++ и postgresql под win http://www.cyberforum.ru/cpp-beginners/thread89230.html
Выдает такую вот ошибку build/Debug/MinGW-Windows/main.o: In function `main': C:/Documents and Settings/Dik/Мои документы/NetBeansProjects/test/main.cpp:16: undefined reference to `PQconnectdb'...
C++ Выполнение операций в отдельном потоке Например у меня есть функция. void musik() //Создание потоковой функции { Beep(2000,3000); } Как сделать поток, или подругому, что-бы музыка играла, по ходу программы, а не после. подробнее

Показать сообщение отдельно
BigMax
3 / 2 / 1
Регистрация: 18.09.2009
Сообщений: 10
25.01.2010, 15:51
Цитата Сообщение от Abortmaher007 Посмотреть сообщение
Про написание программы можно подробней немного?
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
29
30
31
32
33
34
35
36
37
38
39
40
void CuttingHalfMethod(Data *data)
        {
            double a = data->a;
            double b = data->b;
            double eps = data->eps;
            double c = 0;
            int n = 0;
            int maxN = data->maxN;
 
            if (f(a) * f(b) < 0)
            {
                while (fabs(a - b) > eps && n < maxN)
                {
                    c = (a + b) / 2;
 
                    if (f(a) * f(c) < 0)
                        b = c;
                    else
                        a = c;
                    n++;
                }
                if (n == maxN)
                    data->isMaxIterDone = true;
                else
                    c = (a + b) / 2;
                data->rez = c;
            }
            else
                data->isCansel = true;
        }
struct Data
{
double a;
double b;
double eps;
double maxN;
bool isMaxIterDone;
bool isCansel;
double rez;
};
Здесь a b это границы интервала на котором должен быть корень.
eps это погрешность.
maxN максимально возможное число итераций (на случай бесконечного цикла);
isMaxIterDone флаг было ли достигнуто maxN (т.е. по какому условию был выход из цикла: по погрешности или по итерациям)
isCansel флаг того что на интервале нет корней
rez - результат
Тоесть создаешь структуру Data. Инициализируешь входные данные. После работы функции проверяешь флаги и делаешь вывод был ли найден корень и по какому условию найден.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru