R语言求解矩阵极大无关组并检验是否线性相关

刚上手R一个月,前两天为了交作业实现了极大无关组的求解,看网上并没有相关的代码所以分享一下。不足之处还有很多,希望各位大佬多多指教~

求解的大体思想就是化阶梯形,并且把每个阶梯的第一个元素的索引取出,利用索引得到原矩阵的一组极大无关组,验证是否线性无关只需要利用索引得到化为阶梯形后的子矩阵,子矩阵的秩是否为Min{行秩,列秩}

求解方法改进了一下选取列主元的高斯消去法,在其基础上为列主元的坐标定位指针[i, j],这样可以判断对该列进行高斯消去之后,下一列的主元位置和该列的主元位置,是在同一行还是在同一对角线上。倘若这两列线性相关则在同一行平移,若线性无关则对角线移动。

先简单介绍一下列主元高斯消元法,估计高斯看了棺材板会盖不住的。

在化阶梯形的过程中,比如从A[1, 1](不等于0)开始,将A[i, 1](i = 2, 3, 4....)的元素都化为0,这个过程就是在实现高斯消元。在消元的过程中,被用来消其他元素的那个元素叫做主元。而列主元的高斯消去法指的是每一列消元时,都选择本列绝对值最大的元素作为主元,并把那一行换到指针所在的位置。

为什么在列主元的高斯消去法里没有提指针的事请呢?因为它常用来实现n阶方阵的LU分解,指针默认方向是对角线,不用考虑横向平移的过程。

话不多说分享代码~

 

清空变量,导入数据清洗包dplyr

rm(list = ls())
library(dplyr)

定义行交换函数

# Reorder rows
rarrange = function(dtf, i1, i2){
  dtf
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值