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

Нахождение экстремума min методом половинного деления - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ динамические структуры данных стеки И очереди http://www.cyberforum.ru/cpp-beginners/thread857752.html
Картотека в бюро ремонта квартир организована как очередь. Сведения о каждой квартире содержат: • количество комнат; • адрес. • дата подачи заявления на ремонт; Составить программу, которая...
C++ Вложенные циклы (вычислить значение g) Незнаю как решить задачу в С++. Помоготе плизззз..... :) Необходимо вычислить значение g = f (x, z), где оба параметра цикла х и у изменяются от начального до конечного значения с... http://www.cyberforum.ru/cpp-beginners/thread857717.html
C++ Метод удаление объекта из массива
Описать класс «план на день» с полем - массив объектов класса «Событие». Предусмотреть возможность работы с произвольным числом планируемых событий, добавления и удаления события. Никак не могу...
Не работат полиморфизм C++
Почему при запуске этого кода, в консоли две четверки? Если верить книге в которой был похожий пример, должно быть 4, а затем 20. Компилятор MinGW. #include <cstdlib> #include <iostream> using...
C++ Структуры и функции http://www.cyberforum.ru/cpp-beginners/thread857673.html
В отмеченных строках пишет, что не видит ни а, ни n, ни j. Почему? struct point { int x, y, z; }; double sumOfDistances (point *a, int n, point a){ double summa=0; for (int...
C++ Turbo C++ 3.0 Compiler не видит библиотеки Совсем никаких, хотя вроде все подключено. Что можно сделать? подробнее

Показать сообщение отдельно
Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197

Нахождение экстремума min методом половинного деления - C++

07.05.2013, 00:04. Просмотров 4119. Ответов 3
Метки (Все метки)

Вообщем проблема такая, препод сказал реализовать метод половинного деления для нахождения экстремума функции с точностью 10^-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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#define _USE_MATH_DEFINES
#include <cmath>
#include <math.h>
#include <iostream> 
#include <clocale>
#include <conio.h>
using namespace std;
 
float f(float x)
{
    return  (2*x)*(2*x)+x*0.5;
}
void main()
{   setlocale (LC_ALL, "Russian");
    float a,b,d,x;
    int N=1;
    cout << "Метод половинного деления (метод дихотомии):" << endl;
    cout << "a = "; cin >> a;
    cout << "b = "; cin >> b;
    cout << "Точность: "; cin >> d;
    do
    {
        x = (a + b) / 2.;
        if (f(a) * f(x) < 0)
        {
            b = x;
        }
        else if (f(x) * f(b) < 0)
        {
            a = x;
        }
        else if ((f(x) * f(b) == 0) && (f(x) * f(a) == 0))
        {
            cout << "Корень x = " << x << endl;
            break;
        }
        else
        {
            cout << "В указанном интервале корней нет, или больше одного." << endl;
            break;
        }
        cout << "N = " << N << "  x = " << x << endl;
        N++;
    }
    while (fabs(a - b) > d);
   getch();
}
Препод глянул и сказал что я нашел корень этого уравнения, а надо найти минимум и сказал про 3 отрезка каких то, типо наш заданный интервал [a,b] делится на 3 отрезка и там находится.

Добавлено через 56 секунд
мое уравнение
Цитата Сообщение от Basill Посмотреть сообщение
(2*x)*(2*x)+x*0.5;
Добавлено через 3 часа 4 минуты
upp
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru