Федеральное государственное образовательное бюджетное учреждение
Высшего образования
«ФИНАН
«ФИНАНСОВЫЙ УНИВЕРСИТЕТ ПРИ ПРАВИТЕЛЬСТВЕ
РОССИЙСКОЙ ФЕДЕРАЦИИ»
Департамент анализа данных, принятия решений и финансовых технологий
С.А.Зададаев
Алгебра матриц (RStudio)
Учебно-методические рекомендации для проведения
семинара №28 по компьютерному практикуму
C ИНДИВИДУАЛЬНЫМИ ЗАДАНИЯМИ СТУДЕНТАМ
Для бакалавров направления 38.03.01 «Экономика»
Электронное издание
Москва 2018
Алгебра матриц (RStudio)
В данном разделе мы будем рассматривать следующие темы алгебры матриц в R: линейные операции над матрицами (сложение матриц и умножение их на числа), умножение матриц и их транспонирование, вычисление определителей, определение ранга матриц и их размерности, нахождение обратных матриц, произвольные покоординатные вычисления.
Объявим в R три матрицы:
и ,
вспомнив при этом основные конструкции и способы их задания:
|
|
# Заполнить матрицу 3x3 числами от 1 до 9 по строкам:
A <- matrix(1:9, nrow=3, ncol=3, byrow = TRUE)
A # Вывести на экран матрицу A
E <- diag(3) # Записать в переменную E единичную матрицу размера 3x3
E # Вывести на экран матрицу E
# Построить матрицу из двух столбцов: первый – повторы числа 2 три раза, второй – вектор с координатами (-3,0,1):
B <- cbind(rep(2, 3), c(-3, 0, 1))
B # Вывести на экран матрицу B
Выделим набранный скрипт и запустим компилятор R, указав мышью на клавишу Run или нажав Ctrl + Enter. В результате получим на экране консоли объявленные матрицы (см. рис.1).
рис.1
Убедитесь, что матрицы введены корректно.
Добавим к введенным матрицам A, E и B еще одну матрицу S:
.
Где W* - номер студента по журналу
Такую матрицу, как указывалось ранее, проще всего ввести в таблице Excel, затем скопировать ее в буфер обмена и запустить следующий код в R:
# Чтение из буфера обмена excel-формата:
Data <- read.table("clipboard", h=FALSE, dec=",", sep = "\t")
S <- data.matrix(Data) # Объявить таблицу чисел Data матрицей S в R
S # Вывести на экран матрицу S
Результат представлен на рис.2.:
Рис.2.
Можно заметить, что столбцы матрицы оказались проименованными, т.к. из буфера обмена данные были считаны в формате data.frame, что приводит к обязательному различию в названиях столбцов, пусть даже и формальному V1,V2,...
При этом обращение к отдельным элементам матриц, включая столбцы и строки, выглядит знакомым образом:
A[1, 2] # Элемент a12 матрицы A (первая строка, второй столбец)
|
|
B[2, ] # Вторая строка матрицы B
S[, 4] # Четвертый столбец матрицы S (хотя и будет выведен на экран как строка!)
S[, c(4,5)] # Матрица, содержащая лишь 4-ый и 5-ый столбцы матрицы S
S[, -c(4,5)] # Матрица S, из которой удалены столбцы с номерами 4 и 5
Все приводимые далее примеры относятся к введенным матрицам A, B, Е и S.
Размерность матрицы
Задание 1. Для матрицы A вывести ее размерность
Решение. Составим следующий код определения размерности матриц:
n <- nrow(A) # Количество строк матрицы A, записанное в переменную n
m <- ncol(A) # Количество столбцов матрицы A, записанное в переменную m
n; m # Вывести на экран размерность матрицы A (n x m)
paste("dim(A) =", n, "х", m) # Склейка: красиво вывести на экран размерность матрицы A
Обратите внимание на оператор paste, выводящий на экран консоли текстовую строку, состоящую из четырех склеенных кусков "dim(A) =", n, "х" и m.