---
title: "Lecture 10: Układy równań liniowych"
lecture_number: 10
has_solutions: true
has_exercises: true
file_format: mystnb
kernelspec:
  name: sagemath
  display_name: SageMath
---

```{include} ../_includes/sagecell-loader.md
```

# Układy równań liniowych

```{code-cell} sage
:tags: [remove-input]
A1 = matrix([
[2, -2, 1,0 ],
[0,  2, 4, -1 ],
[2,  0, 5, -1 ]
])
B1 = matrix([-1,3,2]).transpose()
AB1 = A1.augment(B1)
AO1 = AugmentMatrixWithZeros(A1)
```

## Definicja

:::{narration}

Niech $\kk$ będzie ciałem. Niech $n,m\in\nn .$
:::

:::{prf:definition}

**Równanie liniowe** {index}`równanie liniowe` nad ciałem $\kk$ z niewiadomymi (lub zmiennymi) $x_1,x_2, \ldots, x_n\in\kk$
definiujemy jako formę zdaniową zmiennej $(x_1, \ldots, x_n)\in\kk^n$ danej przez

```{math}
\varphi_\alpha(x_1,\ldots,x_n) : \alpha_1 x_1 + \alpha _2 x_2 + \ldots + \alpha_n x_n = \beta,
```

gdzie $\alpha_1, \alpha_2, \ldots\alpha_n, \beta$ są danymi
elementami ciała $\kk .$

:::

:::{prf:definition}

**Układ równań liniowych** {index}`układ równań liniowych`
$\EqLin$ z niewiadomymi (lub zmiennymi) $x_1,x_2, \ldots, x_n\in\kk$
definiujemy jako
koniunkcję $m$ równań liniowych i oznaczamy

```{math}
:label: eq:Uklad

\begin{aligned}
  \varphi_{\EqLin}(x_1,\ldots,x_n) : \Uklad{
 a_{11}x_1 + a_{12}x_2 + \ldots+ a_{1n} x_n  =   b_1 \\
 a_{21}x_1 + a_{22}x_2 +\ldots+ a_{2n}x_n=   b_2 \\
  \vdots  \  \\
 a_{m1}x_1 + a_{m2}x_2 + \ldots + a_{mn}x_n  =   b_m
  },
\end{aligned}
```

gdzie $\forall i\in\Set{1,\ldots, m} \forall j \in \Set{1, \ldots, n}\, a_{ij}, b_i \in \kk$ są danymi
elementami.

**Współczynnikami** {index}`układ równań liniowych; współczynniki`
układu równań liniowych $\EqLin$ nazywamy elementy $a_{ij} .$

**Wyrazami wolnymi** {index}`układ równań liniowych; wyrazy wolne`
układu równań liniowych $\EqLin$ nazywamy elementy $b_{i} .$

:::

:::{prf:definition}

**Rozwiązaniem układu równań** {index}`układ równań liniowych; rozwiązanie`
$\EqLin$ nazywamy
uporządkowany układ $(s_1,\ldots,s_n)\in\kk^n$, który spełnia formę zdaniową $\varphi_{\EqLin},$ czyli taki, że

```{math}
\varphi_{\EqLin}(s_1,\ldots,s_n) \qquad \text{jest zdaniem prawdziwym.}
```

:::

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplaySystem(LinearEqs(AB1))
content = rf"""
{body_01}
"""
glue('sageglue_10_0', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)

```

:::{prf:example}

Układ {glue:}`sageglue_10_0`
ma na przykład rozwiązania
$(0,0,-1,-7),$ $(1,1,-1,-5)$,
gdyż każde z nich spełnia wszystkie równania.
To jednak nie są wszystkie rozwiązania.
Dla odmiany $(0,0,-1,-3)$ nie jest rozwiązaniem,
gdyż nie spełnia np. 2. równania.
:::

:::{prf:definition}

**Zbiorem rozwiązań** {index}`układ równań liniowych; zbiór rozwiązań`
układu równań $\EqLin$ nazywamy
wykres formy zdaniowej $\varphi_{\EqLin}$ oznaczanym

```{math}
\Solutions{\EqLin} = \Set{(x_1,\ldots,x_n)\in\kk^n : \varphi_{\EqLin}(x_1,\ldots,x_n)}.
```

:::

:::{narration}

Celem tego wykładu jest podanie metody znajdowania zbioru rozwiązań
dowolnego układu równań liniowych.
:::

## Postać macierzowa

:::{prf:definition}

**Macierzą współczynników** {index}`układ równań liniowych; macierz!współczynników`
układu równań $\EqLin$ nazywamy macierz

```{math}
A=[a_{ij}] \in \MSet{m}{n}{\kk}.
```

**Macierzą** {index}`układ równań liniowych; macierz!wyrazów wolnych`
(lub **wektorem** {index}`układ równań liniowych; wektor!wyrazów wolnych`)
**wyrazów wolnych** układu równań $\EqLin$
nazywamy macierz

```{math}
B = [b_i] \in \MSet{m}{1}{\kk}.
```

:::

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplaySystem(LinearEqs(AB1))
content = rf"""
{body_01}
"""
glue('sageglue_10_1', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplayMatrix(A1)
body_02 = DisplayMatrix(B1)
content = rf"""
A & = {body_01},
  &
B & = {body_02}.
"""
glue('sageglue_10_2', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

:::{prf:example}
:label: examp:Dwa

Dla układu {glue:}`sageglue_10_1`
macierz współczynników i wektor wyrazów wolnych to
odpowiednio:

```{glue} sageglue_10_2
```

:::

:::{prf:definition}

**Macierzą** {index}`układ równań liniowych; macierz!niewiadomych`
(lub **wektorem** {index}`układ równań liniowych; wektor!niewiadomych`)
**niewiadomych** układu równań $\EqLin$
nazywamy macierz

```{math}
X = [x_j] \in \MSet{n}{1}{\kk}.
```

:::

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplayMatrix(A1)
body_02 = DisplayMatrix(matrix(LinearEqsVariables(AB1)).transpose())
body_03 = DisplayMatrix(matrix(LinearEqsLHS(AB1)).transpose())
content = rf"""
A\cdot X
= {body_01}
\cdot {body_02}
= {body_03}.
"""
glue('sageglue_10_3', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)

```

:::{prf:example}

Zauważmy, że
dla macierzy z {prf:ref}`examp:Dwa`

```{glue} sageglue_10_3
```

:::

:::{prf:proposition}

Układ równań $\EqLin$ dany przez {eq}`eq:Uklad`
jest równoważny równaniu

```{math}
:label: eq:PostacMacierozwa

\begin{aligned}
A\cdot X = B.
\end{aligned}
```

:::

:::{prf:corollary}
:label: col:Rozwiazanie

Przy założeniach z twierdzenia
uporządkowany układ $(s_1,\ldots,s_n)\in\kk^n$
jest rozwiązaniem $\EqLin$ wtedy i tylko wtedy, gdy

```{math}
A\cdot S = B, \qquad \text{gdzie} \qquad S = [s_j]\in \MSet{n}{1}{\kk}.
```

:::

:::{prf:definition}

**Postacią macierzową** {index}`układ równań liniowych; postać macierzowa`
układu równań liniowych $\EqLin$ nazywamy
równanie macierzowe {eq}`eq:PostacMacierozwa`.

**Rozwiązaniem w postaci macierzowej** {index}`układ równań liniowych; rozwiązanie!w postaci macierzowej`
układu  $\EqLin$ nazywamy macierz
$S $ z {prf:ref}`col:Rozwiazanie`.

**Zbiór rozwiązań** równania macierzowego {eq}`eq:PostacMacierozwa` oznaczymy przez
$\SolutionsMatrix{A,B}.$

:::

```{code-cell} sage
:tags: [remove-input]
AB1S1 = matrix([0,1,1,0]).transpose()
AB1S2 = matrix([1,2,1,5]).transpose()
AB1S = AB1S1.augment(AB1S2)
```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplayMatrix(AB1S1.transpose())
body_02 = DisplayMatrix(AB1S2.transpose())
content = rf"""
S_1 = {body_01}^T,
S_2 = {body_02}^T
\in \SolutionsMatrix{{A,B}}
"""
glue('sageglue_10_4', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplayMatrix(A1)
body_02 = DisplayMatrix(AB1S)
body_03 = DisplayMatrix(A1 * AB1S)
content = rf"""
{body_01}
\cdot
{body_02}
=
{body_03}.
"""
glue('sageglue_10_5', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplayVector(AB1S1)
content = rf"""
{body_01}
"""
glue('sageglue_10_6', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplayVector(AB1S2)
content = rf"""
{body_01}
"""
glue('sageglue_10_7', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

:::{prf:example}

W celu sprawdzenia czy

```{glue:} sageglue_10_4
```

są rozwiązaniami w postaci macierzowej
dla danych z {prf:ref}`examp:Dwa`,
możemy wykonać mnożenie

```{glue:} sageglue_10_5
```

Ponieważ:

- pierwsza kolumna macierzy z prawej strony jest różna od $B$, to $S_1$ nie jest rozwiązaniem

- druga kolumna tej macierzy jest równa $B$,
  więc $S_2$ jest rozwiązaniem
  w postaci macierzowej.

To oczywiście oznacza, że {glue:}`sageglue_10_6` nie jest, zaś {glue:}`sageglue_10_7` jest
rozwiązaniem układu $\EqLin .$
:::

## Układy Cramera

:::{prf:definition}

**Układem Cramera** {index}`układ równań liniowych; Cramera`
nazywamy układ równań liniowych $\EqLin$,
jeśli jednocześnie:

- liczba równań jest równa liczbie niewiadomych
- macierz współczynników układu ma wyznacznik różny od zera.
:::

:::{prf:theorem} Cramera

Niech $\EqLin$ będzie układem Cramera równań liniowych
o macierzach: współczynników $A$ i wyrazów wolnych $B .$
Wówczas $\EqLin$ ma dokładnie jedno rozwiązanie
i jest ono dane wzorami Cramera

```{math}
\begin{aligned}
x_1 & = \dfrac{\det W_{1}}{\det A}, &
x_2 & = \dfrac{\det W_{2}}{\det A}, &
& \ldots&
x_n & = \dfrac{\det W_{n}}{\det A}.
\end{aligned}
```

gdzie $A$ jest macierzą współczynników układu $\EqLin$, zaś $W_{j}$
jest macierzą otrzymaną z macierzy $A$ poprzez zastąpienie
$j$-tej kolumny macierzy $A$, kolumną wyrazów wolnych $B .$
:::

```{code-cell} sage
:tags: [remove-input]
A2 = matrix([[1,0,-1], [0,1,-1], [1,1,0]])
B2 = matrix([-2,-1,3]).transpose()
AB2 = A2.augment(B2)
A2c1 = AB2.matrix_from_columns([3, 1, 2])
A2c2 = AB2.matrix_from_columns([0, 3, 2])
A2c3 = AB2.matrix_from_columns([0, 1, 3])
```

::::{exercise}
:label: lec-10-ex-01
:class: [exercise]

Rozwiążmy układ równań
$\Uklad{ x_1  - x_3  = -2 \\x_2 -x_3 = -1 \\   x_1 + x_2  = 3}.$

:::{note}
:class: [see-problem]

Pomoże rozwiązać {numref}`prob-12-ex-01`.
:::

::::

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplayMatrix(A2)
content = rf"""
A = {body_01}
"""
glue('sageglue_10_8', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplayMatrix(B2)
content = rf"""
B = {body_01}
"""
glue('sageglue_10_9', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = latex(A2.determinant())
content = rf"""
\det A = {body_01} \neq 0
"""
glue('sageglue_10_10', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplayDet(A2c1)
body_02 = latex(A2c1.determinant())
body_03 = DisplayDet(A2c2)
body_04 = latex(A2c2.determinant())
body_05 = DisplayDet(A2c3)
body_06 = latex(A2c3.determinant())
content = rf"""
\det W_1 & = {body_01} = {body_02},
&
\det W_2 & = {body_03} = {body_04},
&
\det W_3 & = {body_05} = {body_06},
"""
glue('sageglue_10_11', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = latex(A2c1.determinant() * A2.determinant() ^ -1)
body_02 = latex(A2c2.determinant() * A2.determinant() ^ -1)
body_03 = latex(A2c3.determinant() * A2.determinant() ^ -1)
content = rf"""
x_1 & = \frac{{\det W_1}}{{\det A}} = {body_01},
&
x_2 & = \frac{{\det W_2}}{{\det A}} = {body_02},
&
x_3 & = \frac{{\det W_3}}{{\det A}} = {body_03}.
"""
glue('sageglue_10_12', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

:::{solution-without-reference}
:class: [solution] dropdown

Macierz współczynników tego układu to {glue:}`sageglue_10_8`;

macierz wyrazów wolnych {glue:}`sageglue_10_9`.

Ponieważ {glue:}`sageglue_10_10`,
oraz

```{glue:} sageglue_10_11
```

zatem rozwiązaniem układu jest:

```{glue:} sageglue_10_12
```

:::

## Układy jednorodne

:::{prf:definition}

**Jednorodnym** {index}`układ równań liniowych; jednorodny`
nazywamy układ równań liniowych $\EqLin$,
jeśli jego macierz wyrazów wolnych jest zerowa. Innymi słowy jest to układ równań,
który ma postać macierzową

```{math}
A\cdot X = \oo.
```

:::

:::{prf:remark}

1. Każdy układ liniowy jednorodny ma co najmniej jedno rozwiązanie, czyli

   ```{math}
   x_1 = \ldots = x_n =0.
   ```

2. Jedynym rozwiązaniem jednorodnego układu Cramera jest
   rozwiązanie zerowe.

:::

::::{prf:proposition}
:label: stw:LiczbaPramJednor

Niech $\EqLin$ będzie jednorodnym układem $m\in\nn$ równań liniowych
z macierzą współczynników $A\in\MSet{m}{n}{\kk} .$
Wówczas:

1. jeśli $\rank A = n$, to $\EqLin$ ma dokładnie jedno rozwiązanie (t.j. $x_1 = \ldots = x_n =0$).

2. jeśli $\rank A < n$, to $\EqLin$
   ma nieskończenie wiele rozwiązań zależnych
   od $n-\rank A$ parametrów.

W szczególności jeśli $\rank A = m$, to liczba parametrów jest równa

:::{container} center-text
(***liczba zmiennych***) $-$ (***liczba równań***).
:::

::::

:::{prf:remark}

Jeśli $\rank A = n$, to $n - \rank A = 0 .$
Zatem, układ ma dokładnie jedno rozwiązanie
wtedy i tylko wtedy, gdy jest zero parametrów rozwiązań.
:::

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplaySystem(LinearEqs(AO1))
content = rf"""
{body_01}
"""
glue('sageglue_10_13', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)

```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

m1 = AddMultipleOfRowLatex(A1, 3, 1, -1)
m2 = RemoveRowLatex(A1, 3)
body_01 = DisplayMatrix(A1)
content = rf"""
A = {body_01}
{m1}
{m2}.
"""
glue('sageglue_10_14', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

:::{prf:example}
:label: examp:GlownyJednorodny

Liczba parametrów rozwiązania układu równań {glue:}`sageglue_10_13` jest równa 2. Istotnie, wykonujemy operacje
elementarne na wierszach macierzy

```{glue:} sageglue_10_14
```

Ponieważ ostatnia macierz jest w postaci schodkowej,
to jej rząd jest równy liczbie niezerowych wierszy, czyli $2.$
Liczba parametrów układu to $n - \rank A  = 4 - 2 = 2 .$
:::

:::::{container} side-by-side
::::{container} column-two-third
:::{prf:definition}

**Macierzą schodkową zredukowaną** {index}`macierz; schodkowa zredukowana`
(lub **w postaci schodkowej zredukowanej**) {index}`macierz; w postaci schodkowej zredukowanej`
nazywamy macierz $A\in\MSet{m}{n}{\kk}$, która spełnia warunki:

- $A$ jest w postaci schodkowej
- w każdym wierszu $A$ pierwszy niezerowy wyraz jest równy 1, i inne wyrazy w jego kolumnie są zerami.
:::
::::

::::{container} column-one-thirds
:::{prf:example}

$$
\begin{aligned}
\Macierz{
1 & 3 & 0 & 0 & -1 & 0  \\
0 & 0 & 1 & 0 & 0  & -4 \\
0 & 0 & 0 & 1 & 2  & 3
}
\end{aligned}
$$
:::
::::
:::::

```{code-cell} sage
:tags: [remove-input]
B1 = matrix([[0 , 2, 3],[0,0,0]])
B1b = matrix(QQ, [0 , 2, 3])
B2 = matrix([[1 , 3, 4],[0,0,1]])
B3 = matrix([[0 , 2, -2],[0,0,-3],[0,0,0]])
B3b = matrix(QQ, [[0 , 2, -2],[0,0,-3]])
B4 = matrix(QQ, [[1, 0 , -3, 2],[0,-2,4,0],[0,0,0,1]])
```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplayMatrix(B1)
body_02 = DisplayMatrix(B2)
body_03 = DisplayMatrix(B3)
body_04 = DisplayMatrix(B4)
content = rf"""
B_1 & = {body_01} , &
B_2 & = {body_02} , \\
B_3 & = {body_03} , &
B_4 & = {body_04}.
"""
glue('sageglue_10_15', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)

```

:::{prf:example}
:label: examp:Schodkowe

Przykłady macierzy, które nie są w postaci schodkowej zredukowanej:

```{glue} sageglue_10_15
```

:::

:::{prf:proposition}

Przy pomocy operacji elementarnych
na wierszach,
każdą macierz
można przekształcić do postaci schodkowej zredukowanej.
:::

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

m1 = RemoveRowLatex(B1, 2)
m2 = RescaleRowLatex(B1b, 1, 2^(-1))
m3 = AddMultipleOfRowLatex(B2, 1, 2, -4)
m4 = RemoveRowLatex(B3, 3)
m5 = RescaleRowLatex(B3b, 1, 2^(-1))
m6 = RescaleRowLatex(B3b, 2, -3^(-1))
m7 = AddMultipleOfRowLatex(B3b, 1, 2, 1)
m8 = AddMultipleOfRowLatex(B4, 1, 3, -2)
m9 = RescaleRowLatex(B4, 2, -2^(-1))
body_01 = DisplayMatrix(B1)
body_02 = DisplayMatrix(B2)
body_03 = DisplayMatrix(B3)
body_04 = DisplayMatrix(B4)
content = rf"""
B_1 & = {body_01}
{m1}
{m2}
\\
B_2 & = {body_02}
{m3}
\\
B_3 & = {body_03}
{m4}
{m5}\\ &
{m6}
{m7}
\\
B_4 & = {body_04}
{m8}\\ &
{m9}
"""
glue('sageglue_10_16', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

:::{prf:example}
:label: examp:SchodkoweZredukowane

Dla macierzy z {prf:ref}`examp:Schodkowe` można
wykonać następujące operacje elementarne
prowadzące macierz do postaci schodkowej zredukowanej:

```{glue:} sageglue_10_16
```

:::

:::{prf:theorem}

Niech $A\in\MSet{m}{n}{\kk}$ będzie macierzą współczynników
jednorodnego układu równań liniowych $\EqLin .$
Niech $A'$ będzie wynikiem skończonej liczby wierszowych operacji elementarnych na $A$:

1. pomnożenie wiersza przez stałą różną od $0$
2. zamiana wierszy miejscami
3. dodanie do wiersza kombinacji liniowej innych wierszy
4. skreślenie zerowego wiersza
5. skreślenie wiersza liniowo zależnego od innych wierszy.

Załóżmy, że $A'$ jest macierzą współczynników nowego jednorodnego układu $\EqLin' .$
Wówczas zbiory rozwiązań $\EqLin$ i $\EqLin'$ są sobie równe:
$\Solutions{\EqLin} =\Solutions{\EqLin'} .$

:::

:::{prf:remark}

Ponieważ wiersze $A$ odpowiadają lewym stronom równań układu $\EqLin$,
to
operacje elementarne z powyższego twierdzenia odpowiadają odpowiednim operacjom
na równaniach układu $\EqLin .$ Wystarczy zamiast odpowiedniej odmiany słowa "wiersz"
wstawić odpowiednią odmianę słowa "równanie".
:::

### Metoda eliminacji

:::{narration}

**Metoda eliminacji** rozwiązywania jednorodnego układu równań $\EqLin$,
polega na przekształceniu, zgodnie z powyższym twierdzeniem, jego macierzy
współczynników $A$ do postaci schodkowej zredukowanej $C .$
Następnie należy zapisać jednorodny układ równań
o macierzy współczynników $C$ i z niego odczytać rozwiązanie.
:::

```{code-cell} sage
:tags: [remove-input]
A1 = matrix([
[2, -2, 1,0 ],
[0,  2, 4, -1 ],
[2,  0, 5, -1 ]
])
A1b = matrix(QQ, [[2,-2,1,0],[0,2,4,-1]])
```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplaySystem(LinearEqs(AO1))
content = rf"""
{body_01}.
"""
glue('sageglue_10_17', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

::::{exercise}
:label: lec-10-ex-02
:class: [exercise]

Rozwiążmy układ równań: {glue:}`sageglue_10_17`

:::{note}
:class: [see-problem]

Pomoże rozwiązać {numref}`prob-12-ex-02`, {numref}`prob-12-ex-06`.
:::

::::

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

m1 = AddMultipleOfRowLatex(A1, 3, 1, -1)
m2 = RemoveRowLatex(A1, 3)
m3 = AddMultipleOfRowLatex(A1b, 1, 2, 1)
m4 = RescaleRowLatex(A1b, 1, 2^(-1))
m5 = RescaleRowLatex(A1b, 2, 2^(-1))
body_01 = DisplayMatrix(A1)
content = rf"""
A & = {body_01}
{m1}
{m2}
\\ &
{m3}
{m4}
{m5}
"""
glue('sageglue_10_18', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplaySystem(LinearEqs(matrix(QQ, [[1, 0, 5 / 2, -1 / 2, 0], [0, 1, 2, -1 / 2, 0]])))
content = rf"""
{body_01}.
"""
glue('sageglue_10_19', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

:::{solution-without-reference}
:class: [solution] dropdown

Wykonujemy operacje elementarne na wierszach
macierzy współczynników tego układu:

```{glue} sageglue_10_18
```

Otrzymujemy układ {glue:}`sageglue_10_19`
Rozwiązanie to
$
\left\{\begin{array}{l}
 x_1 = -\frac 5 2 t_1 + \frac 1 2 t_2 \\
 x_2 = -2t_1 + \frac 1 2 t_2  \\
 x_3 = t_1\\
 x_4 = t_2
  \end{array}\right. ,
  t_1, t_2 \in \rr.
$
:::

```{code-cell} sage
:tags: [remove-input]
C1 = matrix(QQ, [0 , 2, 3])/2
C2 = matrix([[1 , 3, 0],[0,0,1]])
C3 = matrix(QQ, [[0 , 1, 0],[0,0,1]])
C4 = matrix(QQ, [[1, 0 , -3, 0],[0,1,-2,0],[0,0,0,1]])
```

::::{exercise}
:label: lec-10-ex-03
:class: [exercise]

Rozwiążmy jednorodne układy równań liniowych
o macierzach współczynników
z {prf:ref}`examp:Schodkowe`

:::{note}
:class: [see-problem]

Pomoże rozwiązać {numref}`prob-12-ex-02`, {numref}`prob-12-ex-06`.
:::

::::

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplayAnswer(LinearEqsAnswer(AugmentMatrixWithZeros(C3)))
content = rf"""
{body_01}
"""
glue('sageglue_10_20', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplayMatrix(B1)
content = rf"""
B_{{1}} = {body_01}
"""
glue('sageglue_10_32', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
body_02 = DisplaySystem(LinearEqs(AugmentMatrixWithZeros(B1)))
content = rf"""
{body_02}.
"""
glue('sageglue_10_33', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
body_03 = DisplayMatrix(C1)
content = rf"""
C_{{1}} = {body_03}
"""
glue('sageglue_10_34', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
body_04 = DisplaySystem(LinearEqs(AugmentMatrixWithZeros(C1)))
content = rf"""
{body_04}.
"""
glue('sageglue_10_35', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
body_05 = DisplayInLine(LinearEqsParameters(AugmentMatrixWithZeros(C1)))
content = rf"""
{body_05} \in \rr.
"""
glue('sageglue_10_36', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)

body_06 = DisplayMatrix(B2)
content = rf"""
B_{{2}} = {body_06}
"""
glue('sageglue_10_37', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
body_07 = DisplaySystem(LinearEqs(AugmentMatrixWithZeros(B2)))
content = rf"""
{body_07}.
"""
glue('sageglue_10_38', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
body_08 = DisplayMatrix(C2)
content = rf"""
C_{{2}} = {body_08}
"""
glue('sageglue_10_39', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
body_09 = DisplaySystem(LinearEqs(AugmentMatrixWithZeros(C2)))
content = rf"""
{body_09}.
"""
glue('sageglue_10_40', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
body_10 = DisplayInLine(LinearEqsParameters(AugmentMatrixWithZeros(C2)))
content = rf"""
{body_10} \in \rr.
"""
glue('sageglue_10_41', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)

body_11 = DisplayMatrix(B3)
content = rf"""
B_{{3}} = {body_11}
"""
glue('sageglue_10_42', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
body_12 = DisplaySystem(LinearEqs(AugmentMatrixWithZeros(B3)))
content = rf"""
{body_12}.
"""
glue('sageglue_10_43', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
body_13 = DisplayMatrix(C3)
content = rf"""
C_{{3}} = {body_13}
"""
glue('sageglue_10_44', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
body_14 = DisplaySystem(LinearEqs(AugmentMatrixWithZeros(C3)))
content = rf"""
{body_14}.
"""
glue('sageglue_10_45', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
body_15 = DisplayInLine(LinearEqsParameters(AugmentMatrixWithZeros(C3)))
content = rf"""
{body_15} \in \rr.
"""
glue('sageglue_10_46', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)

body_16 = DisplayMatrix(B4)
content = rf"""
B_{{4}} = {body_16}
"""
glue('sageglue_10_47', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
body_17 = DisplaySystem(LinearEqs(AugmentMatrixWithZeros(B4)))
content = rf"""
{body_17}.
"""
glue('sageglue_10_48', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
body_18 = DisplayMatrix(C4)
content = rf"""
C_{{4}} = {body_18}
"""
glue('sageglue_10_49', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
body_19 = DisplaySystem(LinearEqs(AugmentMatrixWithZeros(C4)))
content = rf"""
{body_19}.
"""
glue('sageglue_10_50', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
body_20 = DisplayInLine(LinearEqsParameters(AugmentMatrixWithZeros(C4)))
content = rf"""
{body_20} \in \rr.
"""
glue('sageglue_10_51', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

:::{solution-without-reference}
:class: [solution] dropdown

1. Macierzy współczynników
   {glue:}`sageglue_10_32`
   odpowiada układ
   {glue:}`sageglue_10_33`

   Przy pomocy operacji elementarnych przekształciliśmy ją do postaci
   {glue:}`sageglue_10_34`,
   która odpowiada układowi {glue:}`sageglue_10_35`

   Rozwiązanie to
   $
   \left\{\begin{array}{l}
   x_1 = t_1 \\
   x_2 = -\frac 3 2 t_2 \\
   x_3 = t_2
   \end{array}\right.,
   $
   {glue:}`sageglue_10_36`

2. Macierzy współczynników
   {glue:}`sageglue_10_37`
   odpowiada układ
   {glue:}`sageglue_10_38`

   Przy pomocy operacji elementarnych przekształciliśmy ją do postaci
   {glue:}`sageglue_10_39`,
   która odpowiada układowi {glue:}`sageglue_10_40`

   Rozwiązanie to
   $
   \left\{\begin{array}{l}
   x_1 = -3 t_1 \\
   x_2 = t_1 \\
   x_3 = 0
   \end{array}\right.,
   $
   {glue:}`sageglue_10_41`

3. Macierzy współczynników
   {glue:}`sageglue_10_42`
   odpowiada układ
   {glue:}`sageglue_10_43`

   Przy pomocy operacji elementarnych przekształciliśmy ją do postaci
   {glue:}`sageglue_10_44`,
   która odpowiada układowi

   {glue:}`sageglue_10_45`
   Rozwiązanie to {glue:}`sageglue_10_20`, {glue:}`sageglue_10_46`

4. Macierzy współczynników
   {glue:}`sageglue_10_47`
   odpowiada układ
   {glue:}`sageglue_10_48`

   Przy pomocy operacji elementarnych przekształciliśmy ją do postaci
   {glue:}`sageglue_10_49`,
   która odpowiada układowi {glue:}`sageglue_10_50`

   Rozwiązanie to
   $
   \left\{\begin{array}{l}
   x_1 = 3 t_1 \\
   x_2 = 2 t_1 \\
   x_3 = t_1 \\
   x_4 = 0
   \end{array}\right.,
   $
   {glue:}`sageglue_10_51`

W każdym z tych rozwiązań liczba parametrów jest zgodna
z {prf:ref}`stw:LiczbaPramJednor`.
:::

## Układy niejednorodne

:::{prf:definition}

**Niejednorodnym** {index}`układ równań liniowych; niejednorodny`
nazywamy układ równań liniowych, który nie jest jednorodny.
:::

:::{narration}

Jak zobaczymy, niejednorodne układy równań liniowych rozwiązuje się analogicznie
do układów jednorodnych, tym razem wykonując operacje na macierzy rozszerzonej.
:::

:::{prf:definition}

**Macierzą rozszerzoną** {index}`układ równań liniowych; macierz!rozszerzona`
układu równań $\EqLin$ zadanego przez {eq}`eq:Uklad` nazywamy macierz

```{math}
\begin{aligned}
A|B = \Macierz{
 a_{11} & a_{12} & \ldots & a_{1n} & | &b_1\\
 a_{21} & a_{22} & \ldots & a_{2n} & | & b_2 \\
 \vdots & \vdots &  & \vdots & | & \vdots \\
 a_{m1} & a_{m2} & \ldots & a_{mn} & | & b_m
  }
\end{aligned}
```

:::

:::{prf:remark}

Z definicji rzędu macierzy widać, że

```{math}
\rank A \leq \rank A|B.
```

Istotnie, dodanie kolumny do macierzy $A$ zwiększa liczbę
minorów, więc każdy niezerowy minor macierzy $A$ jest niezerowym minorem macierzy $A|B .$

:::

:::{prf:theorem} Kroneckera-Capellego

Układ równań liniowych $\EqLin$ o macierzy rozszerzonej $A|B$
ma rozwiązanie wtedy i tylko wtedy, gdy

```{math}
\rank A = \rank A|B = k.
```

Ponadto

1. jeśli $k = n$, to $\EqLin$ ma dokładnie jedno rozwiązanie

2. jeśli $k < n$, to $\EqLin$ ma
   nieskończenie wiele rozwiązań zależnych od $n-k$ parametrów.

:::

:::{prf:remark}

1. Jeśli układ $\EqLin$ jest Cramera
   ($n$ równań liniowych z $n$ niewiadomymi),
   to $\rank A = n$ jest maksymalny, więc $\rank A|B = n$ (większy być nie może).
   Zatem zgadza się to z powyższym twierdzeniem.

2. Wykonując jedynie wierszowe operacje elementarne, możemy jednocześnie znajdować
   rzędy obu macierzy $A$ i $A|B$, oraz doprowadzać macierz $A|B$
   do postaci schodkowej i schodkowej zredukowanej.
:::

```{code-cell} sage
:tags: [remove-input]
AB11 = matrix([[1,2,3,4,5],[0,2,0,-1,1],[0,-4,0,2,5]])
AB11duplikat = matrix([[1,2,3,4,5],[0,2,0,-1,1],[0,-4,0,2,5]])
AB12 = matrix(QQ,[[1,-2,0,5],[0,1,-1,3],[0,-4,2,-2]])
AB12duplikat = matrix([[1,-2,0,5],[0,1,-1,3],[0,-4,2,-2]])
AB13 = matrix([[1,-1,0,1, 1],[2,-2,1,2,5]])
AB13duplikat = matrix([[1,-1,0,1, 1],[2,-2,1,2,5]])
```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplayMatrix(AB11)
body_02 = AddMultipleOfRowLatex(AB11, 3, 2, 2)
content = rf"""
A_1|B_1 = {body_01}
{body_02}
"""
glue('sageglue_10_21', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplayMatrix(AB12)
body_02 = AddMultipleOfRowLatex(AB12, 3, 2, 4)
content = rf"""
A_2|B_2 = {body_01}
{body_02},
"""
glue('sageglue_10_22', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplayMatrix(AB13)
body_02 = AddMultipleOfRowLatex(AB13, 2, 1, -2)
content = rf"""
A_3|B_3 = {body_01}
{body_02},
"""
glue('sageglue_10_23', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

:::{prf:example}
:label: examp:MacierzeRozszerzone

Zbadajmy w kilku przypadkach, czy istnieją rozwiązania
układów równań liniowych o danych macierzach rozszerzonych.

1. Dla {glue:}`sageglue_10_21`,
   widzimy, że

   ```{math}
   \rank A_1 = 2 \neq \rank A_1|B_1 = 3.
   ```

   Zatem z twierdzenia K-C układ nie ma rozwiązań.

2. Dla {glue:}`sageglue_10_22`
   widzimy, że

   ```{math}
   k=\rank A_2 = \rank A_2|B_2 = 3.
   ```

   Zatem z twierdzenia K-C układ ma rozwiązanie
   z $n - k = 3 - 3 = 0$ parametrami.
   Innymi słowy jest jedno rozwiązanie.

3. Dla {glue:}`sageglue_10_23`
   widzimy, że

   ```{math}
   k=\rank A_3 = \rank A_3|B_3 = 2.
   ```

   Zatem z twierdzenia K-C układ ma rozwiązanie
   z $n - k = 4 - 2 = 2$ parametrami.
:::

:::{prf:theorem}

Niech $A|B$ będzie macierzą rozszerzoną układu równań liniowych $\EqLin .$
Niech $A'|B'$ będzie wynikiem skończonej liczby wierszowych operacji elementarnych na $A|B$:

1. pomnożenie wiersza przez stałą różną od $0$
2. zamiana wierszy miejscami
3. dodanie do wiersza kombinacji liniowej innych wierszy
4. skreślenie zerowego wiersza
5. skreślenie wiersza liniowo zależnego od innych wierszy.

Jeśli $A'|B'$ jest macierzą rozszerzoną układu $\EqLin'$, to
zbiory rozwiązań $\EqLin$ i $\EqLin'$ są sobie równe:
$\Solutions{\EqLin} =\Solutions{\EqLin'} .$
:::

:::{prf:remark}

Ponieważ wiersze macierzy $A|B$ odpowiadają równaniom układu $\EqLin$, to
operacje z powyższego twierdzenia odpowiadają odpowiednim operacjom
na równaniach układu $\EqLin .$ Wystarczy zamiast odpowiedniej odmiany słowa "wiersz"
wstawić odpowiednią odmianę słowa "równanie".
:::

### Metoda eliminacji

:::{narration}


**Metoda eliminacji** rozwiązywania niejednorodnego układu równań $\EqLin$,
polega na przekształceniu, zgodnie z powyższym twierdzeniem,
jego macierzy
rozszerzonej $A|B$ do postaci schodkowej zredukowanej.
Następnie
korzystając z tw. Kroneckera-Capellego należy sprzawdzić,
czy układ ma rozwiązanie.
Jeśli to prawda
należy zapisać układ równań
o powstałej macierzy rozszerzonej i z niego odczytać rozwiązanie.
:::

::::{exercise}
:label: lec-10-ex-04
:class: [exercise]

Rozwiążmy układy równań liniowych
o macierzach rozszerzonych
z {prf:ref}`examp:MacierzeRozszerzone`

:::{note}
:class: [see-problem]

Pomoże rozwiązać {numref}`prob-12-ex-03`, {numref}`prob-12-ex-07`.
:::

::::

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplaySystem(LinearEqs(AB11duplikat))
content = rf"""
{body_01}
"""
glue('sageglue_10_24', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplaySystem(LinearEqs(AB12duplikat))
content = rf"""
{body_01}
"""
glue('sageglue_10_25', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math
m1 = RescaleRowLatex(AB12, 3, -2^(-1))
m2 = AddMultipleOfRowLatex(AB12, 2, 3, 1)
m3 = AddMultipleOfRowLatex(AB12, 1, 2, 2)
body_01 = DisplayMatrix(AB12)
content = rf"""
A_2|B_2 & \ \cdots\longrightarrow {body_01}
{m1}
\\ &
{m2}
{m3}.
"""
glue('sageglue_10_26', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)

```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplaySystem(LinearEqs(AB13duplikat))
content = rf"""
{body_01}
"""
glue('sageglue_10_27', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplayMatrix(AB13)
content = rf"""
{body_01}
"""
glue('sageglue_10_28', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplaySystem(LinearEqs(AB13))
content = rf"""
{body_01}
"""
glue('sageglue_10_29', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)

```

:::{solution-without-reference}
:class: [solution] dropdown

1. Jak już pokazaliśmy układ

   ```{glue} sageglue_10_24
   ```

   o macierzy rozszerzonej $A_1|B_1$
   (z {prf:ref}`examp:MacierzeRozszerzone`)
   nie ma rozwiązań.

2. Układ

   ```{glue} sageglue_10_25
   ```

   o macierzy rozszerzonej $A_2|B_2$
   (z {prf:ref}`examp:MacierzeRozszerzone`)
   ma jedno rozwiązanie.
   Można je znaleźć metodą Cramera lub kontynuując operacje
   na wierszach

   ```{glue} sageglue_10_26
   ```

   Ostatnia macierz jest w postaci schodkowej zredukowanej,
   z której odczytujemy rozwiązanie:

   $$x_1 = 1,\ x_2 = -2,\ x_3 = -5 .$$

3. Układ

   ```{glue} sageglue_10_27
   ```

   o macierzy rozszerzonej $A_3|B_3$ ma rozwiązanie z dwoma parametrami.
   Ta macierz
   po przekształceniach ma postać
   {glue:}`sageglue_10_28`
   i jest w postaci schodkowej zredukowanej.
   Zapisujemy odpowiadający jej układ równań

   ```{glue} sageglue_10_29
   ```

   i odczytujemy rozwiązanie
   $\left\{\begin{array}{l}
   x_1 = 1 + t_1 - t_2 \\
   x_2 = t_1   \\
   x_3 = 3 \\
   x_4 = t_2
   \end{array}\right. ,
   t_1, t_2 \in \rr.
   $

:::

```{code-cell} sage
:tags: [remove-input]
AB1b = matrix(QQ, [[2,-2,1,0,-1],[0,2,4,-1,3]])
```

::::{exercise}
:label: lec-10-ex-05
:class: [exercise]

Rozwiążmy układ równań
$
\Uklad{
2x_1 - 2x_2 + x_3 = -1 \\
2x_2 + 4x_3 -x_4 = 3 \\
2x_1 + 5x_3 - x_4 = 2
}.
$

:::{note}
:class: [see-problem]

Pomoże rozwiązać {numref}`prob-12-ex-03`, {numref}`prob-12-ex-07`.
:::

::::

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math
m1 = AddMultipleOfRowLatex(AB1, 3, 1, -1)
m2 = RemoveRowLatex(AB1, 3)
m3 = AddMultipleOfRowLatex(AB1b, 1, 2, 1)
m4 = RescaleRowLatex(AB1b, 1, 2^(-1))
m5 = RescaleRowLatex(AB1b, 2, 2^(-1))
body_01 = DisplayMatrix(AB1)
content = rf"""
A|B & = {body_01}
{m1}
{m2}
\\ &
{m3}
{m4}
{m5}.
"""
glue('sageglue_10_30', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

```{code-cell} sage
:tags: [remove-input]
from myst_nb import glue
from IPython.display import Math

body_01 = DisplaySystem(LinearEqs(matrix(QQ, [[1, 0, 5 / 2, -1 / 2, 1], [0, 1, 2, -1 / 2, 3 / 2]])))
content = rf"""
{body_01}.
"""
glue('sageglue_10_31', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

:::{solution-without-reference}
:class: [solution] dropdown

Wykonujemy operacje elementarne na wierszach
macierzy rozszerzonej tego układu:

```{glue} sageglue_10_30
```

Otrzymujemy układ

```{glue} sageglue_10_31
```

Rozwiązanie to
$
\left\{\begin{array}{l}
x_1 = 1-\frac 5 2 t_1 + \frac 1 2 t_2 \\
x_2 = \frac 3 2 -2t_1 + \frac 1 2 t_2 \\
x_3 = t_1 \\
x_4 = t_2
\end{array}\right. ,
t_1, t_2 \in \rr.
$
:::

::::{exercise}
:label: lec-10-ex-06
:class: [exercise]

Określmy liczbę rozwiązań układu
$\Uklad{
 1+(a-1) x_1+a x_2+x_4 = 0\\
 -2-a-2 a x_2+(1+a) x_3-2 x_4 = 0 \\
 a+(a-1) x_1 -(1+a) x_3 = 0
  }$
w zależności od parametru $a\in\rr .$

:::{note}
:class: [see-problem]

Pomoże rozwiązać {numref}`prob-12-ex-04`, {numref}`prob-12-ex-08`, {numref}`prob-12-ex-09`, {numref}`prob-12-ex-10`.
:::

::::

:::{solution-without-reference}
:class: [solution] dropdown

Macierz rozszerzona układu to
$
  A|B = \Macierz{
 a-1 &   a   & 0 &   1 &   -1 \\
 0 &   -2 a &   1+a &   -2 & 2+a \\
 a-1 &   0   & -1-a &   0   & -a
  }.
   $

1. Sprawdźmy, dla jakich $a\in\rr$ rząd macierzy $A$ jest maksymalny (równy 3).
   W tym celu obliczmy minor powstały z 3. pierwszych kolumn $A$
   (i jednocześnie 3. pierwszych kolumn $A|B$):

   ```{math}
   \begin{aligned}
   \Det{
   a-1 &   a   & 0  \\
   0 &   -2 a & 1+a \\
   a-1 &   0   & -1-a
   }
   = (a-1)(-2a)(-1-a) + a(1+a)(a-1)
   = 3a(a-1)(a+1).
   \end{aligned}
   ```

   Zatem dla $a\in \rr\setminus\Set{-1,0,1}$ jest to minor niezerowy,
   co implikuje, że dla nich
   $\rank A = \rank A|B = 3.$
   Z twierdzenia Kroneckera-Capellego wynika,
   że w tym przypadku układ ma nieskończenie wiele rozwiązań
   zależnych od $(4-3) = 1$ parametru.

2. Pozostaje sprawdzić przypadki, gdy $a = -1,0,1 .$

   - Dla $a=-1$ mamy

     ```{math}
     \begin{aligned}
     A|B
     & =
     \Macierz{
     -2 & -1 & 0 & 1  & -1 \\
     0  & 2  & 0 & -2 & 1  \\
     -2 & 0  & 0 & 0  & 1
     }
     \longrightarrow
     \Macierz{
     0  & -1 & 0 & 1  & -2 \\
     0  & 2  & 0 & -2 & 1  \\
     -2 & 0  & 0 & 0  & 1
     }
     \\ &
     \longrightarrow
     \Macierz{
     0  & -1 & 0 & 1  & -2 \\
     0  & 0  & 0 & 0  & -3 \\
     -2 & 0  & 0 & 0  & 1
     }
     \longrightarrow
     \Macierz{
     -2 & 0  & 0 & 0  & 1  \\
     0  & -1 & 0 & 1  & -2 \\
     0  & 0  & 0 & 0  & -3
     }.
     \end{aligned}
     ```

     Jest to macierz schodkowa, więc wnioskujemy, że $\rank A = 2 \neq \rank A|B = 3$,
     co oznacza, że zbiór rozwiązań jest pusty.
   - Dla $a=0$ mamy

     ```{math}
     \begin{aligned}
     A|B =
     \Macierz{
     -1 & 0 & 0  & 1  & -1 \\
     0  & 0 & 1  & -2 & 2  \\
     -1 & 0 & -1 & 0  & 0
     }
     \longrightarrow
     \Macierz{
     -1 & 0 & 0  & 1  & -1 \\
     0  & 0 & 1  & -2 & 2  \\
     0  & 0 & -1 & -1 & 1
     }
     \longrightarrow
     \Macierz{
     -1 & 0 & 0  & 1  & -1 \\
     0  & 0 & 1  & -2 & 2  \\
     0  & 0 & 0  & -3 & 3
     }.
     \end{aligned}
     ```

     Jest to macierz schodkowa, więc wnioskujemy, że $\rank A = \rank A|B = 3 .$
     Układ ma nieskończenie wiele rozwiązań
     zależnych od $(4-3) = 1$ parametru.

   - Dla $a=1$ mamy

     ```{math}
     \begin{aligned}
     A|B =
     \Macierz{
     0 & 1  & 0  & 1  & -1 \\
     0 & -2 & 2  & -2 & 3  \\
     0 & 0  & -2 & 0  & -1
     }
     \longrightarrow
     \Macierz{
     0 & 1  & 0  & 1  & -1 \\
     0 & 0  & 2  & 0  & 1  \\
     0 & 0  & -2 & 0  & -1
     }
     \longrightarrow
     \Macierz{
     0 & 1  & 0  & 1  & -1 \\
     0 & 0  & 2  & 0  & 1  \\
     0 & 0  & 0  & 0  & 0
     }
     \end{aligned}
     ```

     Jest to macierz schodkowa, więc wnioskujemy, że $\rank A = \rank A|B = 2 .$
     Układ ma nieskończenie wiele rozwiązań
     zależnych od $(4-2) = 2$ parametrów.

Podsumujmy:

- dla $a = -1$ układ jest sprzeczny
- dla $a\in\rr\setminus\Set{-1,1}$ rozwiązanie układu zależy od 1 parametru
- dla $a = 1$ rozwiązanie układu zależy od 2 parametrów.

:::
