Chapter 1.2 — Vector Addition & Scalar Multiplication (ভেক্টর যোগ ও স্কেলার গুণ)¶
🎯 এই chapter-এ যা শিখবে¶
- দুটি vector যোগ করা — সংখ্যায় (entry-wise) আর ছবিতে (tip-to-tail)
- Scalar multiplication(স্কেলার গুণ) — vector-কে টেনে লম্বা, চেপে খাটো, বা উল্টো করা
- Vector subtraction(বিয়োগ) — আর তার দারুণ geometric অর্থ: "এক বিন্দু থেকে আরেক বিন্দুর arrow"
- যোগ ও গুণের ৮টি algebraic properties — যেগুলোই পরে Vector Space-এর সংবিধান হবে
- Data Science-এ এসবের মানে: ছবির mixing, গড় বের করা, dataset সরানো (centering)
🖼️ এক ছবিতে মূল idea¶

Vector যোগের পুরো রহস্য এক ছবিতে: প্রথমে \(a = (3,1)\) বরাবর হাঁটো, তারপর সেখান থেকে \(b = (1,2)\) বরাবর। যেখানে পৌঁছালে, origin থেকে সেখানকার সরাসরি arrow-টাই \(a + b = (4, 3)\)। একে বলে tip-to-tail(লেজ-মাথা) নিয়ম।
১. কি? (What)¶
গতকাল তুমি শিখেছো vector মানে "কতটুকু + কোন দিকে" — একটা চলার নির্দেশ। এখন প্রশ্ন: দুটো নির্দেশ পরপর মানলে কী হয়?
ধরো সকালে হাঁটলে \(a = (3, 1)\) — ৩ কিমি পূর্বে, ১ কিমি উত্তরে। বিকেলে হাঁটলে \(b = (1, 2)\) — ১ কিমি পূর্বে, ২ কিমি উত্তরে। সারাদিনে মোট সরলে কতটুকু?
পূর্ব-পশ্চিমে: \(3 + 1 = 4\) কিমি। উত্তর-দক্ষিণে: \(1 + 2 = 3\) কিমি। অর্থাৎ মোট সরণ \((4, 3)\)। এটাই Vector Addition(ভেক্টর যোগ)-এর সংজ্ঞা:
নিয়ম একটাই: entry ধরে ধরে যোগ — একে বলে element-wise বা entry-wise যোগ। আর হ্যাঁ, যোগ করতে হলে দুটো vector-এর size সমান হতেই হবে। \((1,2) + (1,2,3)\) — এর কোনো অর্থ নেই; এরা ভিন্ন জগতের বাসিন্দা।
এবার দ্বিতীয় operation। ধরো কেউ বললো, "কালকের হাঁটাটা দ্বিগুণ করো।" \(v = (2, 1)\) হলে দ্বিগুণ হাঁটা মানে \((4, 2)\) — প্রতিটি entry-কে ২ দিয়ে গুণ। এটাই Scalar Multiplication(স্কেলার গুণ):
এখানে \(\beta\) (beta) একটা scalar — সাধারণ সংখ্যা। Scalar শব্দটার জন্মই এখান থেকে: সে vector-কে scale(মাপ বদল) করে।
এই দুটো operation-ই Linear Algebra-র আদি পিতা-মাতা। বিশ্বাস করো বা না করো — সামনের ৪৭টা chapter-এর প্রায় সবকিছু এই দুটো থেকেই জন্মাবে।
২. দেখতে কেমন?¶
যোগ = tip-to-tail। উপরের opening figure-এ দেখেছো: \(b\)-এর লেজ বসাও \(a\)-এর মাথায়; origin থেকে শেষ মাথা পর্যন্ত arrow-ই \(a+b\)।
অন্যভাবে দেখলে — দুটো vector-এর লেজ একসাথে রেখে Parallelogram(সামান্তরিক) বানাও; কর্ণটাই যোগফল:

আগে \(a\) তারপর \(b\), নাকি আগে \(b\) তারপর \(a\) — দুই পথেই পৌঁছাবে সামান্তরিকের একই কোণায়। ছবিটাই প্রমাণ করে দিলো \(a + b = b + a\)!
Scalar গুণ = stretch/shrink/flip:

\(2v\) একই দিকে দ্বিগুণ লম্বা; \(0.5v\) একই দিকে অর্ধেক; আর \(-v\) সমান লম্বা কিন্তু সম্পূর্ণ উল্টো দিকে। লক্ষ করো — সবগুলোই একই সরলরেখার ওপর শুয়ে আছে। Scalar গুণ কখনো vector-কে তার নিজের লাইন থেকে নামাতে পারে না।
বিয়োগ: \(b - a\) মানে \(b + (-1)a\) — কিন্তু ছবিতে এর চেহারাটা মুখস্থ রাখার মতো সুন্দর:

\(b - a\) হলো সেই arrow যেটা \(a\)-এর মাথা থেকে \(b\)-এর মাথায় যায়। যাচাই: \(a + (b-a) = b\) — অর্থাৎ \(a\)-তে দাঁড়িয়ে \((b-a)\) হাঁটলেই \(b\)-তে পৌঁছাও। "কোথা থেকে কোথায়" প্রশ্নের উত্তর সবসময় "শেষ বিয়োগ শুরু"।
৩. কোথায় ইউজ হয়?¶
- GPS/游 navigation: তোমার ফোন প্রতি সেকেন্ডে position vector আপডেট করে: নতুন position = পুরনো position + velocity \(\times\) সময়। ওই "+" টা vector addition।
- ছবির brightness/blending: ছবি মানেই vector (আগের chapter!)। দুটো ছবির গড় নিলে — \(\frac{1}{2}(x + y)\) — পাও দুটোর মিশ্রণ (crossfade effect)। ছবিকে \(1.2\) দিয়ে গুণ দিলে ২০% উজ্জ্বল।
- Dataset centering(কেন্দ্রীকরণ): ML-এ প্রায় প্রথম ধাপ — প্রতিটি data vector থেকে গড়-vector \(\mu\) বিয়োগ: \(\tilde{x}_i = x_i - \mu\)। পুরো data-মেঘটা সরে এসে origin-এর চারপাশে বসে। এটা নিছক vector subtraction।
- Physics: একই বস্তুর ওপর দুটো force \(F_1\), \(F_2\) পড়লে মোট force \(F_1 + F_2\) — parallelogram rule-টা আসলে নিউটনের যুগ থেকেই পরীক্ষিত সত্য।
- Portfolio/ব্যবসা: দোকানের সোম আর মঙ্গলবারের বিক্রি-vector যোগ করলে দুই দিনের মোট বিক্রি; সাপ্তাহিক টার্গেট \(1.1\) গুণ বাড়ানো মানে scalar গুণ।
- Word analogy (চমক!): ভালো word embedding-এ \(\text{king} - \text{man} + \text{woman} \approx \text{queen}\) — শুধু যোগ-বিয়োগ দিয়েই ভাষার অর্থ নাড়াচাড়া! Chapter 1.3-এর notebook-এ এর স্বাদ পাবে।
৪. Properties¶
\(u, v, w \in \mathbb{R}^n\) এবং \(\alpha, \beta\) scalar হলে:
| # | Property | সূত্র |
|---|---|---|
| ১ | Commutativity(বিনিময়) | \(u + v = v + u\) |
| ২ | Associativity(সংযোজন) | \((u + v) + w = u + (v + w)\) |
| ৩ | Zero vector | \(v + \mathbf{0} = v\) |
| ৪ | Additive inverse(যোগাত্মক বিপরীত) | \(v + (-v) = \mathbf{0}\) |
| ৫ | Scalar associativity | \((\alpha\beta) v = \alpha(\beta v)\) |
| ৬ | Distributivity (vector-এর ওপর) | \(\alpha(u + v) = \alpha u + \alpha v\) |
| ৭ | Distributivity (scalar-এর ওপর) | \((\alpha + \beta) v = \alpha v + \beta v\) |
| ৮ | Identity | \(1 \cdot v = v\) |
প্রতিটির পেছনে যুক্তি একই ছাঁচে: entry ধরে ধরে ভাঙো, তারপর সাধারণ সংখ্যার নিয়ম খাটাও। যেমন Property ১-এর মিনি-proof:
মাঝের ধাপটা স্রেফ সাধারণ সংখ্যার commutativity (\(3 + 5 = 5 + 3\))। প্রতিটি entry মিললে vector দুটোও সমান। ব্যস!
আর ছবিতে? Property ১ হলো parallelogram-এর দুই পথ (fig 2), Property ৪ বলে "গিয়ে আবার ফিরে এলে যেখানে ছিলে সেখানেই", Property ৬ বলে "দুই ধাপের পথটাকে দ্বিগুণ করা = প্রতিটি ধাপ আলাদা করে দ্বিগুণ করা"।
কেন এই লিস্ট মুখস্থের চেয়ে বেশি জরুরি: Part IV-তে গিয়ে দেখবে, গণিতবিদরা এই ৮টা property-কেই Vector Space(ভেক্টর স্পেস)-এর সংজ্ঞা বানিয়ে দিয়েছেন — যেখানে এই ৮ নিয়ম চলে, সেখানেই Linear Algebra চলে, সেটা \(\mathbb{R}^n\) হোক বা function-দের জগত।
অনেকগুলো ধাপ একসাথে যোগ করলে কী হয়, সেটার ছবি:

চার ধাপের হাঁটা: \(d_1 + d_2 + d_3 + d_4 = (3, 4)\)। Associativity-র কল্যাণে বন্ধনী লাগেই না — যেকোনো order-এ জোড়া বাঁধো, ফল এক।
৫. Intuition — কেন সত্য?¶
যোগের সংজ্ঞা entry-wise কেন? অন্যকিছু কেন নয়?
কারণ আমরা চাই যোগটা "পরপর সরণ"-এর গল্পটা বলুক। তুমি যদি প্রথমে \((3,1)\) হাঁটো আর পরে \((1,2)\) — পূর্বমুখী মোট চলা অবশ্যই \(3+1\), উত্তরমুখী অবশ্যই \(1+2\); এর অন্যথা হওয়ার উপায়ই নেই। সংজ্ঞাটা আসলে বাস্তবতার অনুলিপি।
আরেকটা গভীর কথা: প্রতিটি axis একে অন্যের ব্যাপারে নাক গলায় না। পূর্ব-পশ্চিম চলা কখনো উত্তর-দক্ষিণ হিসাবে ঢোকে না। এই "axis-রা স্বাধীন" ভাবটাই entry-wise operation-কে স্বাভাবিক করে তোলে — আর এই স্বাধীনতার ধারণাটাই সামনে গিয়ে Linear Independence (Chapter 1.5) আর Basis (Part IV) হয়ে ফিরে আসবে।
Scalar গুণে দিক বদলায় না কেন (শুধু \(\pm\) ছাড়া)?
\(\beta v\)-এর প্রতিটি entry-তে একই \(\beta\) — তাই entry-দের আনুপাতিক সম্পর্ক অটুট থাকে। \((2,1)\)-এ "পূর্বে যত, উত্তরে তার অর্ধেক" — \(2\) গুণ করলেও \((4,2)\)-তে সেই একই অনুপাত। অনুপাতই তো দিক! তাই \(\beta > 0\) হলে দিক অবিকল, \(\beta < 0\) হলে ঠিক উল্টো, আর \(\beta = 0\) হলে সব চুপ — zero vector।
এখান থেকেই পরের chapter-গুলোর সবচেয়ে গুরুত্বপূর্ণ ছবিটা জন্মায়: একটা nonzero vector \(v\)-এর সব scalar গুণিতক \(\{\beta v : \beta \in \mathbb{R}\}\) মিলে origin দিয়ে যাওয়া একটা সরলরেখা। Fig 3-এ চারটা arrow একই লাইনে শুয়ে ছিল — খেয়াল করেছো?
Subtraction-এর ছবি মনে রাখার মন্ত্র: \(b - a\) হলো "\(a\) থেকে \(b\)-তে যেতে কী হাঁটতে হবে"। কারণ সংজ্ঞামতেই \(a + (b - a) = b\)। Data science-এ যখনই "পার্থক্য," "error," "displacement" শুনবে — মাথায় এই ছবিটা আঁকবে।
৬. Code-এ কেমনে লিখে¶
NumPy-তে এই দুই operation এতই স্বাভাবিক যে আলাদা function-ই লাগে না — +, -, * চিহ্নই entry-wise কাজ করে:
import numpy as np
import matplotlib.pyplot as plt
a = np.array([3, 1])
b = np.array([1, 2])
print(a + b) # [4 3] entry-wise যোগ
print(b - a) # [-2 1] entry-wise বিয়োগ
print(2 * a) # [6 2] scalar গুণ
print(-1 * b) # [-1 -2] উল্টো দিক
print(0.5 * (a + b)) # [2. 1.5] দুই vector-এর গড় (midpoint!)
# property যাচাই — কম্পিউটারকে দিয়ে proof-এর ছোট ভাই
u, v, w = np.array([1., 2.]), np.array([-3., 4.]), np.array([0.5, 5.])
print(np.allclose(u + v, v + u)) # True (commutativity)
print(np.allclose((u + v) + w, u + (v + w))) # True (associativity)
print(np.allclose(3 * (u + v), 3 * u + 3 * v)) # True (distributivity)
np.allclose ব্যবহার করলাম ==-এর বদলে — floating point-এ ক্ষুদ্র rounding পার্থক্য এড়াতে (Part VIII-এ এর পুরো গল্প)।
সাবধান — ভিন্ন size যোগ করলে:
x = np.array([1, 2])
y = np.array([1, 2, 3])
# x + y --> ValueError: operands could not be broadcast together
NumPy চিৎকার করে থামিয়ে দেবে — এটা ভালো; গণিতেও এটা অসংজ্ঞায়িত।
এবার tip-to-tail ছবিটা নিজে আঁকো:
fig, ax = plt.subplots()
ax.quiver(0, 0, a[0], a[1], angles='xy', scale_units='xy', scale=1,
color='#1f77b4') # a: origin থেকে
ax.quiver(a[0], a[1], b[0], b[1], angles='xy', scale_units='xy',
scale=1, color='#2ca02c') # b: a-এর মাথা থেকে
s = a + b
ax.quiver(0, 0, s[0], s[1], angles='xy', scale_units='xy', scale=1,
color='#d62728') # a+b: সরাসরি
ax.set_xlim(-1, 6); ax.set_ylim(-1, 5); ax.set_aspect('equal')
plt.show()
দ্বিতীয় quiver-এর প্রথম দুই argument \((a_1, a_2)\) — লেজটা \(a\)-এর মাথায় বসালাম; এটাই tip-to-tail কোডে।
৭. Worked Examples¶
Example 1 — যোগ, বিয়োগ, scalar গুণ একসাথে। \(a = (1, 2, 3, 4)\), \(b = (4, 3, 2, 1)\)। \(3a - 2b\) বের করো।
ধাপ ১: \(3a = (3\cdot1, 3\cdot2, 3\cdot3, 3\cdot4) = (3, 6, 9, 12)\)। ধাপ ২: \(2b = (8, 6, 4, 2)\)। ধাপ ৩: বিয়োগ, entry ধরে: \(3a - 2b = (3-8,\; 6-6,\; 9-4,\; 12-2) = (-5, 0, 5, 10)\)। লক্ষ করো — উত্তরের ভেতরে \(0\) আছে; কোনো সমস্যা নেই, entry শূন্য হতেই পারে।
Example 2 — অজানা vector খোঁজা। এমন \(x\) বের করো যেন \(2x + (3, -1) = (7, 5)\)।
ধাপ ১: দুই পাশ থেকে \((3,-1)\) বিয়োগ: \(2x = (7,5) - (3,-1) = (4, 6)\)। ধাপ ২: দুই পাশকে \(\frac{1}{2}\) দিয়ে গুণ: \(x = (2, 3)\)। যাচাই: \(2(2,3) + (3,-1) = (4,6) + (3,-1) = (7,5)\) ✓। দেখলে? সাধারণ বীজগণিতের মতোই সমীকরণ সমাধান চলে — property গুলোই সেটার লাইসেন্স দেয়।
Example 3 — midpoint (গড়ের ছবি)। ঢাকার দুই দোকানের অবস্থান \(p = (2, 6)\) ও \(q = (8, 2)\) (কিমি-তে)। মাঝামাঝি গুদাম বসাতে চাই — কোথায়?
ধাপ ১: Midpoint সূত্র: \(m = \frac{1}{2}(p + q)\)। ধাপ ২: \(p + q = (10, 8)\)। ধাপ ৩: \(m = (5, 4)\)। Intuition: \(m = p + \frac{1}{2}(q - p)\) — অর্থাৎ "\(p\)-তে দাঁড়াও, \(q\)-এর দিকে অর্ধেক পথ হাঁটো।" দুই লেখাই সমান; property ৬-৭ দিয়ে মিলিয়ে দেখো!
৮. Problems ও Solutions¶
Problem 1. \(u = (2, -1)\), \(v = (-1, 3)\)। হিসাব করো: (ক) \(u + v\); (খ) \(u - v\); (গ) \(-2u + 3v\); (ঘ) \(\frac{1}{2}u + \frac{1}{2}v\) — আর (ঘ)-এর geometric অর্থ কী?
Solution
(ক) \(u + v = (2 + (-1),\; -1 + 3) = (1, 2)\)। (খ) \(u - v = (2-(-1),\; -1-3) = (3, -4)\)। (গ) \(-2u = (-4, 2)\), \(3v = (-3, 9)\); যোগ: \((-7, 11)\)। (ঘ) \((0.5, 1)\) — এটা \(u\) ও \(v\)-এর মাথা-দুটোর ঠিক মাঝবিন্দু (midpoint)। গড় মানেই "সমান ওজনে মেশানো"।
Problem 2. ছবির ভাষায় লেখো (আঁকতে পারো খাতায়): \(a = (2, 0)\), \(b = (0, 3)\) হলে tip-to-tail দিয়ে \(a + b\) ও \(b + a\) আঁকো। দুটো পথ কী আকৃতি তৈরি করে, আর শেষবিন্দু কোথায়?
Solution
পথ ১: origin → \((2,0)\) → \((2,3)\)। পথ ২: origin → \((0,3)\) → \((2,3)\)। দুটো পথ মিলে একটা আয়তক্ষেত্র (এখানে \(a \perp b\) বলে parallelogram-টা আয়তক্ষেত্র হয়ে গেছে)। শেষবিন্দু দুটোরই \((2, 3)\) — commutativity চোখের সামনে: \(a + b = b + a = (2,3)\)।
Problem 3. এমন scalar \(\beta\) আছে কি যেন \(\beta \,(2, 5) = (6, 15)\)? আর \(\beta\,(2, 5) = (6, 14)\)? কারণসহ।
Solution
প্রথমটা: \(\beta \cdot 2 = 6 \Rightarrow \beta = 3\); যাচাই দ্বিতীয় entry-তে: \(3 \cdot 5 = 15\) ✓। তাই \(\beta = 3\)। দ্বিতীয়টা: \(\beta = 3\) লাগবে প্রথম entry-র জন্য, কিন্তু তখন দ্বিতীয় entry \(15 \neq 14\) — অসম্ভব। শিক্ষা: scalar গুণ সব entry-তে একই অনুপাত রাখে। \((6,15)\) vector \((2,5)\)-এর লাইনে আছে, \((6,14)\) নেই।
Problem 4. দোকানে সোমবারের বিক্রি \(s = (10, 4, 6)\) (চাল, ডাল, তেল — কেজিতে), মঙ্গলবারের \(t = (8, 5, 7)\)। (ক) দুই দিনের মোট বিক্রি? (খ) দৈনিক গড়? (গ) মালিক চান বুধবারে মঙ্গলবারের দেড়গুণ — টার্গেট vector কত?
Solution
(ক) \(s + t = (18, 9, 13)\)। (খ) \(\frac{1}{2}(s + t) = (9, 4.5, 6.5)\)। (গ) \(1.5\,t = (12, 7.5, 10.5)\)। সবগুলোই vector operation — কোনো নতুন গণিত লাগেনি, শুধু চশমাটা "পণ্য-space \(\mathbb{R}^3\)"।
Problem 5. \(x = (1, 1)\) থেকে \(y = (5, 4)\)-এ যেতে হবে ৪টি সমান ধাপে। প্রতিটি ধাপের vector কত? তৃতীয় ধাপ শেষে অবস্থান কোথায়?
Solution
মোট সরণ: \(y - x = (4, 3)\)। প্রতি ধাপ: \(\frac{1}{4}(4,3) = (1, 0.75)\)। তৃতীয় ধাপ শেষে: \(x + \frac{3}{4}(y - x) = (1,1) + (3, 2.25) = (4, 3.25)\)। সাধারণ সূত্র: \(x + \theta(y-x)\), যেখানে \(\theta\) চলে \(0\) থেকে \(1\) — এই সূত্রেই কম্পিউটার graphics-এ animation-এর interpolation হয়!
Problem 6. Property ৭ (\((\alpha + \beta)v = \alpha v + \beta v\)) প্রমাণ করো \(\mathbb{R}^n\)-এর জন্য, entry-wise যুক্তিতে। তারপর \(v=(2,-3)\), \(\alpha = 2\), \(\beta = -5\) দিয়ে সংখ্যায় যাচাই করো।
Solution
প্রমাণ: যেকোনো \(i\)-এর জন্য, \(\big((\alpha+\beta)v\big)_i = (\alpha + \beta)v_i = \alpha v_i + \beta v_i = (\alpha v)_i + (\beta v)_i = (\alpha v + \beta v)_i\)। মাঝের ধাপটা সাধারণ সংখ্যার distributive law। প্রতিটি entry সমান, তাই vector দুটো সমান। \(\blacksquare\) যাচাই: বাঁপাশ \(= (2 + (-5))(2,-3) = -3(2,-3) = (-6, 9)\)। ডানপাশ \(= 2(2,-3) + (-5)(2,-3) = (4,-6) + (-10,15) = (-6, 9)\) ✓।
Problem 7. একটা \(2\times2\) ছবির pixel vector \(p = (100, 200, 50, 250)\)। (ক) ছবিটা ২০% উজ্জ্বল করলে নতুন vector? (খ) \(q = (20, 20, 20, 20)\) যোগ করলে কী হবে — আর এটা (ক)-এর থেকে কীভাবে আলাদা? (গ) দুটো ছবি \(p\) ও \(r = (0, 100, 150, 50)\)-এর 50-50 blend কত?
Solution
(ক) \(1.2\,p = (120, 240, 60, 300)\)। (বাস্তবে \(300 > 255\) হলে "clip" করতে হয় — গণিত বনাম hardware!) (খ) \(p + q = (120, 220, 70, 270)\) — সব pixel-এ সমান \(20\) যোগ; উজ্জ্বল অংশ আর অন্ধকার অংশ সমান বাড়লো। আর (ক)-তে ছিল আনুপাতিক বৃদ্ধি — উজ্জ্বল pixel বেশি বাড়ে। Scalar গুণ ≠ ধ্রুবক যোগ! (গ) \(0.5p + 0.5r = (50, 150, 100, 150)\)।
Problem 8 (চ্যালেঞ্জ)। সত্য/মিথ্যা — কারণসহ: (ক) \(u + v = u\) হলে \(v = \mathbf{0}\); (খ) \(\alpha v = \mathbf{0}\) হলে \(\alpha = 0\) হতেই হবে; (গ) \(u - v = v - u\) কেবল তখনই যখন \(u = v\); (ঘ) দুটি nonzero vector যোগ করলে ফল কখনো zero vector হতে পারে না।
Solution
(ক) সত্য। দুই পাশ থেকে \(u\) বিয়োগ করলে \(v = \mathbf{0}\)। (খ) মিথ্যা। \(v = \mathbf{0}\) হলেও \(\alpha v = \mathbf{0}\) — যেকোনো \(\alpha\)-তে। সঠিক বিবৃতি: \(\alpha v = \mathbf{0}\) হলে \(\alpha = 0\) অথবা \(v = \mathbf{0}\)। (গ) সত্য। \(u - v = v - u \Rightarrow 2u = 2v \Rightarrow u = v\)। (ঘ) মিথ্যা। \(v + (-v) = \mathbf{0}\) — যেমন \((3,1) + (-3,-1) = (0,0)\)। সমান-উল্টো দুই টানে দড়ি স্থির!
৯. Common ভুল¶
- ভিন্ন size-এর vector যোগ করা — \((1,2) + (1,2,3)\) লেখা। গণিতে অসংজ্ঞায়িত, NumPy-তে error (বা আরো বিপজ্জনক — broadcasting-এ নিঃশব্দে ভুল উত্তর; সাবধান!)।
- Tip-to-tail-এ লেজ-মাথা গুলিয়ে ফেলা — \(b\)-এর লেজ বসাতে হবে \(a\)-এর মাথায়, দুটোর লেজ এক জায়গায় রেখে মাথা-জোড়া টানলে যোগফল নয়, পাবে ভুল ছবি। (লেজ এক জায়গায় রাখলে সঠিক পদ্ধতি parallelogram-এর কর্ণ।)
- \(b - a\)-এর দিক উল্টে ফেলা — \(b-a\) যায় \(a\) থেকে \(b\)-তে; \(a-b\) যায় উল্টোপথে। মনে রাখো: "শেষ বিয়োগ শুরু" (destination minus source)।
- Scalar গুণকে "সবকিছু বড় হয়" ভাবা — \(|\beta| < 1\) হলে ছোট হয়, \(\beta < 0\) হলে দিক উল্টায়, \(\beta = 0\) হলে সব উধাও। "\(-2\) গুণ করলে দ্বিগুণ লম্বা এবং উল্টো" — দুটোই ঘটে।
- \(2v\) আর \(v + 2\) গুলিয়ে ফেলা — \(v + 2\) (vector + scalar) গণিতে অসংজ্ঞায়িত! NumPy দুর্ভাগ্যবশত
v + 2চালিয়ে দেয় (প্রতি entry-তে ২ যোগ করে) — কোড লেখার সময় জেনেবুঝে করো, গণিত লেখার সময় কখনোই না।
১০. এক নজরে¶
| Operation | সূত্র | ছবি | শর্ত |
|---|---|---|---|
| Addition | \((a+b)_i = a_i + b_i\) | tip-to-tail / parallelogram | সমান size |
| Subtraction | \((a-b)_i = a_i - b_i\) | \(b\) থেকে \(a\)... না! \(b-a\): \(a\) থেকে \(b\) | সমান size |
| Scalar multiplication | \((\beta v)_i = \beta v_i\) | stretch / shrink / flip, একই লাইনে | — |
| ৮ properties | commutative, associative, distributive... | সবকটার geometric মানে আছে | Part IV-এ এরাই Vector Space-এর axiom |
পরের chapter-এর সেতু: যোগ আর scalar গুণ দিয়ে vector-দের নাড়ানো শিখলে। কিন্তু দুটো vector-এর মধ্যে সম্পর্ক মাপবে কীভাবে — কতটা একই দিকে তারা? এর উত্তর এক জাদুকরী সংখ্যায়: Inner Product(ডট প্রোডাক্ট) — পরের chapter-এ, projection-এর ছবি সহ।
📓 Notebook Project¶
notebooks/part-01/ch02-project.ipynb — scratch-এ নিজের vec_add, vec_scale লিখে NumPy-র সাথে মিলাও, random walk simulate করো (একগুচ্ছ displacement vector-এর যোগ), আর দুই ছবির blend বানিয়ে দেখো।