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 \((3, 2)\)-কে তিনভাবে দেখা যায়: একটি Arrow(তীর) যার দিক ও দৈর্ঘ্য আছে, একটি সংখ্যার List(তালিকা), আর plane-এর একটি Point(বিন্দু)। তিনটিই একই জিনিস — শুধু চশমা আলাদা। পুরো Linear Algebra জুড়ে আমরা এই তিন চশমা অদল-বদল করে পরবো।
১. কি? (What)¶
ধরো তোমার বন্ধু ফোনে জিজ্ঞেস করলো, "তোর বাসা থেকে দোকানটা কোথায়?" তুমি যদি বলো "৩ কিলোমিটার দূরে" — সে এখনো জানে না কোন দিকে হাঁটবে। আবার যদি শুধু বলো "উত্তর দিকে" — কতদূর যাবে জানে না। কিন্তু যদি বলো "৩ কিলোমিটার পূর্বে, তারপর ২ কিলোমিটার উত্তরে" — এবার সে ঠিক পৌঁছে যাবে।
এই "কতটুকু + কোন দিকে" তথ্যের প্যাকেটটাই হলো একটি Vector(ভেক্টর)।
গণিতের ভাষায়, একটি vector হলো সংখ্যার একটি ordered list(ক্রমানুসারী তালিকা)। যেমন উপরের দিকনির্দেশটা:
- প্রথম সংখ্যাটা বলছে পূর্ব-পশ্চিম বরাবর কতটুকু (এখানে \(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!
একই তিনটা সংখ্যা, কিন্তু সাজানো আলাদা — তাই vector দুটো আলাদা। (তোমার পরীক্ষার [৮০, ৯৫] আর [৯৫, ৮০] mark-এর অর্থ এক নয়, তাই না?)
২. দেখতে কেমন?¶
2-vector-দের দেখা সবচেয়ে সহজ: coordinate plane-এ origin \((0,0)\) থেকে শুরু করে \((v_1, v_2)\) বিন্দু পর্যন্ত একটা arrow আঁকো।

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

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-রা পৃথিবীটাকে এভাবেই দেখে।

একটা বাড়ির ৫টি মাপ → একটি 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\)-এ:
এরা হলো প্রতিটি axis-এর দিকের "এক ধাপ"।

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