---
title: "Kolon Uzayı ve Sıfır Uzayı"
subtitle: "C(A) ve N(A) — bir matrisin iki yüzü"
---
::: {.callout-note title="Bölüm bilgisi"}
- **Strang'in videosu:** [YouTube — Lecture 6: Column Space and Nullspace](https://www.youtube.com/watch?v=8o5Cmfpeo6g) (≈50 dk)
- **OCW sayfası:** [MIT 18.06SC — Lecture 6](https://ocw.mit.edu/courses/18-06sc-linear-algebra-fall-2011/resources/column-space-and-nullspace/)
- **Okuma süresi:** ≈40 dk
:::
## Bu Derste Ne Var? {#sec-bu-derste}
Ders 5'te vektör uzayı, alt-uzay ve kolon uzayını tanıttık. Ders 6 bir matristen doğan **iki** temel alt-uzayı yan yana koyuyor.
1. **Kolon uzayı $C(A)$:** kolonların tüm kombinasyonları → **$A\mathbf{x} = \mathbf{b}$ hangi $\mathbf{b}$'ler için çözülebilir?**
2. **Sıfır uzayı $N(A)$:** $A\mathbf{x} = \mathbf{0}$'ı çözen tüm $\mathbf{x}$'ler → **girdideki fazlalık yönleri.**
```{mermaid}
%%| label: fig-concept-map
%%| fig-cap: "Bir matrisin iki yüzü: çıktı tarafı C(A) (erişilebilirlik) ve girdi tarafı N(A) (fazlalık)."
flowchart LR
A["A (m × n)"] --> CA["C(A) ⊂ R^m<br/>kolonların kombinasyonu"]
A --> NA["N(A) ⊂ R^n<br/>Ax = 0 çözümleri"]
CA --> Q1["💡 Ax = b çözülebilir<br/>⇔ b ∈ C(A)"]
NA --> Q2["💡 Girdideki<br/>'kör' yönler"]
Q1 --> LS["Least squares<br/>(b ∉ C(A) ise projeksiyon)"]
Q2 --> REG["LoRA / weight decay<br/>(null yönleri kontrol)"]
style CA fill:#fff3e0,stroke:#e67e22,stroke-width:2px
style NA fill:#fdf6f7,stroke:#8a1538,stroke-width:2px
style LS fill:#fce4ec,stroke:#c2185b,stroke-width:2px
style REG fill:#fce4ec,stroke:#c2185b,stroke-width:2px
```
> *"Two subspaces that we're specially interested in: the column space and the null space."* — Strang, 0:47
::: {.callout-tip title="Builder Notu — C(W) ve N(W)"}
- **$C(W)$ = erişilebilirlik / ifade gücü.** Lineer katman $\mathbf{y} = W\mathbf{x}$'in üretebileceği tüm çıktılar $C(W)$'de. Hedef bunun dışındaysa tam çözüm yok → **least squares projeksiyonu**.
- **$N(W)$ = fazlalık / serbestlik.** $W\mathbf{v} = \mathbf{0}$ olan yön → girdideki o sinyal yok oluyor. Modern derin ağlar genelde aşırı parametrize: $N(W) \neq \{\mathbf{0}\}$. **Weight decay / LoRA** bu null yönlerini kontrol eder.
- **"Kernel"** kelimesi ML'de bu null uzayından gelir.
:::
## Alt-Uzaylar Üzerinde İşlemler {#sec-islemler}
**Birleşim ($P \cup L$) — alt-uzay DEĞİL:**
Düzlem $P$ ve doğru $L$'nin vektörlerini bir araya topla. Düzlemden bir vektör + doğrudan bir vektör = ikisinde de olmayan üçüncü bir vektör → kapalılık ihlali.
**Kesişim ($S \cap T$) — her zaman alt-uzay:**
$\mathbf{v}, \mathbf{w} \in S \cap T$ → ikisi de hem $S$ hem $T$'de. $\mathbf{v} + \mathbf{w}$ hem $S$'de hem $T$'de (her ikisi alt-uzay) → kesişimde. ✓
**Builder Notu:** Kısıtların **kesişimi** lineer kalır; "ya/ya" tipi birleşim lineer-olmayan zorluk üretir.
## Kolon Uzayı C(A) — Tanım {#sec-CA}
Strang'in örneği:
$$
A = \begin{pmatrix} 1 & 1 & 2 \\ 2 & 1 & 3 \\ 3 & 1 & 4 \\ 4 & 1 & 5 \end{pmatrix}
$$
Her kolon $\mathbb{R}^4$'te. **$C(A)$, $\mathbb{R}^4$'ün alt-uzayı.** İçinde: üç kolon ve tüm kombinasyonları.
**Genel kural:** $m \times n$ matris için $C(A) \subset \mathbb{R}^m$.
## Ax = b Ne Zaman Çözülebilir? {#sec-cozulebilirlik}
$A\mathbf{x} = x_1 \mathbf{c}_1 + x_2 \mathbf{c}_2 + x_3 \mathbf{c}_3$ — kolonların kombinasyonu (Ders 1!).
::: {.callout-important title="Çözülebilirlik kuralı"}
$A\mathbf{x} = \mathbf{b}$ çözülebilir $\iff$ $\mathbf{b} \in C(A)$.
:::
> *"I can solve Ax = b exactly when b is in the column space."* — Strang, 23:39
Hemen çözülebilen $\mathbf{b}$'ler: $\mathbf{b} = \mathbf{0}$ ($\mathbf{x} = \mathbf{0}$), $\mathbf{b}$ = bir kolonun kendisi.
**Builder Notu — Least Squares:** Gerçek hayatta $\mathbf{b}$ genelde $C(A)$'da değildir (gürültülü, fazla denklem). Tam çözüm yoktur; $\mathbf{b}$'nin $C(A)$ üzerine **izdüşümünü** alıp en yakın çözümü buluruz (Ders 15-16). Bir nöral ağın hedefi tam üretememesi de aynı durumdur.
## Pivot Kolonlar — Bağımlı Kolonu At {#sec-pivot-kolonlar}
Strang'in örneğinde:
$$
\mathbf{c}_1 + \mathbf{c}_2 = \mathbf{c}_3 \quad ((1,2,3,4) + (1,1,1,1) = (2,3,4,5))
$$
Üçüncü kolon bağımlı. **Atılabilir, $C(A)$ değişmez.** İlk iki = **pivot kolon**. Sonuç: $C(A)$, $\mathbb{R}^4$ içinde **2 boyutlu** alt-uzay (düzlem).
Bu "bağımsız kolon sayısı" = **rank** (Ders 7).
## Sıfır Uzayı N(A) — Tanım {#sec-NA}
Tamamen farklı bir alt-uzay. $C(A)$ sağ tarafla ilgiliydi; $N(A)$ çözümlerle ilgili.
$$
N(A) = \{\mathbf{x} : A\mathbf{x} = \mathbf{0}\}
$$
Strang'in örneğinde ($4 \times 3$): $\mathbf{x}$'ler $\mathbb{R}^3$'te → **$N(A) \subset \mathbb{R}^3$**.
**Genel kural:** $m \times n$ matris için $N(A) \subset \mathbb{R}^n$. ($C(A)$ ile **farklı uzaylarda**!)
## Null Uzayını Bulmak {#sec-NA-bulmak}
$\mathbf{c}_3 = \mathbf{c}_1 + \mathbf{c}_2$ olduğundan:
$$
1 \cdot \mathbf{c}_1 + 1 \cdot \mathbf{c}_2 - 1 \cdot \mathbf{c}_3 = \mathbf{0} \implies \mathbf{x} = (1, 1, -1)^T \in N(A)
$$
Tüm katları da çözüm:
$$
N(A) = \left\{ c \begin{pmatrix} 1 \\ 1 \\ -1 \end{pmatrix} : c \in \mathbb{R} \right\} = \text{R}^3\text{'te orijinden geçen bir doğru}
$$
```{python}
#| label: code-null-space
#| code-fold: false
import numpy as np
from scipy.linalg import null_space
A = np.array([[1, 1, 2], [2, 1, 3], [3, 1, 4], [4, 1, 5]], dtype=float)
print("rank(A) =", np.linalg.matrix_rank(A)) # 2 (pivot kolon sayisi)
N = null_space(A)
print("N(A) baz vektoru =\n", N) # (1, 1, -1)'e oranli
print("A @ N =\n", np.round(A @ N, 10)) # ~ 0
```
## N(A) Gerçekten Alt-Uzay mı? — İki Satırlık İspat {#sec-N-altuzay-ispat}
**Toplama:** $A\mathbf{v} = \mathbf{0}$, $A\mathbf{w} = \mathbf{0}$ →
$$
A(\mathbf{v} + \mathbf{w}) = A\mathbf{v} + A\mathbf{w} = \mathbf{0} + \mathbf{0} = \mathbf{0} \checkmark
$$
**Skalerle çarpma:** $A(c\mathbf{v}) = c(A\mathbf{v}) = c \cdot \mathbf{0} = \mathbf{0}$ ✓
Dağılma özelliği yetiyor. $N(A)$ bir alt-uzay.
::: {.callout-tip title="Builder Notu — Kernel = Null = Bilgi Kaybı"}
Bir nöral ağda, kayba (loss) hiç etki etmeyen parametre yönleri = $N$. Optimizasyon bu yönlerde **kör**. Weight decay bu null yönleri sıfıra çeker. LoRA düşük-rank zorlaması da $N$'i kasıtlı genişletir (parametre sayısı azaltma).
:::
## Ax = b'nin Çözümleri Niye Alt-Uzay Değil? {#sec-b-cozumler}
$\mathbf{b} \neq \mathbf{0}$ için: $A \cdot \mathbf{0} = \mathbf{0} \neq \mathbf{b}$ → **sıfır vektörü çözüm değil** → alt-uzay olamaz.
> *"The zero vector is not a solution, so I never even got started."* — Strang, 42:38
**Yapı:** Bir özel çözüm $\mathbf{x}_p$ + $N(A)$ → orijinden geçmeyen, $N(A)$'ya paralel kaymış doğru/düzlem (afin). Bu Ders 7'nin "tam çözüm = özel çözüm + null uzayı" temasının habercisi.
```{python}
#| label: fig-CA-NA-iki-uzay
#| fig-cap: "İki alt-uzay görsel: solda C(A) ⊂ R^m (kolonların doldurduğu yer), sağda N(A) ⊂ R^n (Ax=0 yönleri). Farklı uzaylarda yaşarlar."
#| fig-width: 12
#| fig-height: 5
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure(figsize=(12, 5))
# Sol: C(A) - R^4 icinde 2D duzlem (3D goster)
ax1 = fig.add_subplot(121, projection='3d')
c1 = np.array([1, 2, 3]) # 3D'e indirgenmis temsili
c2 = np.array([1, 1, 1])
ax1.quiver(0,0,0, *c1, color='#8a1538', arrow_length_ratio=0.1, lw=2.5)
ax1.quiver(0,0,0, *c2, color='#1f4e79', arrow_length_ratio=0.1, lw=2.5)
# duzlem mesh
uu, vv = np.meshgrid(np.linspace(-1.5, 1.5, 10), np.linspace(-1.5, 1.5, 10))
P = uu[..., None]*c1 + vv[..., None]*c2
ax1.plot_surface(P[..., 0], P[..., 1], P[..., 2], color='#fed7aa', alpha=0.3)
ax1.text(*c1*1.15, r'$\mathbf{c}_1$', color='#8a1538', fontsize=13, fontweight='bold')
ax1.text(*c2*1.2, r'$\mathbf{c}_2$', color='#1f4e79', fontsize=13, fontweight='bold')
ax1.set_title(r'$C(A)$ ⊂ $\mathbb{R}^m$ (kolonların düzlemi)', fontsize=11)
ax1.set_xticks([]); ax1.set_yticks([]); ax1.set_zticks([])
# Sag: N(A) - R^3 icinde 1D dogru
ax2 = fig.add_subplot(122, projection='3d')
v = np.array([1, 1, -1])
ts = np.linspace(-2, 2, 50)
xs, ys, zs = v[0]*ts, v[1]*ts, v[2]*ts
ax2.plot(xs, ys, zs, color='#e67e22', lw=3)
ax2.quiver(0,0,0, *v, color='#e67e22', arrow_length_ratio=0.1, lw=2.5)
ax2.scatter([0],[0],[0], color='#8a1538', s=80, zorder=5)
ax2.text(*v*1.2, r'$(1, 1, -1)$', color='#e67e22', fontsize=12, fontweight='bold')
ax2.set_title(r'$N(A)$ ⊂ $\mathbb{R}^n$ ($Ax = 0$ doğrusu)', fontsize=11)
ax2.set_xticks([]); ax2.set_yticks([]); ax2.set_zticks([])
plt.tight_layout()
plt.show()
```
## Bir Alt-Uzayı Tanımlamanın İki Yolu {#sec-iki-yol}
1. **Kolon uzayı tarzı — vektör ver, kombinasyon al.** Birkaç vektör, tüm kombinasyonları → uzayı **içeriden inşa et**.
2. **Null uzayı tarzı — denklem ver, sağlayanları bul.** $A\mathbf{x} = \mathbf{0}$ → uzayı **kısıtlarla tarif et**.
Lineer cebrin büyük kısmı bu iki bakış arasında gidip gelmektir.
## Bu Dersin Özeti {#sec-ozet}
1. **Birleşim alt-uzay değil**, **kesişim her zaman alt-uzay**.
2. **$C(A) \subset \mathbb{R}^m$** — kolonların kombinasyonları.
3. **$A\mathbf{x} = \mathbf{b}$ çözülebilir** $\iff$ $\mathbf{b} \in C(A)$.
4. **Pivot kolonlar** = bağımsız kolonlar; bağımlılar uzaya katkı yok.
5. **$N(A) \subset \mathbb{R}^n$** — $A\mathbf{x} = \mathbf{0}$ çözümleri.
6. **$N(A)$ alt-uzaydır** — dağılma ispatı.
7. **$A\mathbf{x} = \mathbf{b}$ ($\mathbf{b} \neq \mathbf{0}$) çözümleri alt-uzay değil** (orijini içermez).
8. İki tanımlama yolu: kombinasyon / denklem.
::: {.callout-important title="Tek bir cümle"}
**$C(A)$**, $A\mathbf{x} = \mathbf{b}$'nin hangi $\mathbf{b}$'ler için çözülebileceğini söyler ($\mathbf{b} \in C(A)$). **$N(A)$**, $A\mathbf{x} = \mathbf{0}$'ın tüm çözümlerini toplar. Biri çıktı tarafında erişilebilirliği, diğeri girdi tarafında serbestliği ölçer.
:::
## Kontrol Soruları {#sec-sorular}
::: {.callout-note collapse="true" title="Soru 1: A = ((1,2),(2,4),(1,2)) için C(A) hangi uzayda, kaç boyutlu?"}
Kolonlar 3 bileşenli → $C(A) \subset \mathbb{R}^3$. $\mathbf{c}_2 = 2\mathbf{c}_1$ → bağımlı. **1 boyutlu**: $\mathbb{R}^3$'te orijinden geçen doğru.
:::
::: {.callout-note collapse="true" title="Soru 2: Aynı A için b = (3,6,3)ᵀ ve b = (1,0,0)ᵀ çözülebilir mi?"}
$C(A)$, $(1, 2, 1)$ yönündeki doğru.
- $\mathbf{b} = (3, 6, 3)^T = 3 \cdot (1, 2, 1)$ → **çözülebilir**, $\mathbf{x} = (3, 0)$.
- $\mathbf{b} = (1, 0, 0)^T$ → $(1, 2, 1)$'in katı değil → $C(A)$ dışı → **çözüm yok**.
:::
::: {.callout-note collapse="true" title="Soru 3: A = ((1,2,3),(2,4,6)) için N(A) — R kaçta, hangi şekil?"}
$\mathbf{x}$ 3 bileşenli → $N(A) \subset \mathbb{R}^3$. İki satır birbirinin katı → tek bağımsız denklem: $x_1 + 2x_2 + 3x_3 = 0$. $\mathbb{R}^3$'te **orijinden geçen düzlem** (2 serbest yön):
$$
N(A) = \left\{ c_1 \begin{pmatrix} -2 \\ 1 \\ 0 \end{pmatrix} + c_2 \begin{pmatrix} -3 \\ 0 \\ 1 \end{pmatrix} \right\}
$$
:::
::: {.callout-note collapse="true" title="Soru 4: W'nin null uzayı yalnız {0} değilse, model hakkında ne söyler?"}
$N(W) \neq \{\mathbf{0}\}$ → $\mathbf{v} \neq \mathbf{0}$ var ki $W\mathbf{v} = \mathbf{0}$. Yani $W(\mathbf{x} + c\mathbf{v}) = W\mathbf{x}$ — girdideki $\mathbf{v}$ yönü **kör**.
- Boyut indirgemede istenir (sıkıştırma).
- Gereksizse aşırı parametrize; **weight decay / LoRA** budar.
- $\dim N(W)$ = "kaç serbestlik derecesi boşa harcanmış".
:::
## Egzersizler {#sec-egzersizler}
**Egzersiz 1.** $A = \begin{pmatrix} 1 & 2 & 3 \\ 0 & 1 & 1 \\ 1 & 1 & 2 \end{pmatrix}$. Pivot kolonlar? $C(A)$ kaç boyutlu? (İpucu: üçüncü = ilk + ikinci?)
**Egzersiz 2.** Aynı $A$ için $\mathbf{b} = (6, 2, 4)^T$ kolon uzayında mı? Bir $\mathbf{x}$ bul.
**Egzersiz 3.** $A = \begin{pmatrix} 1 & 1 & 1 \\ 1 & 2 & 3 \end{pmatrix}$ için $N(A)$ — geometrik şekil?
**Egzersiz 4.** *(Python)* `scipy.linalg.null_space` ile doğrula.
```{python}
#| label: code-egzersiz-4
#| code-fold: false
import numpy as np
from scipy.linalg import null_space
A = np.array([[1, 1, 2], [2, 1, 3], [3, 1, 4], [4, 1, 5]], dtype=float)
print("rank =", np.linalg.matrix_rank(A))
N = null_space(A)
print("N(A) bazı =\n", N)
print("A @ N ~ 0?\n", np.round(A @ N, 10))
```
**Egzersiz 5.** Bu dersin matrisi: $C(A) = 2$ boyut, $N(A) = 1$ boyut. Kolon sayısı = 3. **$2 + 1 = 3$** tesadüf mü? (Bu **rank-nullity teoremi**'nin habercisi — Ders 7-10.)
## Sonraki Ders İçin Hazırlık {#sec-sonraki}
**Ders 7: $A\mathbf{x} = \mathbf{0}$ Çözme — Pivot Değişkenler ve Özel Çözümler**
- Dikdörtgen matrislerde eliminasyon (echelon form $U$).
- **Rank** = pivot sayısı.
- **Pivot vs serbest değişkenler** ($n - r$ tane serbest).
- **Özel çözümler** (her serbest değişken için).
- İndirgenmiş satır echelon formu $R$.
::: {.callout-warning title="Ders 7 öncesi"}
- Egzersiz 5 (rank-nullity sezgisi) kritik.
- `null_space` ile birkaç matris dene.
- Ana cümleyi içselleştir.
:::
## Anahtar Kavramlar (Cheat Sheet) {#sec-cheat-sheet}
| Kavram | Tanım | Strang'da |
|--------|-------|-----------|
| **Birleşim** | $P \cup L$ genelde alt-uzay DEĞİL | 6m47 |
| **Kesişim** | $S \cap T$ her zaman alt-uzay | 11m05 |
| **$C(A)$** | Kolonların kombinasyonları; $\mathbb{R}^m$ | 11m46 |
| **Çözülebilirlik** | $A\mathbf{x} = \mathbf{b}$ $\iff$ $\mathbf{b} \in C(A)$ | 23m39 |
| **Pivot kolon** | Bağımsız; bağımlı kolon uzaya katkı yok | 27m02 |
| **$N(A)$** | $A\mathbf{x} = \mathbf{0}$ çözümleri; $\mathbb{R}^n$ | 29m16 |
| **$N(A)$ ispat** | Dağılmadan iki satır | 38m47 |
| **$\mathbf{b} \neq \mathbf{0}$ çözümleri** | Alt-uzay değil (orijini içermez) | 42m38 |
| **İki tanım** | Kombinasyon / denklem | 44m53 |
## ML Bağlantıları Özeti {#sec-ml-baglantilar}
::: {.callout-tip title="7 köprü"}
1. **$C(W)$ = erişilebilirlik** → Lineer katmanın üretebileceği çıktılar.
2. **$N(W)$ = kernel / fazlalık** → Bilgi kaybı yönleri; weight decay / LoRA bunları kontrol.
3. **Pivot sayısı = rank** → Modelin gerçek temsil boyutu.
4. **$\mathbf{b} \in C(A)$ testi → least squares** → Gürültülü/aşırı belirli sistemlerde projeksiyon.
5. **Birleşim vs kesişim** → Kısıtların kesişimi lineer; "ya/ya" lineer-olmayan zorluk.
6. **Rank + null = kolon sayısı** → Rank-nullity (Ders 7-10); parametre sayma.
7. **$N(W) \neq \{\mathbf{0}\}$ = aşırı parametrizasyon** → Modern derin ağların kaderi; genelleme gizemi.
:::
::: {.callout-important title="Tek bir şey alıp gideceksen"}
Her matris iki alt-uzay doğurur. **$C(A)$** "hangi $\mathbf{b}$'leri üretebilirim" sorusu; **$N(A)$** "$A\mathbf{x} = \mathbf{0}$'ı hangi $\mathbf{x}$'ler çözer" sorusu. Biri çıktı erişilebilirliği, diğeri girdi serbestliği — ikisi de gerçek alt-uzaylar.
:::