Как создать трехдиагональную матрицу в R
Матрица представляет собой комбинацию ячеек, расположенных вместе в табличном формате. Матрица содержит элементы, принадлежащие одному типу данных. В матрице mxn элементов, где m — количество строк, а n — количество столбцов соответственно.
Трехдиагональная матрица — это матрица, которая имеет следующие атрибуты:
- Все элементы на главной диагонали должны быть ненулевыми.
- Все элементы на первой нижней диагонали должны быть ненулевыми.
- Все элементы на первой верхней диагонали должны быть ненулевыми.
- Все остальные элементы должны быть равны нулю.
Создание трехдиагональной матрицы основано на том, что разница в номере строки и столбца для ненулевых элементов меньше, чем равна 1.
Создание трехдиагональной матрицы на языке программирования R
Метод 1: использование итерации
Цикл for можно использовать для перебора элементов матрицы. Внешний цикл for используется для перебора строк матрицы, а внутренний цикл for используется для перебора столбцов. Поэтому необходимо две петли. Затем номер строки и столбца проверяется с использованием условия if. Сравнивается абсолютная разница номеров строки и столбца. Если значение больше константы 1, то элемент матрицы перезаписывается со значением 0, иначе 1 или любым другим числом.
R
# creating a matrixmat<-matrix(,nrow=4,ncol=4) print("Empty matrix")print(mat) # looping over rowsfor (row in 1:nrow(mat)) { # looping over columns for (col in 1:ncol(mat)) { # checking if absolute difference # between the row and column is # greater than 1 if(abs(row-col) > 1){ # assigning the value of 0 mat[row,col] = 0 } else{ # assigning value 1 if not satisfactory mat[row,col] = 1 } }}print("Tridiagonal Matrix")print(mat) |
Выход
[1] "Empty matrix"
[,1] [,2] [,3] [,4]
[1,] NA NA NA NA
[2,] NA NA NA NA
[3,] NA NA NA NA
[4,] NA NA NA NA
[1] "Tridiagonal Matrix"
[,1] [,2] [,3] [,4]
[1,] 1 1 0 0
[2,] 1 1 1 0
[3,] 0 1 1 1
[4,] 0 0 1 1Объяснение :
Первоначально создается пустая матрица со значениями NA путем указания размерностей. Затем значения переписываются на основе приведенной выше формулы.
Способ 2: Использование методов адресации
Трехдиагональную матрицу можно создать с помощью простых методов адресации. Матрица может быть создана с использованием простой формулы абсолютной разности. Если разница между номером соответствующей строки и столбца матрицы больше 1, то значение этого элемента эквивалентно 0. В противном случае значение элемента не равно нулю.
Для любого номера строки и столбца матричного мата можно проверить следующую формулу для матрицы:
abs(row(mat) - col(mat)) > 1
Все значения, удовлетворяющие приведенной выше формуле, эквивалентны 0.
R
# specifying the number of rowsrows <- 4 # creating a matrixmat <- matrix(1:16, nrow = rows )# printing matrixprint("Matrix")print(mat) # checking the absolute difference# is greater than 1 or not # setting that value equal to 0mat[abs(row(mat) - col(mat)) > 1] = 0 # print tridiagonal matrixprint("Tridiagonal Matrix")print(mat) |
Выход
[1] "Matrix"
[,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
[3,] 3 7 11 15
[4,] 4 8 12 16
[1] "Tridiagonal Matrix"
[,1] [,2] [,3] [,4]
[1,] 1 5 0 0
[2,] 2 6 10 0
[3,] 0 7 11 15
[4,] 0 0 12 16