Как найти максимальное значение функции в маткаде
Перейти к содержимому

Как найти максимальное значение функции в маткаде

  • автор:

Как найти максимальное значение функции в маткаде

9. Нахождение экстремумов функций

MathCAD позволяет находить экстремумы функций, которые имеют конечное количество экстремумов. Для нахождения экстремума используются функции Minimize и Maximize .

На рис.14 показан пример использования функции нахождения минимума. Нахождение максимума происходит аналогично, за исключением того, что функцию Minimize необходимо заменить на Maximize . В данном примере показан случай, когда максимум функции не может быть найден.

Рис.14 Нахождение экстремумов функции

Функции MathCad для решения задач оптимизации.

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

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

  • Minimize (f, x1, . ,хn) – вектор значений аргументов, при которых функция f достигает минимума;
  • Maximize (f, x1, . ,хn) – вектор значений аргументов, при которых функция f достигает максимума;
  • f(x1, . ,хn)– заданная целевая функция;
  • x1, . ,хn – аргументы, по которым производится минимизация(максимизация).

Всем аргументам функции f предварительно следует присвоить некоторые значения, причем для тех переменных, по которым производится минимизация, они будут восприниматься как начальные приближения. Пример 7. Поиск локального экстремума в окрестности заданной точки. Найти максимум функции в окрестности точки (4;5). Ответ: функция имеет максимум, равный 4, в точке(1;1). Пример 8. Поиск условного экстремума функции. Найти минимум функции при условиях . Решение.

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

3. С помощью вычислительного блока находим минимальное значение функции и значение вектора, на котором достигается это значение. Ответ: минимум функции равен 32.155 и достигается в точке (1,0.623,0.343,1,0.048,1).Контрольные вопросы.

  1. Что значит отделить корень уравнения ?
  2. Какие функции могут быть использованы для решения нелинейных уравнений?
  3. Опишите конструкцию вычислительного блока.
  4. В чем состоит градиентный метод?
  5. В чем различие между функциями Find и Minner для решения систем нелинейных уравнений?
  6. Где необходимо расположить ограничительные условия при решении задачи оптимизации?
  7. Как ограничено число ограничительных условий для решения задачи оптимизации?

Варианты заданий

Вариант 1

  1. Решить уравнение , используя встроенные функции root и Find. Сравнить полученные решения.
  2. Найти все корни полинома . Проиллюстрировать решение графически.
  3. Решить систему нелинейных уравнений:
  4. Найти максимум функции .

Вариант 2

  1. Решить уравнение , , используя встроенные функции root и Find. Сравнить полученные решения.
  2. Найти все корни полинома . Проиллюстрировать решение графически.
  3. Решить систему нелинейных уравнений: .
  4. Найти максимум функции при ограничении .

Вариант 3

  1. Решить уравнение , , используя встроенные функции root и Find. Сравнить полученные решения.
  2. Найти все корни полинома . Проиллюстрировать решение графически.
  3. Решить систему нелинейных уравнений: .
  4. Найти максимум функциипри ограничении.

Вариант 4

  1. Решить уравнение , , используя встроенные функции root и Find. Сравнить полученные решения.
  2. Найти все корни полинома . Проиллюстрировать решение графически.
  3. Решить систему нелинейных уравнений: .
  4. Найти максимум функции .

Вариант 5

  1. Решить уравнение , , используя встроенные функции root и Find. Сравнить полученные решения.
  2. Найти все корни полинома . Проиллюстрировать решение графически.
  3. Решить систему нелинейных уравнений: .
  4. Найти минимальное и максимальное значения функции .

Вариант 6

  1. Решить уравнение , , используя встроенные функции root и Find. Сравнить полученные решения.
  2. Найти все корни полинома . Проиллюстрировать решение графически.
  3. Решить систему нелинейных уравнений: .
  4. Найти максимум функции при условиях , , .

Вариант 7

  1. Решить уравнение , , используя встроенные функции root и Find. Сравнить полученные решения.
  2. Найти все корни полинома . Проиллюстрировать решение графически.
  3. Решить систему нелинейных уравнений: . Выполнить проверку.
  4. Найти минимум функции при условиях , , .

Вариант 8

  1. Решить уравнение , , используя встроенные функции root и Find. Сравнить полученные решения.
  2. Найти все корни полинома . Проиллюстрировать решение графически.
  3. Решить систему нелинейных уравнений: . Выполнить проверку.
  4. Найти минимум функции при условиях , , .

Вариант 9

  1. Решить уравнение , , используя встроенные функции root и Find. Сравнить полученные решения.
  2. Найти все корни полинома . Проиллюстрировать решение графически.
  3. Решить систему нелинейных уравнений: . Выполнить проверку
  4. Найти минимум функции при условиях , , .

Вариант 10

  1. Решить уравнение, предварительно оделив корни 7, , используя встроенные функции root и Find. Сравнить полученные решения.
  2. Найти все корни полинома . Проиллюстрировать решение графически.
  3. Решить систему нелинейных уравнений:

. Выполнить проверку.

  1. Найти минимум функции при условиях , , .

Тема 4: Элементы программирования в пакете инженерных расчетов MathCAD.Цель работы: Изучение возможностей символьного пакета MathCAD для программирования условных и циклических выражений. Приобретение навыков написания простейших программ. Используемые программные средства: Пакет MathCAD. Теоретические сведения. Для повышения гибкости Mathcad в системе предусмотрена возможность написания небольших программ для решения тех проблем, которые не могут быть реализованы стандартными средствами. Обычно прибегать к программированию приходится в тех случаях, когда стандартные средства либо не могут решить задачу, либо неэффективны. Для написания программ используется программная палитра, которая вызывается кнопкой панели управления. Как видно, всего имеется 10 операторов, из которых и строится программа. Причём операторы должны вводиться только из палитры, писать их «вручную» не рекомендуется. Практическая часть Для примера приведём простую программу возвращающую 1, если число чётное, и 0 в противном случае. – начинаем создание программы с кнопки Add Line. Вертикальная линия играет роль операторных скобок. – оператор локального присваивания. В программе нельзя использовать оператор присваивания «: /html/2706/381/html_l7HRB8Roj_.Nxv5/img-EPoen0.png» name=»Image527″ align=»left» hspace=»6″ width=»57″ height=»43″ border=»0″> – условный оператор создаёт конструкцию видa: где первый операнд выполняется, если справедливо условие являющееся вторым операндом. Из всех программных операторов оператор условия является, пожалуй, наиболее важным. Его приходится использовать практически во всех создаваемых алгоритмах. Как уже показано, условный оператор if имеет два маркера. В правый маркер вводится условие, в левый – операция, которая должна быть проделана в случае, если условие выполнится (если же оно не выполнится, система просчитывает программу, пропуская данный фрагмент). В маркер оператора может быть внесено несколько выражений условий или операций. В случае задания комплекса условий будьте предельно внимательны и всегда помните, чем отличаются формы его определения через программный блок и с использованием логического умножения. Неверное задание формы комплекса условий – самая распространенная ошибка при работе с данным оператором. Пример: Функция возвращает остаток от деления на 2: После того, как функция определена, она может использоваться наравне со встроенными функциями. С оператором if возможны более сложные конструкции при использовании ещё одного оператора – реализующего альтернативу. Аналог традиционной конструкции Если . То . Иначе . . Т.е. оператор предназначен для определения того действия, которое должно быть выполнено, если условие оператора if окажется истинным. Одновременно может быть использовано несколько условных операторов if. Оператор otherwise в таком случае будет задействован, если не выполняется условия всех операторов if. – оператор цикла обеспечивает повторяющиеся вычисления, если известно количество шагов. Первый операнд – переменная цикла, это интервальная переменная и её значения определены во втором операнде. Третий операнд – тело цикла может состоять из блока операторов и выполняется пока не исчерпаются все значения переменной цикла. Пример: Рассмотрим программу упорядочения чисел по убыванию в одномерном массиве. Пусть дан массив чисел: Мы воспользуемся вложенными циклами и в качестве тела цикла по i используем ещё один цикл по j. Здесь реализован простейший алгоритм сортировки, так называемый «метод пузырька». На самом деле, большие числа как бы всплывают наверх при каждом шаге цикла по i, в то время как в цикле по j на каждом шаге происходит сравнение пары чисел и замена, если большее число находится ниже, причём эта замена осуществляется снизу. Отметим, что в системе имеется стандартная функция сортировки sort(). Примечание:второй цикл мы организовали с отрицательным шагом от конечного значения к начальному. Можно использовать программные возможности Mathcad просто для задания функций более сложного вида.– оператор break введён для повышения гибкости программирования и позволяет закончить цикл досрочно, не исчерпав всего списка. Как правило, ввиду того, что цикл бывает нужным остановить при выполнении некоторого условия, данный оператор почти всегда используется с условным оператором if. Рассмотрим следующую задачу: нам необходимо найти первое вхождение 0 в числовом массиве и вернуть его индекс. Мы приводим работающую программу, где введена функция last(M) которая возвращает последний индекс массива. Возвращаемым значением программы является последний выполняемый оператор — k.– ещё один полезный оператор позволяющий прервать выполнение текущей итерации и перейти к следующей. Рассмотрим например задачу нахождения максимального и минимального элемента массива. Действительно, если , то нет смысла проверять , а лучше перейти к следующему шагу цикла. – оператор цикла с предусловием используется в тех случаях, когда заранее неизвестно количество шагов необходимых для решения задачи. Условие проверяется перед началом каждого шага цикла. Реализуем, например алгоритм вычисления квадратного корня a используя итерационную формулу – оператор return служит для прекращения работы программы и возврата результата. Обычно данный оператор используется при описании действий алгоритма в случае ошибочной ситуации. Допустим нам необходимо вычислить позицию первого вхождения числа в массив. Рассмотрим в качестве ещё одного примера вопрос, как программным способом построить скалярное произведение. Вычислим квадрат модуля вектора Оператор return здесь может быть опущен. В качестве возвращаемого значения в программе используется результат последней операции. Обратите внимание, что в программах мы не пользуемся оператором присваивания :=, а вводим оператор локального присваивания. Переменные, определённые в программе, теряют значение при выходе из неё. – оператор on error служит для обработки ошибочных ситуаций типа «деления на нуль». Данный оператор по своему синтаксису полностью соответствует условному оператору if. В правый его маркер следует внести величину или выражение, ошибка в вычислении которого должнв быть зарегистрирована. В левом маркере следует прописать условие, которое должно быть выполнено в случае ошибочной ситуации. Например, нам необходимо описать функцию , чтобы не было особенности в 0. тогда: Примечание.Операторon errorможет использоваться в арифметических выражениях.Варианты заданийВариант 1

  1. Составить программу которая будет менять местами 2 строки матрицы.
  2. Используя оператор on error для предотвращения появления ошибки «деление на нуль», вычислить функцию .
  3. Написать программу, где функции, возвращающая –1, 0 или 1 в зависимости от знака аргумента (соответственно «-», 0, «+»).

Вариант 2

  1. Составить программу, которая будет выводить сумму геометрической прогрессии, при заданных значениях .
  2. Написать программу по выводу матрицы размером 3х3, где на второстепенной диагонали стояли бы 1.
  3. Вычислить значение функции .

Вариант 3

  1. Вычислить сумму чисел 1+2+3+. +n.
  2. Для x изменяющего от -2 до 2 вычислить значение .
  3. Составить программу по вычислению длины вектора.

Вариант 4 1.Создайте программу pr(n) для вычисления произведения чисел 1*2*3*. *n. 2.Создайте программу для вычисления и вывода двух корней квадратного уравнения . 3.Используя оператор on error для предотвращения появления ошибки «деление на нуль», вычислить функцию . Вариант 5

  1. Создайте программу для вычисления и вывода двух корней квадратного уравнения f(x)=ax2+bx+c.
  2. Дано натуральное число n, действительное x. Вычислить .
  3. Написать программу по выводу на экран знака «+» («-»), если значение .

Вариант 6

  1. Написать программу, которая будет выводить единичную матрицу.
  2. Вычислить значение , используя итерационную процедуру В качестве приближенного значения корня квадратного берется такое значение , которое удовлетворяет условию , где – заданная точность вычисления.
  3. Вычислить , где меняется от 0 до 10.

Вариант 7

  1. Составить программу, которая будет выводить сумму арифметической прогрессии при заданных значениях .
  2. Составим программу для вычисления переменной z по формуле .
  3. Написать программу, которая выводит абсолютное значение функции .

Вариант 8

  1. Определить функцию, которая равна 1, если аргумент размещён между чётным и нечётным числом, и 0 в противном случае.
  2. Вычислить сумму бесконечной геометрической прогрессии со знаменателем 0,4 и начальным элементом -8.
  3. Написать программу по выводу на экран матрицы, каждый элемент которой будет вычисляться по правилу: , где и – элементы матриц соответственно

6.1.3. Экстремум функции нескольких переменных MathCAD 12 руководство

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

Рис. 6.3. Иллюстрация задачи на условный экстремум функции двух переменных: график функции f (х, у) и отрезок прямой х+у=10 (продолжение листинга 6.5)

Листинг 6.5. Экстремум функции двух переменных

Дополнительные условия могут быть заданы и равенствами. Например, определение после ключевого слова Given уравнения х+у=10 приводит к такому решению задачи на условный экстремум:

Как нетрудно сообразить, новое дополнительное условие означает, что численный метод ищет минимальное значение функции f(x,y) не во всей прямоугольной области (х, Y) , а лишь вдоль отрезка прямой, показанного на рис. 6.3.

Поиск минимума можно организовать и с помощью функции Minerr . Для этого в листинге 6.5 надо поменять имя функции Minimize на Minerr , а после ключевого слова Given добавить выражение, приравнивающее функции f (x,y) значение, заведомо меньшее минимального, например, f (х, у) =0.

Научная электронная библиотека

Рассмотрим некоторые стандартные функции системы MathCAD. Введем специальные обозначения для аргументов функций. Пусть первый символ имени аргумента обозначает его тип:

M – квадратная матрица;

V – вектор (матрица из одного столбца);

A – произвольная матрица;

S – симметричная матрица;

G – произвольная матрица или число;

X – вектор или число;

Z – комплексная матрица или число;

z – комплексное число;

прочие символы – скалярные величины.

Экспоненциальные и логарифмические функции

exp(X) – экспонента от X;

ln(X) – натуральный логарифм от X;

log(X) – десятичный логарифм от X;

log(X,b) – логарифм от X по основанию b.

Гиперболические и тригонометрические (прямые и обратные) функции

sin(X), cos(X), tan(X), cot(X), sec(X), csc(X) – соответственно синус, косинус, тангенс, котангенс, секанс, косеканс от X, причем аргументы указываются в радианах;

sinh(X), cosh(X), tanh(X), coth(X), sech(X), csch(X) – аналогичные гиперболические функции;

asin(z), acos(z), atan(z), acot(z), asec(z), acsc(z) – соответственно арксинус, арккосинус, арктангенс, арккотангенс, арксеканс, арккосеканс от z.

Функции для работы с комплексными числами

Re(Z), Im(Z) – соответственно вещественная и мнимая части комплексного числа Z;

arg(z) – аргумент комплексного числа z (в радианах).

length(V) – возвращает число элементов вектора V;

cols(A) – возвращает число столбцов матрицы A;

rows(A) – возвращает число строк матрицы A;

matrix(m, n, f) – матрица размером mxn, значения элементов матрицы определяются f – функцией f (i, j) от двух переменных (номера строки и номера столбца). Эта функция должна быть предварительно определена пользователем;

identity(n) – единичная матрица n×n;

tr(M) – след матрицы M (сумма элементов главной диагонали);

rank(A) – ранг матрицы M;

norme(M) – эвклидова норма матрицы M, то есть корень квадратный из суммы квадратов всех элементов;

eigenvals(M) – вектор, элементы которого являются собственными числами матрицы M;

eigenvecs(M) – матрица, состоящая из нормализованных собственных векторов матрицы M;

cholesky(S) – возвращает нижнетреугольную матрицу L – результат разложения Холецкого вида L∙LT = S;

lu(M) – возвращает матрицу размера n×3n, состоящую из трех соединенных матриц P, L, U, являющихся результатом LU-разложения вида P∙M = L∙U.

Пример вычислений с матричными функциями: нахождение собственного числа путем решения матричного уравнения det(M – λE) = 0 и с помощью функции eigenvals.

Элементы статистического анализа данных

gmean(G1,G2,G3…) – среднее геометрическое аргументов;

mean(G1,G2,G3…) – среднее арифметическое аргументов;

stdev(G1,G2,G3…) – среднеквадратичное отклонение.

fft(V1), ifft(V2) – прямое и обратное быстрые преобразования Фурье над вещественными данными. V1 – вектор из 2m элементов, V2 – вектор из 1 + 2m–1 элементов, m > 2;

cfft(A), icfft(A) – прямое и обратное преобразования Фурье над вещественными и комплексными векторами и матрицами;

wave(V), iwave(V) – прямое и обратное вейвлет-преобразования, V – вектор из 2m элементов, m – целое число.

Аппроксимация, интерполяция и экстраполяция

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

Интерполяция – определение наиболее правдоподобных промежуточных значений в интервале между известными значениями (подбор гладкой кривой, проходящей через заданные точки или максимально близко к ним).

Экстраполяция – определение наиболее правдоподобных последующих значений на основании анализа предыдущих значений (предсказание дальнейшего поведения неизвестной функции).

Применяются следующие функции MathCAD:

regress(VX,VY,k) – возвращает вектор данных, используемый для поиска интерполирующего полинома (a0 + a1x + a2x2 + . + akxk) порядка k. Полином должен описывать данные, состоящие из упорядоченных значений аргумента (VX) и соответствующих значений неизвестной функции (VY), то есть график полинома должен проходить через все точки, заданные координатами (VX, VY), или максимально близко к этим точкам;

interp(VS,VX,VY,x) – возвращает интерполированное значение неизвестной функции при значении аргумента x. VS – вектор значений, который вернула функция regress. VX,VY – те же данные, что и для regress. Функции interp и regress используются в паре;

predict(V,m,n) – возвращает вектор из n предсказанных значений на основании анализа m предыдущих значений из вектора V. Предполагается, что значения функции в векторе V были получены при значениях аргумента, взятых последовательно, с одинаковым шагом. Используется алгоритм линейной предикции. Наиболее целесообразно использовать predict для предсказания значений по данным, в которых отмечены колебания.

Для интерполяции система MathCAD использует подход, основанный на применении метода наименьших квадратов.

Примеры интерполяции и экстраполяции:

1.5.1. Пусть заданы координаты пяти точек (1; 1), (2; 2), (3; 3), (4; 2), (5; 3), представляющих результаты измерения значений некоторой неизвестной функции при различных значениях x. Необходимо подобрать интерполирующую функцию (гладкую кривую), проходящую через заданные точки.

1.5.2. Дана функция y(i) = e–i/10∙sin (i). Известны значения данной функции при i = 0, 1, …, 10. Основываясь на десяти последних значениях, необходимо предсказать последующие десять значений.

Решения показаны на рис. 19.

Рис. 19. Решения в MathCAD первой (а) и второй (б) задач

Нахождение корней полинома

polyroots(V) – возвращает вектор, содержащий все корни полинома a0 + a1x + a2x2 + . + akxk, заданного вектором-столбцом коэффициентов

max(G1,G2,…) – максимальное значение среди аргументов;

min(G1,G2,…) – минимальное значение среди аргументов;

if(a,b,c) – возвращает b, если a ≠ 0, иначе возвращает c;

sign(a) – возвращает –1, 0 или 1 в зависимости от знака числа a.

На рис. 20 показан пример применения функции if.

Рис. 20. Функция, вычисляющая факториал

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

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