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

Метод деления отрезка пополам для решения нелинейных уравнений (метод дихотомии) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.80
Bas916
1 / 1 / 0
Регистрация: 23.12.2010
Сообщений: 24
15.11.2012, 13:22     Метод деления отрезка пополам для решения нелинейных уравнений (метод дихотомии) #1
Здравствуйте. Помогите пожалуйста дописать программу. Вот что вымучал, но на сдаче завалили, типо нет вывода корней, не рассмотрены различные случаи и тд.
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
#include <conio.h>
#include <math.h>
#include <iostream>
#include <fstream>
using namespace std;
double func(double x)
    {
        //return (x * x * x - x - 1);//уравнение
        return (x * x * x + 2 * x * x + 3 * x + 5);
    }
double dichotomy(double infinum, double supremum, double epsilon) {
        double x;
        while (supremum - infinum > epsilon) {
            x = (infinum + supremum) / 2;
            if (func(supremum) * func(x) < 0)
                infinum = x;
            else
                supremum = x;
        }
        return (infinum + supremum) / 2;
    }
int main () {
        freopen ("out.txt", "w", stdout);
        printf ("Хприближенное = %0.3f", dichotomy(-2,-1,0.001));
    }
Я с сишкой на Вы и шепотом, так что просьба сильно не пинать
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2012, 13:22     Метод деления отрезка пополам для решения нелинейных уравнений (метод дихотомии)
Посмотрите здесь:

C++ 2 Программы. На "целые числа и системы счисления" и на "метод деления отрезка пополам"
Метод деления пополам C++
Решение нелинейных уравнений. Метод половинного деления C++
метод деления отрезка пополам и метод итерации C++
метод Ньютона для решения системы нелинейных уравнений C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
 Аватар для vxg
2662 / 1673 / 157
Регистрация: 13.01.2012
Сообщений: 6,223
15.11.2012, 14:49     Метод деления отрезка пополам для решения нелинейных уравнений (метод дихотомии) #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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//------------------------------------------------------------------------------
//исключения
class bad_bracket_end_points {};
class too_many_iteration {};
//------------------------------------------------------------------------------
long root_iteration = 1000000;
//------------------------------------------------------------------------------
double dichotomic_root
(
    double (* const y)(const double &x),
    double x_min, double x_max,
    const double &dx, const double &dy
)
{
    double y_x_min = y(x_min);
    double y_x_max = y(x_max);
 
    double x_mid, y_x_mid;
 
    if (x_min >= x_max || (y_x_min > 0) == (y_x_max > 0))
        throw bad_bracket_end_points();
 
    long k = 0;
 
    do
    {
        x_mid = (x_min + x_max) / 2;
        y_x_mid = y(x_mid);
 
        if ((y_x_min > 0) == (y_x_mid > 0))
            x_min = x_mid;
        else
            x_max = x_mid;
 
        k++;
        if (k > root_iteration) throw too_many_iteration();
    }
    while (x_max - x_min > dx && fabs(y_x_mid) > dy);
 
    return x_mid;
}
Bas916
1 / 1 / 0
Регистрация: 23.12.2010
Сообщений: 24
15.11.2012, 16:33  [ТС]     Метод деления отрезка пополам для решения нелинейных уравнений (метод дихотомии) #3
Может кто-нибудь UI набросает еще простенький? На пивасик подкину Типо выбираешь какую функцию надо решить, и она выдает все корни и отрезки, которые были во время выполнения (пошаговые) и итоговый корень, с указанной погрешностью.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
15.11.2012, 16:38     Метод деления отрезка пополам для решения нелинейных уравнений (метод дихотомии) #4
Цитата Сообщение от Bas916 Посмотреть сообщение
Может кто-нибудь UI набросает еще простенький?
Зачем тебе это, если ты в ней не разберёшься? Учитель спросит же по всем прибамбасам. Лучше метод дихотомии ещё раз изучи.
Bas916
1 / 1 / 0
Регистрация: 23.12.2010
Сообщений: 24
15.11.2012, 16:56  [ТС]     Метод деления отрезка пополам для решения нелинейных уравнений (метод дихотомии) #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Зачем тебе это, если ты в ней не разберёшься? Учитель спросит же по всем прибамбасам. Лучше метод дихотомии ещё раз изучи.
Да она сама нифига не понимает Такое ощущение что ей индусский код нужен...

Добавлено через 6 минут
Так что по коду она спрашивать не будет, разве что в каком блоке что реализовано. Но с этим думаю разберусь Просто из-за работы времени не было, все откладывал на последнее время, а тут оказывается что завтра крайний срок сдачи лабы((
Yandex
Объявления
15.11.2012, 16:56     Метод деления отрезка пополам для решения нелинейных уравнений (метод дихотомии)
Ответ Создать тему
Опции темы

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