Технология решения задач одномерной оптимизации средствами MathCad
Пакет Mathcad с помощью встроенных функций решает задачу нахождения только локального экстремума. Для нахождения глобального экстремума необходимо вычислить все локальные экстремумы и выбрать среди них наибольший (наименьший). Отметим несколько подходов в поиске экстремума.
Для непрерывной функции от одной переменной можно использовать равенство нулю её производной, и путем решения полученного уравнения получить точки экстремумов. Уравнение можно решить с использованием встроенной функции root. При этом следует принимать во внимание знак второй производной. Если на отрезке, содержащем точку экстремума, , то это локальный минимум, а если , то это локальный максимум.
Пример 2.4-26. Найти глобальный минимум функции .
Дальнейшее исследование показало, что глобальным минимумом является точка х = -3.679.
Для непрерывных функций также удобно пользоваться такими встроенными функциями как Maximize(y,x) и Minimize(y,x). Здесь ключевое слово Given можно опускать, поскольку оно необходимо лишь при наличии ограничений.
Пример 2.4-27. Найти минимум и максимум функции y(x)=2x3-16x+5.
Для ступенчатой функции или функции с переломами можно использовать встроенную функцию Minеrr( ). Предварительно по графику выбирается число, заведомо большее (или меньшее) экстремального значения функции, и записывается в качестве ограничения в блоке Given. Функция Minеrr( ) возвращает значение аргумента, при котором расхождение между заданным числом и значением функции минимально.
Пример 2.4-28. Найти минимум и максимум ступенчатой функции.
Пример 2.4-29. Найти минимум функции одной переменной.
Пример поиска минимума функции одной переменной |
Технология решения задач аппроксимации функций средствами MathCad
В Mathcad имеется несколько функций аппроксимации, различающихся способом «соединения» точек (прямой линией или различными кривыми).
Пример 2.4-30. Получить аппроксимирующие полиномы первой и второй степени методом наименьших квадратов для функции, заданной таблично.
Пример 2.4-31. Осуществить аппроксимацию таблично заданной функции многочленом 1-й, 2-й и 3-й степени.
В этом примере рассмотрено использование функции linfit(x,y,f), где x,y- соответственно векторы значений аргументов и функции, а f – символьный вектор базисных функций. Использование этой функции позволяет определить вектор коэффициентов аппроксимации методом наименьших квадратов и далее невязку - среднеквадратическую погрешность приближения исходных точек к аппроксимирующей функции (сkо). Степень аппроксимирующего многочлена задается при описании символьного вектора f. В примере представлена аппроксимация таблично заданной функции многочленом 1-й, 2-й и 3-й степени. Вектор s представляет собой набор аппроксимирующих коэффициентов, что позволяет получить аппроксимирующую функцию в явном виде.
В Mathcad имеется также большое количество встроенных функций, предназначенных для получения аналитического выражения функции регрессии. Однако в этом случае необходимо знать форму аналитического выражения. Ниже приведены встроенные функции, различающиеся видом регрессии, позволяющие (при заданных начальных приближениях) определить аналитическую зависимость функции, то есть возвращающие набор аппроксимирующих коэффициентов:
expfit(X,Y,g)Решение ОДУ 2-го порядка вида у”=F(x, y, z), где z=y’ также может быть получено методом Рунге-Кутты 4-го порядка. Ниже приведены формулы для решения ОДУ:
- регрессия экспонентой
- sinfit(X,Y,g)– регрессия синусоидой
- pwfit(X,Y,g)– регрессия степенной зависимостью
- logfit(X,Y,g)– регрессия логарифмической функцией
В этих функциях: х – вектор аргументов, элементы которого расположены в порядке возрастания; y– вектор значений функции; g – вектор начальных приближений коэффициентов a, b и с; t - значение аргумента, при котором определяется функция.
В приведенных ниже примерах для оценки связи между массивами данных и значениями аппроксимирующей функции подсчитывается коэффициент корреляции corr(). Если табличные данные неплохо аппроксимируется каким-либо видом регрессии, то коэффициент корреляции близок к единице. Чем меньше коэффициент, тем хуже связь между значениями этих функций.
Пример 2.4-32. Найти аппроксимирующие полиномы первой, второй, третьей и четвертой степени и вычислить коэффициенты корреляции.
Помимо вычисления значений функций в пределах интервала данных все рассмотренные ранее функции могут осуществлять экстраполяцию (прогнозирование поведения функции за пределами интервала заданных точек) с помощью зависимости, основанной на анализе расположения нескольких исходных точек на границе интервала данных. В Mathcad имеется и специальная функцияпредсказания predict(Y, m, n), где Y – вектор заданных значений функции, обязательно взятых через равные интервалы аргумента, а m – число последовательных значений Y, на основании которых функция predict возвращает n значений Y.
Значений аргумента для данных не требуется, поскольку по определению функция действует на данных, идущих друг за другом с одинаковым шагом. Функция использует линейный алгоритм предсказания, который точен, когда экстраполируемая функция гладкая. Функция может быть полезна, когда требуется экстраполировать данные на небольшие расстояния. Вдали от исходных данных результат чаще всего оказывается неудовлетворительным.