LU分解版本2 選主元 非原地儲存

2021-06-18 19:00:00 字數 969 閱讀 3039

lu分解版本2_選主元、非原地儲存

function ex2_7_2

%對係數矩陣a進行lu分解【自己寫的版本,沒有採用原地儲存方式,進行選主元】

%將l矩陣和u矩陣輸出,

a = [10 -7 0;

-3 2 6;

5 -1 5];

%對係數矩陣a進行lu分解,最終得到l 和 u矩陣

%初始化l和u矩陣.

l = [0 0 0;

0 0 0;

0 0 0]

u = [0 0 0;

0 0 0;

0 0 0]

[n,n] = size(a);

for k = 1:1:n

%%% 在計算乘子之前,進行選主元

[m,q] = max(abs(a(k:n,k)));

% q返回的是乙個行號,q的值是乙個相對的值,當k=1時,q的值是相對k-1,而言的,

% 當k等於2的時候,q的值是相對於k-1而言的。

q = q + k - 1;

% 選主元

if(k ~= q)

% 當k!=q之後,說明主元所在列的最大值不是當前行,需要進行行交換,

% a(k,:) = a(q,:);===>這樣寫行交換的**居然不對!不是有種方法不需要,中間變數嗎!

b = a(k,:);

a(k,:) = a(q,:);

a(q,:) = b;

end%%

i = k+1:n;

%計算乘子,將乘子填入到l矩陣的第(2、3)行,第1列

l(i,k) = a(i,k)/a(k,k);

%更新係數矩陣a,就是將a的第一行乘以相應的乘子的相反數,加到第二行和第三行

j = k:n;

a(i,j) = a(i,j) - l(i,k)*a(k,j);

endu = a;

l u

Python實現部分主元法下LU分解

矩陣分析與應用 小作業1 實現部分主元法下的lu分解 by苗棟 程式大體介紹 引入了numpy便於對陣列的操作 尋找出一列中絕對值最大的元素作為主元並進行陣列的行交換,並將l主對角線元素置為1 構造兩個for迴圈,取出l和a對應的值並儲存 l j,i a j,i a i,i a j,a j,l j,...

Guass列選主元消去法和三角分解法

最近數值計算學了guass列主消元法和三角分解法解線性方程組,具體原理如下 1 guass 列選主元消去法對於ax b 1 消元過程 將 a b 進行變換為 其中是上三角矩陣。即 k從1到n 1 a 列選主元 選取第k 列中絕對值最大元素 作為主元。b 換行 c 歸一化 d 消元 2 回代過程 由解...

GSL 系列 6 線性代數 2 LU 分解

關於 lu 分解的背景知識介紹,參見 gsl 系列 6 線性代數 1 背景知識 1 lu 分解 節,本篇只說明相關函式 轉置矩陣物件儲存著一列索引。第 j jj 個數為 k kk 表示轉置矩陣第 j jj 列是相應單位矩陣的第 k kk 列,定義如下 gsl permutation.h struct...