Форум программистов, компьютерный форум 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 не видит библиотеки Совсем никаких, хотя вроде все подключено. Что можно сделать? подробнее

Показать сообщение отдельно
sl_k
12 / 12 / 0
Регистрация: 15.04.2010
Сообщений: 61
08.05.2013, 19:36
Вроде должно работать проверил на интервале [-1; 50]
Теория тут:
http://webmath.exponenta.ru/s/kiselev1/node87.htm

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
#include <cmath>
#include <math.h>
#include <iostream>
#include <clocale>
using namespace std;
 
float f(float x)
{
    return  (2*x)*(2*x)+x*0.5;
}
int main()
{   setlocale (LC_ALL, "Russian");
    float a,b,d,x;
    int N=1;
    cin << a;
    cin << b;
    cin << d;
    double sigma = d/2-d/4;
 
    cout << "Метод половинного деления (метод дихотомии):" << endl;
     do
    {
        x = (a + b) / 2.;
        float l = x - sigma;
        float r = x + sigma;
 
        if (f(l) <=  f(r))
        {
            b = r;
        }
        else if (f(l) > f(r))
        {
            a = l;
        }
          cout << "N = " << N << "  x = " << x << endl;
        N++;
    }
    while (fabs(a - b) > d);
   return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru