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...