If(условие, выражение_1, выражение_2)




Массивы

Основные определения. Способы создания массивов

Массив в пакете Mathcad − это совокупность конечного числа упорядоченных пронумерованных элементов, которая может иметь уникальное имя.

Обычно используют одномерные (векторы) и двумерные (матрицы) массивы, содержащие числовые, символьные или строковые данные. Различают векторы-строки (матрицы 1 ×n) и векторы-столбцы (матрицы 1), которые дают разные результаты при векторных и матричных операциях, например:

– вектор-столбец; – вектор-строка.

Порядковый номер элемента называется индексом. Местоположение элемента в массиве задается одним индексом для вектора и двумя – для матрицы. Нижняя граница индексации (другими словами, номер первого элемента массива) определяется значением системной переменной ORIGIN. По умолчанию ORIGIN = 0 и может принимать только целые значения. Изменение значения этой системной переменной осуществляется последовательностью команд Math / Options… / Built-In Variables / Array Origin (ORIGIN) (Математика / Параметры / Встроенные переменные / Начальный индекс массивов) или переопределением в документе, например:

ORIGIN:=1

Существует несколько способов создания массивов.

1-й способ. Использование специальной панели Insert Matrix (Вставка матрицы) (рисунок 1).

Сначала набирается имя массива и оператор присваивания, например,

Далее можно выполнить одно из перечисленных ниже действий:

1.1 воспользоваться командой Matrix... (Матрица...) пункта главного меню Insert (Вставка);

1.2 нажать комбинацию клавиш Ctrl + M;

1.3 щелкнуть по пиктограмме с изображением шаблона матрицы с одноименной палитры математических инструментов Matrix (Матрица).

 

Рисунок 1 − Панель математических инструментов и палитра для работы с векторами и матрицами

 

Любое из этих действий вызывает появление диалогового окна (рисунок 2), в котором надо указать количество ее строк m (Rows) и столбцов n (Columns) матрицы. Для векторов один из этих параметров должен быть равен 1. При m = 1 получим вектор-строку, а при n = 1 – вектор-столбец.

 

Рисунок 2 − Диалоговое окно вставки шаблона матрицы

 

На месте курсора появится шаблон, в знакоместа которого вводятся значения элементов массива:

Переход к следующему знакоместу производится нажатием клавиши Tab или с помощью клавиш управления курсором.

2-й способ. Использование ранжированной переменной.

Целочисленные ранжированные переменные используются для задания индексов и позволяют создавать массивы в следующем порядке:

1) определяется системная переменная ORIGIN;

2) задается ранжированная переменная (переменные) для нумерации элементов;

3) индексированной переменной присваиваются значения элементов массива через запятую или в виде явной формулы.

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

 

Операторы для работы с векторами и матрицами

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

 

Таблица 1 − Команды палитры инструментов Matrix (Матрица)

Команда Описание Команда Описание
Создание массива Транспонирование массива
Нижний индекс Задание диапазона дискретной величины
Инверсия (обратная матрица) Скалярное произведение
Определитель матрицы, модуль вектора Векторное произведение
Операция векторизации Суммирование элементов вектора
Выделение столбца матрицы Изображение

 

Кроме того, матрицы одинаковой размерности можно сложить, вычесть, квадратную матрицу можно возвести в некоторую степень, а два массива − перемножить (если число столбцов первого совпадает с числом строк второго массива). Поэлементное умножение элементов массивов одинаковой размерности или вычисление значений скалярной функции от каждого элемента матрицы возможно с использованием оператора векторизации (таблица 1).

Функции для работы с векторами и матрицами

Рассмотрим функции, в качестве аргументов которых могут выступать лишь векторы (векторные функции):

· last(v) – возвращает индекс последнего элемента вектора v;

· length(v) – возвращает длину вектора v.

· diag(v) – создает диагональную матрицу, элементы главной диагонали которой формируются из элементов вектора v.

Из уже существующих массивов можно создавать новые (функции создания массивов):

· augment(A, B, C,…) – объединяет в один массивы A, B, C и т. д., имеющие одинаковое число строк (слияние идет бок о бок);

· stack(A, B, C,…) – объединяет массивы A, B, C и т. д., имеющие одинаковое число столбцов (слияние массивов идет сверху вниз);

· submatrix(A, ir, jr, ic, jc) – возвращает часть массива A, состоящую из элементов, содержащихся в строках с ir по jr и в столбцах с ic по jc;

· matrix(m, n, f) − позволяет создать матрицу размерности m×n, каждый i -й, j -й элемент которой есть функция двух переменных f (i, j), где и .

Для создания матриц специального вида предназначены:

· geninv(A) – возвращает левую обратную матрицу для A;

· identity(n) – создает единичную квадратную матрицу размером n×n;

· rref(A) – ступенчатый вид массива A.

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

· max(A, B, C,…) – возвращает максимальный по значению элемент;

· min(A, B, C,…) – возвращает минимальный по значению элемент.

Аргументами функций min и max могут быть не только массивы, но и переменные, числовые значения, строки.

· IsArray(x) – возвращает значение 1, если x – матрица или вектор, иначе возвращает 0;

· lookup(z, A, B) – функция ищет значение z в массиве A и возвращает элементы массива B, стоящие на тех же местах, что и z в массиве A (A и B имеют одинаковую размерность);

· match(z, A) – возвращает индекс (индексы) нахождения элемента z в массиве A;

· cols(A) – возвращает число столбцов массива A;

· rows(A) – возвращает число строк массива A;

· rank(A) – возвращает ранг массива A;

· tr(M) – возвращает след (сумму диагональных элементов) квадратной матрицы М;

· mean(A) –среднее арифметическое значение элементов массива A;

· gmean(A) – возвращает среднее геометрическое значение элементов массива A. При этом элементы массива должны быть положительны;

· median(A) – возвращает медиану элементов массива A;

· mode(A) – возвращает наиболее часто встречающееся значение элементов массива A.

Для сортировки элементов массивов предназначены:

· sort(v) – сортировка элементов вектора в порядке возрастания;

· reverse(v) – перестановка элементов вектора в обратном порядке;

· csort(M, n) – перестановка строк матрицы M таким образом, чтобы отсортированным оказался n -й столбец;

· rsort(M, m) – перестановка столбцов матрицы M таким образом, чтобы отсортированной оказалась m -я строка.

 

Примеры к заданию

Задание элементов векторов

Пример 1. Создать вектор-столбец v, состоящий из 5 элементов. Создать вектор w из пяти элементов с использованием ранжированной переменой. Получить вектор, каждый элемент которого вычисляется по формуле .

Решение.

Напечатаем имя вектора и знак присваивания v:=. Не перемещая курсор, вызовем окно вставки матрицы. Число строк (Rows) зададим равным 5, а число столбцов (Columns) − 1. Нажмем OK. Элементы вектора-столбца введем произвольные, перемещаясь между местозаполнителями с помощью клавиши Tab:

 

Укажем значение системной переменной ORIGIN равным единице и зададим ряд значений ранжированной переменной для нумерации элементов создаваемых векторов:

 

Напечатаем имя вектора w. Не меняя расположение курсора, нажмем клавишу «[» или выберем значок на палитре инструментов Matrix (Матрица), введем нижний индекс i. Элементы вектора w введем через запятую:

 

Создадим вектор, элементы которого вычисляются по формуле. Напечатаем x, введем нижний индекс, знак присваивания и расчетную формулу:

Получим векторы w и x:

Задание элементов матриц

Пример 2. Создать матрицу А размером 3´2. Создать матрицу В путем непосредственного ввода элементов. Получить матрицу С размером 3´2, каждый элемент которой вычисляется по формуле .

Решение.

Введем имя матрицы и знак присваивания A:=. Не перемещая курсор, вызовем окно вставки матрицы. Число строк (Rows) зададим равным 3, а число столбцов (Columns) − 2. Нажмем OK. Элементы матрицы введем, перемещаясь между местозаполнителями с помощью клавиши Tab:

Зададим системную переменную ORIGIN и ранжированные переменные для нумерации элементов создаваемых массивов:

Элементы матрицы B задаются через запятую, а для матрицы C используем формулу. При этом следует указать два индекса:

Вычисление сумм и произведений элементов массивов

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

Суммирование или вычисление произведений элементов матриц лучше выполнять с использованием операторов, расположенных на палитре Calculus (Исчисление):

Для суммирования используются шаблоны:

· , который заполняется , где i − переменная, значениями которой являются номера элементов ряда;

· , который заполняется , где i − переменная, значениями которой являются номера элементов ряда, n − константа, обозначающая номер первого элемента, входящего в сумму ряда, m − константа, обозначающая номер последнего элемента, входящего в сумму ряда.

Например, сумма элементов второй строки и сумма всех элементов матрицы A вычисляются следующим образом:

Вычислять произведения помогут шаблоны:

· , который заполняется , где i − переменная, значениями которой являются номера элементов ряда;

· , который заполняется , где i − переменная, значениями которой являются номера элементов ряда, n − константа, обозначающая номер первого элемента произведения, m − константа, обозначающая номер последнего элемента произведения.

Например, произведение элементов третьего столбца и произведение всех элементов матрицы A можно вычислить так:

Обработка массивов

Пример 3. Ввести массив MS [1..5], состоящий из произвольных чисел, и значение var = 0,95. Для каждого элемента массива MS вычислить значение RES по формуле . Подсчитать сумму элементов массива RES. Найти минимальное значение RES. Отсортировать элементы массива RES по убыванию. Подсчитать произведение элементов массива RES, стоящих на нечетных местах. Найти косинус каждого элемента RES.

Решение.

Зададим порядок нумерации элементов в массивах, начиная с единицы, и ряд значений ранжированной переменной для нумерации элементов создаваемых векторов MS и RES:

Введем имя исходного массива и знак присваивания. Не меняя положение курсора, выберем кнопку с изображением матрицы дважды и укажем размерность вектора-столбца: Rows – количество строк (5), Columns – количество столбцов (1).

Введем произвольные значения элементов массива MS, используя для перехода к новому знакоместу клавишу Tab или клавиши управления курсором:

Присвоим значение переменной var:

Введем формулу для вычисления i -го элемента массива RES:

Для просмотра результатов в виде таблиц наберем MSi =, RESi =, а для вывода результатов в виде векторов − MS =, RES =:

Вычислим сумму элементов массива RES. Для этого нажмем на кнопку на палитре Matrix (Матрица) и введем имя массива. Для получения результата достаточно нажать «=»:

Для определения минимального элемента используем специальную функцию min:

Далее отсортируем RES по возрастанию и изменим порядок расположения элементов:

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

Косинус каждого элемента массива RES определяется

Примечания − Функция if в общем виде задается так:

if(условие, выражение_1, выражение_2)

где

· условие − логическое выражение, заданное с использованием операторов палитры Boolean (Логические);

· выражение_1 − выражение, которое выполнятся, если условие имеет значение «истина»;

· выражение_2 − выражение, которое выполнятся, если условие имеет значение «ложь».

Пример 4. Задать матрицу M размером 10×10 по формуле . Создать подматрицу M 1 размером 5×5 из элементов M, стоящих на пересечении первых пяти строк и пяти последних столбцов. Найти сумму элементов M 1. Подсчитать произведение элементов матрицы M 1 с четной суммой индексов. Определить минимальный элемент второй строки M 1. Создать матрицу M 2, каждый элемент которой – десятичный логарифм соответствующего элемента матрицы M 1. Комплексные элементы матрицы M 2 заменить их действительной частью. Найти максимальные элементы в нечетных столбцах M 2. Определить количество отрицательных элементов массива M 2. Сформировать вектор z из диагональных элементов матрицы M 2 и найти его модуль. Сформировать вектор w из элементов третьего столбца M 2. Создать матрицу M 3 из четных строк матрицы M 2 и векторов z и w.

Решение.

Определяем переменную ORIGIN и ранжированные переменные для нумерации элементов массивов:

Задаем матрицу M и ее подматрицу M 1, используя встроенные функции:

Вычислим сумму элементов M 1, используя дважды шаблон суммирования с палитры Calculus (Исчисление):

Для подсчета произведения элементов матрицы M 1 с четной суммой индексов создаем с помощью функции if вспомогательную матрицу, в которой на указанных местах стоят элементы M 1, а на местах с нечетной суммой индексов – единицы. Произведение элементов такой вспомогательной матрицы будет искомым:

Чтобы определить минимальный элемент второй строки M 1, сначала транспонируем матрицу, затем найдем минимальный элемент второго столбца полученного массива:

Для создания матрицы M 2 достаточно использовать операцию «векторизации» :

Заменим комплексные элементы матрицы M 2 их действительной частью, используя функцию Re(z), возвращающую действительную часть числа z:

Определим максимальные элементы в нечетных столбцах M 2:

Найдем количество отрицательных элементов M 2:

Создадим вектор z из элементов матрицы M 2 и найдем его модуль. Сформируем вектор на основе третьего столбца матрицы M 2:

Для создания матрицы M 3 можно использовать функцию объединения массивов с одинаковым количеством строк:



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: