Как создать трехдиагональную матрицу в R

Опубликовано: 9 Января, 2023

Матрица представляет собой комбинацию ячеек, расположенных вместе в табличном формате. Матрица содержит элементы, принадлежащие одному типу данных. В матрице mxn элементов, где m — количество строк, а n — количество столбцов соответственно.

Трехдиагональная матрица — это матрица, которая имеет следующие атрибуты:

  • Все элементы на главной диагонали должны быть ненулевыми.
  • Все элементы на первой нижней диагонали должны быть ненулевыми.
  • Все элементы на первой верхней диагонали должны быть ненулевыми.
  • Все остальные элементы должны быть равны нулю.

Создание трехдиагональной матрицы основано на том, что разница в номере строки и столбца для ненулевых элементов меньше, чем равна 1.

Создание трехдиагональной матрицы на языке программирования R

Метод 1: использование итерации

Цикл for можно использовать для перебора элементов матрицы. Внешний цикл for используется для перебора строк матрицы, а внутренний цикл for используется для перебора столбцов. Поэтому необходимо две петли. Затем номер строки и столбца проверяется с использованием условия if. Сравнивается абсолютная разница номеров строки и столбца. Если значение больше константы 1, то элемент матрицы перезаписывается со значением 0, иначе 1 или любым другим числом.

R




# creating a matrix
mat<-matrix(,nrow=4,ncol=4)
  
print("Empty matrix")
print(mat)
  
# looping over rows
for (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 rows
rows <- 4
  
# creating a matrix
mat <- matrix(1:16,
              nrow = rows
             )
# printing matrix
print("Matrix")
print(mat)
  
# checking the absolute difference
# is greater than 1 or not 
# setting that value equal to 0
mat[abs(row(mat) - col(mat)) > 1] = 0
  
# print tridiagonal matrix
print("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