Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

иНорматика el_polya

.pdf
Скачиваний:
20
Добавлен:
01.05.2015
Размер:
4.32 Mб
Скачать

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

символ бесконечности (вводится клавишами

<Ctrl>+<Shift>+<z>);

е — основание натурального логарифма (клавиша <е>);

число "пи" (вводится клавишами <Ctrl>+<Shift>+<p> или с панели инструментов греческого алфавита);

i, j — мнимая единица (вводится клавишами <1>, <i>

или <1>, <j>);

% — символ процента, <%>, эквивалентный 0.01.

Строковые выражения.

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

Массивы

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

В MathCAD условно выделяются два типа массивов:

векторы (одноиндексные массивы), матрицы (двухиндексные массивы) и тензоры (многоиндексные);

ранжированные переменные — векторы, элементы которых определенным образом зависят от их индекса. Ранжированные переменные разновидность векторов и предназначены, главным образом, для создания циклов или итерационных вычислений. Простейший пример ранжированной переменной — это массив с числами, лежащими в некотором диапазоне с некоторым шагом. Например, набор значений для i от1 до 10 можно ввести так: i:=1 … 10, а от 1 до 2 через 0.1 так: i:= 1,1.1 … 2

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

131

Над элементами массива можно совершать действия как над обычными числами. Нужно только правильно задать соответствующий индекс или сочетание индексов массива.

Чтобы получить доступ к элементу вектора нужно указать его номер в виде нижнего индекса. Номера элементов начинаются с 0.

Чтобы получить доступ к элементу матрицы нужно указать через запятую два номера в виде нижнего индекса. Сначала номер строки, а затем номер столбца. Аналогично можно получить доступ к элементам тензора.

Обычно нумерация индексов массивов начинается с нуля. Стартовый индекс массива задается системной переменной ORIGIN, которая по умолчанию равна нулю. Если Вы привыкли нумеровать элементы векторов и матриц с единицы, присвойте этой переменной значение. В этом случае попытка выяснить значение нулевого элемента вектора приводит к ошибке, поскольку его значение не определено.

Помимо доступа к отдельным элементам массива, имеется возможность совершать действия над его подмассивами (например, векторамистолбцами, образующими матрицу). Делается это с помощью оператора со значком х<> на панели Matrix (Матрица).

Программирование в MathCAD

Для вставки программного кода в документы в MathCAD имеется специальная панель инструментов Programming (Программирование). Большинство кнопок этой панели выполнено в виде текстового представления операторов программирования, поэтому их смысл легко понятен.

Чтобы создать программный модуль:

Введите часть выражения, которая будет находиться слева от знака присваивания и сам знак присваивания. Например, это имя функции f (х).

При необходимости вызовите на экран панель инструментов

Программирование.

Нажмите на этой панели кнопку Add Line (Добавить линию).

Если приблизительно известно, сколько строк кода будет содержать программа, можно создать нужное количество линий повторным нажатием кнопки Add Line (Добавить линию) соответствующее число раз Вставить строку программного кода в уже созданную программу можно в любой момент с помощью той же самой кнопки Add Line.

132

В

появившиеся

полнители

введите

мый программный код,

используя

программные

операторы.

 

 

После того как программный

 

модуль полностью определен и ни

 

один местозаполнитель не остался

 

пустым, функция может использо-

 

ваться обычным образом, как в

 

численных, так и в символьных

Рис.П.1

расчетах. Например, на рис П.1

приведена программа вычисления

 

функции f(x)

Язык программирования MathCAD не был бы эффективным, если бы не позволял создавать внутри программных модулей локальные переменные, которые "не видны" извне, из других частей документа. Присваивание в пределах программ, в отличие от документов MathCAD, производится с помощью оператора < ← > (локальное присваивание). Ни оператор присваивания :=, ни оператор вывода = в пределах программ не применяются.

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

Операторы цикла (for, while, break, continue). В языке программи-

рования MathCAD есть два оператора цикла: for и while. Первый из них

 

 

дает

воз-

 

 

можность

а

 

организо-

б

вать

цикл

 

 

по некото-

 

 

рой

пере-

 

 

менной,

Рис.П.2

заставляя

 

 

133

ее пробегать некоторый диапазон значений. Второй создает цикл с выходом из него по некоторому логическому условию. Диапазон значений переменной в условии цикла for можно задать как с помощью диапазона ранжированной переменной (рис.П.2а), так и с помощью вектора

(рис.П.2б).

Решение алгебраических уравнений

Одно уравнение

Рассмотрим одно алгебраическое уравнение с одним неизвестным х. f(x)=0, например, sin(x)=0. Для решения таких уравнений MathCAD имеет встроенную функцию root, которая, в зависимости от типа задачи, может включать либо два, либо четыре аргумента и, соответственно, работает несколько по-разному:

root(f(х),х);

root(f(х),х,а,b);

o f (х) — скалярная функция, определяющая уравнение ;

oх — скалярная переменная, относительно которой решается уравнение;

oа,b — границы интервала, внутри которого происходит поиск корня.

Первый тип функции root требует дополнительного задания начального значения переменной х. Для этого нужно просто предварительно присвоить х некоторое число. Поиск корня будет производиться вблизи этого числа. Таким образом, присвоение начального значения требует априорной информации о примерной локализации корня, которую можно получить, проведя графическое решение заданного уравнения. Кстати, это еще один из методов решения уравнения. Средствами MathCAD можно получить значение аргумента, при котором функция пересекает прямую y = 0.

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

134

Если уравнение не имеет действительных корней, но имеет мнимые, то их также можно найти. В третьем случае рассматривается такой вариант. В пятой строке решено уравнение f (x,0)=0, а в последней — уравнение f (1,y)=0. Не забывайте при численном решении уравнений относительно одной из переменных предварительно определить значения остальных переменных.

Системы уравнений

Рассмотрим решение системы N нелинейных уравнений с M неизвестными

f1(x1, ... ,хм) = 0,

. . .

fn(x1, ... ,хм) = 0,

Здесь f1(x1, ... ,хм) , ..., fn(x1, ... ,хм) —

некоторые скалярные функции от скалярных переменных. Уравнений может быть как больше, так и меньше числа переменных. Заметим, что систему можно формально переписать в виде f(x)=0, где х — вектор, составленный из переменных x12, ... ,хм, a f (х) — соответствующая векторная функция.

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

Given — ключевое слово;

система, записанная логическими операторами в виде равенств

и, возможно, неравенств;

Find(x1... ,хм) — встроенная функция для решения системы относительно переменных х1 х2,..., хм.

Вставлять логические операторы следует, пользуясь панелью инструментов Boolean (Булевы операторы) или сочетанием клавиш

<Ctrl>+<=>.

Блоку Given / Find, как и для функции root, нужно задать начальные значения для всех х1, ... ,xм. Сделать это необходимо до ключевого слова Given. Значение функции Find есть вектор, составленный из решения по каждой переменной. Таким образом, число элементов вектора равно числу аргументов Find.

135

Слева приведен пример решения системы двух уравнений с двумя неизвестными.

Матричные вычисления

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

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

Транспортирование.

Сложение. В MathCAD можно складывать матрицы и вычитать их друг из друга. Для этих операторов применяются символы <+> или <—>, соответственно. Матрицы должны иметь одинаковую размерность, иначе будет выдано сообщение об ошибке. Каждый элемент суммы двух матриц равен сумме соответствующих элементов матриц-слагаемых. Кроме сложения матриц, MathCAD поддерживает операцию сложения матрицы со скаляром. Каждый элемент результирующей матрицы равен сумме соответствующего элемента исходной матрицы и скалярной величины.

Умножение. При умножении следует помнить, что матрицу размерности MхN допустимо умножать только на матрицу размерности NхP (р может быть любым). В результате получается матрица размерности МхР. Чтобы ввести символ умножения, нужно нажать клавишу со звездочкой <*> или воспользоваться панелью инструментов Matrix (Матрица), нажав на ней кнопку Dot Product (Умножение). Аналогично сложению матриц со скаляром определяется умножение и деление матрицы на скалярную величину. Символ умножение вводится так же, как и в случае умножения двух матриц.

136

Определитель квадратной матрицы. Определитель (Determinant) матрицы обозначается стандартным математическим символом. Чтобы ввести оператор нахождения определителя матрицы можно нажать кнопку Determinant (Определитель) на панели инструментов Matrix (Матрица) или набрать на клавиатуре <|> (нажав клавиши <Shift>+<\>). В результате любого из этих действий появляется местозаполнитель, в который следует поместить матрицу. Можно вычислить определитель уже введенной матрицы.

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

Скалярное произведение векторов. Скалярное произведение векторов определяется как скаляр, равный сумме попарных произведений соответствующих элементов. Векторы должны иметь одинаковую размерность. Обозначается скалярное произведение символом умножения. Можно воспользоваться панелью инструментов Matrix (Матрица), нажав на ней кнопку

Dot Product (Умножение)

Векторное произведение. Векторное произведение двух векторов обозначают символом х, который можно ввести нажатием кнопки Cross Product (Векторное произведение) в панели Matrix (Матрица) или сочетанием клавиш <Ctrl>+<8>

Сумма элементов вектора и след матрицы. Иногда бывает нужно вычислить сумму всех элементов вектора. Для этого существует вспомогательный оператор, задаваемый кнопкой Vector Sum (Сумма вектора) на панели Matrix (Матрица) или сочетанием клавиш <Ctrl>+<4>. Этот оператор чаще оказывается полезным не в векторной алгебре, а при организации циклов с индексированными переменными.

Обратная матрица. Поиск обратной матрицы возможен, если матрица квадратная и ее определитель не равен нулю. Для ввода оператора поиска обратной матрицы нажмите кнопку Inverse (Обратная матрица) на панели инструментов Matrix (Матрица).

Возведение матрицы в степень. К квадратным матрицам можно формально применять операцию возведения в степень n. Для этого n должно быть целым числом. Ввести оператор возведе-

137

ния матрицы M в степень n можно точно так же, как и для скалярной величины: нажав кнопку Raise to Power (Возвести в степень) на панели Calculator (Калькулятор).

Векторизация массивов. Векторная алгебра Mathcad включает несколько необычный оператор, который называется оператором векторизации (vectorize operator). Этот оператор предназначен, как правило, для работы с массивами. Он позволяет провести однотипную операцию над всеми элементами массива (т. е. матрицы или вектора), упрощая тем самым программирование циклов. Например, иногда требуется умножить каждый элемент одного вектора на соответствующий элемент другого вектора. Непосредственно такой операции в Mathcad нет, но ее легко осуществить с помощью векторизации.

Создание графиков

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

Двумерные графики:

oXY (декартовый) график (XY Plot); Для построения графика необходимы два ряда данных, откладываемых

по осям Х и Y

oполярный график (Polar Plot). Для построения графика необходимы два ряда данных, координат угол (нижний

местозаполнитель) и радиус-вектор (левый местозаполнитель)

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

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

Редактирование графиков проводится с помощью контекстного меню к нему. С помощью раздела меню Format… на вкладке Traces (Ряды данных) легко установить комбинацию параметров линии и точек для каждого из рядов данных, представленных на графике. На вкладке Traces (Ряды данных) регулируются следующие параметры:

Legend Label (Легенда) — текст легенды, описывающий ряд данных легенда объясняет смысл различных параметров);

Symbol (Символ) — символ, которым обозначаются отдельные точки данных;

138

Line (Линия) — стиль линии :

o

solid (сплошная);

o

dot (пунктир);

o

dash (штрих);

o dadot (штрихпунктир).

Color (Цвет) — цвет линии и точек данных;

Weight (Толщина) — толщина линии и точек данных;

Туре (Тип) — тип представления ряда данных:

o

lines (линии);

o

points (точки);

o

error (ошибки);

o

bar (столбцы);

o

step (шаг);

o

draw (рисунок);

o

stem (стержень);

o

solid bar (гистограмма).

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

ются координоты.

Трехмерные графики. Чтобы создать трехмерный график, требуется нажать кнопку с изображением любого из типов трехмерных графиков на панели инструментов Graph (График). В результате появится пустая область графика с тремя осями и единственным местозаполнителем в нижнем левом углу. В этот местозаполнитель следует ввести либо имя z функции z(x,y) двух переменных для быстрого построения трехмерного графика, либо имя матричной переменной z, которая задаст распределение данных z(x,y) на плоскости XY. Возможно построение следующих видов графиков:

o график трехмерной поверхности (Surface Plot); o график линий уровня (Contour Plot);

o трехмерная гистограмма (3D Bar Plot);

o трехмерное множество точек (3D Scatter Plot); o векторное поле (Vector Field Plot).

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

139

типов графиков, а также новые типы. Векторное поле и линии уровня строятся, по определению, на прямоугольном участке плоскости.

Форматирование трехмерных графиков

Форматирование трехмерных графиков выполняется с помощью диалогового окна 3-D Plot Format (Форматирование 3-D графика), которое вызывается двойным щелчком мыши в области графика (рис. П.3). Параметры трехмерных графиков всех типов устанавливаются посредством этого диалогового окна.

В диалоге 3-D Plot Format доступно большое количество параметров, изменение которых способно очень сильно повлиять на внешний вид графика. Они сгруппированы по принципу действия на нескольких вкладках.

Рис. П.3. Диалоговое окно 3-D Plot Format

Остановимся коротко на возможностях оформления трехмерных графиков.

Вкладка General (Общие)

Раздел Plot1 позволяет поменять тип уже имеющегося графика (например, построить вместо поверхности график линий уровня и т. д.), просто установите соответствующий переключатель и нажмите кнопку ОК. График будет перерисован.

Вращение графика (раздел View). Самый простой способ ориентации системы координат с графиком в трехмерном пространстве — это перетаскивание ее указателем мыши. Попробуйте перемещать при нажатой левой кнопке мыши указатель в пределах графика, и Вы увидите, как поворачивается график. Разумеется, поворачивать можно лишь гра-

140