কনটেন্টে যান

Chapter 1.1 — What is a Vector? (ভেক্টর কি?)

🎯 এই chapter-এ যা শিখবে

  • Vector(ভেক্টর) কি — একই জিনিসের তিনটি দৃষ্টিভঙ্গি: arrow, list, point
  • \(\mathbb{R}^n\) notation ভয় ছাড়া পড়া: 2-vector, 3-vector, \(n\)-vector
  • Vector-এর entries, size/dimension, indexing — আর দুটি vector কখন equal
  • বিশেষ vector-রা: zero vector, standard unit vectors, ones vector
  • Data Science-এ vector কোথায় লুকিয়ে আছে — feature vector, image, word embedding

🖼️ এক ছবিতে মূল idea

একই vector-এর তিন রূপ: arrow, list, point

একই vector \((3, 2)\)-কে তিনভাবে দেখা যায়: একটি Arrow(তীর) যার দিক ও দৈর্ঘ্য আছে, একটি সংখ্যার List(তালিকা), আর plane-এর একটি Point(বিন্দু)। তিনটিই একই জিনিস — শুধু চশমা আলাদা। পুরো Linear Algebra জুড়ে আমরা এই তিন চশমা অদল-বদল করে পরবো।

১. কি? (What)

ধরো তোমার বন্ধু ফোনে জিজ্ঞেস করলো, "তোর বাসা থেকে দোকানটা কোথায়?" তুমি যদি বলো "৩ কিলোমিটার দূরে" — সে এখনো জানে না কোন দিকে হাঁটবে। আবার যদি শুধু বলো "উত্তর দিকে" — কতদূর যাবে জানে না। কিন্তু যদি বলো "৩ কিলোমিটার পূর্বে, তারপর ২ কিলোমিটার উত্তরে" — এবার সে ঠিক পৌঁছে যাবে।

এই "কতটুকু + কোন দিকে" তথ্যের প্যাকেটটাই হলো একটি Vector(ভেক্টর)

গণিতের ভাষায়, একটি vector হলো সংখ্যার একটি ordered list(ক্রমানুসারী তালিকা)। যেমন উপরের দিকনির্দেশটা:

\[ v = \begin{bmatrix} 3 \\ 2 \end{bmatrix} \]
  • প্রথম সংখ্যাটা বলছে পূর্ব-পশ্চিম বরাবর কতটুকু (এখানে \(3\)),
  • দ্বিতীয় সংখ্যাটা বলছে উত্তর-দক্ষিণ বরাবর কতটুকু (এখানে \(2\))।

কিছু জরুরি শব্দ (এগুলো বারবার আসবে, তাই এখনই বন্ধুত্ব করে ফেলো):

শব্দ মানে
Entry / Element / Component (উপাদান) vector-এর ভেতরের এক-একটা সংখ্যা
Size / Dimension (আকার/মাত্রা) মোট কয়টা entry আছে
\(n\)-vector যে vector-এ \(n\)টা entry আছে
Scalar(স্কেলার) সাধারণ একটা একক সংখ্যা — vector নয়

\(v = (3, 2)\) একটি 2-vector; \(u = (1.5, -2, 0)\) একটি 3-vector। আর \((-1.1, 0.0, 3.6, -7.2)\) হলো 4-vector, যার তৃতীয় entry \(3.6\)

Notation(চিহ্নপদ্ধতি): \(i\)-তম entry লেখা হয় subscript দিয়ে: \(v_1 = 3\), \(v_2 = 2\)। Index \(i\) চলে \(1\) থেকে \(n\) পর্যন্ত। (সাবধান: Python-এ index শুরু হয় \(0\) থেকে — §৬-এ এই ফাঁদটা দেখবো।)

সব real number-এর সেটকে লেখা হয় \(\mathbb{R}\), আর সব \(n\)-vector-এর সেটকে \(\mathbb{R}^n\)। তাই \(v \in \mathbb{R}^2\) পড়বে এভাবে: "\(v\) হলো ২টা real entry-ওয়ালা একটা vector"। এটুকুই — \(\mathbb{R}^n\) দেখলে ভয় পাওয়ার কিছু নেই, এটা শুধু বলে "\(n\)টা সংখ্যার list"।

দুটি vector কখন equal(সমান)? \(a = b\) তখনই, যখন (i) দুটোর size সমান, এবং (ii) প্রতিটি জায়গার entry মিলে যায়: \(a_1 = b_1, \dots, a_n = b_n\)। খেয়াল রাখো — order matters!

\[ \begin{bmatrix} 7 \\ 4 \\ 2 \end{bmatrix} \neq \begin{bmatrix} 7 \\ 2 \\ 4 \end{bmatrix} \]

একই তিনটা সংখ্যা, কিন্তু সাজানো আলাদা — তাই vector দুটো আলাদা। (তোমার পরীক্ষার [৮০, ৯৫] আর [৯৫, ৮০] mark-এর অর্থ এক নয়, তাই না?)

২. দেখতে কেমন?

2-vector-দের দেখা সবচেয়ে সহজ: coordinate plane-এ origin \((0,0)\) থেকে শুরু করে \((v_1, v_2)\) বিন্দু পর্যন্ত একটা arrow আঁকো।

বিভিন্ন 2D vector arrows

পাঁচটি ভিন্ন vector, সবগুলোর লেজ origin-এ। Entry দুটো ঋণাত্মকও হতে পারে — তখন arrow বাঁদিকে বা নিচে যায়। যেমন \((-3, -1)\) গেছে বাঁয়ে-নিচে।

3-vector-এর জন্য লাগে তিনটা axis — \(x\), \(y\), \(z\):

3D vector

Vector \((2, 3, 2.5)\): প্রথমে \(x\) বরাবর \(2\), তারপর \(y\) বরাবর \(3\), শেষে উপরে (\(z\)) \(2.5\)। ছায়া-রেখাগুলো (dashed) দেখাচ্ছে কীভাবে মেঝেতে হেঁটে তারপর উপরে উঠতে হয়।

আর 4-vector, 100-vector? সেগুলোর ছবি আঁকা যায় না — কিন্তু ভয় নেই। কৌশলটা হলো: মাথার ভেতরে 2D বা 3D-র ছবিটাই রাখো, আর হিসাবের সময় বিশ্বাস রাখো যে নিয়মগুলো \(n\)টা entry-র জন্যও হুবহু একই। এই বইয়ের পুরোটা জুড়ে আমরা এটাই করবো: ছবি 2D/3D-তে, হিসাব \(\mathbb{R}^n\)-এ।

৩. কোথায় ইউজ হয়?

Vector শুধু পদার্থবিজ্ঞানের force/velocity নয় — Data Science-এর প্রতিটি কোণায় vector:

  • Feature vector(বৈশিষ্ট্য ভেক্টর): একটা বাড়ির আয়তন, বেডরুম সংখ্যা, বয়স, দূরত্ব, তলা — ৫টা সংখ্যা একসাথে করলেই বাড়িটা হয়ে গেল \(\mathbb{R}^5\)-এর একটা vector। ML model-রা পৃথিবীটাকে এভাবেই দেখে।

house feature vector

একটা বাড়ির ৫টি মাপ → একটি feature vector \(x_{house} \in \mathbb{R}^5\)। প্রতিটি entry-র নিজস্ব অর্থ আছে (area, bedrooms, ...), কিন্তু model-এর কাছে পুরোটা একটাই object।

  • Image(ছবি): \(8\times 8\) pixel-এর একটা সাদাকালো ছবি মানে ৬৪টা brightness সংখ্যা — অর্থাৎ \(\mathbb{R}^{64}\)-এর একটি vector। তোমার ফোনের 12-megapixel ছবি? কোটি dimension-এর vector!
  • Word embedding(শব্দ-ভেক্টর): আধুনিক NLP-তে প্রতিটা শব্দকে একটা vector বানানো হয় (যেমন 300-vector), যাতে "cat" আর "dog"-এর vector কাছাকাছি থাকে। Chapter 1.3-এ আমরা নিজেরাই এমন একটা mini search engine বানাবো।
  • Time series(সময়-ধারা): ঢাকার টানা ৩০ দিনের তাপমাত্রা = একটি 30-vector। শেয়ারের দাম, হার্টবিট সিগন্যাল — সব তা-ই।
  • রং: যেকোনো রং = (Red, Green, Blue) তিনটি মাত্রা, মানে \(\mathbb{R}^3\)-এর vector। যেমন কমলা রং \(\approx (255, 165, 0)\)

মোদ্দা কথা: যা কিছু সংখ্যা দিয়ে মাপা যায়, তাকে vector বানানো যায় — আর একবার vector বানালেই Linear Algebra-র পুরো যন্ত্রপাতি তার ওপর চলে।

৪. Properties

এই chapter-এ এখনো আমরা vector-এর ওপর operation শিখিনি (সেটা Chapter 1.2-এ), কিন্তু কয়েকটি বিশেষ vector আর গঠনগত ধর্ম এখনই চিনে রাখা দরকার।

(ক) Zero vector(শূন্য ভেক্টর): সব entry শূন্য — \(\mathbf{0} = (0, 0, \dots, 0)\)। ছবিতে এটা origin-এ বসে থাকা একটা বিন্দু; কোনো দিকও নেই, দৈর্ঘ্যও নেই। প্রয়োজনে size বোঝাতে লেখে \(\mathbf{0}_n\)

(খ) Standard unit vectors(আদর্শ একক ভেক্টর): \(e_i\) হলো সেই vector যার \(i\)-তম entry \(1\), বাকি সব \(0\)\(\mathbb{R}^3\)-এ:

\[ e_1 = \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix},\quad e_2 = \begin{bmatrix} 0 \\ 1 \\ 0 \end{bmatrix},\quad e_3 = \begin{bmatrix} 0 \\ 0 \\ 1 \end{bmatrix} \]

এরা হলো প্রতিটি axis-এর দিকের "এক ধাপ"।

special vectors

বাঁয়ে: \(\mathbb{R}^2\)-এর \(e_1\), \(e_2\) আর zero vector। ডানে: \((3,2) = 3e_1 + 2e_2\) — যেকোনো vector আসলে unit vector-দের recipe। এই ছোট্ট পর্যবেক্ষণটাই পরে Basis(ভিত্তি) নামের বিশাল ধারণার বীজ।

(গ) Ones vector: সব entry \(1\) — লেখা হয় \(\mathbf{1}\) বা \(\mathbf{1}_n\)। পরে গড় (average) হিসাবের সময় এ বারবার আসবে।

(ঘ) Block/stacked vector(জোড়া লাগানো ভেক্টর): ছোট vector-দের পরপর বসিয়ে বড় vector বানানো যায়। \(b = (1, 2)\) আর \(c = (5, 0, 3)\) হলে stacked vector \(a = (b, c) = (1, 2, 5, 0, 3)\) — একটি 5-vector।

(ঙ) Subvector / slice(টুকরো): উল্টোটাও চলে — বড় থেকে টুকরো কাটা। \(z = (1, -1, 2, 0)\) হলে \(z_{2:3} = (-1, 2)\)। এই colon notation NumPy-তে সরাসরি কাজে লাগবে।

(চ) Sparsity(বিরলতা): যে vector-এর বেশিরভাগ entry \(0\), তাকে Sparse(স্পার্স) বলে। যেমন: "এই মাসে তুমি নেটফ্লিক্সের কোন কোন সিনেমা দেখেছো" vector-টা লাখো entry-র, কিন্তু অশূন্য মাত্র কয়েকটা। \(e_i\)-রা হলো সবচেয়ে sparse অশূন্য vector — মাত্র একটা entry অশূন্য।

৫. Intuition — কেন সত্য?

সবচেয়ে বড় প্রশ্ন: arrow, list, point — তিনটা এত আলাদা জিনিস একই কীভাবে হয়?

সেতুটা হলো coordinate system(স্থানাঙ্ক ব্যবস্থা)। যখনই তুমি plane-এ দুটো axis আর একটা origin ঠিক করে ফেলো:

  1. Point → List: প্রতিটি point-এর একটা ঠিকানা তৈরি হয় — "\(x\) বরাবর কত, \(y\) বরাবর কত" — সেটাই সংখ্যার list।
  2. List → Arrow: list-টা একটা চলার নির্দেশও বটে — origin থেকে শুরু করে "\(v_1\) ডানে, \(v_2\) উপরে" গেলে যে যাত্রা হয়, সেটাই arrow।
  3. Arrow → Point: arrow-র মাথা যেখানে থামে, সেটাই point।

তাহলে কোন চশমাটা "আসল"? — কোনোটাই না, আবার সবগুলোই। কাজ অনুযায়ী চশমা বদলাবে:

  • জ্যামিতিক intuition দরকার (দিক, কোণ, দৈর্ঘ্য)? → arrow ভাবো।
  • Data নিয়ে হিসাব করছো? → list ভাবো (computer এটাই বোঝে)।
  • অনেকগুলো data point-এর ছড়ানো-ছিটানো দশা দেখছো? → point ভাবো (scatter plot!)।

3Blue1Brown-এর ভাষায়: physicist ভাবে arrow, computer scientist ভাবে list, mathematician বলে — দুটোই, এবং আরো বেশি কিছু। এই বইয়ে আমরা তিনটাকেই সমান দক্ষতায় ব্যবহার করা শিখবো; কোনো সমস্যায় আটকে গেলে প্রথম প্রশ্নই হবে — "অন্য চশমায় দেখলে কেমন লাগে?"

একটা সূক্ষ্ম কথা: arrow-টা আসলে origin-এ আটকে থাকতে বাধ্য নয় — শহরের যেকোনো জায়গা থেকে "৩ পূর্বে, ২ উত্তরে" হাঁটা একই displacement(সরণ)। তাই একই vector-কে আমরা মাঝে মাঝে অন্য বিন্দু থেকেও আঁকবো (পরের chapter-এই দেখবে)। শুধু যখন vector দিয়ে অবস্থান বোঝাই, তখন লেজটা origin-এ রাখতে হয়।

৬. Code-এ কেমনে লিখে

Python-এ vector-এর ঘরবাড়ি হলো NumPy-র array

import numpy as np
import matplotlib.pyplot as plt

# একটি 2-vector
v = np.array([3, 2])
print(v)            # [3 2]
print(v.shape)      # (2,)  <- size 2
print(len(v))       # 2

# entry পড়া — সাবধান! Python-এ index 0 থেকে শুরু
print(v[0])         # 3  (গণিতের v_1)
print(v[1])         # 2  (গণিতের v_2)

# একটি 5-vector: বাড়ির feature vector
x_house = np.array([12.5, 3, 8, 4.2, 5])
print(x_house.shape)     # (5,)

# slice: গণিতের x_{2:4}
print(x_house[1:4])      # [3.  8.  4.2]

# বিশেষ vector-রা
zero = np.zeros(4)       # [0. 0. 0. 0.]
ones = np.ones(4)        # [1. 1. 1. 1.]
e2 = np.zeros(4); e2[1] = 1.0   # e_2 = [0. 1. 0. 0.]

# দুটি vector equal কিনা
a = np.array([1, 2, 3])
b = np.array([1, 2, 3])
print(np.array_equal(a, b))   # True

# stacked vector
b2 = np.array([1, 2]); c2 = np.array([5, 0, 3])
stacked = np.concatenate([b2, c2])
print(stacked)   # [1 2 5 0 3]

Output ব্যাখ্যা: shape হলো NumPy-র "size" — (2,) মানে ২টা entry-র 1-D array। সবচেয়ে বড় ফাঁদ: গণিতের \(v_1\) কোডে v[0]; index সবসময় এক ধাপ পিছিয়ে।

Vector আঁকতে matplotlib-এর quiver:

fig, ax = plt.subplots()
ax.quiver(0, 0, v[0], v[1], angles='xy', scale_units='xy', scale=1,
          color='#1f77b4')
ax.set_xlim(-1, 5); ax.set_ylim(-1, 4)
ax.set_aspect('equal')
plt.show()

quiver(0, 0, 3, 2, ...) মানে: লেজ \((0,0)\)-তে, arrow যাবে \((3,2)\) পর্যন্ত। angles='xy', scale_units='xy', scale=1 — এই তিনটা argument না দিলে matplotlib নিজের মতো স্কেল করে ছবি নষ্ট করে দেয়; মুখস্থ করে ফেলো।

৭. Worked Examples

Example 1 — ঠিকানা থেকে vector। বাসা থেকে স্কুল: ৪ কিমি পূর্বে ও ১ কিমি দক্ষিণে। Vector-টা কী?

ধাপ ১: axis ঠিক করি — পূর্ব \(= +x\), উত্তর \(= +y\)ধাপ ২: পূর্বে ৪ → প্রথম entry \(+4\)ধাপ ৩: দক্ষিণে ১ মানে উত্তরে \(-1\) → দ্বিতীয় entry \(-1\)উত্তর: \(s = (4, -1) \in \mathbb{R}^2\)। ছবিতে arrow-টা ডানে-নিচে হেলে থাকবে।

Example 2 — index পড়া। \(u = (7, -3, 0, 2.5, -3)\) হলে (ক) \(u\)-র size কত? (খ) \(u_2\)\(u_5\) কত? (গ) \(u_2 = u_5\) কি?

ধাপ ১: entry গুনি: ৫টা — তাই \(u \in \mathbb{R}^5\)ধাপ ২: \(u_2 = -3\) (দ্বিতীয় entry), \(u_5 = -3\) (পঞ্চম entry)। ধাপ ৩: হ্যাঁ, \(u_2 = u_5 = -3\) — আলাদা জায়গার entry দৈবাৎ সমান হতেই পারে; তাতে vector-এর কিছু যায় আসে না।

Example 3 — ছবি থেকে vector। একটা \(2\times 2\) সাদাকালো ছবির pixel brightness (উপরের সারি বাঁ→ডান, তারপর নিচের সারি): \(200, 50, 30, 240\)। ছবিটাকে vector হিসেবে লেখো এবং বলো কোন entry সবচেয়ে উজ্জ্বল pixel।

ধাপ ১: সারি ধরে ধরে সাজাই (একে বলে flatten): \(p = (200, 50, 30, 240) \in \mathbb{R}^4\)ধাপ ২: সবচেয়ে বড় entry \(p_4 = 240\) — অর্থাৎ নিচের সারির ডান pixel-টা সবচেয়ে উজ্জ্বল। লক্ষ করো: flatten করার order-টা একটা convention — একবার ঠিক করলে সবসময় সেটাই মানতে হবে, নইলে \(p\)-এর অর্থ বদলে যাবে (order matters!)।

৮. Problems ও Solutions

Problem 1. নিচের কোনগুলো vector হিসেবে লেখা যায়? Size-সহ লেখো: (ক) এক সপ্তাহের দৈনিক সর্বোচ্চ তাপমাত্রা; (খ) "৫ কিলোমিটার"; (গ) একটা ছাত্রের ৪ বিষয়ের নম্বর; (ঘ) তোমার বয়স।

Solution

(ক) হ্যাঁ — ৭ দিনের ৭টা সংখ্যা, তাই একটি 7-vector, \(t \in \mathbb{R}^7\)। (খ) শুধু "৫ কিমি" একটা মাত্র সংখ্যা — এটা scalar; দিক নেই। তবে "৫ কিমি উত্তরে" বললে সেটা 2-vector \((0, 5)\) হতো। (গ) হ্যাঁ — 4-vector, \(m \in \mathbb{R}^4\); যেমন \(m = (78, 85, 90, 66)\)। (ঘ) একটা সংখ্যা — scalar। (চাইলে 1-vector বলা যায়; VMLS-এর নিয়মে 1-vector আর সংখ্যা একই জিনিস।)

Problem 2. \(a = (2, -1, 3)\) এবং \(b = (2, 3, -1)\)। (ক) \(a = b\)? (খ) \(a_2 + b_2\) কত? (গ) এমন একটা \(c \in \mathbb{R}^3\) লেখো যার \(c_1 = a_1\) কিন্তু \(c \neq a\)

Solution

(ক) না। Size সমান (দুটোই 3-vector), কিন্তু \(a_2 = -1 \neq 3 = b_2\)। একটা জায়গায় না মিললেই vector দুটো আলাদা। (খ) \(a_2 + b_2 = -1 + 3 = 2\)। (গ) অনেক উত্তর সম্ভব; যেমন \(c = (2, 0, 0)\)। প্রথম entry \(2 = a_1\) মিলেছে, কিন্তু \(c_2 = 0 \neq -1\), তাই \(c \neq a\)

Problem 3. \(\mathbb{R}^4\)-এর standard unit vector \(e_3\) লেখো। তারপর \(x = (5, -2, 7, 1)\)-এর জন্য দেখাও: \(x\)-এর তৃতীয় entry-টা \(e_3\) ব্যবহার করে "তুলে আনা" যায় — অর্থাৎ \(e_3\)-এর সাথে \(x\)-এর entry-wise গুণফলের যোগ \(= x_3\)। (এটাই আসলে dot product-এর পূর্বাভাস!)

Solution

\(e_3 = (0, 0, 1, 0)\)। Entry-wise গুণ: \((0\cdot 5,\; 0\cdot(-2),\; 1\cdot 7,\; 0\cdot 1) = (0, 0, 7, 0)\)। যোগফল: \(0 + 0 + 7 + 0 = 7 = x_3\) ✓। \(e_3\) একটা "ফিল্টার"-এর মতো কাজ করলো — শুধু তৃতীয় entry-টা পার হতে দিলো। Chapter 1.3-এ দেখবে এই হিসাবটার নাম inner product: \(e_3^T x = x_3\)

Problem 4. \(b = (1, 8)\), \(c = (4, -1, 6)\), \(d = (0)\) (একটি 1-vector)। Stacked vector \(z = (c, d, b)\) লেখো। \(z\)-এর size কত? \(z_{3:5}\) কত?

Solution

সাজিয়ে লিখি: \(z = (4, -1, 6, 0, 1, 8)\) — size \(3 + 1 + 2 = 6\)\(z_{3:5}\) মানে তৃতীয় থেকে পঞ্চম entry: \(z_{3:5} = (6, 0, 1)\)। (Python-এ কিন্তু এটা হবে z[2:5] — index এক ধাপ পেছানো এবং শেষ সীমা exclusive!)

Problem 5. একটা অনলাইন দোকানে ১০টা পণ্য আছে। ক্রেতা ক এই মাসে কিনেছে শুধু ২ নম্বর পণ্য (১টা) আর ৭ নম্বর পণ্য (৩টা)। (ক) ক্রেতার কেনাকাটা-vector \(x \in \mathbb{R}^{10}\) লেখো। (খ) vector-টা কি sparse? (গ) কেনাকাটা না-করা ক্রেতার vector কী?

Solution

(ক) \(x = (0, 1, 0, 0, 0, 0, 3, 0, 0, 0)\)\(x_2 = 1\), \(x_7 = 3\), বাকি সব শূন্য। (খ) হ্যাঁ — ১০টার মধ্যে ৮টা entry-ই শূন্য; মাত্র ২টা অশূন্য। বাস্তবের e-commerce data এমনই — লাখো পণ্যের মধ্যে একজন কেনে হাতেগোনা কয়েকটা। (গ) Zero vector \(\mathbf{0}_{10} = (0, 0, \dots, 0)\)

Problem 6. সত্য/মিথ্যা — কারণসহ: (ক) \((1, 2) \in \mathbb{R}^3\); (খ) \(\mathbb{R}^2\)-এর দুটি vector-এর entry-র যোগফল সমান হলে vector দুটো সমান; (গ) \(e_1 \in \mathbb{R}^2\) আর \(e_1 \in \mathbb{R}^3\) একই vector; (ঘ) zero vector-এর কোনো দিক নেই।

Solution

(ক) মিথ্যা। \((1,2)\)-এর entry ২টা, তাই এটা \(\mathbb{R}^2\)-এর সদস্য; \(\mathbb{R}^3\)-এ থাকতে হলে ৩টা entry লাগতো। (খ) মিথ্যা। \((3, 1)\) আর \((1, 3)\) — দুটোরই যোগফল \(4\), কিন্তু order আলাদা, তাই vector আলাদা। (গ) মিথ্যা। প্রথমটা \((1, 0)\), দ্বিতীয়টা \((1, 0, 0)\) — size-ই আলাদা! একই প্রতীক \(e_1\), কিন্তু কোন space-এ আছি সেটা context থেকে বুঝতে হয়। (ঘ) সত্য। সব entry শূন্য, arrow-টার দৈর্ঘ্যই নেই — তাই দিক অর্থহীন। এ কারণেই ছবিতে zero vector শুধুই origin-এর বিন্দু।

Problem 7. RGB রঙে লাল \(= (255, 0, 0)\), সবুজ \(= (0, 255, 0)\), সাদা \(= (255, 255, 255)\), কালো \(= (0, 0, 0)\)। (ক) রং-vector-রা কোন space-এ থাকে? (খ) হলুদ \((255, 255, 0)\)-এর কোন entry দুটো অশূন্য? (গ) কালো রং কোন বিশেষ vector?

Solution

(ক) প্রতিটি রঙে ৩টি সংখ্যা (R, G, B) — তাই \(\mathbb{R}^3\) (আসলে প্রতিটি entry \(0\)\(255\)-এর মধ্যে সীমাবদ্ধ, কিন্তু space-টা \(\mathbb{R}^3\)-ই)। (খ) \(R\)\(G\) — প্রথম ও দ্বিতীয় entry। লাল + সবুজ আলো মিশে হলুদ। (গ) কালো \(= (0,0,0) = \mathbf{0}_3\) — zero vector! কোনো আলোই নেই।

Problem 8 (একটু চ্যালেঞ্জ)। একটা ক্লাসে ৪ জন ছাত্রের ৩টি পরীক্ষার নম্বর নিচের টেবিলে:

পরীক্ষা ১ পরীক্ষা ২ পরীক্ষা ৩
রাহি 70 80 90
মিতু 85 85 80
জয় 60 75 95
তুলি 90 70 85

(ক) "রাহির নম্বর" vector হিসেবে লেখো — size কত? (খ) "পরীক্ষা ২-এর নম্বর" vector হিসেবে লেখো — size কত? (গ) দুটো দৃষ্টিভঙ্গির পার্থক্যটা এক লাইনে বলো।

Solution

(ক) সারি ধরে পড়লে: \(r = (70, 80, 90) \in \mathbb{R}^3\) — এক ছাত্র, তিন পরীক্ষা। (খ) কলাম ধরে পড়লে: \(p_2 = (80, 85, 75, 70) \in \mathbb{R}^4\) — এক পরীক্ষা, চার ছাত্র। (গ) একই টেবিল থেকে সারি-vector নিলে পাই "এক ব্যক্তির profile", কলাম-vector নিলে "এক feature-এর সবার মান" — data science-এ দুটোই অহরহ লাগে, আর এই টেবিলটা আসলে একটা Matrix(ম্যাট্রিক্স) — যার গল্প Part III-তে!

৯. Common ভুল

  1. "Vector মানেই শুধু arrow" — ভুল। \(\mathbb{R}^{300}\)-এর word embedding-এর কোনো আঁকার মতো arrow নেই, তবু সে পুরোদস্তুর vector। ঠিক ভাবনা: vector = ordered list; arrow হলো 2D/3D-তে তার ছবি।
  2. Order ভুলে যাওয়া\((2, 5)\) আর \((5, 2)\)-কে "একই তো, দুটো সংখ্যাই আছে" ভাবা। ভুল! প্রথমটা ডানে ২ উপরে ৫, দ্বিতীয়টা ডানে ৫ উপরে ২ — সম্পূর্ণ আলাদা arrow।
  3. Python index আর math index গুলিয়ে ফেলা — গণিতের \(v_1\) হলো কোডের v[0]v[1] লিখলে পাবে \(v_2\)! এই off-by-one ভুল অভিজ্ঞদেরও কামড়ায়।
  4. Size না মিলিয়ে vector তুলনা করা\((1, 0)\) আর \((1, 0, 0)\) সমান নয়; সমান হওয়ার প্রশ্নই আসে না, কারণ এরা ভিন্ন space-এর বাসিন্দা।
  5. Point আর vector-কে চিরশত্রু ভাবা — আসলে origin ঠিক করা থাকলে প্রতিটি point-ই একটা vector (origin থেকে সেই point-এর arrow), আবার উল্টোটাও। চশমা বদলানোতে ভয় পেয়ো না।

১০. এক নজরে

ধারণা প্রতীক মানে
Vector \(v\) সংখ্যার ordered list
Entry \(v_i\) \(i\)-তম সংখ্যা (\(i = 1, \dots, n\))
Size/Dimension \(n\) মোট entry সংখ্যা
সব \(n\)-vector-এর সেট \(\mathbb{R}^n\) \(v \in \mathbb{R}^n\) মানে \(v\)-তে \(n\)টা real entry
Zero vector \(\mathbf{0}\) সব entry \(0\); origin-এর বিন্দু
Standard unit vector \(e_i\) \(i\)-তম entry \(1\), বাকি \(0\)
Ones vector \(\mathbf{1}\) সব entry \(1\)
Sparse vector বেশিরভাগ entry \(0\)
তিন দৃষ্টিভঙ্গি arrow (geometry), list (data), point (position)

পরের chapter-এর সেতু: vector চেনা হলো — কিন্তু চুপচাপ বসে থাকা vector দিয়ে কী হবে? পরের chapter-এ আমরা vector-দের যোগ করবো আর scalar দিয়ে টেনে লম্বা/খাটো করবো — আর দেখবো tip-to-tail-এর সেই বিখ্যাত ছবি, যেখান থেকে Linear Algebra-র সব জাদু শুরু।

📓 Notebook Project

notebooks/part-01/ch01-project.ipynb — বাস্তব জিনিস (ছাত্রের নম্বর, রং, মিনি-ছবি) থেকে নিজ হাতে vector বানাও, scratch-এ vector class-এর মতো function লেখো, আর quiver দিয়ে নিজের প্রথম vector-ছবি আঁকো।