Министерство образования и науки РФ Ставропольский государственный аграрный университет Экономический факультет Кафедра Информационных систем и технологий Учебно-методический комплекс по дисциплине «Информационные технологии в экономике» Методическое пособие к лабораторному занятию по учебной дисциплине: «Информационные технологии в экономике» Для студентов специальности: 080100.62 Экономика (бакалавр) Лабораторное занятие №13. Матричные вычисления в Mathcad Обсуждена на заседании кафедры ПИ «___» 201__ года Протокол №___ Ставрополь 2011 ЛАБОРАТОРНАЯ РАБОТА № 13 Матричные вычисления в Mathcad Цель работы – научиться создавать различные виды массивов и производить вычисления с ними в системе Mathcad. Методические рекомендации Массивами называют упорядоченные последовательности чисел, или элементов массива. Доступ к любому элементу массива возможен по его индексу, т.е. номеру в последовательности чисел. Пример. 14 a : 1.4 4.7 где a – массив, a0 = 14, a1 = 1.4, a2 = 4.7 – элементы массива. В Mathcad можно выделить два типа массивов: векторы (одноиндексные массивы), матрицы (двухиндексные) и тензоры (многоиндексные); ранжированные переменные – это разновидность вектора, в котором соседние элементы отличаются друг от друга на одну и ту же величину. В отличие от вектора, доступ к отдельным элементам ранжированной переменной невозможен. Действия с этими переменными осуществляются как с обычными переменными, при этом вычисления выполняются параллельно над всеми элементами ранжированной переменной. Номер первого элемента массива определяется значением системной переменной ORIGIN, которое по умолчанию равно 0. Для того, чтобы нумерация массивов начиналась с 1, нужно в окне Mathcad присвоить этой переменной значение 1. Mathcad допускает обращение к отдельным элементам матриц и векторов с помощью нижних индексов и к столбцам матриц с помощью верхних индексов. Нижние индексы вводятся с помощью кнопки Хn панели Матрица или клавишей открывающей квадратной скобки ( [). Нижние индексы, если их несколько, отделяются друг от друга запятой. Верхние индексы вводятся кнопкой М<> панели Матрица или комбинацией клавиш Ctrl+6. 1. Создание ранжированных переменных, векторов и матриц Создание ранжированных переменных. 1.1. Ввести имя переменной и оператор присваивания. 1.2. Нажать кнопку m..n панели Матрица и в появившиеся местозаполнители ввести начальное и конечное значение переменной. Шаг изменения переменной при этом будет равен 1. 1.3. Если необходимо другое значение шага, поместить синий уголок после первого числа, ввести запятую и значение второго числа (обратите внимание, второго числа, а не шага изменения переменной). Можно ввести такую переменную и без использования панели. Символ из двух точек при этом вводится клавишей точка с запятой (;). Пример использования ранжированной переменной. x= 0.1 0.2 0.3 0.4 x:= 0.1,0.2..0,4 sin(x) = 0.1 0.199 0.296 0.389 Создание матриц и векторов с помощью панели Матрица. 1.4. Ввести имя переменной и оператор присваивания (при необходимости). 1.5. Нажать кнопку панели с изображением матрицы (или комбинацию клавиш Ctrl+M). 1.6. В появившемся диалоговом окне указать количество строк и столбцов и нажать кнопку ОК. 1.7. Ввести необходимые данные. При необходимости изменить размерность матрицы нужно установить синий уголок на элемент, где нужно вставить или удалить строки и/или столбцы, и выполнить пункты 1.5-1.7, нажимая в диалоговом окне кнопку Вставить или Удалить. Количество строк или столбцов при этом может быть и нулевым. Создание матриц и векторов с помощью функции matrix(M,N,f). где M и N – количество строк и столбцов; f – функция, определяющая значение элемента в зависимости от номера строки и столбца. Пример. f(x,y):= 0.5x + y A:= matrix(3,3,f) 0 1 2 A 0.5 1.5 2.5 1 2 3 Создание матриц и векторов с помощью ранжированных переменных. При использовании ранжированных переменных необходимо учитывать, что по умолчанию нумерация элементов массивов начинается с нуля. Пример (аналогичный предыдущему примеру). i:=0..2 j:=0..2 Bi,j :=0.5i + j 0 1 2 B 0.5 1.5 2.5 1 2 3 С помощью вставки компонент. 1.8. Выбрать пункт меню Вставка/Компонент (имя переменной набирать не нужно). 1.9. Выбрать из списка компонент Input Table, нажать кнопку Finish. 1.10. В появившийся местозаполнитель ввести имя переменной. 1.11. Ввести в таблицу необходимые данные. При необходимости можно изменить размеры таблицы (обратите внимание, что новые столбец или строка добавляются только при перемещении указателя мыши на ширину столбца или высоту строки). Пример. 0 1 2 C:= 1 2 5 8 0 1 4 7 2 3 6 9 Единичная матрица размера NxN создается с помощью функции identity(N). Пример. D:= indentity(3) 1 0 0 D 0 1 0 0 0 1 Диагональная матрица, на главной диагонали которой находятся элементы вектора ν, создается с помощью функции diag(ν). Пример. 1 v : 2 3 1 0 0 diag(v) 0 2 0 0 0 31 2. Основные операции с матрицами Сложение и вычитание; Умножение; Сложение, вычитание со скаляром; Умножение и деление на скаляр; Транспонирование матрицы; Вычисление определителя; Нахождение обратной матрицы; Возведение в целую степень (применяется к квадратным матрицам); Скалярное произведение векторов (используется кнопка (х) панели Калькулятор); Векторное произведение векторов (используется кнопка x x y панели Матрица); Модуль вектора; Сумма элементов вектора; Векторизация – служит для проведения однотипной операции над всеми элементами массива без применения циклов. Например, перемножить соответствующие элементы двух матриц или векторов (поэлементное произведение), вычислить одну и ту же функцию от каждого из элементов вектора. Матрицы и векторы при этом должны иметь одинаковый размер. При вводе оператора векторизации необходимо, чтобы линии ввода (синий уголок) охватывали все выражение, подвергаемое векторизации. Все перечисленные операции производятся с помощью обычных арифметических операторов или панели Матрица и, за исключением векторизации, не требуют особых комментариев. Примеры векторизации. 1 2 3 4 2 7 4 4 21 4 5 6 1 6 9 4 30 54 7 8 9 2 4 6 14 32 54 1 6 6 2 3 6 3 5 15 Сравните (скалярное произведение векторов): 1 6 2 3 27 3 5 3. Основные матричные функции Выделение подматриц: submatrix(A,ir,jr,ic,jc) – выделение подматрицы матрицы А между строками ir, jr и столбцами ic, jc включительно; А<i> – выделение i-ого столбца матрицы А. Слияние матриц: augment(A,B,C,…) – слева направо; stack(A,B,C,…) – сверху вниз. Размер матриц: rows(A) – количество строк; cols(A) – количество столбцов; length(v) – число элементов вектора; last(v) – индекс последнего элемента вектора. Сортировка матриц (по возрастанию): sort(v) – сортировка элементов вектора; csort(A,i) – сортировка строк по столбцу i; rsort(A,i) – сортировка столбцов по строке i; reverse(v) – перестановка элементов вектора в обратном порядке. Кроме перечисленных имеются также функции для вычисления норм, чисел обусловленности, ранга, собственных чисел и собственных значений матриц, а также матричных разложений. Сведения об этих функциях при необходимости можно найти в литературе и справочной системе Mathcad. 4. Решение систем линейных уравнений Матричным методом АХ=В. Пример. Решить систему уравнений 2Х1+3Х2+5Х3=7 7Х1+9Х2+Х3=3 6Х1+4Х2+3Х3=4 2 3 5 A : 7 9 1 6 4 3 7 B : 3 4 -0.202 X 0.349 1.271 X : A 1 B По правилу Крамера. 4.1. Создать матрицы заменой каждого из столбцов матрицы А на столбец свободных членов. 4.2. Вычислить определители. 4.3. Найти решение системы. Пример. A1: A A1 0 : B A2: A 1 A2 : B A3: A A3 2 : B : A 1 0.202 1: A1 2: A2 2 0.349 3: A3 3 1.271 С помощью встроенной функции lsolve. Пример. X:= lsolve(A,B) -0.202 X 0.349 1.271 Задание по работе Выполните матричные вычисления, оформите лабораторную работу и сохраните результаты выполнения в своей папке на диске. Задание 1. Создайте 3 матрицы из 4 строк и 6 столбцов: матрицу А с помощью панели Матрица, введя в нее произвольные числа от 0 до 10 с одним знаком после запятой; матрицу В, каждый элемент которой определяется как сумма номера строки, номера столбца и номера варианта; матрицу С с помощью компонента Input Table, введя в нее произвольные двузначные числа и квадратную матрицу F (с произвольными числами) с помощью ранжированной переменной. Задание 2. Получите результаты следующих действий: сложения матриц А и В; вычитания матриц С и А; умножения матрицы В на номер варианта, умноженный на 2; деления матрицы С на номер варианта, умноженный на 2; возведения матрицы F в 3 степень; поэлементного умножения матриц А и В (с помощью векторизации). Задание 4. Создайте два вектора u и ν из 4 строк и 1 столбца, введя в них произвольные числа. Задание 5. Найдите скалярное произведение этих векторов; модуль вектора u; сумму элементов вектора ν. Задание 6. Получите вектор w, равный векторному произведению векторов u и ν. Произведите сортировку вектора w. Задание 7. Создайте матрицу R из 3 строк и 3 столбцов и вектор q из 3 строк и 1 столбца, введя в них произвольные числа от -10 до +10. Вычислите определитель матрицы R, и если он равен нулю, то изменением вводимых чисел добейтесь, чтобы определитель был отличен от нуля. Решите систему линейных уравнений RХ=q матричным методом; по привалу Крамера; функцией lsolve и сравните результаты. Вопросы к лабораторной работе № 13 1. 2. 3. 4. 5. 6. Типы массивов в Mathcad. Способы создания ранжированных переменных, векторов и матриц. Перечислите основные операции с матрицами. Что такое векторизация? Привести примеры. Перечислите основные матричные функции. Способы решения систем линейных уравнений. Доцент кафедры Информационных систем и технологий к.т.н. Д.В. Шлаев