【線形代数03】AX=bの消去法と4つの解の表示

   この記事はまだMITコースのメモをまとめたものです。まず、行列 A を行簡略化した形式に変換するプロセスに焦点を当て、消去法を示し、次にさまざまなランク r の下で AX = b の解を議論します。


消去法表示

   引き続き例から始めます。既知の行列 A は次のとおりです。
A = [ 1 2 3 4 5 6 ] A = \begin{bmatrix} 1 &2 & 3 \\ 4 & 5 & 6 \end{bmatrix}=[142536

最初の部分 AX =0

   まず方程式AX = 0 AX =0を考えてみましょう。× _=0、基本的な行変換を適用します:
A = [ 1 2 3 4 5 6 ] ⇒ [ 1 2 3 0 − 3 − 6 ] ⇒ [ 1 2 3 0 1 2 ] ⇒ [ 1 0 − 1 0 1 2 ] = RA = \begin{bmatrix} 1 &2 & 3 \\ 4 & 5 & 6 \end{bmatrix} \Rightarrow \begin{bmatrix} 1 &2 & 3 \\ 0 & -3 & -6 \end{bmatrix} \Rightarrow \ begin{bmatrix} 1 &2 & 3 \\ 0 &1 & 2\end{bmatrix} \Rightarrow \begin{bmatrix} 1 &0 & -1 \\ 0 & 1 & 2 \end{bmatrix} =R=[142536[102 33 6[102132[100112=R
   行削減された R 行列でIII、残りはFFF._ _ AX=0に従うAX=0× _=0、そのような結果は簡単に見つかりますx 1 x_1バツ1そしてx 2 x_2バツ2メイン列が配置されている行 (つまり、II)I ) は未知のものに対応しますが、x 3 x_3バツ3は自由変数であり、FFに対応しますF._ _ 次の表記の場合
X ( pivot ) = [ x 1 x 2 ] X ( free ) = [ x 3 ] X(pivot) = \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} \ \ \ X(free) = \begin{bmatrix} x_3 \end{bmatrix}X (ピボット) _ _ _ _=[バツ1バツ2   × 無料_=[バツ3]
   すると、AX = 0 に対応AX=0× _=0 は次のように記述できます:
[ IF ] [ X ( ピボット ) X ( フリー ) ] = IX ( ピボット ) + FX ( フリー ) = 0 \begin{bmatrix} I & F \end{bmatrix} \begin{bmatrix} X (ピボット) \\ X(フリー) \end{bmatrix} =IX(ピボット)+FX(フリー)=0[[X (ピボット) _ _ _ _X (無料) _=I X (ピボット) _ _ _ _+FX 無料_=0
   シフトの後は、次のようになります。
X (ピボット) = − FX (フリー) X(ピボット)=-FX(フリー)X (ピボット) _ _ _ _=FX ( free )これは私の意見では非常に洗練された式です
   。つまり、元の方程式の解は次の形式になるはずです:
x 1 = x 3 x 2 = − 2 x 3 x_1 = x_3 \\ x_2 = -2x_3バツ1=バツ3バツ2=−2x _ _3
   matlab で関数 rref を使用して、ガウス ジョルダン消去法で縮小された行階層形式を取得します

>> A = [1,2,3;4,5,6];
>> rref(A)

ans =

     1     0    -1
     0     1     2

   solve 関数を使用して、解が正しいかどうかを検証することもできます

>> syms x1;syms x2; syms x3;
>> result = solve([x1+2*x2+3*x3,4*x1+5*x2+6*x3]); % result作为struct存在
>> result.x1
 
ans =
 
x3
 
>> result.x2
 
ans =
 
-2*x3

2 番目の部分 AX = b

    さらに一歩進めて、AX = b AX=bを考えてみましょう。× _=bの場合、列 b が 7 と 8 であると仮定した方がよいため、A の拡張行列を考慮し、基本的な行変換を適用します。つまり、
[ 1 2 3 ∣ 7 4 5 6 ∣ 8 ] ⇒ [ 1 2 3 ∣ 7 0 − 3 − 6 ∣ − 20 ] ⇒ [ 1 2 3 ∣ 7 0 1 2 ∣ 20 / 3 ] ⇒ [ 1 0 − 1 ∣ − 19 / 3 0 1 2 ∣ 20 / 3 ] \begin {bmatrix} 1 &2 & 3 & | & 7 \\ 4 & 5 & 6 & | & 8\end{bmatrix} \Rightarrow \begin{bmatrix} 1 &2 & 3 & | & 7 \\ 0 & -3 & - 6 & | & -20 \end{bmatrix} \Rightarrow \begin{bmatrix} 1 &2 & 3 & | & 7 \\ 0 & 1 & 2 & | & 20/3\end{bmatrix} \Rightarrow \begin{bmatrix } 1 &0 & -1 & | & -19/3 \\ 0 & 1 & 2 & | & 20/3\end{bmatrix}[14253678[102 33 67 20[10213273月20日[10011219/33月20日]
    したがって、解は
x 1 = x 3 − 19 / 3 x 2 = − 2 x 3 + 20 / 3 x_1 = x_3-19/3 \\ x_2 = -2x_3+20/3 となります。バツ1=バツ319/3バツ2=−2x _ _3+20/3 は、
    ソルブ関数を使用してその正しさを検証することもできます。

>> syms x1;syms x2; syms x3;
>> result = solve([x1+2*x2+3*x3-7,4*x1+5*x2+6*x3-8]);  % 修改求解方程
>> result.x1
 
ans =
 
x3 - 19/3
 
>> result.x2
 
ans =
 
20/3 - 2*x3

解決策の議論

    消去法で示された例に従って、方程式を解くためのガウス・ジョルダン消去法についてはすでに浅く理解しましたが、次に、一般的な解の状況、つまり AX = b AX = b について説明します× _=異なるランク r でのbの解(A は am × nm\times n)メートル×nの一般行列。matlab では、行列のランクは、rank 関数を使用して取得できます

>> A = [1,2,3;4,5,6];
>> rank(A)

ans =

     2

ケース 1: r = m < n

    この場合、方程式の数は未知数の数よりも少ないため、解は無限に存在するはずです。そしてこのとき、行列の階数が r なので、自由ベクトルの数は nr となり、解空間は次元 nr の超平面になるはずです上に示した例を例にとると、このときの解空間は3次元空間に1次元の直線として描くことができ、図とコードは以下のようになります。画像の説明を追加してください

% 解空间为n-r的超平面
% 定义
syms x1; syms x2;
y1 = x1+19/3; y2 = 10/3-0.0000001*x1-0.5*x2; % 避免默认将x2读成x1
% fsurf画平面
fsurf(y1,EdgeColor='g'); hold on; fsurf(y2,EdgeColor='b'); 
% 画交线
hold on;
fplot3(x1,-2*x1-6,x1+19/3,Color = 'r',Linewidth = 2)
% 标注
legend('x_1+19/3=x_3','10/3 - x_2/2=x_3','交线');
xlabel('x_1'); ylabel('x_2');zlabel('x_3');

ケース 2: r = n < m

    実際、もう一度 A の転置を見て、
AT = [ 1 4 2 5 3 6 ] ⇒ [ 1 4 0 − 3 0 − 6 ] ⇒ [ 1 0 0 1 0 0 ] = [ I 0 ] = RA^ { T} = \begin{bmatrix} 1 &4 \\ 2 & 5 \\ 3 & 6 \end{bmatrix} \Rightarrow \begin{bmatrix} 1 &4 \\ 0 & -3 \\ 0 & -6 \end{ bmatrix } \Rightarrow \begin{bmatrix} 1 &0 \\ 0 & 1 \\ 0 & 0 \end{bmatrix} = \begin{bmatrix} I \\ 0 \end{bmatrix} =RT= 123456 10043 6 100010 =[0=この時点でR を
    見つけることができ、行からRRRの上部は単位行列III、下の部分は 0 行列です。このとき、方程式の数は未知数の数よりも多く、実際には右側の結果項目の b 列の要件が提示されます。つまり、 ATA^Tを満たすかどうかです。Tの列の線形結合によりたとえば、次の方程式の場合、特別な解[ 1 , 1 ] T [1,1 ]^T[ 1 1 ]T
x 1 + 4 x 2 = 5 2 x 1 + 5 x 2 = 7 3 x 2 + 6 x 3 = 9 x_1+4x_2 = 5 \\ 2x_1 + 5x_2 = 7 \\ 3x_2+6x_3 = 9バツ1+4x _2=52倍_1+5 ×2=73x _2+6x _3=9
   つまり、現時点では列 b はATA^{T}Tが位置する列空間内の特定のベクトルにはこの場合、リクエストは 3 次元空間ATA^Tにある b 列に相当します。二次元平面上のT。対応する図を描くこともできます。図とコードは次のとおりです。画像の説明を追加してください

% b列所在的平面

% 画向量图
quiver3(0,0,0,1,2,3,'m'); hold on; quiver3(0,0,0,4,5,6,'black'); % 基底
hold on;  quiver3(0,0,0,5,7,9,'r');  % 满足条件的b
V1 = [1;2;3]; V2 = [4;5;6];
% 求法向量
Vn = cross(V1,V2);
% 画平面
syms x1;syms x2;syms x3;
plane = -(x1*Vn(1)+x2*Vn(2))/Vn(3);
hold on;
fsurf(plane);
% 标注
legend('基底列1','基底列2','满足条件的b','所在平面');
xlabel('b_1'); ylabel('b_2'); zlabel('b_3');

ケース 3: r = n = m

   直感的には、これは最初の 2 つのケースの共通部分となるため、未知数の数が方程式の数と等しい場合、解は 1 つだけ存在しますr = n = mr = n = mなので、解の一般形式を導き出すことができます。r=n=mなので、この時点では正方行列は反転可能です。方程式の両側の A の逆関数:
AX = b ⇒ A − 1 AX = A − 1 b ⇒ IX = A − 1 b ⇒ X = A − 1 b AX=b \Rightarrow A^{-1} AX= A^{-1}b \Rightarrow IX=A^{-1}b \Rightarrow X=A^{-1}b× _=b1A ×_=1b _IX _=1b _バツ=1 bA − 1 b A^{-1}bの形で解が
   得られます。1 bRRがわかります。Rは単位行列II。_ 例も示します。
B = [ 1 2 3 4 ] b = [ 5 6 ] B = \begin{bmatrix} 1 &2 \\ 3 & 4 \end{bmatrix} \ \ \ \ b= \begin{bmatrix} 5 \ \6 \end{b行列}B=[1324    b=[56]
   の場合、計算結果は
X = B − 1 b = [ − 2 1 1.5 − 0.5 ] [ 5 6 ] = [ − 4 4.5 ] X = B^{-1}b= \begin{bmatrix} -2 & 1 となります。 \ \ 1.5 &-0.5\end{bmatrix} \begin{bmatrix} 5 \\ 6 \end{bmatrix}= \begin{bmatrix} -4 \\ 4.5 \end{bmatrix}バツ=B1b _=[21.51 0.5[56=[44.5]
   ソルブ関数を使用して正確さを検証します。

>> syms x1; syms x2;
>> result = solve([x1+2*x2-5,3*x1+4*x2-6]);
>> ans1 = result.x1,ans2 = result.x2
 
ans1 =
 
-4
 
 
ans2 =
 
9/2

ケース 4: r < m、r < n

    これは、列と行の間に線形相関があることを示しています。前の導出から、この時点の R 行列は次の形式になることが簡単にわかります: R = [ IF 0 0 ] R = \begin{
bmatrix} I &F \ \0 & 0 \end{bmatrix}R=[0F0] b = 0 b=0
    の場合b=0には解 0 がなければならず、b ≠ 0 の場合は b \ne 0b=0の場合、列 b が行列が配置されている列空間に存在する必要があることを満たしている必要があります。
[ IF 0 0 ] [ X ( ピボット ) X ( フリー ) ] = [ X ( ピボット ) + FX ( フリー ) 0 ] \begin{bmatrix} I &F \\ 0 & 0 \end{bmatrix} \begin{bmatrix} X(ピボット) \\ X(フリー) \end{bmatrix} = \begin{bmatrix} X(ピボット) +FX(フリー) \\ 0 \end{bmatrix}[0F0[X (ピボット) _ _ _ _X (無料) _=[X (ピボット) _ _ _ _+FX 無料_0]
    つまり、このとき b のmmm行にはm − r mr がメートルr行は残りrrr行の線形結合がある場合、解が存在し、無限に多くの解が存在しますが、そうでない場合、解は存在しません。もちろん、解条件があるかどうかの式は、行列が配置されている列空間に b 列が配置される必要があるという 2 番目の場合の式と同等です
    たとえば、行列 B と対応する列 b を
B = [ 1 2 2 4 ] b = [ 3 6 ] B = \begin{bmatrix} 1 &2 \\ 2 & 4 \end{bmatrix} \ \ \ \ のように変更します。 b= \begin{bmatrix} 3 \\ 6 \end{bmatrix}B=[1224    b=[36]
    現時点では解があり、その解は[ 1 , 1 ] T [1,1 ]^T[ 1 1 ]T ,[ 3 , 0 ] T [3,0 ]^T[ 3 0 ]T[ 0 , 1.5 ] T [0,1.5 ]^T[ 0 ,1.5 ]Tなど、b の要件は 2 次元平面上のb 2 = 2 b 1 b_2=2b_1b2=2b _1、解空間はx 2 = − 0.5 x 1 + 1.5 x_2=-0.5x_1+1.5 を満たす必要があります。バツ2=- 0.51+1.5 を参照すると、これら 2 つの空間が互いに正確に垂直であることが簡単にわかります。対応する画像表示とコードは次のとおりです。

画像の説明を追加してください

% 解空间和b列所在空间

syms x1;
% b列所在的直线
fplot(2*x1);
% 解空间所在直线
hold on;
fplot(-x1/2+1.5);
% 标注
xlim([0,3.5]); ylim([0,3]);
% 求交点
hold on;
plot(0.6,1.2,'r+');
legend('b列所在的直线','解空间所在直线','交点(0.6,0.8)');


    最後に表を使って理解数を整理します。

ランクR 解の数
r = m < n 無限に多くの解決策
r = n < m 0 溶液または 1 溶液
r = n = m 1 つのソリューション
r < m,r < n 0 個の解または無限に多くの解

おすすめ

転載: blog.csdn.net/weixin_47305073/article/details/126086462