Доступ к элементам массива
Mathcad позволяет обрабатывать как весь массив, так и отдельные его элементы или отдельные столбцы. Для этого используются нижние и верхние индексы. Индекс — это номер строки или столбца массива.
Верхние индексы используются для обращения ко всему столбцу матрицы:
1. Введите имя переменной матрицы, например, Y.
2. Нажмите комбинацию клавиш <Ctrl>+6 или нажмите кнопку
на панели инструментовМатрица (Matrix).
3. В появившийся справа сверху от имени матрицы местозаполнитель введите желаемый индекс, например, 2.
4. Введите оператор “=”. В результате Mathcad выведет 2-й столбец значений элементов массива Y.
Можно также извлекать отдельную строку из матрицы, извлекая столбец из транспонированной матрицы.
Нижние индексы используются для обращения к отдельному элементу массива:
1. Введите имя переменной массива, например, Х.
2. Введите символ “[“ (левой квадратной скобки) или нажмите кнопку
на панели инструментовМатрица (Matrix).
3. В появившийся справа снизу от имени матрицы местозаполнитель введите желаемый индекс, например, 3.
4. Введите оператор “=”, чтобы получить значение 3-го элемента вектора Х.
Для обращения к элементам матриц используются двойные нижние индексы. Например, для вывода значения элемента матрицы Y, расположенного на пересечении 3-й строки и 4-го столбца, надо последовательно набрать Y[3,4=.
Замечание 1. Обратите внимание, что нижние индексы подобно делению и возведению в степень удерживают ввод.
Замечание 2. Строки в массивах нумеруются сверху вниз, а столбцы — слева направо. По умолчанию нумераия начинается с нуля, т.е. переменная X0 указывает на первый (левый) элемент вектора Y, а переменная Y0,0 — на левый верхний элемент матрицы Y. Если вы привыкли нумеровать элементы векторов и матриц с единицы, глобально присвойте переменной ORIGIN значение 1.
Замечание 3. В качестве индексов можно использовать не только числовые константы, но и математические выражения, переменные и функции (в любых комбинациях). Перечисленные ниже примеры иллюстрируют различные способы обращения к элементу матрицы, расположенному в 1-й строке и 5-м столбце:
Изменение размера матрицы
Изменение данных в уже созданном массиве производится аналогично его заполнению: щелкнуть по элементу массива, удалить его и вставить новое значение.
Добавление строк или столбцов:
1. Щёлкните на элементе матрицы, ниже которого нужно вставить строки или справа от которого нужно вставить столбцы.
2. Выберите в меню Вставка (Insert) команду Матрица (Matrix) или нажмите кнопку
на панели инструментовМатрица (Matrix).
3. Напечатайте число строк и/или столбцов, которые нужно вставить.
4. Затем нажмите на кнопку Вставить (Insert).
Замечание. Чтобы вставить строку выше верхней строки или столбец слева от первого столбца, сначала заключите матрицу целиком в выделяющую рамку, щёлкнув внутри и нажав <пробел> несколько раз.
Удаление строк или столбцов:
1. Щёлкните на элементе матрицы, ниже которого нужно удалить строки или справа от которого нужно удалить столбцы. Удаление начинается со строки или столбца, занятых выбранным элементом.
2. Выберите в меню Вставка (Insert) команду Матрица (Matrix) или нажмите кнопку
на панели инструментовМатрица (Matrix).
3. Напечатайте число строк и/или столбцов, которые нужно удалить.
4. Затем нажмите на кнопку Удалить (Delete).
Чтобы удалить всю матрицу или вектор, заключите их в выделяющую рамку и выберите Удалить (Delete) в меню Правка (Edit).
ЗАДАНИЕ 3. В массивах, созданных при выполнении 1-го задания:
1) отредактировать данные без изменения размерностей массивов;
2) преобразовать вектор-столбец в матрицу размерности 5х6 и заполнить вновь созданные элементы;
3) удалить последнюю строку и последний столбец матрицы 3х3;
4) вставить дополнительный столбец в матрицу 4х6 после 2-го столбца исходной матрицы и заполнить вновь созданные элементы массива;
5) вставить два дополнительных столбца и две дополнительных строки левее и выше первого элемента матрицы Y, полученной при выполнении задания 2.
Доступ к элементам массива MathCAD
Доступ ко всему массиву осуществляется по имени векторной переменной. Например, последовательность символов "а", "=" в листингах 4.10 и 4.11 приведет к выводу соответствующего вектора или матрицы. В Mathcad имеются и операторы, и встроенные функции, которые действуют на векторы и матрицы целиком (они рассматриваются в гл. 9), например, транспонирование, матричное умножение и т. д.
Над элементами массива можно совершать действия как над обычными числами. Нужно только правильно задать соответствующий индекс или сочетание индексов массива. Например, чтобы получить доступ к нулевому элементу вектора а из листинга 4.10:
- Введите имя переменной массива (а).
- Нажмите кнопку Subscript (Нижний индекс) со значком хn на панели Matrix (Матрица) либо введите [.
- В появившийся справа снизу от имени массива местозаполнитель введите желаемый индекс (0).
Если после этого ввести знак численного вывода, то справа от него появится значение нулевого элемента вектора, как показано во второй строке листинга 4.10.
Чтобы получить доступ к элементу многоиндексного массива (например элементу а1,0 матрицы а из листинга 4.11):
- Введите имя переменной массива (а).
- Перейдите к вводу нижнего индекса, введя [.
- Введите в местозаполнитель индекса первый индекс (1), запятую "," и в появившийся после запятой местозаполнитель введите второй индекс (0).
В результате будет получен доступ к элементу, как показано в предпоследней строке листинга 4.11.
В рассмотренных листингах нумерация индексов массивов начинается с нуля, иными словами, первый элемент массива имеет индекс о. Стартовый индекс массива задается системной переменной ORIGIN, которая по умолчанию равна нулю. Если Вы привыкли нумеровать элементы векторов и матриц с единицы, присвойте этой переменной значение 1 (листинг 4.12). Обратите внимание, что в этом случае попытка выяснить значение нулевого элемента вектора приводит к ошибке, поскольку его значение не определено.
Помимо доступа к отдельным элементам массива, имеется возможность совершать действия над его подмассивами (например векторами-столбцами, образующими матрицу). Делается это с помощью оператора со значком х <> на панели Matrix (Матрица) (см. гл. 9).
08. Тема 2. Обработка структурированных данных в MathCad. Краткие теоретические сведения
Дискретной называется переменная, содержащая несколько значений, изменяющихся от начального до конечного на величину постоянного шага. Дискретная переменная может быть задана двумя способами:
1) а := а1, а2 .. An
2) А := а1 .. An
Где A – имя дискретной переменной,
A1 – ее начальное значение,
A2 – ее второе значение,
An – ее конечное значение.
Символ «..» Набирается либо клавишей «;» на клавиатуре, либо кнопкой M..n – в палитре матриц.

Для первого способа задания дискретной переменной шаг ее изменения равен (а2 – а1). Для второго способа задания дискретных переменных значение а2 не указывается, шаг изменения дискретной переменной равен 1, если a1<an, или -1, если a1>an.
Примеры создания дискретных переменных приведены ниже.
X:= 2.. 7
Создается дискретная переменная х, значения которой изменяются от 2 до 7 с шагом 1.
Создается дискретная переменная y, значения которой изменяются от 2 до 7 с шагом 0.3.
Создается дискретная переменная z, значения которой изменяются от 9 до 1 с шагом -1.
Создается дискретная переменная a, значения которой изменяются от 8 до 3 с шагом -0.1.
Создается дискретная переменная b, значения которой изменяются от 0 до 2π с шагом π/10.
Дискретные переменные могут являться аргументами функций, тогда процесс вычисления значений функции приобретает циклический характер, и для каждого значения дискретной переменной вычисляется свое значение функции по заданной аналитической зависимости.
В системе MathCAD в основном используются массивы двух типов: одномерные (векторы) и двумерные (матрицы).
Каждый элемент вектора или матрицы имеет порядковый номер в массиве. Отсчет номеров начинается с того значения, которое содержится в системной переменной ORIGIN. По умолчанию эта переменная имеет значение 0, для изменения значения нужно задать, например,
Векторы и матрицы можно задавать различными способами: с помощью кнопки с изображением матриц на наборной панели математических инструментов; как переменную с индексами перечислением элементов массива с разделение запятой; с помощью аналитического выражения.
Массивы могут использоваться в выражениях целиком или поэлементно. Для обращения к элементам массивов нужно указать числовые значения индексов элементов в подстрочнике после имени массива. При выполнении расчетов можно обращаться к конкретной строке или столбцу матрицы с помощью верхнего индекса или нижних индексов.
На рисунке 2.2.1 приведены примеры создания массивов перечислением элементов (вектор R) и аналитически (вектор Z). Здесь же показано, как обратиться к элементу матрицы, ее столбцу или строке. Из рисунка видно, что после изменения значения переменной ORIGIN, значение элемента матрицы M2,1 тоже изменяется.


Рисунок 2.2.1 – Примеры создания массивов
Существует ряд операций над матрицами и векторами, а также встроенных векторных и матричных функций. Введем следующие обозначения: V – вектор, M – матрица. Основные операции с их назначением и правилами набора приведены в таблице 2.2.1.
MathCAD — это просто! Часть 10. Работа с векторами и матрицами
Снова здравствуйте. Мы с вами успели вполне успешно закончить со школьной алгеброй, и, значит, можем переходить к более сложным вещам — например, к тому разделу математики, который в университетах обычно называют линейной алгеброй. Конечно, раздел этот весьма и весьма обширен, и нечего даже думать о том, чтобы охватить хотя бы большую его часть. Тем не менее, нам с вами, я так думаю, кое-что из него научиться использовать практически вполне по силам — к примеру, мы можем научиться работать в MathCAD’е с векторами и матрицами. Эти два понятия — важнейшие математические абстракции, роль которых трудно переоценить в научно-техническом прогрессе. Ведь именно применение векторов и векторного анализа позволило в свое время Оливеру Хевисайду сократить количество уравнений Максвелла, описывающих электромагнитное поле, с двух десятков до всего лишь четырех. До векторного анализа, я так думаю, мы с вами в свое время еще доберемся, ну, а пока займемся более прозаическими вещами. Какими именно? Думаю, все станет ясно, если вы продолжите читать эту статью.
Немного об элементах матриц
Хотя дальше мы будем иметь дело и с векторами, и с матрицами, я краткости ради буду говорить просто «матрица», подразумевая, что под вектором мы будем иметь в виду частный случай матрицы, а именно ту ее разновидность, которая представляет собой одиночный столбец. Если же вектор будет представлять собой строку, то это будет специально оговорено. Впрочем, думаю, до этого дело вряд ли дойдет. С матрицами, вообще говоря, мы с вами работать уже немного умеем. Ну, не то чтобы прямо так вот работать — по крайней мере, вводить их в MathCAD’е мы уже вводили. Тем не менее, думаю, будет не лишним напомнить, что ввести в рабочую область матрицу можно с помощью кнопки Matrix or Vector, расположенной на панели Matrix, либо с помощью сочетания горячих клавиш Ctrl+M. Впрочем, мы с вами пока не затрагивали один небольшой, но крайне важный момент, а именно как обращаться в вычислениях не к матрице целиком, а к отдельным ее элементам. Сделать это, на самом деле, очень просто. Пусть у нас задана квадратная матрица X размером два на два элемента. Верхний левый элемент будет иметь индексы 0,0; нижний правый, соответственно, будет иметь индексы 1,1. То есть, как видите, элементы матрицы нумеруются с нуля. Это, в общем-то, довольно удобно, однако, если для вас привычнее нумеровать их с единицы, или, скажем, с 1024-х, то можно поменять значение встроенной переменной ORIGIN, введя в самом начале документа MatchCAD в строку (без кавычек). Или, соответственно, «ORIGIN := 1024». Можно поменять значение переменной и в окне опций MathCAD’а, выбрав в меню Tools пункт Worksheet options и на вкладке Built-In Variables поменяв значение переменной ORIGIN на нужное вам.
Так вот, вернемся к нашим элементам матрицы. Чтобы «вынуть» из нее первый элемент, нужно написать следующее: X0, 0. Для того, чтобы записать индексы внизу от имени переменной, которая обозначает матрицу, можно воспользоваться кнопкой Subscript со все той же панели инструментов для матричных и векторных вычислений или с клавиатуры перейти в нижний индекс клавишей «[» (русское «х»). Обратите внимание, что для разделения индексов, обозначающих строку и столбец, используется запятая. Элементы матрицы можно не только извлекать из матрицы, заданной таблично. Вы можете задать несколько элементов с соответствующими индексами по ходу вычисления, а после уже MathCAD самостоятельно сформирует из них матрицу (но только когда вы зададите уже все ее элементы — в противном случае незаданным элементам будут присвоены нулевые значения). Вы можете использовать ранжированные переменные для задания элементов матрицы. Временами это бывает не просто удобно, а очень удобно. Так, к примеру, можно задать для матрицы X следующую формулу, описывающую значения каждого ее элемента i-й строки и j-го столбца: Xi, j := i * j. Перед таким определением элементов матрицы остается только определить диапазон, в котором будут изменяться i и j. Я для примера взял значения i := 0..5 и j := 0..5, но вы, конечно же, можете установить любой другой нужный вам диапазон в зависимости от требований вашей задачи, решаемой с помощью матриц в среде MathCAD.
Операции над матрицами
Конечно, у применения матриц в реальных задачах существует множество интересных и не очень аспектов, однако все они рано или поздно упираются в необходимость проведения с матрицами простых алгебраических операций. Проводить их вручную — задача трудоемкая, и можно потратить время с гораздо большей пользой, переложив рутинную работу на MathCAD. Для начала познакомимся с теми функциями, которые собственно никаких математических операций не выполняют, но при этом являются весьма важными в действиях с матрицами. Эти функции позволяют объединять две матрицы в одну (не складывать матрицы, а просто объединять их элементы) и выделять из матрицы другую матрицу. Первая из функций — augment. Она объединяет две матрицы, имеющие одинаковое число строк, таким образом, что из них образуется одна, в которой элементы этих двух располагаются, что называется, «плечом к плечу». В качестве аргументов этой функции нужны только две объединяемые матрицы. Ее аналог для тех матриц, которые имеют одинаковое число столбцов, и должны быть объединены одна над другой, является функция stack. Ее аргументами тоже должны быть две объединяемые матрицы. Функция же, которая не объединяет, а, напротив, «разрезает» матрицы, имеет название submatrix. Для нее нужно указывать имя матрицы, из которой мы хотим выделить подматрицу, и координаты элементов новой матрицы в старой матрице. То есть для того, чтобы вырезать матрицу 4х4 из верхних левых элементов матрицы размером 5х5, нам нужно вызывать эту функцию со следующими параметрами: submatrix(Y, 0, 4, 0, 4). Здесь Y — это, конечно же, имя матрицы размером 5х5 элементов. Демонстрацию использования всех этих функций применительно к конкретным матрицам можно увидеть на соответствующей иллюстрации к статье.
Теперь, я так думаю, самое время перейти уже к арифметическим операциям над матрицами. Вы увидите, что их использование в MathCAD не потребует от вас никаких специальных знаний в области линейной алгебры — не считая, конечно, общих представлений о том, как работают матричные операции, для понимания того, что может получиться в их итоге. MathCAD хорош для пользователя тем, что позволяет ему работать с векторами и матрицами точно так же, как с обычными скалярами, сиречь переменными, содержащими исключительно и только действительные числа. Попробуйте задать две матрицы (я их назвал aa и bb), а затем применить к ним операцию сложения точно так же, как когда-то применяли ее к обыкновенным числам. Конечно, для того, чтобы матрицы можно было складывать, они должны иметь одинаковые размеры. Точно так же можете попробовать вычесть из одной матрицы другую или перемножить их. Вы увидите, что MathCAD успешно справляется с подобными задачами, не напрягая пользователя излишними вычислениями.
Транспонировать матрицы в MathCAD’е ничуть не сложнее, чем их складывать или перемножать. Вычислять обратные матрицы, впрочем, тоже. Во всех этих задачах помогут соответствующие операторы с Они обозначены на ней теми же значками, что и в учебниках по линейной алгебре, а потому пользователю, хотя бы минимально знакомому с матричным исчислением, все должно быть просто и понятно. Нужно только помнить, что нельзя вычислить обратную матрицу для той матрицы, которая является вырожденной (то есть имеет нулевые или пропорциональные друг другу строки или столбцы). Для того, чтобы не останавливаться излишне подробно на этих простых операциях, просто приведу иллюстрацию, демонстрирующую их практическое использование. Думаю, у читателей не возникнет никаких проблем ни с транспонированием, ни с вычислением обратной матрицы с помощью MathCAD.
Еще одной часто выполняемой операцией является вычисление детерминанта, или определителя матрицы. Думаю, что совсем не огорчу вас известием о том, что в MathCAD и с определителями работать так же просто, как и со всем остальным, связанным с матрицами. За его вычисление отвечает кнопка Determinant, расположенная, конечно же, на панели Matrix. Поскольку детерминант в MathCAD’е, как и вообще в линейной алгебре, обозначается с помощью символов прямых черт, ограничивающих матрицу (или имя переменной, ее обозначающей), то вполне логично, что вставить эти самые прямые черты в текст выражения можно с помощью соответствующей клавиши на клавиатуре: Shift + \. Думаю, этой несложной комбинацией будет пользоваться все же удобнее, чем искать каждый раз нужную кнопку на панели инструментов MathCAD’а.
Внешний вид матриц
Мы с вами, конечно же, далеко еще не закончили свое знакомство с матрицами в MathCAD’е, однако, думаю, на сегодня уже непосредственной математики хватит. В конце статьи я лучше расскажу о том, как можно изменить способ отображения матриц в среде MathCAD — возможно, кому-то из читателей этой статьи эта информация будет полезной и небезынтересной.
Дело в том, что MathCAD может отображать матрицы не только в привычном всем виде чисел, заключенных в скобки, но и в виде таблиц. Если вы используете этот математический пакет для каких-либо статистических расчетов и при этом работаете с большими массивами данных, то, безусловно, такое отображение матриц будет более предпочтительным для вас, чем традиционное. Для изменения способа отображения матриц дважды кликните по нужной матрице и в появившемся окне перейдите на вкладку Display Options. Далее в поле Matrix display style выберите значение Table. Матрица приобретет вид точно такой, как на соответствующей иллюстрации к этой статье.
Внешний вид таблицы можно также настроить далее, кликнув по ней правой кнопкой мыши и выбрав пункт Properties. В появившемся окне можно снять птичку с пункта Show column/row labels, чтобы убрать отображение нумерации строк и столбцов в матрице, представляемой в виде таблицы. На вкладке Data Range можно выбрать диапазон отображаемых строк и столбцов матрицы, что также полезно для матриц, содержащих большое количество элементов.
Ну что ж, на сегодня, думаю, достаточно. Это только начало работы с матрицами — в следующий раз мы поговорим о гораздо более интересных вещах, чем просто сложение, транспонирование и вычисление детерминанта.