R语言 如何在R中创建三对角矩阵

R语言 如何在R中创建三对角矩阵

矩阵是以表格形式排列在一起的单元格的组合。矩阵包含属于同一数据类型的元素。矩阵中有m x n个元素,其中m是行的数量,n是列的数量。

三对角矩阵是一个具有以下属性的矩阵。

  • 主对角线上的所有条目都应该是非零的。
  • 第一条对角线下的所有元素都应该是非零的。
  • 第一条对角线上的所有元素都应该是非零的。
  • 所有其余的元素都应该是零。

创建三对角矩阵是基于这样一个概念:非零元素的行数和列数之差小于等于1。

在R编程语言中创建一个三对角矩阵

方法1:使用迭代

可以用for循环来迭代矩阵中的元素。一个外层for循环用来迭代矩阵的行,一个内层for循环用来迭代列。因此,需要两个循环。然后使用if条件验证行和列的数量。行号和列号的绝对差值被比较。如果该值大于常数1,那么矩阵中的元素将被重写为0,否则为1或任何其他数字。

# 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)
Bash

输出

[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
Bash

解释:

最初,通过指定尺寸创建一个带有NA值的空矩阵。然后根据上面的公式重新写出数值。

方法2:使用寻址方法

可以使用简单的寻址方法来创建一个三对角矩阵。矩阵可以使用简单的绝对差分公式来创建。如果矩阵各自的行号和列号之差大于1,那么这个元素值就相当于0,否则,元素值就是非零。

对于矩阵mat的任何行号和列号,可以通过以下公式对矩阵进行检查。

abs(row(mat) - col(mat)) > 1
Bash

所有满足上述公式的数值,都等同于0。

# 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)
Bash

输出

[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
Bash

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册