
4.4. Вычисления
Переменные
Переменная — это именованная область памяти, в которой хранится некоторое значение. Переменная имеет имя и числовое значение. Имя переменной определяет область памяти (адрес), где хранится ее числовое значение. Имя состоит из букв и цифр без пробелов (первый символ - буква). Заглавные и строчные буквы в именах воспринимаются как разные символы. Имена должны быть уникальными, то есть не должны повторяться в одном документе.
Употребление русских букв в именах крайне неудобно и возможно только в современных версиях Mathcad. Поэтому в именах рекомендуем использовать только латинские и греческие буквы и цифры. Греческие буквы вводятся с палитры, вызываемой командой меню View / Tolbars / Greek. Есть и более простой способ ввода греческих букв. Надо на клавиатуре набрать латинский аналог греческой буквы (как правило, это первая буква в латинском названии греческой буквы). Введя аналог греческой буквы, нажмите сочетание клавиш [Ctrl][G] — на экране появится греческая буква в том же регистре, в котором набрана латинская буква. Ниже перечислены греческие буквы и их латинские аналоги.
Перед использованием переменной необходимо ее определить, т. е. указать, какое числовое значение соответствует данному имени. Это определение осуществляется операцией присваивания. Оператор присваивания задает значение переменной. Присваивание в системе MathCAD осуществляется с помощью знака :=. Знак присваивания появляется при нажатии клавиши [:]. Например, напечатав А:5, на экране получим А := 5. Это означает, что переменной с именем А присвоено числовое значение равное 5.
Правее знака присваивания может находиться любое математическое выражение. MathCAD вычислит числовое значение выражения и присвоит его переменной. Если выражение содержит имена переменных, которым ранее (выше и левее в документе) не присвоено числовое значение, то эти имена будут выделены красным цветом.
Иногда для наглядности лучше разместить оператор присваивания значений исходным данным в произвольном месте, например, ближе к концу документа, рядом с результатами вычислений. Тогда следует использовать оператор глобального присваивания, который вводится клавишами [Shift][~]. Например, набрав а[Shift][~]5, на экране получим .
Переменной можно
присвоить не только единственное
значение, но также последовательность
числовых значений с постоянным шагом
изменения. Такая переменная называется
дискретная
переменная или дискретный аргумент.
Ее имя должно быть простым (без индексов).
Приведем примеры:
Напечатав А:0;5 на экране получим А := 0 .. 5 Это означает, что переменной с именем А присвоено пять возрастающих значений с шагом 1: 0, 1, 2, 3, 4, 5.
Напечатав А:-2,-1.9;3 на экране получим А := -2, -1.9 .. 3. Это означает, что переменной с именем А присвоен следующий ряд возрастающих значений с шагом 0.1: -2, -1.9, -1.8, -1.7... 2.8, 2.9, 3 (всего 51 значение). Здесь первое число - начальная граница диапазона, второе число - следующее число после его изменения на один шаг, третье число вторая граница диапазона изменения. Если третье число в определении диапазона не равно целому числу приращений начального значения, дискретный аргумент все равно не выйдет за предел, указанный в третьем числе. Например, запись А := 10, 7 .. 0 означает, что переменной А присвоен следующий ряд убывающих значений 10, 7, 4, 1. Значение 0 отсутствует, хотя оно записано как граница диапазона.
Числовое значение (или совокупность значений) любой переменной или выражения можно вывести на экран (распечатать), введя символ = клавишей [=].
Введенная впервые в данном документе с клавиатуры латинская буква e внутри математического блока означает основание натурального логарифма e = 2.71. Часто используемое в выражениях число p можно ввести с математической панели Calculator или с панели греческих букв, если этот ввод осуществлен впервые в данном документе.
В MathCAD имеется множество имен функций и ключевых слов. Пользователь может использовать их, а также константы e и p как имена обычных переменных, то есть присвоить им с помощью знака присваивания какое-то другое значение. Однако после этого присваивания в данном документе будет невозможно использовать эти имена и ключевые слова по первоначальному назначению.
Функции
Функция состоит из имени и одного или нескольких аргументов. Имя функции должно строится по тем же правилам что и имя переменной. Аргументы записываются в круглых скобках и разделяются запятыми. Функция, в ответ на обращение к ней по имени с указанием значений аргументов (при ее использовании), возвращает (подставляет вместо себя) свое единственное значение. При использовании функция может записываться справа знака присваивания как одна, так и в составе выражения. В составе MathCAD имеется много ВСТРОЕННЫХ функций, т.е. функций заблаговременно введенных разработчиками.
Mathcad имеет очень большой набор (более 200) встроенных математических функций, позволяющих вычислять ряды, значения определенных интегралов и производных, работать с комплексными числами, а также решать линейные и нелинейные уравнения, выполнять минимизацию функций, выполнять векторные и матричные операции, осуществлять линейную и сплайн-интерполяцию, регрессию, прямое и обратное преобразования Фурье, статистические расчеты.
Встроенную функцию можно использовать, т.е. вставить на пустое место документа (в точку визира) или вставить в состав выражения (внутрь курсора ввода) тремя способами: непосредственно напечатав ее имя и аргументы на клавиатуре, щелкнув на имени элементарной функции на арифметической палитре, или вызвав специальное диалоговое окно. Если встроенная функция вводится с клавиатуры, то ее имя следует начинать со строчной буквы. На арифметической палитре располагаются следующие кнопки для ввода встроенных элементарных функций:
Для того чтобы вставить встроенную функцию, используя диалоговое окно, следует (см. рис.1):
Рис. 1
Командой Insert / Funktion вызвать одноименное диалоговое окно. Пользуясь полосами прокрутки на левом окне указать мышью нужную категорию, а затем, пользуясь полосами прокрутки на правом окне, указать щелчком мыши встроенную функцию. На нижней панели появится ее краткое описание.
Нажать кнопку Insert (Вставить). Или дважды щелкнуть мышкой на имени выбранной функции. Функция появится внутри курсора ввода.
Если часть программы должна выполнятся несколько раз, ее целесообразно записать (определить) в виде функции пользователя и затем, когда это нужно, использовать (вызывать) точно также как и встроенную функцию, каждый раз меняя ее аргументы.
Определение функции пользователя аналогично определению переменной: Имя функции с формальными именами аргументов в скобках должно стоять слева, знак присваивания := должен стоять посередине, а выражение, которое показывает какие действия нужно совершить над аргументами в скобках, должно стоять справа. Не имеет значения, были ли ранее определены или использованы в документе формальные имена из списка аргументов. Если в выражении (справа от знака присваивания) имеются имена переменных, отсутствующие в списке формальных аргументов в скобках (слева от знака присваивания), то этим переменным в документе предварительно должны быть присвоены числовые значения.
При использовании функции пользователя в рабочем документе печатается то же имя функции, что и в ее определении, в скобках перечисляются имена фактических аргументов в скобках. Фактическим аргументам предварительно (выше и левее) должны быть присвоены числовые значения. Имена фактических аргументов могут отличаться от имен формальных аргументов. Соответствие между именами формальных и фактических аргументов определяется местом (порядком) их расположения в списке аргументов в круглых скобках после имени функции.
П
риведем
пример определения и использования
функции пользователя.
При использовании функции пользователя вместо имен фактических аргументов можно записывать их числовые значения.
При определении функции MathCAD не приступает к вычислению ее значения. Поэтому если пользователем была сделана ошибка в определении функции, то сообщение об этой ошибке появится только при ее использовании.
Продолжим
рассмотрение предыдущего примера. Пусть
возникла необходимость исследовать
зависимость результата вычислений V
от параметра А, Требуется, многократно
меняя параметр A,
добиться подходящих значений переменной
V.
Такая процедура часто используется в
многовариантных расчетах при
проектировании. Если документ большой,
то параметр A
и переменная V
на одном экране не умещаются. Подбор
параметра А
будет сильно затруднен. В таких случаях
следует оператор присваивания параметра
A,
расположенный перед определением
функции пользователя удалить, а на
свободном месте рядом с выводом переменной
V
клавишами [Shift][~]
ввести оператор глобального присваивании
значения параметру А.. Например,
.
Глобальное присваивание действует по
всему документу.
Массивы
Одиночное число в MathCAD называется скаляром. Столбец чисел называется вектором, прямоугольная таблица — матрицей. Вектор ¾ это матрица, состоящая из одного столбца. Общее название вектора и матрицы — массив. Массив — это последовательность фиксированного числа переменных, имеющих общее имя.
Числа в массиве имеют номера (индексы). Вектор имеет индексы возрастающие сверху вниз. Матрица имеет индексы строк, возрастающие сверху вниз и индексы столбцов, возрастающие слева направо. Номера индексов начинаются по умолчанию с нуля или с любого целого числа, вводимого в документе путем присваивания значения переменной ORIGIN или ввода числового значения в поле Array Origin в окне Math Options, вызываемого командой Math / Options...
Создание массива
Имеются четыре способа создания массива:
Заполнение шаблона массива пустых полей. С помощью шаблона можно ввести матрицу, содержащую не более 100 элементов.
Использование встроенных функций создания массива.
Используя циклические вычисления. Эта методика подходит, когда имеется явная формула для вычисления значений элементов массива в зависимости от значений его индексов.
Путем применения функции чтения файла, содержащего массив.
Рассмотрим первый способ. Для создания массива путем заполнения пустых полей шаблона следует:
Щелкнуть в нужном пустом месте экрана и внести имя массива и знак определения (присваивания);
Нажать клавиши ввести команду Insert / Matrix или нажать клавиши [Ctrl][M]. Появится диалоговое окно, показанное на рис. 2.
Указать число строк (Rows) и столбцов (Columns) и нажать кнопку OK. Появится трафарет, содержащий пустые поля.
Заполнить с клавиатуры пустые поля в трафарете числами или определенными ранее именами переменных.
Р
ассмотрим
второй способ создания массива.
Для создания массива следует ввести с клавиатуры его имя, знак присваивания, а затем имя встроенной функции создания массива с указанием аргументов в круглых скобках: Например:
A := identity(5)
Рис.2
В результате будет создана квадратная матрица с именем А, с диагональными элементами равными единицам и с остальными элементами, равными нулям.
Приведем назначение и синтаксис наиболее употребительных функций создания векторов со случайными значениями элементов.
rnorm(m, m, s) — создает вектор m случайных чисел, с нормальным распределением (m — среднее значение, s — стандартное отклонение).
runif(m, a, b) — создает вектор m случайных чисел, имеющих равномерное распределение (b и a — границы интервала, a < b)
MathCAD содержит также встроенные функции создания вектора, значения элементов которого соответствуют другим законам распределения (Стьюдента, Вейбулла, Фишера, биномиальное, логистическое, логарифмическое нормальное, геометрическое, гипергеометрическое, экспоненциальное и др.).
Действия с массивами (векторные и матричные операции)
MathCAD позволяет вычислять выражения, в которых операндами являются имена массивов без индексов. В таблице 2 приведены векторные и матричные операции. В этой таблице буквами A и В обозначены матрицы, буквами u и v — векторы, буквой z — скаляры. Действия с матрицами можно осуществлять как с помощью клавиш, указанных в табл. 1, так и с помощью панели Matrix, вызываемой командой меню View / Toolbars / Matrix.
Таблица 1
Операция |
Обозна-чение |
Кла- виши |
Описание |
Умножение массива на скаляр |
Az |
* |
Умножает каждый элемент массива А на скаляр z. |
Скалярное произведение векторов |
u v |
* |
Возвращает скаляр: åui vi Векторы u и v должны иметь одинаковое количество элементов. |
Умножение матриц |
А В |
* |
Возвращает матрицу - произведение матриц А и В. Число столбцов матрицы А должно быть равно числу строк матрицы В. |
Умножение матрицы на вектор |
A v |
* |
Возвращает вектор - произведение матрицы A на вектор v. Число столбцов матрицы А должно быть равно числу строк вектора v. |
Деление массива на скаляр |
A / z |
/ |
Делит каждый элемент массива А на скаляр z. |
Сложение и вычитание массивов |
A + B A - B |
+ - |
Складывает (вычитает) соответствующие элементы массивов A и B. Массивы А и В должны иметь одинаковое число строк и столбцов. |
Скалярная сумма |
А + z |
+ |
Добавляет z к каждому элементу А. |
Изменение знака |
- А |
- |
Умножает все элементы массива А на -1. |
Длина вектора |
| v | |
| |
Возвращает скаляр - корень квадратный из суммы квадратов элементов вектора v. |
Детерминант |
| A | |
| |
Возвращает скаляр - детерминант (определитель) квадратной матрицы А. |
Степени матрицы |
An |
^ |
n -я степень квадратной матрицы А (n - кратное умножение матрицы саму на себя). A-1 - возвращает матрицу, обратную матрице А. |
Транспонирование |
АT |
[Ctrl][1] |
Возвращает матрицу, в которой строки заменены столбцами. |
Векторное произведение |
u x v |
[Ctrl][8] |
Возвращает векторное произведение для векторов u и v с тремя элементами. |
Суммирование элементов |
åv |
[Ctrl][4] |
Суммирует элементы вектора v |
Векторизация |
® А |
[Ctrl][-] |
В выражении с массивом А операции проводятся поэлементно. |
Рассмотрим смысл операции векторизации. Например, если v - вектор, то sin(v) недопустимое выражение, но если используется оператор векторизации, то вычисляет синус каждого элемента v:
Можно обращаться к отдельным элементам массива, используя нижние индексы. Чтобы напечатать нижний индекс, нажмите клавишу левой квадратной скобки [ и введите с клавиатуры в появившемся поле ввода номер элемента для вектора или номер строки, а затем номер столбца для элемента матрицы, разделяя их запятой.
М
ожно
обращаться к отдельному столбцу массива,
используются верхние индексы. Чтобы
напечатать верхний индекс после ввода
имени матрицы нажмите клавиши [Ctrl][6]
и введите номер столбца этой матрицы.
Ввод нижних и верхних индексов можно
осуществлять также с помощью панели
Matrix.
Продолжая предыдущий пример, можно
вывести на экран следующие элементы
массивов:
Из последнего примера видно, что нумерация строк и столбцов начинается с нуля. Чтобы нумерация строк и столбцов начиналась с единицы следует вначале документа ввести ORIGIN := 1 или командой меню Math / Options в одноименном окне установить опцию Array Orign (ORIGIN) равной единице.
Функции доступа к файлам, содержащим массивы
Функция APPENDPRN(“file”) — добавляет числовые данные в существующий файл. Здесь “file” — имя файла, если он в текущем каталоге, или полное имя файла, если он находится в другом каталоге;
Функция READPRN(“file”) — считывает в массив документа MatCAD числовые данные из файла с указанным именем текущего каталога.
Функция WRITEPRN(“file”) — создает в текущем каталоге файл и записывает в него числовые данные из массива документа MathCAD.
Файлы file при записи файлы автоматически получают расширение .prn. Однако они имеют текстовый формат и могут быть прочитаны и отредактированы в редакторе «Блокнот», если в окне Открытие файла в выпадающем списке Тип файлов установить опцию Все файлы *.*.
Документ, показанный на рис. 3, следует сначала сохранить, в каком-либо каталоге. При открытии файла с документом этот каталог станет текущим и в нем будет создан файл primer.prn. Файл документа и файл primer.prn окажутся в одном каталоге. В файл primer.prn будет записана матрицы AT и добавлена матрица BT. Далее произойдет считывание данных в матрицу К из файла primer.prn, находящегося в текущем каталоге.
Изменения, внесенные в матрицы А и В, будут отображены в матрице К только после выхода из Mathcad с сохранением документа и последующего его открытия.
Рис. 3