কনটেন্টে যান

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

tip-to-tail addition

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(ভেক্টর যোগ)-এর সংজ্ঞা:

\[ a + b = \begin{bmatrix} a_1 \\ a_2 \\ \vdots \\ a_n \end{bmatrix} + \begin{bmatrix} b_1 \\ b_2 \\ \vdots \\ b_n \end{bmatrix} = \begin{bmatrix} a_1 + b_1 \\ a_2 + b_2 \\ \vdots \\ a_n + b_n \end{bmatrix} \]

নিয়ম একটাই: entry ধরে ধরে যোগ — একে বলে element-wise বা entry-wise যোগ। আর হ্যাঁ, যোগ করতে হলে দুটো vector-এর size সমান হতেই হবে\((1,2) + (1,2,3)\) — এর কোনো অর্থ নেই; এরা ভিন্ন জগতের বাসিন্দা।

এবার দ্বিতীয় operation। ধরো কেউ বললো, "কালকের হাঁটাটা দ্বিগুণ করো।" \(v = (2, 1)\) হলে দ্বিগুণ হাঁটা মানে \((4, 2)\) — প্রতিটি entry-কে ২ দিয়ে গুণ। এটাই Scalar Multiplication(স্কেলার গুণ):

\[ \beta v = \beta \begin{bmatrix} v_1 \\ \vdots \\ v_n \end{bmatrix} = \begin{bmatrix} \beta v_1 \\ \vdots \\ \beta v_n \end{bmatrix} \]

এখানে \(\beta\) (beta) একটা scalar — সাধারণ সংখ্যা। Scalar শব্দটার জন্মই এখান থেকে: সে vector-কে scale(মাপ বদল) করে।

এই দুটো operation-ই Linear Algebra-র আদি পিতা-মাতা। বিশ্বাস করো বা না করো — সামনের ৪৭টা chapter-এর প্রায় সবকিছু এই দুটো থেকেই জন্মাবে।

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

যোগ = tip-to-tail। উপরের opening figure-এ দেখেছো: \(b\)-এর লেজ বসাও \(a\)-এর মাথায়; origin থেকে শেষ মাথা পর্যন্ত arrow-ই \(a+b\)

অন্যভাবে দেখলে — দুটো vector-এর লেজ একসাথে রেখে Parallelogram(সামান্তরিক) বানাও; কর্ণটাই যোগফল:

parallelogram rule

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

Scalar গুণ = stretch/shrink/flip:

scalar multiplication

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

বিয়োগ: \(b - a\) মানে \(b + (-1)a\) — কিন্তু ছবিতে এর চেহারাটা মুখস্থ রাখার মতো সুন্দর:

subtraction

\(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:

\[ (u + v)_i = u_i + v_i = v_i + u_i = (v + u)_i \quad \text{(প্রতিটি } i \text{-এর জন্য)} \]

মাঝের ধাপটা স্রেফ সাধারণ সংখ্যার commutativity (\(3 + 5 = 5 + 3\))। প্রতিটি entry মিললে vector দুটোও সমান। ব্যস!

আর ছবিতে? Property ১ হলো parallelogram-এর দুই পথ (fig 2), Property ৪ বলে "গিয়ে আবার ফিরে এলে যেখানে ছিলে সেখানেই", Property ৬ বলে "দুই ধাপের পথটাকে দ্বিগুণ করা = প্রতিটি ধাপ আলাদা করে দ্বিগুণ করা"।

কেন এই লিস্ট মুখস্থের চেয়ে বেশি জরুরি: Part IV-তে গিয়ে দেখবে, গণিতবিদরা এই ৮টা property-কেই Vector Space(ভেক্টর স্পেস)-এর সংজ্ঞা বানিয়ে দিয়েছেন — যেখানে এই ৮ নিয়ম চলে, সেখানেই Linear Algebra চলে, সেটা \(\mathbb{R}^n\) হোক বা function-দের জগত।

অনেকগুলো ধাপ একসাথে যোগ করলে কী হয়, সেটার ছবি:

displacement chain

চার ধাপের হাঁটা: \(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 ভুল

  1. ভিন্ন size-এর vector যোগ করা\((1,2) + (1,2,3)\) লেখা। গণিতে অসংজ্ঞায়িত, NumPy-তে error (বা আরো বিপজ্জনক — broadcasting-এ নিঃশব্দে ভুল উত্তর; সাবধান!)।
  2. Tip-to-tail-এ লেজ-মাথা গুলিয়ে ফেলা\(b\)-এর লেজ বসাতে হবে \(a\)-এর মাথায়, দুটোর লেজ এক জায়গায় রেখে মাথা-জোড়া টানলে যোগফল নয়, পাবে ভুল ছবি। (লেজ এক জায়গায় রাখলে সঠিক পদ্ধতি parallelogram-এর কর্ণ।)
  3. \(b - a\)-এর দিক উল্টে ফেলা\(b-a\) যায় \(a\) থেকে \(b\)-তে; \(a-b\) যায় উল্টোপথে। মনে রাখো: "শেষ বিয়োগ শুরু" (destination minus source)।
  4. Scalar গুণকে "সবকিছু বড় হয়" ভাবা\(|\beta| < 1\) হলে ছোট হয়, \(\beta < 0\) হলে দিক উল্টায়, \(\beta = 0\) হলে সব উধাও। "\(-2\) গুণ করলে দ্বিগুণ লম্বা এবং উল্টো" — দুটোই ঘটে।
  5. \(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 বানিয়ে দেখো।