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

Метод ломаных - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
Simply me
 Аватар для Simply me
235 / 31 / 2
Регистрация: 05.05.2012
Сообщений: 292
01.12.2012, 15:21     Метод ломаных #1
Здравствуйте! Помогите, пожалуйста, реализовать метод ломаных нахождения минимума многоэкстремальной функции f(x) на отрезке [a, b].
Алгоритм:
x1=a
x2=b
yi=f(xi)

1 итерация
t1(x)=max {yi-180*fabs(x-xi)}, i=1,2
x3=arg min t1(x), a<=x<=b

2 итерация
t2(x)= max {yi-180*fabs(x-xi)}, i=1,2,3
x4=arg min t2(x), a<=x<=b

k итерация
tk(x)= max {yi-180*fabs(x-xi)}, i=1,2,3,...,k+1
x(k+2)=arg min tk(x), a<=x<=b

N-1 итерация
t(N-1)(x)=max {yi-180*fabs(x-xi)}, i=1,2,3,...,N
x(N+1)=arg min t(N-1)(x), a<=x<=b


fmin=min f(xi), i=1,...,N
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2012, 15:21     Метод ломаных
Посмотрите здесь:

C++ Метод итераций и метод Зейделя
Метод дихотомии (как метод оптимизации) C++
метод деления отрезка пополам и метод итерации C++
Метод Эйлера, и Метод Лагранжа, в долгу не останусь C++
C++ Производный класс: метод возведения в произвольную степень, и метод для вычисления логарифма числа
Класс vector (поля: координаты, 2 конструктора, метод нахождения длины вектора и метод вывода координат на экран) C++
C++ Метод оптимизации. Метод Фибоначчи
C++ Решение уравнения методом ломаных

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Simply me
 Аватар для Simply me
235 / 31 / 2
Регистрация: 05.05.2012
Сообщений: 292
02.12.2012, 09:52  [ТС]     Метод ломаных #2
Может, кто-нибудь посмотрит? Я попыталась проиллюстрировать метод.
Сам метод хорошо понимаю, x[3] нашла.
x[3]=(y[2] - y[1] + 180*(x[2] + x[1])) / (2*180);
В частном случае (конкретно по графику моей функции) можно дальше выбрать x[4].
x41=(y[1]-y[3]+M*(x[1]+x[3]))/(2*M);
x42=(y[3]-y[2]+M*(x[2]+x[3]))/(2*M);
if ((y[3]-M*fabs(x41-x[3])) <(y[3]-M*fabs(x42-x[3])))
x[4]=x41;
else
x[4]=x42;
А в общем случае непонятно, как выбирать следующие точки.
Миниатюры
Метод ломаных   Метод ломаных   Метод ломаных  

Метод ломаных   Метод ломаных  
Yandex
Объявления
02.12.2012, 09:52     Метод ломаных
Ответ Создать тему
Опции темы

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