Как найти экстремум функции mathcad
Перейти к содержимому

Как найти экстремум функции mathcad

  • автор:

Как найти экстремум функции mathcad

БлогNot. Mathcad: ищем экстремум функции двух переменных

Mathcad: ищем экстремум функции двух переменных

Поиск экстремума функции двух переменных принципиально не отличается от случая одной переменной и выполняется стандартными функциями Minimize и Maximize . Проблема состоит в том, как правильно выбрать начальную точку (x,y) , от которой будет выполняться поиск решения. Если у анализируемой функции несколько стационарных точек, может быть найден только «мусор», точней, найдётся ближайшая к начальной стационарная точка, не являющаяся экстремумом, или не найдётся ничего:

экстремум функции 2 переменных не находится - неверные начальные точки

экстремум функции 2 переменных не находится — неверные начальные точки

Поэтому более правильным путём представляется реализация анализа функции на экстремум, ведь Mathcad математики не отменял 🙂

  • D=Zxx*Zyy-Zxy 2 >0, Zxx>0 — точка локального минимума,
  • D>0, Zxx

После этого выполним поиск экстремума от точки, близкой к найденной, с помощью стандартной функции MathCAD, которая годится, скорее, для уточнения решений, чем для анализа.

правильный поиск экстремума функции 2 переменных в Mathcad

правильный поиск экстремума функции 2 переменных в Mathcad

22.03.2017, 13:27 [17179 просмотров]

6.1.1. Локальный экстремум MathCAD 12 руководство

Вычислительный блок (ключевое слово Given со следующими после него логическими выражениями) обычно используется в задачах на условный экстремум (см. следующий разд.).

В качестве примера рассмотрим задачу численного поиска экстремумов полинома четвертой степени f (х) , график которого был приведен на рис. 6.1. Как известно, парабола четвертой степени имеет три точки экстремума, и все они видны на рис. 6.1.

Всем аргументам функции f предварительно следует присвоить некоторые значения, причем для тех переменных, по которым производится минимизация, они будут восприниматься как начальные приближения. Примеры вычисления локальных экстремумов функции одной переменной показаны в листингах 6.1—6.2. Поскольку никаких дополнительных условий в них не вводится, поиск экстремумов выполняется для любых значений х от -oo до oo .

Листинг 6.1 . Поиск минимума функции одной переменной ( для трех начальных значений x)

Листинг 6.2. Поиск максимума функции одной переменной

Как видно из листингов, существенное влияние на результат оказывает выбор начального приближения, в зависимости от чего в качестве ответа выдаются различные локальные экстремумы. Очень полезно сопоставить результаты минимизации (листинг 6.1) с графиком функции f(x) (см. рис. 6.1). Как видно, функция Minimize очень уверенно находит глубокий минимум х=-0.75 . А вот на второй (плохо выраженный) минимум можно набрести лишь случайно, выбирая определенные начальные значения х. В последнем из трех примеров демонстрируется, что если взять начальное приближение х даже в непосредственной близости от этого локального минимума, численный метод все равно «сваливается» в первый, более глубокий минимум f(х) . Попробуйте повторить расчеты, выбирая различные начальные значения, чтобы в этом убедиться.

В листинге 6.2 показаны аналогичные свойства функции Maximize . Если начальное приближение выбрать удачно, то итерационный процесс алгоритма сойдется к максимуму функции, а вот если выбрать его вдали от него, на участке f (х) , где неограниченно возрастает (при х->±oo ), численный метод вообще не справится с задачей, выдавая сообщение об ошибке. Это происходит, поскольку начальное приближение х=-10 выбрано далеко от области локального максимума, и поиск решения уходит в сторону увеличения f (х) , т. е. расходится при х->oo .

Помните о возможности выбора численного алгоритма минимизации, который осуществляется при помощи контекстного меню (рис. 6.2). Не забывайте также, что, начиная с версии Mathcad 11, имеется возможность управлять параметром Multistart (Сканирование), при помощи которого можно попытаться организовать поиск глобального экстремума (см. разд. 5.3.2). Однако не слишком полагайтесь на эту опцию и, если перед вами стоит задача поиска глобального экстремума, постарайтесь организовать сканирование вручную.

Рис. 6.2. Выбор численного метода минимизации

6.1. Поиск экстремума функции MathCAD 12 руководство

Для численного решения задач поиска локального максимума и минимума в Mathcad имеются встроенные функции Minerr , Minimize и Maximize . Принцип их действия очень близок к принципу расчетов, заложенных во встроенной функции Find , предназначенной для решения алгебраических уравнений (см. главу 5). В частности, все встроенные функции минимизации используют те же градиентные численные методы, что и функция Find , поэтому допускается «вручную» выбирать численный алгоритм минимизации из уже рассмотренных нами численных методов (см. разд. 5.3.2). Кроме того, как и в случае решения уравнений, применение градиентного алгоритма, во-первых, требует задания некоторого начального приближения к точке минимума и, во-вторых, позволяет отыскать лишь один (т. е. локальный) из минимумов функции.

Таким образом, как и в случае решения уравнений (см. разд. 5.2.4), чтобы найти глобальный максимум (или минимум), требуется сначала просканировать с некоторым шагом рассматриваемую область и вычислить все локальные значения и потом выбрать из них наибольший (наименьший). Другим вариантом будет простое сканирование с вычислением значений функции, позволяющее выделить из нее подобласть наибольших (наименьших) значений функции и осуществить поиск глобального экстремума, уже находясь в его окрестности. Последний путь таит в себе некоторую опасность уйти в зону другого локального экстремума, но часто может быть предпочтительнее из соображений экономии времени.

Поиск экстремума функции в Маткаде

Всем доброго дня. С маткадом особо не сталкивался раньше, но теперь встал 1 вопрос:

есть функция вида и необходимо найти локально выделенный максимум, трассировка отпадает, потому что надо сделать все на автомате.

Хотелось бы функцию, где можно задать границы и в этих пределах она найдет экстремум. Полистал темы с похожими проблемами, картина особо не проянилась. Дайте пару советов как написать таковую или если такая уже имеется, то как использовать.

Заранее очень благодарен.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Поиск экстремума функции одной переменной с использованием языка MatLab и и встроенной функции fminbnd
помогите пожалуйста с лабой, или хотя бы подскажите что как использовать эти функции 🙁 мапл только.

Поиск экстремума функции двух переменных
нужна помощь, циклит программу в с++ с ошибкой -1.#end #include "stdafx.h" #include <iostream>.

Поиск экстремума функции на заданном промежутке
написал програму для нахождения екстремума функции f(x)=x^3-〖6x〗^2+9x+4 в.

Поиск экстремума функции методом покоординатного спуска
ПОМОГИТЕ ПЛЕЕЕЗ С ПРОГРАММОЙ "поиск экстремума функции методом покоординатного спуска"

2832 / 2129 / 86
Регистрация: 02.05.2010
Сообщений: 3,195

У Вас есть аналитически заданная функция? Тогда проблем нет. Предложенная картинка похожа на циклоиду.

Регистрация: 30.03.2011
Сообщений: 30

Вы, правы дальше она повторяется но с искажениями, поправочные коэффициенты не помогают, из-за этого все равно придется работать только на 1 участке, при этом я точно знаю в каких пределах будет варьироваться данный максимум, но численное значение могу получить лишь используя трассировку, что в данной задаче недопустимо.

з.ы. но так же есть и экспериментальная кривая, где аналитики нет, только численно надо будет искать все равно.

2832 / 2129 / 86
Регистрация: 02.05.2010
Сообщений: 3,195

Если есть аналитическая запись функции, то можно искать значения аргумента, в которых производная не существует. Судя по картинке, именно такие у Вас экстремумы. Конечно, разговор был бы предметней, если бы я видела саму функцию.

Регистрация: 30.03.2011
Сообщений: 30

там много преобразований через матрицы передачи, так что не хотелось бы лезть в аналитику, так как все равно полностью проблему не решит.

пока на руках следующая картина:
имеется много экспериментальных данных, которые в итоге рисуют почти такую же картинку.
имеются границы где нам ждать максимум

и вот исходя из этого следует найти экстремум, вся аналитика идет после, сводя решение под метод наименьших квадратов, но это уже другое дело.

2832 / 2129 / 86
Регистрация: 02.05.2010
Сообщений: 3,195

Если есть массив данных в окрестности точки экстремума, то почему бы не использовать функцию max(M), где М упомянутый массив.

Регистрация: 30.03.2011
Сообщений: 30

А можно задать пределы для этой функции?
потому что если искать максимум по всему массиву, то результат будет неверный.

Я почти не сталкивался с написанием собственных функций в маткаде, из-за этого в синтаксисе особо не разбирался, так что прошу немного подробней намекнуть как это можно реализовать.

2832 / 2129 / 86
Регистрация: 02.05.2010
Сообщений: 3,195
Регистрация: 30.03.2011
Сообщений: 30

мде, столкнулся на первый взгляд неожиданной проблемой)

есть большой массив Т00, на котором много пиков. Мы предположительно знаем что нужный нам пик будет находиться в пределах с 10 по 20 значения массива.

создал новый массив ТТ и в него занес выборку с массива Т00, но соответственно вылезли нули незаполненных ячеек, найти минимум в таком случае не проблема, но так как все значения меньше нуля, максимум растворяется.

если задать для массива ТТ другие индексы, в том же количестве то он уже отказывается работать.
есть ли какие-нибудь проверенные годами решения данной проблемы?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *