以下の連立一次方程式$Ax=b$の例によって,ガウス消去法を説明します。 $$ A= \left( \begin{array}{cccc} 2& 1 & -2 & 3\\ 2 & 0 & 4 & 1 \\ 3 & 0 & 5& 2\\ 1 & -1 & 2 & 1 \end{array} \right) \quad b= \left( \begin{array}{cccc} 11\\ -5\\ -5\\ -4 \end{array} \right) $$
ガウス消去法の基本的な考え方は基本変換によって行列Aをシンプルな形に変形します。 例えば、上三角行列までに変換します。
Aとbを定義します。
nを行列のサイズにします。
A = [2, 1, -2, 3; 2, 0, 4, 1; 3, 0, 5, 2; 1, -1, 2, 1]
b=[11;-5;-5;-4]
n=size(A,1)
x=A\b
A*[1;2;3;4]
A = [2, 1, -2, 3; 2, 0, 4, 1; 3, 0, 5, 2; 1, -1, 2, 1];
%対角の第1成分からの作業
i = 1;
%----------- 第2行の変形 -----------
j=2; %作業の行の番号
alpha = -A(2,1)/A(1,1);
for k=1:n %k:各列の番号
A(j,k) = A(j,k) + alpha*A(1,k);
end
%変形後のA
A
第1行のalpha倍を第3行に加えます。
%----------- 第3行の変形 -----------
j=3;
alpha = -A(3,1)/A(1,1);
for k=1:n
A(j,k) = A(j,k) + alpha*A(1,k);
end
%変形後のA
A
第1行のalpha倍を第4行に加えます。
%----------- 第4行の変形 -----------
j=4;
alpha = -A(4,1)/A(1,1);
for k=1:n
A(j,k) = A(j,k) + alpha*A(1,k);
end
%変形後のA
A
上記のコードをforループでまとめてください。
A = [2, 1, -2, 3; 2, 0, 4, 1; 3, 0, 5, 2; 1, -1, 2, 1];
%対角の第1成分からの作業
i = 1;
for j=?:?
alpha = ??;
for k=1:n
A(j,k) = A(j,k) + alpha*A(??,k);
end
end
%変形後のA
A
Aの行列の第2行を使って、行列の2番目の列の対角以下の成分を0に変形します。
%対角の第2成分による作業
i = 2;
%----------- 第3行の変形 -----------
j=3;
alpha = -A(3,2)/A(2,2)
for k=2:n
A(j,k) = A(j,k) + alpha*A(2,k);
end
%変形後のA
A
%----------- 第4行の変形 -----------
j=4;
alpha = -A(4,2)/A(2,2)
for k=2:n
A(j,k) = A(j,k) + alpha*A(2,k);
end
%変形後のA
A
上記のコードをループで書き直して、ガウス消去法のコードを完成せよ。