Решение задачи оптимизации в Mathcad
Для поиска минимального или максимального значения функции в Mathcad имеются функции:
Minimize(f, x1, x2, …xn)
Maximize(f, x1, x2, …xn)
f — функция без аргументов для максимизации и минимизации значений;
x1, x2, …xn — скалярные переменные, найденные в системе уравнений.
Записываем решение в пакете Mathcad

3575
Как работает функция maximize в mathcad
Используйте блок решения, чтобы найти множество точек максимума функции Бесселя первого рода нулевого порядка J0 .
По возможности рекомендуется строить график функции, которую нужно оптимизировать. График позволит точнее подобрать начальные приближения.
1. Постройте график функции J0 .

Функция J0 имеет много точек максимума и минимума. Задание начального приближения помогает в обнаружении ближайшей точки.
2. Вставьте блок решения, определите начальное приближение для максимума x1=5 , а затем используйте функцию maximize , чтобы найти максимум в окрестности x1 .

В отличие от функции find нужно ввести функцию J0 без списка ее аргументов.
3. Определите горизонтальные и вертикальные координаты первого максимума, вычислив x max1 и J0(x max1 ) вне блока решения.


4. Скопируйте определения x1 и max1 вне блока решения.
5. Измените начальное приближение и найдите соответствующий максимум.

6. Определите горизонтальные и вертикальные координаты второго максимума, вычислив x max2 и J0(x max2 ) вне блока решения.
Работа с функцией «Odesolve»
Здравствуйте, вчера для понятия как работает функция «Odesolve» свел решаемую задачу к элементарной, начав увеличивать число неизвестных столкнулся со следующей проблемой. Помогите разобраться. Спасибо!
Вложения
| Given пример простой двух переменных.rar (27.1 Кб, 31 просмотров) |
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Решение системы ДУ функцией odesolve
Пыталась решить систему диффуров из 5 уравнений, но мне выскакивает ошибка "эта переменная не.
Решение дифференциального уравнения функцией Odesolve
Программа пишет "Слишком много начальных условий". Что делать,многие темы по вопросу уже.
Решение системы дифференциальных уравнений функцией -Odesolve
Выполнял задание с методички (решение системы диф. уравнений) и столкнулся, что odesolve выдаёт.
Решение диффура второго порядка функцией odesolve. Бахрома на графике
Приветствую! Столкнулся с проблемой построения графика решения ОДУ второго порядка. Меня.

Odesolve- значение должно быть функцией, но имеет форму: any1-MathCad
Всем доброго времени суток! При решении системы дифференциальных уравнений вылазит ошибка "это.
![]()
2615 / 2229 / 684
Регистрация: 29.09.2012
Сообщений: 4,578
Записей в блоге: 13
Сообщение от Dmitry_53 
как работает функция «Odesolve»
1. При обращении к функции Odesolve в качестве искомых функций вы указали i, i1, которые никак не связаны с блоком решения. Их там просто нет. Вместо них укажите v, v1 (см. ниже).
2. В правых частях блока решения у вас фигурируют производные известных функций. Это, я считаю, дурной тон.
В ходе решения маткад многократно обращается к блоку решения и каждый раз ему приходится пересчитывать эти производные. Это, конечно, не ошибка, но не надо затавлять машину лишний раз потеть. Максимально упрощайте задачу маткаду. Здесь это можно сделать так: заранее найти эти производные, определяя новые функции и вставить их в блок решения. См. второй рис.
Регистрация: 29.09.2015
Сообщений: 7
Спасибо за исправление и ценные советы! С Вашего позваления я вам еще раз надоем) в конечном результате моя задача имеет вид, представленный в архиве. Затруднение заключается в том, что с правой стороны равенства присутствует функция, от которой берется производная, возможно ли в этом случае решение?
Вложения
| Given пример простой трех переменных.rar (26.1 Кб, 158 просмотров) |
Как найти максимальное значение матрицы в mathcad
Просто пара-тройка «весёлых картинок» с занятий по MathCAD, чтоб не выкидывать, версия — Prime II или III, или 15-я, какая попалась:

4 способа извлечь строку из матрицы

2 способа найти скалярное произведение векторов

2 способа узнать длину вектора
Перестановка местами максимального и минимального элемента матрицы. На самом деле, условие не совсем корректно. Если максимальный и минимальный элементы единственны или нужны только первые их вхождения (или последние, если поменять знаки «» на «≤», «≥»), то достаточно следующего «школьного» и однопроходного кода:

Перестановка местами максимального и минимального элемента матрицы (только одна)
Если же нужно все вхождения минимального элемента заменить на максимальный и наоборот, придётся делать 2 прохода по матрице, примерно так:

Перестановка местами максимального и минимального элемента матрицы (все вхождения)
Конечно, значения максимума и минимума можно было найти стандартными функциями max , min , но они всё равно бы делали такой же проход.
Тем не менее, обмен местами минимальных и максимальных значений легко было бы сделать и без программирования (приведён пример для вектора):

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

Mathcad, номера строк, суммы элементов которых максимальны
Решаем символьно квадратное уравнение и сразу же упрощаем вид полученных mathcad формул:

Решаем символьно квадратное уравнение
ДЕЙСТВИЯ НАД МАТРИЦАМИ В МАТКАД.
Понятие о встроенных функциях Маткад. Большинство задач в Маткад решаются с помощью так называемых встроенных функций, т.е. с помощью заранее составленных программ решения той или иной задачи. Каждая такая программа имеет свое имя, по которому она вызывается. Имя можно набирать с клавиатуры, но можно и вызывать с помощью кнопки f(x). Нажав эту кнопку, мы вызовем панель Insert Function (вставить функцию), в которой имеется два поля: Function Category (тип функции) и Function Name (имя функции). Выбрав тип и имя, и нажав кнопку ОК, мы вызовем данную функцию (Рис.1).

Рисунок 1 — Панель вызова функции
Пусть, например, нужно найти синус числа 45. Вызвав панель вставки функции, выберем категорию Trigonometric и название sin, нажмем ОК. На экране появится шаблон со словом sin внутри и скобками. Вставив в скобки число 45, нажмем «=». Получим sin(45)=0.851. Можно было бы набрать левую часть на клавиатуре и, после нажатия знака =, получить тот же ответ. Аналогично используются и другие встроенные функции Маткад. В Маткад массивы могут записываться в виде векторов (одномерные массивы), в виде матриц (двумерные массивы) и в виде таблиц. Мы рассмотрим пока только запись матриц и векторов. Для действий над ними имеется панель Matrix (матрица), показанная на рисунке 2.

Рисунок 2 – Панель матриц

Для ввода матриц и векторов нажмем кнопку панели матриц и вызовем этим окно ввода Insetrt Matrix (ввести матрицу), показанное на рисунке 3.
![]() |
Рисунок 3 – Окно ввода матриц и векторов

Рисунок 4 – Шаблон вектора
При вводе вектора в графе columns (столбцы) следует проставить 1, а в графе rows(строки) проставить размер вектора. Появится шаблон, показанный на рисунке 4. Ниже представлено три пятиэлементных массива-вектора: Два из них – численные, третий – буквенный, четвертый состоит из выражений. При задании буквенных массивов и массивов – выражений необходимо предварительно присваивать им численные значения (за каждой буквой в компьютере должно стоять число). После задания выражений вектора можно, записав его имя и поставив знак =, получить его значение. Рисунок лишний раз иллюстрирует, что Маткад различает строчные и заглавные буквы.
Над векторами определены показанные на рисунке 5 операции сложения и вычитания, транспонирования, умножения по математическим правилам умножения матриц. Знак транспонирования следует вводить с панели Matrix (матрица). Порядковый номер элемента, который является его адресом, называется индексом. Нижняя граница индексации задается значением системной переменной ORIGIN, которая может принимать значение 0 или 1.

Рисунок 5 – Запись векторов в Маткад
Имя массива увязано с именами индексированных переменных, значениями которых являются элементы массива. Для этого достаточно в виде подстрочного индекса указать индекс элемента. Например, если третий из представленных массивов имеет имя V, то его элементами при ORIGIN=0 будут индексированные переменные: v0=0 V1=b ,w3= d, W4= x.
Задача 1. Ввести все векторы рис.5 и произвести над ними все действия, проведенные на рисунке. Матрицы в Маткаде вводятся так же, как и векторы, но число столбцов в них больше единицы. Элементами матрицы могут быть также числа, буквы, выражения. Как и в случае векторов, буквенные элементы и элементы – выражения должны быть предварительно определены численно. На рис.6 показаны различные способы ввода матриц.

Рисунок 6 — Ввод матриц
Задача 2. Ввести все матрицы, приведенные на рис.6. Элементы матриц являются индексированными переменными, имена которых совпадают с именами матриц. Для каждой индексированной переменной указываются два индекса: один — для номера строки, другой — для номера столбца. Например, для матрицы W средний элемент обозначается как W1,1 а последний как W2,2. (Индексы набираются через запятую). На рис.7 показано изменение индексации при различных значениях переменной ORIGIN.(Набирается обязательно заглавными буквами).

Рисунок 7 – Роль переменной ORIGIN
В Маткад определены следующие действия над векторами и матрицами:
А) сложение – вычитание,
В) скалярное и векторное умножение,
Ж) выделение столбцов.
Они выполняются с использованием следующих кнопок панели Matrix:

Рисунок 8 – Кнопки действия над матрицами
Задача.3: Произвести над матрицами все действия, показанные на рис.8.

Рисунок 9 — Действия над матрицами
Задача.4: ввести две произвольные матрицы. Перемножить. Например:


Рисунок 10 — Пример выполнения задачи 4
Задача 5. Введите произвольную квадратную матрицу, найдите обратную ей и вычислите определитель, используя показанные выше кнопки встроенных операторов.

Рисунок 11 — Пример выполнения задачи 5.
Задача 6. Найти скалярное и векторное произведения двух заданных трехэлементных векторов: Проверить на бумаге правильность вычислений.

Рисунок 12 — Пример выполнения задачи 6.
Задача 7. Используя кнопку выделения столбцов, выделите столбцы произвольной матрицы, например:

Рисунок 13 – Пример выполнения задачи 7
В Маткаде имеется большое количество встроенных функций для действий над матрицами и векторами. Рассмотрим некоторые из них. Вычисление максимального и минимального элементов матрицы или вектора производится с помощью встроенных функций Max(A)и Min(A).
Задача 8. Вычислить максимальный и минимальный элемент произвольной матрицы, например:

Рисунок 14 — Вычисление максимально и минимального элемента матрицы.
Определение количества столбцов и строк в матрице удобно для проверки действий над многомерными матрицами и векторами. Оно производится с помощью встроенных функций Cols(A) — число столбцов матрицы А и Rows(A)— число строк матрицы А.
Задача 9. Определить число строк и столбцов в произвольной матрице, например

Рисунок 15 — Определения количества строк и столбцов матрицы
Единичная матрица размером N формируется встроенной функцией Idenfity(N), а след матрицы – встроенной функцией .tr(A):
Как работает функция maximize в mathcad
Решение оптимизационных задач в пакете M ath CAD
- ввести оптимизируемую функцию,
- определить начальные значения аргументов,
- в блоке Given ввести уравнения (неравенства) ограничений,
- ввести функцию Maximize () (Minimaze() ),
- определить решение.



Оптимизируемая функция – поиск максимума,
,
,
, 




,
,
, 


Максимальное значение функции:







- Построить графики функций. Решить уравнения с применением функции root()
а) 

а)

б)

