Skip to content

সমাধান — অধ্যায় ০.৫ · Linear Algebra Essentials

অধ্যায় part-0-foundations/00-05-linear-algebra.md-এর section ৭-এর সব অনুশীলনীর পূর্ণ সমাধান। প্রতিটি সংখ্যাগত ফল NumPy দিয়ে যাচাই করা হয়েছে।


Conceptual (ধারণাভিত্তিক)

৭.১ ★ — dataset দুই দৃষ্টিতে

একটি dataset-এ প্রতিটি row একটি observation (যেমন একজন ব্যক্তি) আর প্রতিটি column একটি variable (যেমন উচ্চতা)। পুরো ছকটিকে একসাথে দেখলে সেটি একটি matrix \(X\) (shape \(n\times d\)); কিন্তু যদি প্রতিটি row-কে আলাদা করে দেখি, তবে প্রতিটি observation \(\mathbb{R}^d\)-এর একটি vector, আর dataset হলো \(n\)টি এমন vector-এর সংগ্রহ। দুই দৃষ্টিই সঠিক — কোনটি ব্যবহার করব তা নির্ভর করে আমরা পুরো data-র উপর একসাথে operation করছি (matrix), নাকি একটি একটি observation নিয়ে ভাবছি (vector)।

৭.২ ★★ — \(\det(A)=0\) হলে inverse নেই কেন

determinant হলো \(A\) transformation-এর অধীনে area/volume-এর scale factor। \(\det(A)=0\) মানে \(A\) পুরো space-কে একটি নিম্নমাত্রায় চেপ্টে দেয় (২D সমতল → একটি রেখা বা বিন্দু), ফলে ক্ষেত্রফল \(0\) হয়ে যায়। এই চেপ্টে যাওয়ায় তথ্য হারায়: একাধিক ভিন্ন input vector একই output-এ গিয়ে পড়ে। inverse-এর কাজ হলো output থেকে অনন্যভাবে input ফিরিয়ে আনা — কিন্তু যখন অনেক input একই output দেয়, তখন "ফিরিয়ে আনা" অসম্ভব। তাই \(\det(A)=0\) হলে \(A^{-1}\) থাকে না (matrix-টি singular)।

৭.৩ ★★ — orthogonality = uncorrelated

দুটি variable-এর data column \(\mathbf{x}, \mathbf{y}\) থেকে যদি তাদের mean বিয়োগ করে centered করি (\(\mathbf{x}_c, \mathbf{y}_c\)), তবে তাদের covariance $$ \operatorname{cov}(x,y) = \frac{1}{n-1}\sum_i (x_i-\bar x)(y_i-\bar y) = \frac{1}{n-1}\,\mathbf{x}_c\cdot\mathbf{y}_c . $$ অর্থাৎ covariance আসলে centered column-দের dot product (একটি ধ্রুবক গুণফল সহ)। তাই $$ \mathbf{x}_c \perp \mathbf{y}_c \iff \mathbf{x}_c\cdot\mathbf{y}_c = 0 \iff \operatorname{cov}(x,y)=0 \iff x,y \text{ uncorrelated}. $$ geometry-র "লম্বত্ব" আর statistics-এর "সম্পর্কহীনতা" তাই একই গাণিতিক শর্ত।


Computational (গণনাভিত্তিক)

৭.৪ ★ — dot product, norm, কোণ

\(\mathbf{u}=\begin{bmatrix}2\\-1\\2\end{bmatrix}\), \(\mathbf{v}=\begin{bmatrix}1\\2\\2\end{bmatrix}\)

\[ \mathbf{u}\cdot\mathbf{v} = (2)(1)+(-1)(2)+(2)(2) = 2-2+4 = 4 . $$ $$ \|\mathbf{u}\| = \sqrt{2^2+(-1)^2+2^2} = \sqrt{4+1+4} = \sqrt9 = 3, \qquad \|\mathbf{v}\| = \sqrt{1^2+2^2+2^2} = \sqrt9 = 3 . $$ $$ \cos\theta = \frac{\mathbf{u}\cdot\mathbf{v}}{\|\mathbf{u}\|\|\mathbf{v}\|} = \frac{4}{3\cdot3} = \frac{4}{9} \approx 0.4444 \;\Rightarrow\; \theta = \arccos(0.4444) \approx 63.6^\circ . \]

৭.৫ ★★ — \(AB\) vs \(BA\) এবং \(\det(AB)=\det(A)\det(B)\)

\(A=\begin{bmatrix}3&0\\0&2\end{bmatrix}\), \(B=\begin{bmatrix}1&1\\0&1\end{bmatrix}\)

$$ AB = \begin{bmatrix}3\cdot1+0\cdot0 & 3\cdot1+0\cdot1\ 0\cdot1+2\cdot0 & 0\cdot1+2\cdot1\end{bmatrix} = \begin{bmatrix}3 & 3\ 0 & 2\end{bmatrix}, \qquad BA = \begin{bmatrix}1\cdot3+1\cdot0 & 1\cdot0+1\cdot2\ 0\cdot3+1\cdot0 & 0\cdot0+1\cdot2\end{bmatrix} = \begin{bmatrix}3 & 2\ 0 & 2\end{bmatrix}. $$ \(AB \neq BA\) (উপরের-ডান entry ভিন্ন: \(3\) বনাম \(2\))।

determinant: \(\det(A) = 3\cdot2 - 0 = 6\), \(\det(B) = 1\cdot1 - 1\cdot0 = 1\), \(\det(AB) = 3\cdot2 - 3\cdot0 = 6\)। যাচাই: \(\det(A)\det(B) = 6\times1 = 6 = \det(AB)\) ✓। (এটি general সত্য: \(\det(AB)=\det(A)\det(B)\)।)

৭.৬ ★★ — \(\det\) ও inverse হাতে

\(M=\begin{bmatrix}1&2\\3&4\end{bmatrix}\)

\[ \det(M) = (1)(4) - (2)(3) = 4 - 6 = -2 \neq 0 \;\Rightarrow\; \text{inverse আছে}. $$ $2\times2$ inverse সূত্র: $$ M^{-1} = \frac{1}{-2}\begin{bmatrix}4 & -2\\ -3 & 1\end{bmatrix} = \begin{bmatrix}-2 & 1\\ 1.5 & -0.5\end{bmatrix}. $$ যাচাই: $$ M M^{-1} = \begin{bmatrix}1\cdot(-2)+2\cdot1.5 & 1\cdot1+2\cdot(-0.5)\\ 3\cdot(-2)+4\cdot1.5 & 3\cdot1+4\cdot(-0.5)\end{bmatrix} = \begin{bmatrix}-2+3 & 1-1\\ -6+6 & 3-2\end{bmatrix} = \begin{bmatrix}1 & 0\\ 0 & 1\end{bmatrix} = I. \ ✓ \]

Proof-based (প্রমাণভিত্তিক)

৭.৭ ★★ — \(A+A^\top\) সর্বদা symmetric

symmetric-এর সংজ্ঞা: \(S\) symmetric যদি \(S^\top = S\)। ধরা যাক \(S = A + A^\top\)। transpose-এর নিয়ম প্রয়োগ করি: $$ S^\top = (A + A^\top)^\top = A^\top + (A^\top)^\top = A^\top + A = A + A^\top = S . $$ এখানে ব্যবহার করলাম \((B+C)^\top = B^\top + C^\top\) এবং \((A^\top)^\top = A\), আর addition commutative। যেহেতু \(S^\top = S\), তাই \(A+A^\top\) symmetric। \(\blacksquare\)

(পার্শ্ব-মন্তব্য: এই কারণেই যেকোনো square matrix-কে একটি symmetric অংশ \(\tfrac12(A+A^\top)\) ও একটি anti-symmetric অংশ \(\tfrac12(A-A^\top)\)-এ ভাঙা যায়।)

৭.৮ ★★★ — \(A^2\)-এর eigenvalue \(\lambda^2\)

ধরা যাক \(A\mathbf{v} = \lambda\mathbf{v}\), \(\mathbf{v}\neq\mathbf{0}\)। তাহলে $$ A^2\mathbf{v} = A(A\mathbf{v}) = A(\lambda\mathbf{v}) = \lambda\,(A\mathbf{v}) = \lambda\,(\lambda\mathbf{v}) = \lambda^2\mathbf{v}. $$ (দ্বিতীয় ধাপে \(A\mathbf{v}=\lambda\mathbf{v}\) বসালাম; তৃতীয় ধাপে linearity দিয়ে scalar \(\lambda\) বাইরে আনলাম; চতুর্থ ধাপে আবার \(A\mathbf{v}=\lambda\mathbf{v}\)।) যেহেতু \(\mathbf{v}\neq\mathbf{0}\), এটি দেখায় \(\mathbf{v}\) হলো \(A^2\)-এর eigenvector, eigenvalue \(\lambda^2\) সহ।

সাধারণীকরণ: একই যুক্তি \(k\) বার প্রয়োগ করে যেকোনো ধনাত্মক পূর্ণসংখ্যা \(k\)-এর জন্য $$ A^k\mathbf{v} = \lambda^k\mathbf{v}, $$ অর্থাৎ \(A^k\)-এর eigenvalue \(\lambda^k\) (eigenvector একই থাকে)। (NumPy যাচাই: \(A=\begin{bmatrix}2&1\\1&2\end{bmatrix}\)-এ \(\lambda\in\{1,3\}\) হলে \(A^2\)-এর eigenvalue \(\{1,9\}\) — মিলে যায়।)


Coding (Python)

৭.৯ ★★ — is_orthogonal

import numpy as np

def is_orthogonal(u, v, tol=1e-9):
    """dot product ব্যবহার করে u ⟂ v কিনা যাচাই করে।"""
    u = np.asarray(u, dtype=float)
    v = np.asarray(v, dtype=float)
    return bool(abs(np.dot(u, v)) < tol)
    # বিকল্প: return bool(np.isclose(np.dot(u, v), 0.0, atol=tol))

print(is_orthogonal([1, 2], [2, -1]))   # True  (1*2 + 2*(-1) = 0)
print(is_orthogonal([1, 2], [3, 1]))    # False (1*3 + 2*1 = 5)

ব্যাখ্যা: \(\mathbf{u}\perp\mathbf{v}\iff\mathbf{u}\cdot\mathbf{v}=0\)। floating-point-এ ঠিক \(0\) বিরল, তাই একটি ছোট সহনশীলতা tol দিয়ে তুলনা করি। \([1,2]\cdot[2,-1]=0\)True; \([1,2]\cdot[3,1]=5\)False

৭.১০ ★★★ — covariance-এর principal axis plot

import matplotlib
matplotlib.use("Agg")          # বা স্বাভাবিক backend, Jupyter-এ inline
import numpy as np
import matplotlib.pyplot as plt

# 1) correlated 50x2 dataset
rng  = np.random.default_rng(0)
base = rng.normal(size=(50, 2))          # uncorrelated আদি data
T    = np.array([[1.5, 0.0],
                 [0.9, 0.5]])            # mixing matrix → correlation আনে
X    = base @ T.T
X    = X - X.mean(axis=0)               # center

# 2) covariance + eigen-decomposition
C = np.cov(X, rowvar=False)             # 2x2 symmetric
vals, vecs = np.linalg.eigh(C)          # ascending eigenvalues
order = np.argsort(vals)[::-1]          # descending: PC1 first
vals, vecs = vals[order], vecs[:, order]

print("covariance =\n", np.round(C, 3))
print("eigenvalues (variances):", np.round(vals, 3))
print("top eigenvector:", np.round(vecs[:, 0], 3))

# 3) plot data + principal axes (length ∝ sqrt(eigenvalue))
fig, ax = plt.subplots(figsize=(6, 6))
ax.scatter(X[:, 0], X[:, 1], s=18, alpha=0.5, color="#1f77b4", label="data")
colors = ["#d62728", "#2ca02c"]
for i in range(2):
    vv = vecs[:, i] * np.sqrt(vals[i]) * 2.0
    ax.quiver(0, 0, vv[0], vv[1], angles="xy", scale_units="xy", scale=1,
              color=colors[i], width=0.013,
              label=f"PC{i+1} (var={vals[i]:.2f})")
ax.set_aspect("equal"); ax.grid(True, alpha=0.3)
ax.axhline(0, color="gray", lw=0.6); ax.axvline(0, color="gray", lw=0.6)
ax.set_xlabel("X1"); ax.set_ylabel("X2")
ax.set_title("Principal axes from the covariance matrix")
ax.legend(loc="upper left", fontsize=9)
plt.tight_layout()
plt.savefig("ex-7-10-pca.png", dpi=150)   # নিজের ফোল্ডারে সংরক্ষণ

প্রত্যাশিত output (seed = 0):

covariance =
 [[1.973 1.304]
 [1.304 1.103]]
eigenvalues (variances): [2.913 0.163]
top eigenvector: [0.811 0.585]
বৃহত্তম eigenvalue (\(\approx 2.91\))-এর eigenvector \(\approx (0.81, 0.59)\) — এটিই সেই দিক যেদিকে data সবচেয়ে বেশি ছড়ানো, অর্থাৎ প্রথম principal component। তীরের দৈর্ঘ্য \(\sqrt{\lambda}\) অনুপাতে নেওয়ায় তা সেই দিকে standard deviation-এর সমানুপাতিক। (eigenvector-এর চিহ্ন/দিক \(\pm\) যেকোনো হতে পারে — উভয়ই সঠিক, কারণ \(\mathbf{v}\)\(-\mathbf{v}\) একই রেখা নির্দেশ করে।)


সব সংখ্যাগত ফল এক নজরে (যাচাইকৃত)

প্রশ্ন মূল ফল
৭.৪ \(\mathbf{u}\cdot\mathbf{v}=4\), \(\|\mathbf{u}\|=\|\mathbf{v}\|=3\), \(\cos\theta=4/9\), \(\theta\approx63.6^\circ\)
৭.৫ \(AB=\begin{bmatrix}3&3\\0&2\end{bmatrix}\neq BA=\begin{bmatrix}3&2\\0&2\end{bmatrix}\); \(\det(AB)=6=6\cdot1\)
৭.৬ \(\det M=-2\), \(M^{-1}=\begin{bmatrix}-2&1\\1.5&-0.5\end{bmatrix}\)
৭.৮ \(A^k\mathbf{v}=\lambda^k\mathbf{v}\); \(\{1,3\}\to A^2:\{1,9\}\)
৭.৯ True, False
৭.১০ eigenvalues \(\approx(2.91, 0.16)\), top eigvec \(\approx(0.81, 0.59)\)