R語言求解矩陣極大無關組並檢驗是否線性相關

2021-09-14 04:45:35 字數 2418 閱讀 7133

剛上手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)

主題函式部分,tg.tick是主元所在的行標,貌似which可以直接獲取行標行交換更方便

(為了邏輯而放棄了美觀,在函式體裡加了注釋,原諒乙隻菜雞)

# function

mlig = function(mtx)else

}# if column principal not equal to mdtf[i, j], no arrange operations

if (as.numeric(colmax) != mdtf[i, j])else{}

# if column principal not equal to zero

if (colmax != 0)

index = c(index, j)

i = i + 1

j = j + 1

}else

} index = na.omit(index)

result.dtf = select(as.data.frame(mtx), index)

check.dtf = mdtf

return(list(result.dtf = result.dtf, check.dtf = check.dtf))

}

用兩個矩陣檢驗效果

# effect test

mlig(matrix(1:24, 4, 6))

mlig(matrix(sample(1:10, 30, replace = t), 5, 6))

執行結果為

> mlig(matrix(1:24, 4, 6))

$result.dtf

v1 v2

1 1 5

2 2 6

3 3 7

4 4 8

$check.dtf

v1 v2 v3 v4 v5 v6

1 4 8 12 16 20 24

2 0 3 6 9 12 15

3 0 0 0 0 0 0

4 0 0 0 0 0 0

> mlig(matrix(sample(1:10, 30, replace = t), 5, 6))

$result.dtf

v1 v2 v3 v4

1 4 5 6 7

2 9 7 3 8

3 7 2 7 9

4 9 4 4 9

5 7 3 8 4

$check.dtf

v1 v2 v3 v4 v5 v6

1 4 5.00 6.00000 7.000000 6.000000 4.0000000

2 0 -4.25 -10.50000 -7.750000 -4.500000 -5.0000000

3 0 0.00 13.17647 9.058824 6.647059 7.9411765

4 0 0.00 0.00000 -5.812500 -1.316964 0.7098214

5 0 0.00 0.00000 0.000000 -5.222734 -1.4562212

怎麼根據矩陣判斷極大無關組 向量組的極大無關組與秩

定義 1.若向量組 則稱 為 的乙個極大無關組.巖寶小提示 全由零向量構成的向量組是唯一沒有極大無關組的向量組.也就是說.凡含有非零向量的向量組必有極大無關組.定理1.乙個向量組若含有非零向量,則任二極大無關組所含的向量個數相等.定義2.設 是含有非零向量的乙個向量組,則其乙個極大無關組中所含向量個...

3 3 極大線性無關組以及 向量的秩

定義 1 向量組 alpha 1,alpha 2,dots alpha s 的乙個部分組滿足兩個條件 1 這個部分組線性無關 2 從向量組的其餘向量 如果存在的話 中任取乙個向量添進來,得到的新的部分組都線性相關 稱為這個向量組的乙個極大線性無關組。設向量組 alpha 1,alpha 2,dots...

R語言 規劃求解優化ROI

今天看到一篇文章介紹如何用excel建模對roi 進行規劃求解。藍鯨的 分析筆記 涉及多元非線性規劃分析求解,r 中提供了rdonlp2 包。library rdonlp2 ppar.l c 7,0,0 par.u c inf,0.04,inf 自變數定義域約束 fn function x 目標函式...