高斯消元中按列消元比按行消元更為直觀且計算更加方便,更加易於理解和程式設計。因為按行消元過程中對一行進行消元需要根據待消去元素所在列呼叫不同的對角元素,而按列消元中對一列進行消元只需要呼叫一次對角元素。因此,本實驗將使用「逐行規格化,按列消元」的含規格化高斯消元法。
「逐行規格化,按列消元」的特點:先根據第i行對角元素對第i行元素進行規格化,在對i列對角元以下元素進行消元。
對稱稀疏矩陣技術
對稱稀疏矩陣技術是指選擇演算法和編制程式時,盡可能避免儲存稀疏矩陣中的零元素和避免對零元素進行運算同時充分利用矩陣的對稱性的技術。本實驗主要運用對稱稀疏矩陣的運算技術,不考慮對稱稀疏矩陣的儲存問題。
利用對稱稀疏矩陣技術的進行含規格化高斯消元法
進行高斯消元過程中為了充分利用對稱稀疏技術,需要在每一輪消元過程中需要找出將參加運算的的元素中的非零元素,每行元素在消元前後、規格化之前,其對角元以右非零元素的交叉元素與對角元以下非零的消元元素的數值相等、位置對稱。而在規格化之後,對角元以右非零的交叉元素均除以對角元素,此時雖然與對角元以下的消元元素數值不等,但其位置仍然對稱。可以利用這個特點增加一倍查詢非零元素的速度。
按列消元的目的將矩陣化簡成上三角元素,將對角元以下元素變成零。根據四角規則,在消去每i列元素時,如果該列中的第j個元素元素為零元素,則不必對j行進行消去運算;同時如果第i行中的第k個元素為零元素,則對第i行進行消去運算時該行的第k個元素不變,不需要進行運算。
function
gauss_symmetry
(a)%按列消元
if nargin < 1
a=[-18.750
15.000
3.75000;
15.000 -32.500
5.000
5.000
7.500;
3.750
5.000 -38.750
30.000
0; 0
5.000
30.000 -38.750
3.750;
07.500
03.750 -11.250];
end% clc
[~,n]=size(a);
b = ones(n);
b0 = zeros(1,n);
for k = 1:n
b = ones(n);
%判斷非零元素,對於第k輪消去時,第k行中的零元素出現在第t個元素,則將b陣的第t列和第t行置零
for t = k:n
%對列進行查詢並對符合要求的行進行標記
if a(t,k) == 0
b(t,:) = b0;
endendfor t = k:n
%對行進行查詢並對符合要求的列進行標記
if a(k,t) == 0
b(:,t) = b0';
endend b;
%利用稀疏性進行規格化
for t = k+1:n
%判斷是否需要規格化
if b(k,t)==1
a(k,t) = a(k,t)/a(k,k);
endendif
abs(a(k,k))>1e-6
a(k,k) = 1;
end%利用稀疏性進行規格化
for p = k+1:n
for q = p:n
%判斷是否需要進行四角規則運算
if b(p,q) == 1
a(p,q) = a(p,q)-a(k,q)*a(p,k);
a(q,p) = a(p,q);
endend a(p,k) = 0;
endend a
end
對稱矩陣 稀疏矩陣的壓縮儲存
對稱矩陣 稀疏矩陣的壓縮儲存 1 對稱矩陣的壓縮儲存 對稱矩陣顧名思義就是符合行和列的個數相同,並且矩陣中儲存的資料上三角和下三角中對應位置上的元素值是相等的。為了能夠減少儲存的空間,我們可以只儲存上三角矩陣 或者下三角矩陣中的元素,這樣就能夠極大地節省空間的浪費。下面是對稱矩陣的示列 假設對稱矩陣...
矩陣 對稱矩陣及稀疏矩陣的壓縮儲存
1.稀疏矩陣 稀疏矩陣及其壓縮儲存 pragma once include include using namespace std templatestruct triple template class sparsematrix sparsematrix t arr,size t row,size...
對稱矩陣 稀疏矩陣及矩陣的逆置與加法
矩陣之對稱矩陣 稀疏矩陣逆置與加法 一 對稱矩陣及壓縮儲存 由於對稱矩陣對角線上下相同,因此我們可以採取壓縮儲存。我們先了解一下壓縮儲存,對稱矩陣儲存時只需要儲存上三角或下三角的資料,所以最多儲存n n 1 2個資料。我們就知道了我們需要空間的大小。如下 includeusing namespace...