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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.67
Abortmaher007
-1 / 9 / 0
Регистрация: 22.01.2010
Сообщений: 67
#1

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

24.01.2010, 23:32. Просмотров 2385. Ответов 3
Метки нет (Все метки)

Дано кубическое уравнение x^3 + a*x^2 + b*x + c = 0 имеющие три действительных корня на отрезке (-10; 10). Найти корни уравнения с точностью до 1/1000 методом половинного деления. Проверить полученное уравнение корней подставив
a = - 2,52 b= - 27,342 c= 25, 952

С графиком

Язык ТУРБО СИ

Добавлено через 21 минуту
Глухо пока
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2010, 23:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Кубическое уравнение методом половинного деления (C++):

Кубическое уравнение (методом Кардано) - C++
Добрый вечер, помогите пожалуйста, требуется написать код для решения кубического уравнения ax3+bx2+cx+d=0, обязательно методом Кардано.

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

Решение уравнения методом половинного деления - C++
sin(ln x) - cos(ln x) + 2ln x интервал значение корня 1.3749

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

Угадать число методом половинного деления - C++
Загадывается число от 1 до 1000 и компьютер его угадывает согласно подсказкам больше или меньше. Используем метод половинного деления.

Нахождение площади методом половинного деления - C++
Народ подскажите как находить площадь фигуры методом половинного деления, Вот фигура напрвте как решать метод половинного деления знаю...

3
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
24.01.2010, 23:48 #2
Сначала надо исходный отрезок разбить на 3 части, в каждой из которых только один корень
Для этого надо решить уравнение 3* x^2 + 2*a*x + b = 0;
Это ур-е решаем просто, как в школе учили. x1 и x2 - точки максимума и минимума исходной функции
(Нарисуй!)
Получаем массив double mm[4] = { -10, x1, x2, 10 };
for (i=0; i<3; i++) {
// решаем уравнение на отрезке mm[i], mm[i+1]
}
на картинке все будет видно
1
Abortmaher007
-1 / 9 / 0
Регистрация: 22.01.2010
Сообщений: 67
25.01.2010, 13:45  [ТС] #3
Про написание программы можно подробней немного?
0
BigMax
3 / 2 / 1
Регистрация: 18.09.2009
Сообщений: 10
25.01.2010, 15:51 #4
Цитата Сообщение от 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2010, 15:51
Привет! Вот еще темы с ответами:

Решение уравнения методом половинного деления - C++
Написать программу, которая решает заданное уравнение численным методом деления пополам. Должен быть найден один действительный корень с...

Нахождение экстремума min методом половинного деления - C++
Вообщем проблема такая, препод сказал реализовать метод половинного деления для нахождения экстремума функции с точностью 10^-4. Сделал...

Вычислить arcsin(x) методом половинного деления и Ньютона - C++
Здравствуйте. У меня такое задание: Вычислите методами половинного деления и Ньютона: arcsin(a), arccos(a), arctan(a) на ЭВМ, умеющей...

Найти корни уравнения методом половинного деления - C++
Здравствуйте!!! Найти корни уравнения методом половинного деления на интервале от a до b c точностью ε. В случае их отсутствия вывести No...


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
25.01.2010, 15:51
Ответ Создать тему
Опции темы

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