|
0 / 0 / 0
Регистрация: 01.06.2017
Сообщений: 18
|
||||||
Минимизация двумерным методом Ньютона Функции Химмельблау и Розенброка16.09.2017, 21:29. Показов 7049. Ответов 22
Доброго дня суток! Очень нужна ваша помощь! Необходимо минимизировать методом Ньютона функции Розенброка и Химмельблау , т.е.
Написал код,но для этих двух функций он не работает. Как его оптимизировать под эти функции? спасибо заранее4
0
|
||||||
| 16.09.2017, 21:29 | |
|
Ответы с готовыми решениями:
22
Минимизация Методом Ньютона уравнения с двумя переменными Нахождения максимума функции методом Ньютона Как найти максимум функции методом Ньютона? |
|
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
|
||||||
| 17.09.2017, 11:34 | ||||||
|
Ты что-то непонятное написал какие-то циклы страшные, там один цикл - итерации методом Ньютона, матрица 2 на 2 - ее легко инвертировать, функции хорошие, метод сходится с любого приближения, вот моя реализация. Только вывожу результат в файлы, а не на консоль. Может якобиан градиента проверить стоит ибо в спешке считал, но вроде все нормально сходится.
Поправил опечатку.
0
|
||||||
|
0 / 0 / 0
Регистрация: 01.06.2017
Сообщений: 18
|
|
| 17.09.2017, 15:33 [ТС] | |
|
не компилится к сожалению...ошибок море выдал (
0
|
|
|
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
|
|
| 17.09.2017, 15:43 | |
|
IcebergLife, Что за ошибки? Тут особо никаких ошибок быть не может.
1
|
|
|
0 / 0 / 0
Регистрация: 01.06.2017
Сообщений: 18
|
|
| 17.09.2017, 15:47 [ТС] | |
|
ну вот пример :
23 cтрока ostream не является членом std, os необъявленный идентификатор, и тд... и так в многих строчка в основном что например os необъявленный идентификатор и endl,ofstream и ostream не является членом std
0
|
|
|
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
|
|
| 17.09.2017, 15:53 | |
|
Если VS, добавь #include "stdafx.h" первой строчкой, может поможет
1
|
|
|
0 / 0 / 0
Регистрация: 01.06.2017
Сообщений: 18
|
|
| 17.09.2017, 16:08 [ТС] | |
|
да я два инклуда добавил не помогает
#include "stdafx.h" #include <stdio.h> Добавлено через 1 минуту и добавил using namespace std; Добавлено через 1 минуту а все, спасибо. добавил в самое начало - заработало. Добавлено через 2 минуты еще вопрос. если мне нужно привязать к критерию остановы e<=0.1,0.01,0,001 , как это в программу внедрить? Добавлено через 9 минут еще вопрос. если мне нужно привязать к критерию остановы e<=0.1,0.01,0,001 , как это в программу внедрить?
0
|
|
|
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
|
||||||
| 17.09.2017, 16:14 | ||||||
|
Всмысле тебе нужно задавать значение e?
Тогда функция будет такой:
0
|
||||||
|
0 / 0 / 0
Регистрация: 01.06.2017
Сообщений: 18
|
|
| 17.09.2017, 16:25 [ТС] | |
|
спасибо еще раз! большущее!
0
|
|
|
0 / 0 / 0
Регистрация: 01.06.2017
Сообщений: 18
|
|
| 21.09.2017, 11:01 [ТС] | |
|
Дорогой друг,привет еще раз. Опять нужна твоя помощь. очень. по этому коду.
можно ли кроме точек x1 и x2,которые есть рассмотреть другие варианты? почему именно эти выбираются? когда я считал функцию розенброка параметр точности е не влияет вообще ни на что почему то... для функции Химмельблау ситуация аналогична и у этой функции 4 минимума и надо как то остальные рассмотреть... спасибо заранее
0
|
|
|
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
|
|||||||
| 21.09.2017, 11:08 | |||||||
Теоретически тебе нужно приближенно найти точку вблизи нужного минимума и передать методу, он уточнит ее значение до заданного e. Как найти начальное значение - я не знаю.
0
|
|||||||
|
0 / 0 / 0
Регистрация: 01.06.2017
Сообщений: 18
|
|
| 21.09.2017, 11:12 [ТС] | |
|
мб e не влияет потому что вообще элементы матрицы неправильно посчитаны? или исключено?
а как помимо функции розенброка посчитать это все для простой квадратичной функции (x1)^2 + (x2)^2 ?
0
|
|
|
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
|
|||||||
| 21.09.2017, 11:33 | |||||||
|
Добавлено через 10 минут IcebergLife, вот смотри: я запускаю с другого начального приближения для химмельблау:
Iteration: 9 (x1,x2) = 3.58443 -1.84813 Functions value: 1.57772e-29 Т.е. метод Ньютона он только уточняет значения, начальное приближение нужно находить другим способом, можно просто перебирать из некоторой области пробные точки. Добавлено через 7 минут Я понял! Тебе нужно брать начальные приблоижения из разных координатных четвертей (x,x) (-x,x), (x,-x), (-x,-x) и ты получишь все точки! И самое главное исправь в функции newton_minimization строчку if(f.gradient().x1 <= e && f.gradient().x2 <= e) { на строчку if(fabs(f.gradient().x1) <= e && fabs(f.gradient().x2) <= e) {, это моя ошибка
0
|
|||||||
|
0 / 0 / 0
Регистрация: 01.06.2017
Сообщений: 18
|
|
| 21.09.2017, 11:44 [ТС] | |
|
woldemas, да, e это точность и как я понимаю она должна влиять.... сейчас попробую пересчитать все.
и вопрос. можешь еще добавить в код для функции (x1)^2 + (x2)^2 такой же расчет? сделал бы сам да до сих пор не въезжаю как считать якобиана матрицу
0
|
|
|
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
|
||||||||||||
| 21.09.2017, 12:42 | ||||||||||||
|
Ну так и быть. Добавляешь этот класс:
0
|
||||||||||||
|
0 / 0 / 0
Регистрация: 01.06.2017
Сообщений: 18
|
|
| 22.09.2017, 11:39 [ТС] | |
|
Мне сказали что надо выбирать точки так...
Для Розенброка: одна вблизи минимума, вторая на противоположном крае дна оврага, по одной на склонах оврагов, одна удаленная от оврага точка, Для Химмельблау: по одной вблизи с каждым из минимумов, между каждой парой минимумов, в центре четырех минимумов, удаленная точка, 2. Не понимаю, что определяет точность е, на что она влияет, на координаты точки минимума, на значение ф-ции должна быть хочется заданная точность...т.е. Е=0.1 точно изменяется с десятков 0.001 с сотен и тд...
0
|
|
|
0 / 0 / 0
Регистрация: 01.06.2017
Сообщений: 18
|
|
| 22.09.2017, 12:20 [ТС] | |
|
Вот во вложении скрин...ешка (точность ни на что не повлияла)..
0
|
|
|
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
|
||
| 22.09.2017, 12:58 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 01.06.2017
Сообщений: 18
|
|
| 22.09.2017, 13:04 [ТС] | |
|
Оно посути должно влиять например там про 0.1 3.100000 а при 0.001 3.1230000 ( это я пример привёл) мб это е как то по другому в коде нужно сделать . Примерно понимаю что но не понимаю как в коде реализовать
0
|
|
|
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
|
|||||||
| 22.09.2017, 13:12 | |||||||
1
|
|||||||
| 22.09.2017, 13:12 | |
|
Помогаю со студенческими работами здесь
20
Ошибка в программе интерполяция функции методом Ньютона Интерполяция функции одной переменной методом Ньютона (Pascal -> C++) Минимизация функции методом ломаных Минимизация функции методом ломаных
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|