Chapter 5.3 — Orthogonal Complement and the Fundamental Theorem of Linear Algebra (অর্থোগোনাল কমপ্লিমেন্ট ও লিনিয়ার অ্যালজেব্রার মৌলিক উপপাদ্য)¶
এক vector-এর সাথে লম্ব হওয়া শিখেছো (5.1), এক সেট vector-কে পরস্পর লম্ব বানানো শিখেছো (5.2)। এবার শেষ ধাপ: একটা গোটা subspace-এর সাথে লম্ব সবকিছুর জগৎটা দেখা। এই ধারণা দিয়েই Gilbert Strang আঁকেন তাঁর জীবনের প্রিয় ছবি — চারটা fundamental subspace-এর মানচিত্র — যাকে তিনি নাম দিয়েছেন Fundamental Theorem of Linear Algebra। Chapter 4.5-এ চারটা subspace-এর সাথে পরিচয় হয়েছিল; আজ জানবে তারা আসলে জোড়ায় জোড়ায় লম্ব।
🎯 এই chapter-এ যা শিখবে¶
- Orthogonal Complement(অর্থোগোনাল কমপ্লিমেন্ট) \(U^\perp\) — একটা subspace-এর "লম্ব জগৎ"
- Direct Sum(ডাইরেক্ট সাম): \(\mathbb{R}^n = U \oplus U^\perp\) — space-টা দুই লম্ব টুকরোয় নিখুঁত ভাগ
- Fundamental Theorem: row space \(\perp\) null space, column space \(\perp\) left null space — প্রমাণসহ
- Strang-এর four-subspace ছবিটা নিজের হাতে আঁকা ও পড়তে পারা
- কেন \(A^TA\) least squares-এ এত গুরুত্বপূর্ণ — তার বীজ (\(N(A^TA) = N(A)\))
🖼️ এক ছবিতে মূল idea¶

Strang-এর বিখ্যাত ছবি: বাঁয়ে input জগৎ \(\mathbb{R}^n\), ডানে output জগৎ \(\mathbb{R}^m\)। প্রতি পাশে দুটো subspace, আর প্রতি জোড়া পরস্পর লম্ব (\(\perp\) চিহ্ন)। Matrix \(A\) row space-কে column space-এ নিয়ে যায় (এক-এক করে), আর null space-কে গুঁড়িয়ে দেয় শূন্যে।
১. কি? (What)¶
দৈনন্দিন analogy: মেঝে আর খুঁটি¶
তোমার ঘরের মেঝেটা একটা subspace ভাবো — \(\mathbb{R}^3\)-এর ভেতরে একটা 2D plane। এখন প্রশ্ন: মেঝের প্রতিটা দিকের সাথে লম্ব — এমন সব দিক কোনগুলো? উত্তর: শুধু খুঁটির দিক (সোজা ওপর-নিচ) — একটা 1D লাইন। উল্টোভাবে, খুঁটির সাথে লম্ব সব দিক মিলে আবার মেঝেটাই।
- মেঝে \(U\) (dim 2) \(\longleftrightarrow\) খুঁটি \(U^\perp\) (dim 1) — দুই dimension যোগ করলে \(3\)
- খুঁটি \(V\) (dim 1) \(\longleftrightarrow\) মেঝে \(V^\perp\) (dim 2)
এই "লম্ব জগৎ"-এর formal নাম:
Orthogonal Complement(অর্থোগোনাল কমপ্লিমেন্ট): subspace \(U \subseteq \mathbb{R}^n\)-এর orthogonal complement হলো
অর্থাৎ \(U\)-এর প্রত্যেক সদস্যের সাথে লম্ব — এমন সব vector-এর সংগ্রহ। (Complement মানে "পরিপূরক" — যে অংশটুকু \(U\)-এর বাইরে দরকার, space-টা পূর্ণ করতে।)
চারটা fundamental subspace (Chapter 4.5-এর ঝালাই)¶
\(m \times n\) matrix \(A\)-এর, rank \(r\):
| Subspace | সংজ্ঞা | থাকে | dimension |
|---|---|---|---|
| Column Space(কলাম স্পেস) \(C(A)\) | column-দের সব combination | \(\mathbb{R}^m\) | \(r\) |
| Null Space(নাল স্পেস) \(N(A)\) | \(Ax = 0\)-এর সব সমাধান | \(\mathbb{R}^n\) | \(n - r\) |
| Row Space(রো স্পেস) \(C(A^T)\) | row-দের সব combination | \(\mathbb{R}^n\) | \(r\) |
| Left Null Space(লেফট নাল স্পেস) \(N(A^T)\) | \(A^Ty = 0\)-এর সব সমাধান | \(\mathbb{R}^m\) | \(m - r\) |
Fundamental Theorem of Linear Algebra (FTLA)¶
আজকের নতুন, বিস্ময়কর খবরটা হলো — এই চারজন এলোমেলোভাবে বসে নেই, বরং:
ভাষায়: null space হলো row space-এর orthogonal complement (input জগতে), আর left null space হলো column space-এর orthogonal complement (output জগতে)। সাথে dimension-এর হিসাব: \(r + (n-r) = n\), \(r + (m-r) = m\) — কোনো ফাঁক নেই, কোনো overlap নেই।
২. দেখতে কেমন?¶
দৃশ্য ১: মেঝে-খুঁটি, সত্যিকারের ছবিতে¶

নীল plane \(U\) (dim 2) আর লাল লাইন \(U^\perp\) (dim 1), \(\mathbb{R}^3\)-এ। লাল লাইনের যেকোনো vector, নীল plane-এর যেকোনো vector-এর সাথে লম্ব। \(2 + 1 = 3\) ✓
দৃশ্য ২: একটা ছোট্ট matrix-এ FTLA চোখে দেখা¶

\(A = \begin{bmatrix}1 & 2\\ 2 & 4\end{bmatrix}\) — rank 1। এর row space হলো \((1,2)\)-এর লাইন (নীল), null space হলো \((-2,1)\)-এর লাইন (সবুজ)। দেখো — দুটো লাইন নিখুঁত \(90°\)-তে! \((1,2)\cdot(-2,1) = -2+2 = 0\)।
দৃশ্য ৩: \(x\) ভাঙে, \(A\) বাছাই করে¶

বাঁয়ে: input \(x\) ভেঙে যায় \(x_{row} + x_{null}\)-এ (লম্ব দুই টুকরো)। ডানে: \(A\) দিয়ে গুণ করলে null-অংশ শূন্যে মিলিয়ে যায়, শুধু row-অংশটাই output (\(Ax = Ax_{row}\)) তৈরি করে — আর সেই output সবসময় column space-এ পড়ে।
৩. কোথায় ইউজ হয়?¶
বাস্তব জীবনে:
- রেডিও/ওয়াইফাই interference বাতিল: পাশের চ্যানেলের signal যেই subspace-এ থাকে, receiver তার orthogonal complement-এ project করে শোনে — noise আপনা-আপনি কাটা পড়ে (interference nulling)।
- কাঠামো প্রকৌশল: truss-এর সম্ভাব্য নড়াচড়ার space আর force-এর equilibrium space — একটার orthogonal complement আরেকটা; সেতু নড়বে কি না বলার হিসাব এটাই।
- ছবির watermark: ছবির "দৃশ্যমান" subspace-এর complement-এ লুকানো তথ্য বসালে চোখে ধরা পড়ে না।
Data Science / ML-এ:
- Least squares কেন কাজ করে (Chapter 5.4): residual-কে ফেলা হয় column space-এর orthogonal complement-এ — অর্থাৎ left null space-এ। FTLA না জানলে normal equations মুখস্থ; জানলে সেটা এক লাইনের ছবি।
- Regularization ও degrees of freedom: model-এর যে দিকগুলো ডেটা "দেখতে পায় না" (null space) — সেগুলো চিনে রাখা identifiability-র প্রশ্নে অপরিহার্য।
- Recommender system / matrix completion: কোন rating-pattern গুলো observable subspace-এ আর কোনগুলো তার complement-এ — এই ভাগই বলে দেয় কী predict করা আদৌ সম্ভব।
- PCA-র প্রস্তুতি (Part VI): প্রধান দিকগুলো বাদ দিলে যা থাকে, তা প্রধান subspace-এর orthogonal complement — "noise subspace"।
৪. Properties¶
Property 1 — \(U^\perp\) নিজেও একটা subspace¶
মিনি-proof (Chapter 4.1-এর তিন শর্ত): (i) \(0^Tu = 0\) সব \(u\)-এর জন্য, তাই \(0 \in U^\perp\)। (ii) \(w_1, w_2 \in U^\perp\) হলে \((w_1+w_2)^Tu = w_1^Tu + w_2^Tu = 0 + 0\)। (iii) \((cw)^Tu = c(w^Tu) = 0\)। তিন শর্তই মিলেছে ∎ — তাছাড়া, checking-এর সময় \(U\)-এর সব vector-এর বদলে শুধু একটা spanning set-এর সাথে লম্বতা চেক করলেই চলে (Chapter 5.1-এর Problem 8-এর যুক্তি)।
Property 2 — Dimension-এর ভাগাভাগি¶
মেঝে(2) + খুঁটি(1) = 3। প্রমাণের রূপরেখা Intuition section-এ।
Property 3 — শুধু শূন্যই দুই জগতে থাকে¶
মিনি-proof: \(v\) দুটোতেই থাকলে \(v\) নিজের সাথেই লম্ব: \(v^Tv = 0\)। কিন্তু \(v^Tv = \|v\|^2\), আর দৈর্ঘ্য শূন্য মানে \(v = 0\) ∎। এই ছোট্ট যুক্তিটা পুরো Part V-এ বারবার আসবে — মনে রেখো: "নিজের সাথে লম্ব" একমাত্র শূন্যই হতে পারে।
Property 4 — নিখুঁত দুই-টুকরো ভাগ (Direct Sum)¶
মানে: যেকোনো \(x \in \mathbb{R}^n\) একটা এবং শুধু একটা উপায়ে লেখা যায় \(x = u + w\), যেখানে \(u \in U\), \(w \in U^\perp\)। (\(\oplus\) চিহ্নের নাম Direct Sum(ডাইরেক্ট সাম) — "overlap-ছাড়া যোগ"।) কীভাবে ভাঙবো তা তো আগেই শিখেছি — \(u = \text{proj}_U(x)\) (ছায়া), \(w = x - u\) (residual)! Uniqueness-এর প্রমাণ: দুইভাবে লেখা গেলে \(u_1 + w_1 = u_2 + w_2 \Rightarrow \underbrace{u_1 - u_2}_{\in\, U} = \underbrace{w_2 - w_1}_{\in\, U^\perp}\) — বাঁ পাশ \(U\)-তে, ডান পাশ \(U^\perp\)-তে, অথচ দুটো সমান; Property 3 বলে দুটোই শূন্য ∎।
Property 5 — দুইবার complement নিলে ফেরত (\(\mathbb{R}^n\)-এ)¶
খুঁটির লম্ব-জগৎ আবার মেঝেই। এ কারণেই FTLA-র দুটো সমীকরণ আসলে চারটা: \(N(A)^\perp = C(A^T)\) এবং \(N(A^T)^\perp = C(A)\)-ও ফ্রিতে পাওয়া গেলো।
Property 6 — দিক-নির্দেশক dimension ছবি¶

একটা \(4\times5\), rank-2 matrix-এর dimension হিসাব: input-এ \(2 + 3 = 5\), output-এ \(2 + 2 = 4\)। rank \(r\) দুই পাশেই সমান — row rank = column rank (Chapter 4.5-এর সেই বিস্ময়) — FTLA সেটাকেই লম্বতার পোশাক পরায়।
৫. Intuition — কেন সত্য?¶
FTLA-র প্রথম অর্ধেক: কেন row space \(\perp\) null space?¶
\(Ax = 0\) মানে আসলে কী — সেটা row দিয়ে লেখো (Chapter 3.5-এর row picture):
পড়ে দেখো কী লেখা আছে: \(x\), প্রত্যেকটা row-এর সাথে লম্ব! আর যে \(x\) সব row-এর সাথে লম্ব, সে row-দের সব linear combination-এর সাথেও লম্ব (Chapter 5.1, Problem 8) — অর্থাৎ পুরো row space-এর সাথে। এইটুকুই প্রমাণ:
\(N(A) = C(A^T)^\perp\) ∎। দ্বিতীয় অর্ধেক ফ্রি: একই যুক্তি \(A^T\)-এর ওপর চালাও — \(N(A^T) = C(A)^\perp\) ∎। এটাই গণিতের প্রিয় কৌশল: একটা theorem প্রমাণ করো, তারপর "transpose করে" দ্বিতীয়টা উপহার পাও।
Dimension কেন মিলে যায় (Property 2-এর রূপরেখা)¶
Rank–Nullity Theorem (Chapter 4.5) বলেছিল: \(\dim C(A^T) + \dim N(A) = r + (n - r) = n\)। FTLA যোগ করলো: এই দুটো subspace শুধু dimension-এ পরিপূরক নয়, দিকেও লম্ব। দুটো মিলিয়ে: row space আর null space মিলে \(\mathbb{R}^n\)-কে নিখুঁতভাবে ভাগ করে — একবিন্দু ফাঁক নেই (dimension গুনে), একবিন্দু overlap নেই (Property 3)।
ছবিটা পড়ার নিয়ম (এটাই এই chapter-এর সারকথা)¶
আরেকবার opening ছবিটা দেখো আর গল্পটা মেলাও:
- Input \(x\) আসে (\(\mathbb{R}^n\)-এ) → FTLA বলে সে ভাঙে: \(x = x_{row} + x_{null}\)।
- \(A\) কাজ করে: \(Ax = Ax_{row} + \underbrace{Ax_{null}}_{0} = Ax_{row}\) — null অংশ নিঃশব্দে হারায়।
- Output পড়ে column space-এ — \(Ax\) মানেই column-দের combination।
- যা column space-এ নেই (যেমন noisy ডেটার \(b\)!) — তার সাথে মোকাবিলার জায়গা left null space। আগামী chapter-এ residual \(e\)-কে ঠিক ওখানেই পাঠাবো।
Row space আর column space-এর মধ্যে \(A\) একটা নিখুঁত সেতু — প্রতিটা row-space vector-এর জন্য আলাদা আলাদা column-space ঠিকানা (\(r\)-dimension থেকে \(r\)-dimension, one-to-one)। সব "হারানো" ঘটে null space-এ, সব "অপ্রাপ্য" থাকে left null space-এ।
৬. Code-এ কেমনে লিখে¶
import numpy as np
np.random.seed(42)
A = np.array([[1., 2., 3., 1., 0.],
[2., 4., 6., 2., 0.],
[1., 0., 1., 0., 1.],
[0., 2., 2., 1., -1.]])
m, n = A.shape
# SVD দিয়ে চার subspace-এর orthonormal basis (Part VI-এ SVD বিস্তারিত;
# আপাতত: এটা চার subspace বের করার সবচেয়ে নির্ভরযোগ্য যন্ত্র)
U, s, Vt = np.linalg.svd(A)
r = int(np.sum(s > 1e-10)) # rank = nonzero singular value-এর সংখ্যা
col_space = U[:, :r] # C(A): R^m-এ, dim r
left_null = U[:, r:] # N(A^T): R^m-এ, dim m-r
row_space = Vt[:r, :].T # C(A^T): R^n-এ, dim r
null_space = Vt[r:, :].T # N(A): R^n-এ, dim n-r
print(f"m={m}, n={n}, rank r={r}")
print(f"dim: C(A)={col_space.shape[1]}, N(A^T)={left_null.shape[1]}, "
f"C(A^T)={row_space.shape[1]}, N(A)={null_space.shape[1]}")
# --- FTLA-র লম্বতা numerically যাচাই ---
print("row space ⟂ null space?",
np.allclose(row_space.T @ null_space, 0)) # True
print("col space ⟂ left null space?",
np.allclose(col_space.T @ left_null, 0)) # True
# --- x = x_row + x_null ভাঙা, আর A x_null = 0 দেখা ---
x = np.random.randn(n)
x_row = row_space @ (row_space.T @ x) # row space-এ ছায়া (QQ^T!)
x_null = null_space @ (null_space.T @ x) # null space-এ ছায়া
print("x == x_row + x_null?", np.allclose(x, x_row + x_null)) # True
print("||A @ x_null|| =", np.linalg.norm(A @ x_null)) # ~1e-15
print("A@x == A@x_row?", np.allclose(A @ x, A @ x_row)) # True
Output ব্যাখ্যা:
- rank বেরোলো \(r = 3\); dimension-রা মিলে গেলো: \(3 + 2 = 5 = n\), \(3 + 1 = 4 = m\)।
- দুটো লম্বতা-চেকই
True— FTLA যন্ত্রে প্রমাণিত। row_space @ (row_space.T @ x)— চিনতে পারছো? আগের chapter-এর Problem 4-এর \(QQ^T\) — orthonormal basis দিয়ে subspace-এ ছায়া ফেলা।- \(\|Ax_{null}\| \approx 10^{-15}\) — null অংশ সত্যিই নীরবে মরে যায়; \(Ax = Ax_{row}\)।
৭. Worked Examples¶
Example 1 — একটা লাইনের orthogonal complement (\(\mathbb{R}^3\)-এ)¶
\(U = \text{span}\{(1, 2, 2)\}\)। \(U^\perp\) কী?
ধাপ ১: \(w = (w_1, w_2, w_3) \in U^\perp\) মানে \((1,2,2)^Tw = 0\):
ধাপ ২: এটা একটাই সমীকরণ, তিনটা অজানা — সমাধান-জগৎ 2D। Free variable \(w_2 = s, w_3 = t\) ধরে:
ফল: \(U^\perp = \text{span}\{(-2,1,0),\, (-2,0,1)\}\) — একটা plane। Dimension check: \(1 + 2 = 3\) ✓। খেয়াল করো — \(U^\perp\) বের করা মানে আসলে একটা null space বের করা: \(U^\perp = N\big([1\;2\;2]\big)\)। Orthogonal complement আর null space একই হিসাবের দুই নাম — এটাই FTLA-র আরেক চেহারা।
Example 2 — চার subspace হাতে-কলমে¶
- Row space: সব row \((1,2)\)-এর গুণিতক → \(C(A^T) = \text{span}\{(1,2)\}\)
- Null space: \(x_1 + 2x_2 = 0\) → \(N(A) = \text{span}\{(-2,1)\}\)। চেক: \((1,2)\cdot(-2,1) = 0\) ✓ লম্ব!
- Column space: সব column \((1,3)\)-এর গুণিতক → \(C(A) = \text{span}\{(1,3)\}\)
- Left null space: \(A^Ty = 0\): \(y_1 + 3y_2 = 0\) → \(N(A^T) = \text{span}\{(-3,1)\}\)। চেক: \((1,3)\cdot(-3,1) = 0\) ✓ লম্ব!
চারটা subspace, দুটো লম্ব জোড়া, সব dimension \(1\): \(1+1=2\) দুই পাশেই। পুরো FTLA একটা \(2\times2\) matrix-এ।
Example 3 — ভাঙা এবং জোড়া (\(x = x_{row} + x_{null}\))¶
Example 2-এর matrix-এ \(x = (3, 1)\)-কে ভাঙো।
ধাপ ১ (row space-এ ছায়া): \(a = (1,2)\) ধরে Chapter 5.1-এর সূত্র:
ধাপ ২ (বাকিটা): \(x_{null} = x - x_{row} = (2, -1)\)। চেক: \((2,-1)\) কি \((-2,1)\)-এর গুণিতক? হ্যাঁ, \(-1\) গুণ ✓
ধাপ ৩ (A-এর চোখে):
\(A\)-এর কাছে \(x=(3,1)\) আর \(x_{row}=(1,2)\) অভিন্ন — null-অংশটা সে দেখতেই পায় না। (এ কারণেই \(Ax = b\)-এর সমাধান unique হয় না যখন null space বড় — Chapter 2.4-এর particular + homogeneous গল্পটা এখন লম্ব-ছবিতে পরিষ্কার।)
৮. Problems ও Solutions¶
Problem 1. \(\mathbb{R}^4\)-এ \(U = \text{span}\{(1,0,1,0), (0,1,0,1)\}\)। \(U^\perp\)-এর একটা basis বের করো এবং dimension check করো।
Solution
\(w \in U^\perp\) মানে দুটো শর্ত:
(spanning vector দুটোর সাথে লম্ব হলেই পুরো \(U\)-এর সাথে লম্ব।)
Free variable \(w_3 = s\), \(w_4 = t\):
Basis: \(\{(-1,0,1,0),\; (0,-1,0,1)\}\)। Dimension: \(\dim U + \dim U^\perp = 2 + 2 = 4\) ✓
(লক্ষ করো: এটা আবারও একটা null space হিসাব — \(U\)-এর vector-দের row বানিয়ে matrix সাজালে \(U^\perp = N(\text{সেই matrix})\)।)
Problem 2. দেখাও: \(U \subseteq V\) হলে \(V^\perp \subseteq U^\perp\)। (অন্তর্ভুক্তি উল্টে যায়!)
Solution
ধরো \(w \in V^\perp\) — মানে \(w\), \(V\)-এর সব vector-এর সাথে লম্ব।
\(U\)-এর যেকোনো vector \(u\) নাও। যেহেতু \(U \subseteq V\), তাই \(u \in V\)-ও বটে। কাজেই \(w^Tu = 0\)।
অর্থাৎ \(w\), \(U\)-এর সব vector-এর সাথেও লম্ব — \(w \in U^\perp\) ∎
Intuition: বড় দলের (\(V\)) সবার সাথে লম্ব হওয়া কঠিন শর্ত — যে পারে সে ছোট দলের (\(U\)) সাথে তো পারবেই। শর্ত যত কড়া, পূরণকারী তত কম: \(V\) বড় ⇒ \(V^\perp\) ছোট।
Problem 3. \(A\)-এর null space-এ আছে \((1, -1, 2)\), আর \(A\)-এর একটা row হলো \((3, c, d)\)-এর গুণিতক। FTLA ব্যবহার করে \(c, d\)-এর ওপর কী শর্ত আসে? এমন একটা সম্ভাব্য row লেখো।
Solution
FTLA: null space \(\perp\) row space। তাই প্রতিটা row-এর সাথে \((1,-1,2)\)-এর dot product শূন্য হতে হবে:
অর্থাৎ একটা এক-parameter পরিবার। যেমন \(d = 0\) নিলে \(c = 3\): row \((3, 3, 0)\) — চেক: \(3 - 3 + 0 = 0\) ✓। কিংবা \(d = 1\): \((3, 5, 1)\) — চেক: \(3 - 5 + 2 = 0\) ✓
শিক্ষা: null space জানা মানে row-দের ওপর "লম্বতার আইন" জারি হয়ে যাওয়া — matrix-টা না দেখেই তার row-দের সীমাবদ্ধ করে ফেললাম।
Problem 4. \(b \in \mathbb{R}^m\) ঠিক তখনই \(Ax = b\)-এর সমাধান আছে, যখন \(b\), left null space \(N(A^T)\)-এর প্রতিটি vector-এর সাথে লম্ব — FTLA দিয়ে ব্যাখ্যা করো। (এর নাম Fredholm alternative — গম্ভীর নাম, সহজ ছবি।)
Solution
সমাধান থাকা মানে: \(b \in C(A)\) — \(b\)-কে column-দের combination হিসেবে লেখা যায় (Chapter 2.1-এর column picture)।
FTLA বলে: \(C(A) = N(A^T)^\perp\) (Property 5 দিয়ে উল্টানো রূপ)।
দুটো জুড়লে:
ব্যবহারিক অর্থ: \(A^Ty = 0\)-এর প্রতিটা সমাধান \(y\) একেকটা "সতর্কতা-পরীক্ষা": \(y^Tb \neq 0\) হলেই নিশ্চিত জানো \(Ax = b\) অসম্ভব। যেমন Example 2-এর matrix-এ \(y = (-3, 1)\); তাই \(b = (1, 2)\) অসম্ভব (\(-3+2 \neq 0\)) কিন্তু \(b = (2, 6)\) সম্ভব (\(-6 + 6 = 0\))।
Problem 5. প্রমাণ করো: \(N(A^TA) = N(A)\)। (এটাই আগামী chapter-এর সবচেয়ে গুরুত্বপূর্ণ যন্ত্রাংশ!)
Solution
দিক ১ (\(N(A) \subseteq N(A^TA)\)): সহজ — \(Ax = 0\) হলে \(A^TAx = A^T0 = 0\) ✓
দিক ২ (\(N(A^TA) \subseteq N(A)\)): ধরো \(A^TAx = 0\)। দুই পাশে \(x^T\) বসাও:
(মাঝের চালটা Property 3-এর সেই মন্ত্র: দৈর্ঘ্য শূন্য মানে vector-টাই শূন্য।) ∎
ফলাফল (আগামী chapter-এর জন্য মজুদ): \(A\)-এর column linearly independent ⇔ \(N(A) = \{0\}\) ⇔ \(N(A^TA) = \{0\}\) ⇔ \(A^TA\) invertible (square matrix, null space শূন্য)। অর্থাৎ least squares-এর normal equations \(A^TA\hat{x} = A^Tb\)-এর সমাধান তখন unique।
Problem 6. \(P\) যদি subspace \(U\)-এর ওপর projection ফেলে, তাহলে \(I - P\) কী করে? প্রমাণসহ বলো।
Solution
যেকোনো \(x\)-এর জন্য Property 4-এর ভাঙন: \(x = \underbrace{Px}_{\in U} + \underbrace{(x - Px)}_{\in U^\perp}\)।
তাহলে \((I-P)x = x - Px\) — ঠিক residual অংশটা, যেটা \(U^\perp\)-এ থাকে। অর্থাৎ:
যাচাই idempotence: \((I-P)^2 = I - 2P + P^2 = I - 2P + P = I - P\) ✓ (এখানে \(P^2 = P\) — Chapter 5.1-এর Property 4)।
ছবি: ছায়া ফেলার মেশিন \(P\); আর "ছায়া বাদে যা থাকে" মেশিন \(I-P\)। দুই মেশিনের যোগফল \(I\) — কিছুই হারায় না; গুণফল \(P(I-P) = P - P^2 = 0\) — একজনের output অন্যজন পুরো গিলে ফেলে (লম্ব বলে)।
Problem 7. (সত্য/মিথ্যা, যুক্তিসহ) (a) যেকোনো \(A\)-এর জন্য \(C(A) \perp N(A)\)। (b) \(\mathbb{R}^5\)-এ dim-2 আর dim-3 দুটো subspace পরস্পরের orthogonal complement হতেই হবে। (c) \(x \in N(A)\) এবং \(x \in C(A^T)\) হলে \(x = 0\)।
Solution
(a) মিথ্যা। \(C(A)\) থাকে \(\mathbb{R}^m\)-এ, \(N(A)\) থাকে \(\mathbb{R}^n\)-এ — ভিন্ন জগতের বাসিন্দা, লম্ব হওয়ার প্রশ্নই ওঠে না (যদি না \(m = n\), আর তখনও সাধারণত সত্য নয়: \(A = \begin{bmatrix}0&1\\0&0\end{bmatrix}\) নিলে \(C(A) = N(A) = \text{span}\{(1,0)\}\) — লম্ব তো নয়ই, বরং একই লাইন!)। সঠিক জোড়া: \(C(A^T) \perp N(A)\)।
(b) মিথ্যা। Dimension মিলে যাওয়া (\(2+3=5\)) দরকারি শর্ত, যথেষ্ট নয় — লম্বতাও লাগবে। যেমন \(\text{span}\{e_1, e_2\}\) আর \(\text{span}\{e_2, e_3, e_4\}\): dimension ঠিক, কিন্তু \(e_2\) দুটোতেই — লম্ব নয়।
(c) সত্য। \(N(A) = C(A^T)^\perp\) (FTLA), তাই \(x\) থাকলো \(C(A^T)\) আর তার complement দুটোতেই — Property 3 অনুযায়ী \(x = 0\) ∎
Problem 8. \(A\) একটা \(3\times3\) matrix যার সব entry \(1\)। চারটা fundamental subspace স্পষ্টভাবে লেখো এবং দুটো লম্ব-জোড়া যাচাই করো।
Solution
সব row \((1,1,1)\), সব column \((1,1,1)\) — rank \(r = 1\)।
- Row space: \(\text{span}\{(1,1,1)\}\), dim 1
- Null space: \(x_1+x_2+x_3 = 0\) — একটা plane: \(\text{span}\{(-1,1,0), (-1,0,1)\}\), dim 2
- Column space: \(\text{span}\{(1,1,1)\}\), dim 1
- Left null space: \(A^T = A\), তাই একই plane: \(\text{span}\{(-1,1,0), (-1,0,1)\}\), dim 2
লম্বতা যাচাই: \((1,1,1)\cdot(-1,1,0) = 0\) ✓, \((1,1,1)\cdot(-1,0,1) = 0\) ✓ — দুই পাশের জোড়াই মিলে গেলো (matrix টা Symmetric(সিমেট্রিক) বলে দুই পাশ হুবহু এক)।
Data Science টীকা: "সব-১" matrix মানে গড় করার আত্মীয়; null space-টা হলো "যোগফল-শূন্য" vector-দের plane — statistics-এ যাকে বলে contrast-দের space। Deviation-from-mean মানেই এই plane-এ projection — Statistics curriculum-এ ANOVA-র decomposition আসলে FTLA-রই সন্তান!
৯. Common ভুল¶
| ❌ ভুল ধারণা | ✅ সঠিক ধারণা |
|---|---|
| "Column space \(\perp\) null space" | সবচেয়ে কমন ভুল! দুজন ভিন্ন space-এর বাসিন্দা (\(\mathbb{R}^m\) বনাম \(\mathbb{R}^n\))। সঠিক জোড়া: row space \(\perp\) null space; column space \(\perp\) left null space। |
| "\(U^\perp\) মানে \(U\)-এর বাইরের সব vector" | না — \(U\)-এর বাইরে অসংখ্য vector আছে যারা \(U\)-এর সাথে লম্ব নয় (তির্যক)। \(U^\perp\) শুধু তারাই যারা \(U\)-এর প্রত্যেকের সাথে ঠিক \(90°\)-তে। |
| "দুটো subspace-এর dimension যোগ করে \(n\) হলেই complement" | Dimension শর্ত দরকারি কিন্তু যথেষ্ট নয় — Problem 7(b) দেখো; লম্বতাও চাই। |
| "\(U \cap U^\perp\) ফাঁকা set" | ফাঁকা নয় — \(\{0\}\)! শূন্য vector প্রতিটা subspace-এ থাকে (subspace-এর সংজ্ঞা); সে-ই একমাত্র দুই জগতের নাগরিক। |
| "FTLA মুখস্থ চার লাইনের list" | FTLA একটা ছবি — বাঁয়ে \(\mathbb{R}^n\) দুই লম্ব টুকরোয়, ডানে \(\mathbb{R}^m\) দুই লম্ব টুকরোয়, মাঝে \(A\)-এর সেতু। ছবিটা আঁকতে পারলে চারটা সমীকরণ এমনিই লেখা যায়। |
১০. এক নজরে¶
| ধারণা | সূত্র / বক্তব্য | মনে রাখার ছবি |
|---|---|---|
| Orthogonal complement | \(U^\perp = \{w : w^Tu = 0\;\forall u \in U\}\) | মেঝে ↔ খুঁটি |
| Dimension | \(\dim U + \dim U^\perp = n\) | \(2 + 1 = 3\) |
| Direct sum | \(\mathbb{R}^n = U \oplus U^\perp\); ভাঙন unique | ছায়া + residual |
| FTLA (input) | \(N(A) = C(A^T)^\perp\) | \(Ax=0\) মানে সব row-এর সাথে লম্ব |
| FTLA (output) | \(N(A^T) = C(A)^\perp\) | transpose করলেই ফ্রি |
| মূল যন্ত্রাংশ | \(N(A^TA) = N(A)\) | \(\|Ax\|^2 = 0 \Rightarrow Ax=0\) |
| Projection জোড়া | \(P\) ও \(I-P\): \(U\) আর \(U^\perp\)-এ ছায়া | দুই মেশিন, যোগফল \(I\) |
পরের chapter-এর সেতু: সব সরঞ্জাম এখন টেবিলে: ছায়া ফেলা (5.1), orthonormal basis ও QR (5.2), আর "residual থাকে লম্ব জগতে" (5.3)। এবার মূল ঘটনা — \(Ax = b\)-এর যখন কোনো সমাধানই নেই (বাস্তব ডেটায় প্রায় সবসময়!), তখন "সবচেয়ে কম ভুলের" সমাধান \(\hat{x}\) খুঁজবো — \(b\)-এর ছায়া ফেলবো column space-এ। Chapter 5.4: Least Squares।
📓 Notebook Project¶
notebooks/part-05/ch03-project.ipynb — একটা matrix-এর চার fundamental subspace SVD দিয়ে বের করে FTLA-র সব লম্বতা numerically যাচাই করবে, \(x = x_{row} + x_{null}\) ভেঙে দেখবে \(A\) কোন অংশ "দেখে", আর Fredholm সতর্কতা-পরীক্ষা দিয়ে solvability চেক করার tool বানাবে।