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

Поиск минимума методом трихотомии - C++

Восстановить пароль Регистрация
 
dnb_dnb
44 / 0 / 1
Регистрация: 13.11.2011
Сообщений: 95
14.10.2012, 21:47     Поиск минимума методом трихотомии #1
Здравствуйте! Написал, но почему-то не работает. Подскажите пожалуйста что тут не так?
Метод трихотомии - деление на три, аналог метода дихотомии (деление на два).

Или то что я нахожу f1 и f2 - уже не правильно?
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
#include <conio.h>
#include <math.h>
#include <iostream>
using namespace std;
double f(double x) {
 
    return  pow((x-1),2)+1;
}
int main() {
 
    double a,b,E,Xopt;
    cout<<"a="; cin>>a;
    cout<<"b="; cin>>b;
    cout<<"E="; cin>>E;
 
    do {
        int f1=(b-a)*1/3;
        int f2=(b-a)*2/3;
        if (f(a)>=f(f1) && f(f1)>=f(f2) && f(f2)>=f(b)) {f2=a; Xopt=(a+b)/2;}
        if (f(a)<=f(f1) && f(f1)<=f(f2) && f(f2)<=f(b)) {f1=b; Xopt=(a+b)/2;}
        if (f(a)>=f(f1) && f(f1)>=f(f2) && f(f2)<=f(b)) {f2=a; Xopt=(a+b)/2;}
        if (f(a)>=f(f1) && f(f1)<=f(f2) && f(f2)<=f(b)) {f1=b; Xopt=(a+b)/2;}
 
    }
    while (fabs(E*(b-a))>=E); //абсолютное значение
        cout<<"X минимальный: "<<Xopt<<"\n";
        cout<<"Значение в минимальной точке функции: "<<f(Xopt)<<"\n";
        cout<<"Погрешность: "<<E<<"\n";
        getch();
    return 0;
}
Лучше всего, для этой функции вводить a=0, b=2. (потому что тут минимум должен быть в точке 1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2012, 21:47     Поиск минимума методом трихотомии
Посмотрите здесь:

C++ Функции. Поиск минимума и максимума.
C++ Поиск максимума и минимума
C++ Поиск минимума в массиве
C++ Поиск минимума
C++ Поиск минимума с помощью рекурсивной функции
Ошибка в коде, поиск минимума из максимумов C++
C++ Нахождение минимума функции одной переменной методом кубической параболы
Поиск второго минимума в массиве C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
14.10.2012, 22:48     Поиск минимума методом трихотомии #2
C++
1
 int f1=(b-a)*1/3;
я метода не знаю но вот вопрос точно ли f1 f2 должны быть целыми числами?
и еще 2/3,на всякий случай поменяй на 2./3. ,иначе возможно целочисленное деление, результат которого отнюдь не тот которого ты ждешь
Yandex
Объявления
14.10.2012, 22:48     Поиск минимума методом трихотомии
Ответ Создать тему
Опции темы

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