| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [C++] Поиск минимума функции методом Ньютона |
| Автор: MrNull 21.12.2007, 01:33 | ||||
| Так и не смог понять, разрешается ли на этом форуме помощь за деньги или нет, модеры, не ругайте сильно. Задание: Реализовать программу на C++ поиска минимума функции методом Ньютона. Программу написать наиболее просто, без использования ссылок, указателей и т.д., так будет легче в ней разобраться. Задание и описание метода прикладываю к сообщению. Немного подробнее о функции штрафа:
Важно заметить, что в ходе аналитического решения выяснилось, что условный минимум (при наложении ограничений) и безусловный (минимум функции) совпадают, поэтому в принципе штрафные функции не нужны, так что вот так. Картинка функции с ограничениями: http://funkyimg.com/viewer.php?img=78094chart.jpg Срок исполнения: 23.12.2007 Оплата: от 1000 рублей и выше на твоё усмотрение |
| Автор: ST1 22.12.2007, 18:01 |
| Возьмусь за задание. Дай свой ответ |
| Автор: MrNull 22.12.2007, 18:25 |
| спасибо! стучись мне в аську 269-743-146 или звони +7 906 059-05-56. ответ: глобальный минимум в точке x=2, y=3, на картинке это хорошо видно. Условный минимум (с учётом ограничений) совпадает с глобальным. |
| Автор: MrNull 23.12.2007, 15:42 | ||
| Делюсь с остальными: Программа поиска безусловного минимума функции f(x1, x2) = 2 * (x1 - 3)^2 + (x2 - 2)^2 Алгоритм расчета: методом Ньютона решается система |F1(x1, x2) = df/dx1 = 0| (1) | | |F2(x1, x2) = df/dx2 = 0|, состоящая из равенства нулю частных производных исходной функции (необходимое условие экстремума). Алгоритм метода Ньютона: Шаг 1. Задается начальное приближение для x1, x2,...xn (в нашем случае n = 2) Шаг 2. Вычисляется невязка fvec (вектор правых частей системы (1)) Проверяется сходимость (сумма модулей координат fvec меньше некоторого малого eps > 0) Если достигнута сходимость, цикл завершается. Иначе переход к следующему шагу. Шаг 3. Вычисляются элементы матрицы Якобиана системы (1): |dF1(x1, x2)/dx1 dF1(x1, x2)/dx2| J = | | |dF2(x1, x2)/dx1 dF2(x1, x2)/dx2| Шаг 4. Методом Гаусса решается система J * (dx) = - fvec, где dx = (dx1, dx2) - вектор смещений Шаг 5. Рассчитывается следующее приближение переменных: x1 = x1 + dx1, x2 = x2 + dx2 Шаг 6. Переход к следующей итерации (Шаг 1.) если не превышено максимальное число итераций Метод Гаусса решения линейных систем: Элементарными преобразованиями над строками матрицы она приводится к верхнетреугольному виду (прямой ход метода Гаусса); полученная система с треугольной матрицей решается в явном виде методом последовательного исключения неизвестных в порядке dxn,...,dx1 (обратный ход метода Гаусса)
|
| Автор: iceberglife177 2.6.2017, 17:44 | ||||
а функцию розенброка можно вашим методом считать? |
| Автор: Noubpoeno 10.12.2022, 05:51 |
Модератор: Сообщение скрыто. |