Массивы, векторы и матрицы
Массив - это имеющая уникальное имя совокупность конечного числа числовых или символьных элементов, упорядоченных заданным образом и имеющих определенные адреса. Использование одномерных (векторы) и двумерных (матрицы) массивов в системе MathCAD.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курс лекций |
Язык | русский |
Дата добавления | 31.05.2010 |
Размер файла | 396,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
1
Массивы, векторы и матрицы
Понятие о массивах
В ранжированных переменных невозможно использование их отдельных значений. При необходимости иметь доступ к каждому значению переменной с несколькими компонентами она должна быть задана в виде массива.
Массив - это имеющая уникальное имя совокупность конечного числа числовых или символьных элементов, упорядоченных заданным образом и имеющих определенные адреса. В системе MathCAD используются массивы двух наиболее распространенных типов: одномерные (векторы) и двумерные (матрицы). Применение многомерных массивов не предусмотрено. Массивы могут содержать числовые или символьные данные:
- вектор - столбец с числовыми данными;
вектор- строка с символьными данными;
матрица с элементами различного типа
Матрицы и вектора отображаются в длинных скругленных скобках.
Индексация элементов массивов
Порядковый номер элемента называется индексом. Нижняя граница индексации определяется значением системной переменной ORIGIN, которая может принимать значение 0 или 1. Индексы могут быть только целыми положительными числами (и нулем).
Для ввода индекса используется знак [ -прямая открывающаяся скобка. Не следует путать индексированные переменные со скалярными переменными с индексами в имени переменной. Подобные индексы вводятся с помощью точки, причем синий уголок курсора ввода при этом охватывает все имя, а не только область ввода индекса. Индексы в имени переменной отделены от собственно имени пробелом. Выглядит это примерно так:
o X 1 -скалярная переменная с индексом;
o X1 - индексированная переменная.
Векторы могут быть двух типов: векторы-строки и векторы-столбцы.
- вектор- столбец
- вектор- строка.
Несмотря на то, что два этих вектора имеют одни и те же числовые значения элементов, они различны по типу и дадут разные результаты при векторных и матричных операциях, чувствительных к типу векторов.
Элементы матриц являются индексированными переменными, имена которых совпадают с именами матриц. Но в этом случае для каждой индексированной переменной указываются два индекса: один -- для номера строки, другой -- для номера столбца.
M: =
Например, если ORIGIN=0 для указанной матрицы М средний элемент обозначается как М1,1, а последний как М2,2.
Вывод шаблонов матриц и векторов
Команда Matrices… (Матрицы) меню Insert (Вставка) обеспечивает задание векторов или матриц. Как известно, матрица является именованным объектом в виде массива данных. MathCAD использует одномерные массивы -- векторы и двумерные -- собственно матрицы
Матрица характеризуется числом строк (Rows) и числом столбцов (Columns). Таким образом, число элементов матрицы или ее размерность равны Rows x Columns. Элементами матриц могут быть числа, константы, переменные и даже математические выражения Соответственно матрицы могут быть численными и символьными
При выполнении команды Matriсes в текущем окне появится диалоговое окно, позволяющее задать размерность вектора или матрицы. Для этого нужно указать число строк в поле Rows и число столбцов в поле Columns. Нажав клавишу Enter или указав курсором мыши на изображение клавиши Insert (Вставить), можно вывести шаблон матрицы или вектора (вектор имеет один из параметров размерности, равный 1).
Шаблон содержит обрамляющие скобки и темные маленькие прямоугольники, обозначающие места ввода значений (числовых или символьных) для элементов вектора или матрицы. Место ввода можно сделать активным (щелкнув на нем мышью). При этом он заключается в уголок. Это указывает на то, что в него будут вводиться значения соответствующего элемента. С помощью клавиш перемещения курсора можно по горизонтали ввести все элементы вектора или матрицы.
Пока идет ввод элементов векторов или матриц, пустые места ввода отображаются без каких-либо комментариев. Однако если закончить ввод до полного заполнения шаблона, система выведет сообщение об ошибке -- незаполненный шаблон приобретет красный цвет. Аналогично несуществующая матрица или ошибочно указанный индекс отображается красным цветом.
Если щелкнуть по кнопке Insert (вставить) при заполненном шаблоне матрицы, то матрица расширяется и ее размер увеличивается. Кнопка Delete (удаление) позволяет убрать расширение матрицы, удалив из нее строку или столбец.
Каждый элемент матрицы характеризуется индексированной переменной, а его положение в матрице обозначается двумя индексами: номером строки, и номером столбца. Для задания индексированной переменной прежде всего надо ввести имя переменной, а затем перейти к вводу индексов нажатием клавиши, вводящей символ]. Сначала указывается индекс строки, а затем, через запятую, индекс столбца.
Ввод элементов векторов и матриц
Векторы и матрицы можно задавать путем ввода их элементов - индексированных переменных. Для указания подстрочных индексов после имени переменной вводится знак открывающейся квадратной скобки:
Вводимое значение |
Отображаемое значение |
|
V3 [ 2 : |
V32 := |
Для элементов матрицы подстрочные индексы аналогично с разделением их запятыми:
Вводимое значение |
Отображаемое значение |
|
М [ 1, 2 : |
M1,2 : = |
Индексы могут иметь только целочисленные значения Они могут начинаться с нуля или с целого числа, например с единицы, в соответствии со значением системной переменной ORIGIN.
Для задания векторов и матриц можно либо воспользоваться командой Matrices (матрицы) меню Math (математика), либо нажать комбинацию клавиш Ctrl+V, либо щелкнуть на кнопке с изображением шаблона матрицы на палитре матричных операций Matrices (матрицы). Любое из этих действий вызывает появление диалогового окна, в котором надо указать размер матрицы, т.е. количество ее строк m и столбцов n. Для векторов один из этих параметров должен быть равен 1. При m=1 получим вектор- столбец, а при n=1- вектор-строку. Матрица является двумерным массивом с числом элементов mxn.
Задание векторов и матриц
В отношении индексированных переменных действуют те же правила присваивания и вывода, что и для обычных переменных. В частности, с помощью операций присваивания можно создать вектор или матрицу заданной размерности и заданного типа без ручного заполнения
Векторные и матричные операторы
Для работы с векторами и матрицами система MathCAD поддерживает ряд операторов и функций. Рассмотрим операторы, придерживаясь следующих обозначений: для векторов -V, для матриц- M, для скалярных величин- Z.
Следует отметить, что в некоторых операторах для ввода используется клавиша Ctrl. Все представленные операторы могут вызываться из палитры матричных операций.
Оператор |
Клавиши |
Описание |
|
V1+V2 |
V1+V2 |
Сложение двух векторов V1 и V2 |
|
V1-V2 |
V1-V2 |
Вычитание двух векторов V1 и V2 |
|
-V |
-V |
Смена знака у элементов вектора V |
|
-M |
-M |
Смена знака у элементов матрицы M |
|
V-Z |
V-Z |
Вычитание из всех элементов вектора V скаляра Z |
|
Z*V, V*Z |
Z*V, V*Z |
Умножение вектора V на скаляр Z |
|
Z*M, M*Z |
Z*M, M*Z |
Умножение матрицы M на скаляр Z |
|
V1*V2 |
V1*V2 |
Скалярное умножение двух векторов V1 и V2 |
|
M*V |
M*V |
Умножение матрицы M на вектор V |
|
M1*M2 |
M1*M2 |
Умножение двух матриц M1 и M2 |
|
V/Z |
Деление всех элементов вектора V на скаляр Z |
||
M/Z |
Деление матрицы M на скаляр Z |
||
M-1 |
M^-1 |
Обращение матрицы M |
|
Mn |
M^n |
Возведение матрицы M в степень n |
|
|V |
Вычисление модуля вектора V |
||
|M |
Вычисление определителя матрицы M |
||
VT |
V Ctrl! |
Транспонирование вектора V |
|
MT |
M Ctrl! |
Транспонирование матрицы M |
|
V1x V2 |
V1 Ctrl *V2 |
Векторное умножение двух векторов V1 и V2 |
|
Alt $ V |
Вычисление суммы элементов вектора |
||
V Ctrl - |
Векторизация вектора V |
||
M Ctrl - |
Векторизация матрицы M |
||
M<n> |
M Ctrl^n |
Выделение n-го столбца матрицы M |
|
Vn |
V [n |
Выделение n го элемента вектора V |
|
Mm,n |
M [(m,n) |
Выделение элемента (m,n) матрицы M |
|
M |
M Crtl+T |
Вставка рисунка, данные которого хранятся в матрице M |
|
V>>, M>> |
Получение комплексно- сопряженного вектора V или матрицы M |
Оператор векторизации
Большинство приведенных операторов достаточно известны из математического аппарата матричных вычислений. Под понятием векторизации подразумевается одновременное проведение некоторой скалярной операции над всеми элементами вектора или матрицы, помеченных операторами векторизации. Это можно понимать и как возможность параллельных вычислений.
Векторизация может изменить смысл математического выражения и даже превратить недопустимое выражение во вполне допустимое. Например, если V-вектор, то выражение cos(V) будет недопустимо, т.к. аргументом функции может быть только скалярная переменная. Однако с оператором векторизации функция cos(V) возвращает вектор, каждый элемент которого есть косинус соответствующего элемента исходного вектора V.
В системе MathCAD в качестве аргумента можно задавать векторы и матрицы. Таким образом, выражение cos(V), где V - вектор становится допустимым и без применения оператора векторизации. В подобных случаях векторизация выполняется автоматически.
Векторизация осуществляется помещением соответствующего выражения под знак длинной стрелки. Если, например, А и В -векторы, то А*В дает скалярное произведение этих векторов. Но это же произведение под векторизации создает новый вектор, каждый элемент есть произведение соответствующих элементов векторов А и В. векторизация позволяет использовать скалярные операторы и функции с массивами.
Векторные функции
MathCAD поддерживает ряд встроенных векторных и матричных функций, которые облегчают решение задач линейной алгебры и других сфер приложения векторов и матриц:
length(V) |
Возвращает число элементов вектора |
|
last(V) |
Возвращает номер последнего элемента |
|
max(V) |
Возвращает максимальный по значению элемент вектора (матрицы) |
|
min(V) |
Возвращает минимальный по значению элемент вектора (матрицы) |
|
Re(V) |
Возвращает вектор действительных частей вектора с комплексными элементами |
|
Im(V) |
Возвращает вектор мнимых частей вектора с комплексными элементами |
|
(i, j, k) |
Единичный полностью антисимметричный тензор третьего ранга, при этом i, j, k должны быть целыми числами от 0 до 2 (или от ORGIN до ORGIN+2, если ORGIN0); результат равен 0, если любые два аргумента равны, 1 - если три аргумента являются четной перестановкой (0, 1, 2), и -1, если три аргумента являются нечетной перестановкой (0,1, 2) |
Матричные функции
Для работы с матрицами также существует ряд встроенных функций:
augment(M1,M2) |
Объединяет две матрицы M1и M2, имеющие одинаковое число строк(объединение идет «бок о бок») |
|
identity(n) |
Создает единичную квадратную матрицу размером n х n |
|
stack(M1,M2) |
Объединяет две матрицы M1и M2, имеющие одинаковое число столбцов, «сажая» M1 над M2 |
|
submatrix(A,ir,jr,ic,jc) |
Возвращает субматрицу, состоящую из всех элементов, содержащихся в строках от ir по jr и столбцов с ic по jc (ir<=jr, ic<=jc) |
|
diag(V) |
Создает диагональную матрицу, элементы которой равны элементам вектора V |
|
matrix(m,n,f) |
Создает матрицу, в которой (i,j)-й элемент равен f(i,j) , где i=0,1,…m , j=0,1,…n, f(i, j)- некоторая функция |
|
Re(M) |
Возвращает матрицу действительных частей матрицы M с комплексными элементами |
|
Im(M) |
Возвращает матрицу мнимых частей матрицы M с комплексными элементами |
Функции, возвращающие специальные характеристики матриц
Следующие функции возвращают специальные характеристики матриц:
cols(M) |
Возвращает число столбцов матрицы M |
|
rows(M) |
Возвращает число строк матрицы M |
|
rank(M) |
Возвращает ранг матрицы M |
|
tr(M) |
Возвращает след(сумму диагональных элементов) квадратной матрицы |
|
mean(M) |
Возвращает среднее значение элементов матрицы M |
|
median(M) |
Возвращает медиану элементов матрицы M |
|
cond1(M) |
Возвращает число обусловленности матрицы, вычисленное в норме L1 |
|
cond2(M) |
Возвращает число обусловленности матрицы, вычисленное в норме L2 |
|
conde(M) |
Возвращает число обусловленности матрицы, вычисленное в норме евклидового пространства |
|
condi(M) |
Возвращает число обусловленности матрицы, основанное на равномерной норме |
|
norm1(M) |
Возвращает норму L1 матрицы M |
|
norm2(M) |
Возвращает норму L2 матрицы M |
|
norme(M) |
Возвращает евклидову норму матрицы M |
|
normi(M) |
Возвращает неопределенную норму матрицы M |
Функции сортировки для векторов и матриц
sort(V) |
Сортировка элементов вектора в порядке возрастания их значения |
|
csort(M,n) |
Перестановка строк матрицы M таким образом, чтобы отсортированным оказался n- й столбец |
|
rsort(M,n) |
Перестановка строк матрицы M таким образом, чтобы отсортированной оказалась n -ая строка |
|
reverse(V) |
Изменяет порядок расположения элементов вектора на противоположный ( начиная с конца) |
Решение систем линейных уравнений
Векторные и матричные операторы и функции системы MathCAD позволяют решать широкий круг задач линейной алгебры. К примеру, если задана матрица A и вектор B для системы линейных уравнений в матричной форме AX=B, то вектор решения можно получить из очевидного выражения X=A-1B.
В системе MathCAD введена встроенная функция lsolve(A,B), которая возвращает вектор X для системы линейных уравнений AX=B при заданной матрице коэффициентов A и векторе свободных членов B. Если уравнений n, то размер вектора B должен быть n, а матрицы- n х n.
Подобные документы
Основные операции над матрицами. Формирование матрицы из файла. Ввод матрицы с клавиатуры. Заполнение матрицы случайными числами. Способы формирования двухмерных массивов в среде программирования С++. Произведение определенных элементов матрицы.
курсовая работа [537,0 K], добавлен 02.06.2015Широкое использование компьютерных и информационных технологий. Концепции типов данных. Алгоритмы сортировки одномерных массивов. Описание двумерного массива Паскаля. Методы доступа к элементам массивов. Индексные, динамические и гетерогенные массивы.
курсовая работа [66,3 K], добавлен 07.12.2010Алгебра матриц: задание численных и символьных элементов вектора и матрицы с и без применения шаблонов, использование векторных и матричных операторов и функций. Операции умножения и деления вектора и матрицы друг на друга и на скалярные числа.
практическая работа [107,0 K], добавлен 05.12.2009Одномерные числовые массивы, образование элементами целочисленного массива невозрастающей последовательности. Программное нахождение суммы элементов каждой возможной строки матрицы и формирование массива из найденных сумм, вывод массива-результата.
лабораторная работа [12,8 K], добавлен 09.01.2011Массив как пронумерованная последовательность величин одинакового типа, обозначаемая одним именем. Расположение в последовательных ячейках памяти, обозначение именем массива и индексом, инициализация. Передача одномерных и двумерных массивов в функцию.
лабораторная работа [32,6 K], добавлен 06.07.2009Понятие вложенных циклов, одномерных и двумерных массивов в программировании. Матрицы и основные действия с ними. Иерархические записи, понятие дерева. Операции с двоичными деревьями, рекурсия, включение и удаление узла. Алгоритм поиска по дереву.
отчет по практике [507,1 K], добавлен 27.12.2011Понятие массива и правила описания массивов в программах на языке С. Рассмотрение основных алгоритмов обработки одномерных массивов. Примеры программ на языке С для всех рассмотренных алгоритмов. Примеры решения задач по обработке одномерных массивов.
учебное пособие [1,1 M], добавлен 22.02.2011Характеристика методов представления заданных чисел в двоичной, шестнадцатеричной, восьмеричной системе счисления. Представление указанного числа в четырехбайтовом IEEE формате. Разработка алгоритма обработки одномерных и двумерных числовых массивов.
контрольная работа [138,9 K], добавлен 05.06.2010Иерархическая структура производного типа данных в языке Паскаль. Определение массива как упорядоченного набора фиксированного количества некоторых значений. Сортировка одномерных и двумерных массивов методом простых обменов, простым выбором и включением.
курсовая работа [48,8 K], добавлен 27.11.2010Разработка и реализация типовых алгоритмов обработки одномерных массивов на языке Delphi. Максимальный и минимальный элемент массива. Значение и расположение элементов массива. Элементы массива, находящиеся перед максимальным или минимальным элементом.
лабораторная работа [12,8 K], добавлен 02.12.2014