Главная страница

ОСНОВЫ работы в MathCad. Основы работы в математическом пакете Mathcad


Скачать 8.94 Mb.
НазваниеОсновы работы в математическом пакете Mathcad
АнкорОСНОВЫ работы в MathCad.doc
Дата27.12.2017
Размер8.94 Mb.
Формат файлаdoc
Имя файлаОСНОВЫ работы в MathCad.doc
ТипДокументы
#13225
страница11 из 12
1   ...   4   5   6   7   8   9   10   11   12

8.2. Программирование функций


Для написания программ-функций в системе MathCAD предусмотрена специальная панель программироваия – Programming
(Программирование), содержащая все операторы и элементы языка. Общий вид панели Programming представлен на рис. 8.2. Операторы в программу вставляются только с помощью кнопок этой панели.

Назначение основных команд, представленных на панели:



Add Line – добавление новой строки в программу или создание заготовки программы из двух строк, если программы еще не существует;

← – присвоение значения локальной переменной;

if условный оператор. Позволяет в зависимости от условия выполнять или не выполнять те или иные действия;

otherwise – используется сразу после оператора if и позволяет выполнить определенные действия при невыполнении условия в операторе if ;

forоператор создания цикла со счетчиком;

while – оператор создания цикла, выполнение которого продолжается до тех пор, пока выполняется указанное условие.

continue – продолжить вычисления в цикле;

break – прервать вычисления в цикле;

return – оператор возврата;

on error – оператор перехода при возникновении ошибки.



Рис.7.2. Вид панели инструментов Programming (Программирование)
Чтобы написать программу, прежде всего для нее должен быть создан специальный, обособленный от остального документа, программный блок-тело функции. Выглядит он как черная вертикальная линия с маркерами, в которые заносятся те или иные выражения и операторы алгоритма. Чтобы построить единичный элемент программного блока, нажмите кнопку команды Add Line (Добавить линию) панели Programming (Программирование).

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

  1. Если значение переменной или функции присваивается в программе посредством оператора «» , то такая переменная или функция будет являться локальной. То есть она будет видимой только в рамках программы. Как-то повлиять на объекты вне программы она не сможет (равно, как извне к ней нельзя будет получить доступ).

  2. Если переменная или функция задается выше программы с помощью оператора «:=», то она в программе будет обладатьглобальной видимостью. То есть такая переменная или функция будет доступна любому нижележащему объекту, в том числе и коду программ. Однако программа может только прочитать значение глобальной переменной или вызвать глобальную функцию. Изменить каким-либо образом значение глобальной переменной или функции программа не может. Это очень важно учитывать при написании алгоритмов.

  3. Если программа должна осуществлять какую-то модификацию объекта, то результатсвоей работы она должна возвращать.

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

8.3. Описание программы-функции


Перед тем как использовать программу-функцию нужно ее описать. Описание программы-функции размещается в рабочем документе перед вызовом программы-функции и включает в себя заголовок функции и тело функции, соединенные в единое целое с помощью операции присваивания («:=»).

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

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

Технология создания программы-функции в рабочем документе MathCAD состоит из следующих шагов:

  1. Ввести заголовок функции.

  2. Ввести знак присваивания «:=».

  3. Выполнить команду Add line, расположенную на панели Programming (Программирование). Появившейся на экране шаблон с вертикальной чертой и полями для ввода операторов будут составлять заготовку для тела программы-функции.

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

  5. Самое нижнее поле всегда предназначено для определения возвращаемого программой значения.

Пример 1. Требуется подготовить описание функции и вычислить значения этой функции при x= 4.15 и g= 1.854.

Решение. Заметим, что при вычислении y можно обойтись без описания и использования пользовательской функции и тем более без программирования, как это показано на рис. 8.4, a. Использование функции следует из требования к задаче для простоты изложения. Для нахождения значения функции «внутрь» программы-функции следует передать значения x и g, необходимые для выполнения вычислений внутри программы. Поэтому переменные x и g следует включить в список формальных параметров заголовка создаваемой функции. Назовем эту функцию – y. Тогда подготовка описания функции, и ее выполнение в соответствии с описанной технологией могут быть выполнены, как это представлено на рис. 8.3.


(1-2)



(3)



(4-5)





(6)


Рис.7.3. Пошаговое создание и выполнение программы-функции

В данном примере введена вспомогательная локальная переменная t для вычисления значения функции. И эта переменная расположена в последней строчке программного блока. В пункте (6) приведена операция вычисления функции для фактических значений. На рис. 8.4, b, c приведены другие варианты решения поставленной задачи.


a)

b)

c)










Рис. 8.4. Демонстрация элементов программирования простых выражений
В примере, представленном на рис. 8.4, в первой колонке a для вычисления значения используется базовый набор средств без элементов программирования. Во второй b и третьей c колонках производятся точно такие же вычисления, но с использованием элементов программирования. Обе программы (b и c) можно считать эквивалентными, так как возвращают они одно и то же значение, которое располагается в последней строчке программируемой части. В (b и c) мы имеем дело с программой – скаляром, так как они используются для вычисления одного значения и не имеют формальных параметров.

Внутри программ (bи c) используются глобальные переменные g и x из документа. Значения этих переменных определены заранее. Обе программы из примера, представленного на рис. 8.4, в своей программируемой части содержат операторы присваивания с использованием локальных переменных. Переменные, созданные внутри программы с таким видом присваивания, являются внутренними, и доступ к ним может осуществляться только в самой программе.

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

  2. Присвоить глобальным переменным значения внутри программы можно только локальным образом. После выхода из программы эти переменные сохраняют свои «глобальные» значения.

  3. Использование «обычного» оператора присваивания «:=» в теле программы-функции приводит к синтаксической ошибке.

  4. Последняя строка программы не должна содержать управляющих операторов. Эта строка задает значение, возвращаемое программой, т.е. получает результат вычислений и может содержать имя локальной переменной результата (рис. 8.4, c) или выражение, вычисляющее результат (рис. 8.4, b).

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

  6. Добавление недостающих полей для ввода дополнительных операторов производится с помощью кнопки Add line панели программирования. При этом поле ввода добавляется внизу выделенного к этому моменту оператора.

  7. Для удаления того или иного оператора или поля ввода из тела программы-функции, нужно заключить его выделить и нажать клавишу <Delete> .

  8. Программный блок можно создать и внутри уже заданного блока (вложенный блок). Для этого следует использовать один из стандартных способов: поставить курсор в маркер соответствующего оператора программирования и выполнить Add line.

  9. Иногда при написании программы бывает нужным добавить строку к уже созданному блоку. Чтобы это сделать, поставьте курсор в ту строку блока, выше или ниже которой должна быть введена строка, и нажмите клавишу <Пробел>. При этом строка будет выделена и можно будет произвести добавление одним из стандартных способов.

  10. Положение вставляемого маркера определяется положением вертикальной черты курсора. Если она находится слева от выделенного выражения, то маркер будет добавлен выше выделенной строки, если справа – то ниже.

  11. Чтобы развернуть курсор в нужную сторону, нажмите клавишу <Insert>.

  12. Чтобы добавить строку к целому блоку, его следует выделить, дважды нажав клавишу <Пробел>.

  13. В том случае, если программа содержит блоки различных уровней, то для добавления строки, например, к первому блоку, нажмите клавишу <Пробел> несколько раз: при каждом нажатии будут выделяться блоки более низкого уровня.


Пример 2. Требуется найти действительные корни квадратного уравнения , где a, b, c– любые действительные числа и . Известно, что в зависимости от знака дискриминанта действительные корни уравнения могут быть получены по формуле:



Блок-схема этого алгоритма показана в главе 1 на рис. 1.2.

Решение. Опишем вычисление корней в виде программы-функции. Спецификацию для этой функцииможно записать следующим образом. Функция R(a,b,с) возвращает значения действительных корней квадратного уравнения или сообщает о том, что уравнение не имеет корней. Здесь a, b, с – коэффициенты уравнения.

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



  1. При включении оператора ifв блок программирования появляется шаблон с двумя полями ввода – справа и слева от оператора:

if .

  1. В поле ввода справа от оператора записывается условие. Для ввода условий следует использовать панель Boolean (Логические), где есть кнопки для проверки условий ( = > < ≥ ≤ ≠ ).

  2. В поле ввода слева нужно ввести строку программы (или несколько строк), которая будет выполняться, если введенное условие истинно.

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

  4. Чаще всего оператор if используется для задания разрывных или кусочно-непрерывных функций.

Описание функции и примеры ее вызова представлены на рис. 8.5.


Рис. 8.5. Описание функции R(a,b,x), предназначенной для вычисления
корней квадратного уравнения
Пример 3. Требуется подготовить описание программы-функции и построить ее график на интервале [–2, 4] .

Решение. Из анализа аналитического выражения функции y видно, что функция является кусочно-непрерывной на числовой оси и алгоритм вычислений содержит три ветви. Вычисление значения y зависит от местоположения переменной x на числовой оси.

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

Функция f(x) возвращает значение функции, определенной в соответствии с условием примера 3. Здесь х – аргумент для вычисления.

В описании функции требуется проверить три условия. В зависимости от результатов проверки этих условий применяется соответствующая условию вычислительная формула. Поэтому при программировании можно с проверкой каждого из условий связать условный оператор if, как это показано на рис. 8.6. А можно ограничиться проверкой двух условий и оператором otherwise, учитывая тот факт, что функция задана на всей числовой оси, и исключение двух условий оставляет выполнение третьего условия. На рис. 8.7 представлен второй вариант функции-программы.


Рис. 8.6. Демонстрация элементов программирования ветвящихся процессов



Рис. 8.7. Демонстрация элементов программирования ветвящихся процессов
На рис. 8.8 представлены примеры программ-функций, реализующих вычисления, содержащие ветвящиеся процессы.














Рис. 8.8. Примеры программирования функций с проверкой условий. Здесь x – глобальная переменная
Пример 4. Требуется найти максимальный и минимальный элементы в заданном массиве.

Решение. Задача поиска наибольшего/наименьшего значений в заданном массиве относится к типовым циклическим алгоритмам и подробно описана в главе 1, а на рис.1.9 и 1.10 приведены блок-схемы этих алгоритмов.

Спецификацию для этой функцииможно записать следующим образом:

Функция Fun(P) возвращает наибольшее и наименьшее значение в массиве Р.

Для создания циклов в MathCAD предусмотрено два оператора: for и while. Поскольку количество повторений цикла заранее известно и связано с числом элементов заданного массива, в данном решении целесообразно использовать оператор for.

  1. После вставки оператора for в строку программы его сопровождают три поля ввода, как это показано на рис. 8.9.


Рис. 8.9. Шаблон оператора цикла for


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

  2. В поле ввода после знака следует указать диапазон значений, которые будет принимать переменная-счетчик. Вместо диапазона в данном поле ввода можно указать имя некоторого массива (вектора или матрицы). В таком случае переменная-счетчик будет последовательно принимать значения всех элементов этого массива. Количество повторов цикла будет равно количеству элементов массива.

  3. В поле ввода под словом for следует ввести тело цикла

Обозначим имя переменной-счетчика, которая используется в оператореfor буквой t. Для описания алгоритма воспользуемся тем, что в операторе цикла для переменной-счетчика можно указать в качестве диапазона имя массива. Как сказано выше, в таком случае переменнаяt будет последовательно принимать значения всех элементов указанного в for массива (в нашем случае – это массив Р). Для обозначения максимального и минимального значений в программу введем две вспомогательные переменные Pmax и PMin. Тогда описание функции может быть представлено в виде, как это показано на рис. 8.10.

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

Справа от программы-функции, представленной на рис. 8.10, написаны операторы, предназначенные для создания вектора с именем U из шести элементов. Для этого введена вспомогательная переменная i, задающая диапазон изменения индекса массива, а значения элементов массива U формируются с помощью функции rnd – датчика случайных чисел. Параметр 20 в ней определяет диапазон принимаемых значений.

На рис. 8.11, a представлен второй вариант программы-функции, в котором в качестве диапазона значений для переменной-счетчика цикла for берется диапазон изменения индекса массива. Поэтому в список формальных параметров в заголовок функции вносится еще один параметр n, который указывает верхнюю границу изменения индекса.

Рис. 8.10. Описание и использование функции Fun(P)



а)


b)


Рис. 8.11. Описание и использование функции Fun(P)
1   ...   4   5   6   7   8   9   10   11   12


написать администратору сайта