自旋为-1、+1的粒子方格移动的R语言矩阵实现
在R中构建粒子移动方向矩阵
直接用R的向量化运算即可完成矩阵构建,无需循环,代码如下:
# 定义参数 L <- 4 N <- L * L # 生成0到N-1的索引序列 i <- 0:(N-1) # 计算四个方向对应的索引 right <- ((i %/% L) * L) + ((i + 1) %% L) down <- (i + L) %% N left <- ((i %/% L) * L) + ((i - 1) %% L) up <- (i - L) %% N # 组合成目标矩阵,每行对应一个i,列依次为右、下、左、上 movement_matrix <- cbind(right, down, left, up) # 可选:为行列添加名称增强可读性 rownames(movement_matrix) <- paste0("i=", i) colnames(movement_matrix) <- c("右", "下", "左", "上") # 查看结果 print(movement_matrix)
关键细节说明
- R原生支持
%/%(地板除法)和%%(取模运算),行为和Python中对应的运算符一致,比如负数取模会返回正结果,完全匹配你的计算需求。 - 利用R的向量化特性,直接对整个索引向量计算,比循环实现更高效简洁。
- 最终矩阵为16行(对应N=16个方格位置)、4列(四个移动方向),每个元素是粒子移动后的目标索引值。
内容的提问来源于stack exchange,提问作者Homer Jay Simpson
相关产品推荐
相关产品推荐

