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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.80
Bas916
1 / 1 / 0
Регистрация: 23.12.2010
Сообщений: 24
#1

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

15.11.2012, 13:22. Просмотров 4085. Ответов 4
Метки нет (Все метки)

Здравствуйте. Помогите пожалуйста дописать программу. Вот что вымучал, но на сдаче завалили, типо нет вывода корней, не рассмотрены различные случаи и тд.
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));
    }
Я с сишкой на Вы и шепотом, так что просьба сильно не пинать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2012, 13:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Метод деления отрезка пополам для решения нелинейных уравнений (метод дихотомии) (C++):

Исследовать итерационный метод- метод касательных для решения нелинейных уравнений - C++
прочитал много всего , но сам пример реализовать никак не могу , кто может помогите F(x) = x5+5x+1=0 с...

метод деления отрезка пополам и метод итерации - C++
Методом деления отрезка пополам и методом итерации найти приближенное значение корня 2*x^3+3*x-1=0 абсолютная погрешность 10^-5; Люди...

Метод деления отрезка пополам - C++
Помогите!! Написать функцию,выполняющую поиск корня уравнения f(x)=0 методом деления отрезка пополам. Используя написанную...

Визуальное программирование. Метод деления отрезка пополам - C++
Приближенное нахождение решения уравнения f(x)=0 методом деления отрезка пополам. Написать программу, находящую методом деления отрезка...

Минимум Функции (метод деления отрезка пополам) - C++
Подскажите пожалуйста, Мне нужно найти методом деления отрезка пополам минимум функции одной переменной, должно получиться 3 значения на...

Метод хорд для решения системы нелинейных уравнений - C++
Здравствуйте, задал вопрос по чисмету вот тут http://www.cyberforum.ru/numerical-methods/thread1529078.html#post8064137 Не знаю,...

4
vxg
Модератор
3184 / 1987 / 227
Регистрация: 13.01.2012
Сообщений: 7,680
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;
}
1
Bas916
1 / 1 / 0
Регистрация: 23.12.2010
Сообщений: 24
15.11.2012, 16:33  [ТС] #3
Может кто-нибудь UI набросает еще простенький? На пивасик подкину Типо выбираешь какую функцию надо решить, и она выдает все корни и отрезки, которые были во время выполнения (пошаговые) и итоговый корень, с указанной погрешностью.
0
Kuzia domovenok
1957 / 1810 / 142
Регистрация: 25.03.2012
Сообщений: 6,274
Записей в блоге: 1
15.11.2012, 16:38 #4
Цитата Сообщение от Bas916 Посмотреть сообщение
Может кто-нибудь UI набросает еще простенький?
Зачем тебе это, если ты в ней не разберёшься? Учитель спросит же по всем прибамбасам. Лучше метод дихотомии ещё раз изучи.
0
Bas916
1 / 1 / 0
Регистрация: 23.12.2010
Сообщений: 24
15.11.2012, 16:56  [ТС] #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Зачем тебе это, если ты в ней не разберёшься? Учитель спросит же по всем прибамбасам. Лучше метод дихотомии ещё раз изучи.
Да она сама нифига не понимает Такое ощущение что ей индусский код нужен...

Добавлено через 6 минут
Так что по коду она спрашивать не будет, разве что в каком блоке что реализовано. Но с этим думаю разберусь Просто из-за работы времени не было, все откладывал на последнее время, а тут оказывается что завтра крайний срок сдачи лабы((
0
15.11.2012, 16:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2012, 16:56
Привет! Вот еще темы с ответами:

Метод Ньютона для решения системы нелинейных уравнений - C++
Здравствуйте! Нужно решить методом Ньютона систему уравнений с точностью 0.0001: sin(x+y) - 1.2x = 0 x*x + y*y =1 Вот моя программа,...

Метод Ньютона для решения нелинейных уравнений: узнать количество итераций - C++
Задание: реализовать метод Ньютона для решения нелинейных уравнений, в итоге получить: значение неизвестной и количество итераций,...

Исправить код метод Ньютона для решения систем нелинейных уравнений под нужное условие - C++
Данный код для решения системы ax+tg(xy)=0; (y^2-b^2)+lnx=0 Перепишите его,пожалуйста для системы 2x-y-10=0 5x^2-20y^2-100=0 ...

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


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

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

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