কনটেন্টে যান

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

Four fundamental subspaces

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^\perp = \{\, w \in \mathbb{R}^n \;:\; w^Tu = 0 \;\; \text{সব } u \in U\text{-এর জন্য} \,\}\]

অর্থাৎ \(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)

আজকের নতুন, বিস্ময়কর খবরটা হলো — এই চারজন এলোমেলোভাবে বসে নেই, বরং:

\[\boxed{\;N(A) = C(A^T)^\perp \quad\text{এবং}\quad N(A^T) = C(A)^\perp\;}\]

ভাষায়: 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 and its orthogonal complement

নীল plane \(U\) (dim 2) আর লাল লাইন \(U^\perp\) (dim 1), \(\mathbb{R}^3\)-এ। লাল লাইনের যেকোনো vector, নীল plane-এর যেকোনো vector-এর সাথে লম্ব। \(2 + 1 = 3\)

দৃশ্য ২: একটা ছোট্ট matrix-এ FTLA চোখে দেখা

Rank-1 example

\(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\) বাছাই করে

x splits into row and null parts

বাঁয়ে: 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-এর ভাগাভাগি

\[\dim U + \dim U^\perp = n \qquad (\mathbb{R}^n\text{-এ})\]

মেঝে(2) + খুঁটি(1) = 3। প্রমাণের রূপরেখা Intuition section-এ।

Property 3 — শুধু শূন্যই দুই জগতে থাকে

\[U \cap U^\perp = \{0\}\]

মিনি-proof: \(v\) দুটোতেই থাকলে \(v\) নিজের সাথেই লম্ব: \(v^Tv = 0\)। কিন্তু \(v^Tv = \|v\|^2\), আর দৈর্ঘ্য শূন্য মানে \(v = 0\) ∎। এই ছোট্ট যুক্তিটা পুরো Part V-এ বারবার আসবে — মনে রেখো: "নিজের সাথে লম্ব" একমাত্র শূন্যই হতে পারে।

Property 4 — নিখুঁত দুই-টুকরো ভাগ (Direct Sum)

\[\mathbb{R}^n = U \oplus U^\perp\]

মানে: যেকোনো \(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\)-এ)

\[(U^\perp)^\perp = U\]

খুঁটির লম্ব-জগৎ আবার মেঝেই। এ কারণেই FTLA-র দুটো সমীকরণ আসলে চারটা: \(N(A)^\perp = C(A^T)\) এবং \(N(A^T)^\perp = C(A)\)-ও ফ্রিতে পাওয়া গেলো।

Property 6 — দিক-নির্দেশক dimension ছবি

Dimension bookkeeping

একটা \(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):

\[Ax = \begin{bmatrix} \text{---}\; a_{(1)}^T\; \text{---} \\ \vdots \\ \text{---}\; a_{(m)}^T\; \text{---}\end{bmatrix}x = \begin{bmatrix} a_{(1)}^Tx \\ \vdots \\ a_{(m)}^Tx \end{bmatrix} = \begin{bmatrix}0\\ \vdots\\ 0\end{bmatrix}\]

পড়ে দেখো কী লেখা আছে: \(x\), প্রত্যেকটা row-এর সাথে লম্ব! আর যে \(x\) সব row-এর সাথে লম্ব, সে row-দের সব linear combination-এর সাথেও লম্ব (Chapter 5.1, Problem 8) — অর্থাৎ পুরো row space-এর সাথে। এইটুকুই প্রমাণ:

\[x \in N(A) \iff x \perp \text{সব row} \iff x \perp C(A^T)\]

\(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 ছবিটা দেখো আর গল্পটা মেলাও:

  1. Input \(x\) আসে (\(\mathbb{R}^n\)-এ) → FTLA বলে সে ভাঙে: \(x = x_{row} + x_{null}\)
  2. \(A\) কাজ করে: \(Ax = Ax_{row} + \underbrace{Ax_{null}}_{0} = Ax_{row}\) — null অংশ নিঃশব্দে হারায়।
  3. Output পড়ে column space-এ\(Ax\) মানেই column-দের combination।
  4. যা 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\):

\[w_1 + 2w_2 + 2w_3 = 0\]

ধাপ ২: এটা একটাই সমীকরণ, তিনটা অজানা — সমাধান-জগৎ 2D। Free variable \(w_2 = s, w_3 = t\) ধরে:

\[w = s\,(-2, 1, 0) + t\,(-2, 0, 1)\]

ফল: \(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 হাতে-কলমে

\[A = \begin{bmatrix} 1 & 2 \\ 3 & 6 \end{bmatrix} \quad (\text{rank } 1)\]
  • 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_{row} = \frac{a^Tx}{a^Ta}a = \frac{3+2}{5}(1,2) = (1, 2)\]

ধাপ ২ (বাকিটা): \(x_{null} = x - x_{row} = (2, -1)\)। চেক: \((2,-1)\) কি \((-2,1)\)-এর গুণিতক? হ্যাঁ, \(-1\) গুণ ✓

ধাপ ৩ (A-এর চোখে):

\[Ax = \begin{bmatrix}1&2\\3&6\end{bmatrix}\begin{bmatrix}3\\1\end{bmatrix} = \begin{bmatrix}5\\15\end{bmatrix}, \qquad Ax_{row} = \begin{bmatrix}1&2\\3&6\end{bmatrix}\begin{bmatrix}1\\2\end{bmatrix} = \begin{bmatrix}5\\15\end{bmatrix} ✓\]

\(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\) মানে দুটো শর্ত:

\[w_1 + w_3 = 0, \qquad w_2 + w_4 = 0\]

(spanning vector দুটোর সাথে লম্ব হলেই পুরো \(U\)-এর সাথে লম্ব।)

Free variable \(w_3 = s\), \(w_4 = t\):

\[w = s\,(-1, 0, 1, 0) + t\,(0, -1, 0, 1)\]

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 শূন্য হতে হবে:

\[3\cdot1 + c\cdot(-1) + d\cdot2 = 0 \quad\Longrightarrow\quad c = 3 + 2d\]

অর্থাৎ একটা এক-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 দিয়ে উল্টানো রূপ)।

দুটো জুড়লে:

\[Ax = b \text{ সমাধানযোগ্য} \iff b \in C(A) = N(A^T)^\perp \iff y^Tb = 0 \;\;\forall\, y \in N(A^T)\;∎\]

ব্যবহারিক অর্থ: \(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\) বসাও:

\[x^TA^TAx = 0 \;\Longrightarrow\; (Ax)^T(Ax) = 0 \;\Longrightarrow\; \|Ax\|^2 = 0 \;\Longrightarrow\; Ax = 0 ✓\]

(মাঝের চালটা 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\)-এ থাকে। অর্থাৎ:

\[\boxed{I - P = U^\perp\text{-এর ওপর projection matrix}}\]

যাচাই 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 বানাবে।