Элементы программирования в MathCAD
На одном листе MathCAD могут определяться один или несколько программных блоков. Обычно их используют при разработке функций, которые осуществляют какую-либо сложную обработку данных, например находят корень нестандартного уравнения.
Переменные. В программном блоке можно читать значения переменных, определенных в MathCAD до этого блока. Однако изменить значения этих переменных внутри программного блока невозможно. Все переменные, которым присваиваются значения внутри программного блока, будут локальными переменными, которые недоступны вне блока. Специально объявлять переменные не нужно, достаточно просто присвоить им значения. Если программный блок является телом функции, то он также может читать значения аргументов этой функции.
Программный блок представляет собой группу операторов присваивания и управляющих операторов. Необходимо обратить особое внимание, что все ключевые слова (например, if) в этих операторах обязательно вводятся с помощью панели Programming (Программирование). Их ввод с клавиатуры - ошибка!
В целом правила работы с операторами те же, что и в языке Pascal, отличия касаются способа записи операторов.
Таблица 2. Соответствие программных операторов MathCAD и Pascal
Оператор языка Pascal
|
Оператор MathCAD
|
Комментарий
|
A := B
|
|
Присваивание
|
Begin
оператор1;
оператор2;
…
End
|
|
Группа, объединяющая несколько операторов в один составной оператор. Для создания группы и добавления в нее новой пустой строчки используется кнопка «Add Line» панели Programming
|
If условие Then оператор
If условие Then
Begin
оператор1;
оператор2;
…
End
|
оператор if условие
|
Простой оператор ветвления. Как и в языке Pascal, его действие распространяется на один указанный оператор, который может быть группой операторов. Условием может быть любое логическое выражение, которое может содержать знаки отношения (вместо обычного знака равенства используется знак логического равенства) и логические операторы (находятся на панели Boolean):
- Not;
- And;
- Or;
- Xor
|
If условие Then
оператор1
Else
оператор2
|
|
Полный оператор ветвления
|
For инд := нач To кон Do
оператор
|
|
Фиксированный оператор цикла. Индексная переменная принимает значения от начального до конечного с шагом, равным единице. Цикл действует на один указанный оператор, который может быть группой операторов
|
While условие Do
оператор
|
|
Гибкий оператор цикла с предусловием. Цикл выполняется, пока истинно заданое условие
|
Break
Continue
|
break
continue
|
Оператор break принудительно завершает текущий цикл. Оператор continue завершает только текущий виток цикла и начинает следующий виток
|
Нет прямого аналога
|
выражение1 on error выражение2
|
Специальная операция обработки ошибок. Сначала вычисляется выражение2. Если при этом происходит ошибка, то результатом операции будет выражение1. Если ошибки нет, то результат - выражение2.
Пример:
Здесь локальная переменная A получает значение 2, переменная B - значение 0,5
|
Использование программных блоков в функциях
Если функция является программным блоком, то значение, которое возвращает функция, - это обычно значение, которое вычислено последним сработавшим оператором блока. Иногда возникает необходимость досрочно завершить работу блока и вернуть какое-либо иное значение - для этого используется оператор вида
return значение,
который также вводится с помощью панели Programming. Его выполнение заканчивает работу текущего программного блока.
Примеры:
1. Функция, возвращающая –1, 0 или 1 в зависимости от знака аргумента.
2. Пусть интегрируется дифференциальное уравнение
;
; ,
где параметр z определяется в результате решения нелинейного уравнения
.
Известно, что в рассматриваемом случае это нелинейное уравнение имеет единственное решение. Создадим функцию, которая решает данное уравнение методом касательных с заданной точностью ?.
Функция Solve возвращает значение z, которое является корнем уравнения при заданном значении x. Решение дифференциального уравнения:
Решение задач линейного программирования в MathCad.
Задача 1. Задача линейного программирования. Найти максимальное значение функции
при заданных ограничениях
Решение.
1) Специальной переменной ORIGIN присваивают значение 1. Значением ORIGIN является номер первого элемента строки или столбца в матрице. По умолчанию ORIGIN=0.
В меню Math выбрать строку Options или
2) Вводят исходные данные задачи в матричной форме.
3) Вводят линейную целевую функцию.
4) Задают начальные значения переменным задачи.
5) Вводят ограничения задачи в матричной форме.
6) Определяют оптимальное решение задачи с помощью встроенной функции Maximize (в случае поиска максимума функции) или Minimize (в случае поиска минимума функции).
Задача 2. Транспортная задача. Имеются n пунктов производства и т пунктов распределения продукции. Стоимость перевозки единицы продукции с і-го пункта производства в j-й центр распределения cij приведена в таблице, где под строкой понимается пункт производства, а под столбцом - пункт распределения. Кроме того, в этой таблице в i-й строке указан объем производства в і-м пункте производства, а в j-м столбце указан спрос в j-м центре распределения. Необходимо составить план перевозок по доставке требуемой продукции в пункты распределения, минимизирующий суммарные транспортные расходы.
Стоимость перевозки единицы продукции
|
Объем производства
|
1
|
3
|
4
|
5
|
20
|
5
|
2
|
10
|
3
|
30
|
3
|
2
|
1
|
4
|
50
|
6
|
4
|
2
|
6
|
20
|
42
|
40
|
80
|
38
|
|
Объем потребления
Решение задачи средствами MathCAD:
-
Введите исходные данные в матричной форме.
-
Введите линейную целевую функцию.
-
Задайте начальные значения переменных:
-
Введите ограничения задачи в матричной форме.
-
Определите оптимальное решение задачи с помощью встроенной функции Minimize:
Задача 2. Задача о назначениях. Имеются n рабочих и т видов работ. Стоимость cij выполнения і-и работником j-й работы приведена в таблице, где рабочему соответствует строка, а работе – столбец. Необходимо составить план работ так, чтобы все работы были выполнены, каждый рабочий был занят только на одной работе, а суммарная стоимость выполнения всех работ была минимальной.
|
Стоимость выполненных работ
|
|
14
|
21
|
14
|
22
|
Рабочие
|
12
|
12
|
23
|
31
|
|
13
|
17
|
45
|
33
|
|
14
|
15
|
75
|
34
|
|
Виды работ
|
|
|
|
Достарыңызбен бөлісу: |