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)
输出
[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,否则,元素值就是非零。
对于矩阵mat的任何行号和列号,可以通过以下公式对矩阵进行检查。
abs(row(mat) - col(mat)) > 1
所有满足上述公式的数值,都等同于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)
输出
[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