কনটেন্টে যান

Chapter 6.1 — Determinant (নির্ণায়ক — গোটা matrix-এর একটাই সংখ্যা)

Part III-এ শিখেছিলে: matrix মানে জায়গার রূপান্তর — grid বেঁকে যায়, ঘোরে, টানা হয়। এখন একটা সাহসী প্রশ্ন করি: এই পুরো রূপান্তরের সবচেয়ে জরুরি খবরটা যদি মাত্র একটা সংখ্যায় ভরে দিতে বলি? সংখ্যাটা বলবে জায়গা কতগুণ ফুলেছে বা চুপসেছে, বলবে জগৎটা আয়নায় উল্টে গেছে কি না, আর ফিসফিস করে জানিয়ে দেবে matrix-টার inverse আদৌ আছে কি না। এই জাদুর সংখ্যাটাই Determinant(ডিটারমিন্যান্ট — নির্ণায়ক)। স্কুলে হয়তো \(ad - bc\) মুখস্থ করেছিলে — আজ দেখবে ওই সূত্রটা আসলে একটা ছবির গাণিতিক অনুবাদ: unit square-এর ক্ষেত্রফল রূপান্তরের পরে কত হলো। আর এই chapter-টা শেষ করলেই পরের chapter-এর দরজা খুলে যাবে — eigenvalue খোঁজার একমাত্র চাবি এই determinant-ই।

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

  • Determinant-এর আসল পরিচয়: area/volume-এর scale factor\(2\times2\)-তে ক্ষেত্রফল, \(3\times3\)-তে আয়তন কতগুণ হয়
  • Sign-এর মানে: \(\det < 0\) মানে জায়গাটা আয়নার মতো উল্টে গেছে (orientation flip) — মান নয়, দিকের খবর
  • \(2\times2\)-এর \(ad - bc\) আর \(3\times3\)-এর Cofactor Expansion(কোফ্যাক্টর এক্সপ্যানশন) — হাতে হিসাবের দুই অস্ত্র
  • \(\det = 0\) মানে collapse: জায়গা চ্যাপ্টা হয়ে নিচু dimension-এ পড়ে যায় — আর তখনই matrix Singular(সিঙ্গুলার), inverse নেই
  • Properties-এর টুলবক্স: Product Rule(প্রোডাক্ট রুল) \(\det(AB) = \det A \cdot \det B\), row operation-এ কী হয়, triangular matrix-এর shortcut

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

Unit square becomes a parallelogram with area = det A

বাঁয়ে unit square — বাহু \(e_1\), \(e_2\), ক্ষেত্রফল \(1\)। ডানে \(A = \begin{bmatrix}2&1\\1&2\end{bmatrix}\) apply করার পর: square হয়ে গেছে parallelogram, বাহু এখন \(A\)-এর দুই column \((2,1)\) আর \((1,2)\), ক্ষেত্রফল \(3\)। শুধু এই square-টাই না — grid-এর প্রতিটা টুকরার ক্ষেত্রফল ঠিক \(3\) গুণ হয়েছে। এই সর্বজনীন scale factor-টাই \(\det A = 3\)

১. কি? (What)

দৈনন্দিন analogy: ফটোকপি মেশিনের zoom

একটা ফটোকপি মেশিনে "১৪১% enlarge" চাপলে কাগজের প্রতিটা ছবি লম্বায়-চওড়ায় \(1.41\) গুণ হয় — মানে ক্ষেত্রফল হয় প্রায় \(2\) গুণ (\(1.41^2 \approx 2\))। মেশিনটার একটাই সংখ্যা তার পুরো কাজের সারমর্ম: "আমি ক্ষেত্রফল \(2\) গুণ করি।"

Matrix-ও একটা মেশিন — vector ঢোকে, vector বেরোয়, গোটা জায়গা রূপান্তরিত হয়। পার্থক্য হলো matrix সব দিকে সমান টানে না: কোনো দিকে বেশি stretch, কোনো দিকে কম, সাথে ঘোরানো-হেলানো। তবু আশ্চর্যের কথা — ক্ষেত্রফলের scale factor সব জায়গায় একই। তোমার আঁকা যেকোনো আকৃতি (বর্গ, বৃত্ত, হাতি) \(A\)-এর ভেতর দিয়ে গেলে তার ক্ষেত্রফল ঠিক একই গুণিতকে বদলায়। সেই গুণিতকটাই determinant।

সংজ্ঞা (জ্যামিতিক)

\(A\) একটা \(n \times n\) square matrix (determinant শুধু square matrix-এরই হয়!)। তাহলে

\[\det A = \text{(রূপান্তরের পরে unit square/cube-এর signed area/volume)}\]
  • \(n = 2\): unit square-এর দুই বাহু \(e_1, e_2\) গিয়ে পড়ে \(A\)-এর দুই column-এর ওপর — তাই \(\det A\) = column দুটো দিয়ে গড়া parallelogram-এর signed ক্ষেত্রফল।
  • \(n = 3\): unit cube-এর তিন বাহু পড়ে তিন column-এ — \(\det A\) = column তিনটা দিয়ে গড়া parallelepiped(তেরছা ইটের) signed আয়তন।
  • "Signed" মানে: রূপান্তর জায়গাটাকে আয়নার মতো উল্টে দিলে সংখ্যাটা ঋণাত্মক — ক্ষেত্রফলের মান তখন \(|\det A|\)

সংজ্ঞা (সূত্রে): \(2\times2\)

\[\det\begin{bmatrix} a & b \\ c & d \end{bmatrix} = ad - bc\]

লেখারও দুটো চল আছে: \(\det A\) অথবা \(|A|\) — দুটোই একই জিনিস। কেন \(ad - bc\)-ই সেই ক্ষেত্রফল, তার ছবিসহ প্রমাণ Intuition-এ (section ৫) — এখন শুধু মেনে নিয়ো না, একটু পরেই নিজের চোখে দেখবে।

সংজ্ঞা (সূত্রে): \(3\times3\) — cofactor expansion

বড় determinant ভাঙা হয় ছোট determinant-এ। প্রথম row ধরে:

\[\det\begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{bmatrix} = a_{11}\underbrace{\det\begin{bmatrix}a_{22}&a_{23}\\a_{32}&a_{33}\end{bmatrix}}_{M_{11}} - a_{12}\underbrace{\det\begin{bmatrix}a_{21}&a_{23}\\a_{31}&a_{33}\end{bmatrix}}_{M_{12}} + a_{13}\underbrace{\det\begin{bmatrix}a_{21}&a_{22}\\a_{31}&a_{32}\end{bmatrix}}_{M_{13}}\]

শব্দভাণ্ডার তিনটা:

  • Minor(মাইনর) \(M_{ij}\): \(i\)-নং row আর \(j\)-নং column কেটে ফেলে যে ছোট matrix থাকে, তার determinant।
  • Cofactor(কোফ্যাক্টর) \(C_{ij} = (-1)^{i+j} M_{ij}\): minor-এর সাথে একটা \(\pm\) চিহ্ন — চিহ্নগুলো দাবার বোর্ডের মতো: \(\begin{bmatrix} + & - & + \\ - & + & - \\ + & - & + \end{bmatrix}\)
  • Cofactor Expansion: যেকোনো একটা row (বা column) ধরে \(\det A = \sum_j a_{ij} C_{ij}\) — যে row-তে বেশি শূন্য, সেটা ধরলে খাটুনি কম!

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

দৃশ্য ১: sign-এর গল্প — orientation flip

Positive vs negative determinant: orientation

দুটো matrix, দুটোরই \(|\det| = 3\) — মানে দুজনেই ক্ষেত্রফল \(3\) গুণ করে। কিন্তু বাঁয়েরটায় (\(\det = +3\)) ধূসর পতাকাটা টানা-হেলানো হয়েও সোজা আছে — col 1 থেকে col 2-তে যেতে এখনো ঘড়ির উল্টো দিকে ঘুরতে হয়। ডানেরটায় (\(\det = -3\), column দুটো অদল-বদল করা) পতাকাটা আয়নার প্রতিবিম্ব হয়ে গেছে — ঘোরার দিক এখন ঘড়ির দিকে। Determinant-এর sign ঠিক এটাই মনে রাখে: জগৎটা উল্টে গেলো কি না।

মজার পরীক্ষা: নিজের ডান হাতটা আয়নায় দেখো — ওটা বাঁ হাত দেখায়! আয়না (reflection) হলো \(\det = -1\)-এর transformation: ক্ষেত্রফল অটুট (\(|\det| = 1\)), কিন্তু orientation উল্টানো।

দৃশ্য ২: 3D-তে — volume-এর scale factor

Unit cube becomes a parallelepiped with volume = |det M|

বাঁয়ে unit cube, আয়তন \(1\)। ডানে \(M = \begin{bmatrix}2&1&0.5\\0&1.5&0.5\\0&0&1\end{bmatrix}\) apply করার পর cube হয়ে গেছে হেলে-পড়া ইটের মতো একটা parallelepiped — বাহু \(M\)-এর তিন column, আয়তন \(|\det M| = 3\)। খেয়াল করো \(M\) upper triangular, আর \(2 \times 1.5 \times 1 = 3\) — diagonal-এর গুণফলেই উত্তর (Property 5-এ কেন, দেখবে)।

দৃশ্য ৩: \(\det = 0\) — জগৎ চ্যাপ্টা

det = 0 squashes the plane onto a line

\(D = \begin{bmatrix}2&1\\4&2\end{bmatrix}\)-এর দ্বিতীয় column প্রথমটার অর্ধেক — দুই column একই লাইনে শোয়া। ফল: গোটা 2D plane-এর সব বিন্দু (নীল) গিয়ে পড়েছে একটামাত্র লাইনে; সবুজ unit square চ্যাপ্টা হয়ে হয়েছে একটা রেখাংশ (লাল) — ক্ষেত্রফল \(0\)। ক্ষেত্রফলের scale factor \(0\), তাই \(\det D = 0\)। আর একবার চ্যাপ্টা হলে আর ফেরা যায় না — কোন বিন্দু কোথা থেকে এসেছিল, সেই খবর মুছে গেছে। এইজন্যই \(\det = 0\) মানে inverse নেই।**

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

বাস্তব জীবনে:

  • জমি-জরিপ ও জ্যামিতি: তিনটা কোণার স্থানাঙ্ক জানা থাকলে ত্রিভুজের ক্ষেত্রফল \(= \frac12 |\det|\) — surveyor-দের shoelace formula(জুতার-ফিতা সূত্র) আসলে determinant-এরই ছদ্মবেশ।
  • Computer graphics: 3D game-এ একটা ত্রিভুজ ক্যামেরার দিকে মুখ করে আছে না পেছন ফিরে (backface culling) — ঠিক হয় একটা ছোট determinant-এর sign দিয়ে। আর কোনো transformation model-কে আয়নায় উল্টে দিচ্ছে কি না (\(\det < 0\)?) — সেটাও এই sign-ই ধরে।
  • Calculus-এর change of variables: double/triple integral-এ variable বদলালে যে Jacobian(জ্যাকোবিয়ান) গুণ করতে হয়, সেটা একটা determinant — "ছোট্ট এলাকার ক্ষেত্রফল নতুন স্থানাঙ্কে কতগুণ" — একদম আমাদের সংজ্ঞাটাই, শুধু বিন্দুতে-বিন্দুতে আলাদা।

Data Science / ML-এ:

  • Probability density বদলানো: random variable transform করলে density-কে \(|\det J|^{-1}\) দিয়ে গুণ করতে হয় — আধুনিক generative model-দের এক গোত্র (normalizing flow) আক্ষরিক অর্থে determinant হিসাব করেই ছবি বানায়।
  • Multivariate Gaussian: ঘণ্টা-আকৃতির distribution-এর সূত্রে \(\frac{1}{\sqrt{(2\pi)^n \det \Sigma}}\) বসে আছে — covariance matrix-এর determinant বলে ডেটার "মোট ছড়ানোর আয়তন" কত।
  • Invertibility-র lab test: linear system, regression-এর normal equation — সমাধান unique কি না জানতে চাইলে theoretically প্রশ্নটা "\(\det \neq 0\)?" (যদিও কোডে সরাসরি det না দেখে ভালো উপায় আছে — section ৬-এ সাবধানবাণী)।
  • পরের chapter-এর টিজার: eigenvalue বের করার সমীকরণটাই \(\det(A - \lambda I) = 0\) — determinant ছাড়া eigenvalue-র দরজাই খোলে না। PCA, PageRank, spectral clustering — সবার গোড়ায় তাই এই chapter।

৪. Properties

Determinant-এর properties অগোছালো মুখস্থের জিনিস না — প্রায় সবগুলো "ক্ষেত্রফলের scale factor" ছবিটা থেকে এক লাইনে বেরিয়ে আসে।

Property 1 — \(\det I = 1\)

Identity কিছুই করে না — unit square নিজের জায়গায়, ক্ষেত্রফল \(1\)। সূত্রেও: \(\det\begin{bmatrix}1&0\\0&1\end{bmatrix} = 1 \cdot 1 - 0 = 1\)

Property 2 — দুই row (বা column) অদল-বদল করলে sign উল্টে যায়

অদল-বদল মানে একটা reflection ঢুকিয়ে দেওয়া — orientation flip, তাই \(\det \to -\det\)। ফলাফল: দুটো row একই হলে \(\det = 0\) (নিজের সাথে নিজে অদল-বদল করলে \(\det = -\det\), একমাত্র সমাধান \(0\))।

Property 3 — এক row-কে \(c\) দিয়ে গুণ করলে \(\det\)-ও \(c\) গুণ

Parallelogram-এর একটা বাহু \(c\) গুণ লম্বা করলে ক্ষেত্রফল \(c\) গুণ। সাবধান, এ থেকেই আসে নতুনদের এক নম্বর ফাঁদ:

\[\det(cA) = c^n \det A \qquad (\text{সব } n \text{টা row-ই } c \text{ গুণ হচ্ছে!})\]

\(3\times3\) matrix-কে \(2\) দিয়ে গুণ করলে determinant \(8\) গুণ — cube-এর প্রতিটা বাহু দ্বিগুণ করলে আয়তন \(8\) গুণ, সেই ছবিটাই।

Property 4 — এক row-এর গুণিতক আরেক row-তে যোগ করলে \(\det\) বদলায় না

এটা elimination-এর প্রধান চাল — আর সুখবর হলো এতে determinant অক্ষত! জ্যামিতিক কারণ: এই operation-টা একটা shear — তাসের ডেক পাশে ঠেলা। ডেকের প্রতিটা কার্ড নিজের তলে সরে যায়, কিন্তু ডেকের উচ্চতা আর ভিত্তি একই — আয়তন অটুট। (Intuition-এ ছবি দিয়ে আরো।)

Property 5 — Triangular matrix: \(\det\) = diagonal-এর গুণফল

\[\det\begin{bmatrix} d_1 & * & * \\ 0 & d_2 & * \\ 0 & 0 & d_3 \end{bmatrix} = d_1 d_2 d_3\]

কেন: cofactor expansion প্রথম column ধরে করো — শূন্যের নিচে সব বাদ, প্রতি ধাপে শুধু কোণার entry-টা নামে। জ্যামিতিতেও পরিষ্কার: fig03-এর মতো — প্রথম বাহু \(x\)-অক্ষে \(d_1\), পরেরটা যতই হেলুক তার "উচ্চতা" \(d_2\), ... হেলানো অংশগুলো (উপরের \(*\)-রা) শুধু shear, আয়তনে হাত দেয় না।

এটাই কম্পিউটারের পথ: Part II-এর elimination দিয়ে \(A\)-কে triangular বানাও (Property 4 বলছে \(\det\) পাল্টাবে না, শুধু row swap-এর sign গুনে রাখো), তারপর diagonal (pivot!) গুলো গুণ দাও:

\[\det A = (\pm 1)^{\text{swap সংখ্যা}} \times (\text{pivot-দের গুণফল})\]

Property 6 — প্রধান উপপাদ্য: \(\det A = 0 \iff A\) singular

সব সুতো এক গিঁটে:

\[\det A \neq 0 \iff A \text{ invertible} \iff \text{column-রা independent} \iff \text{rank} = n \iff Ax = b\text{-র unique সমাধান}\]

দুই দিকের যুক্তি: column-রা dependent হলে parallelogram/parallelepiped চ্যাপ্টা (fig04) — ক্ষেত্রফল/আয়তন \(0\)। আর চ্যাপ্টা করা মানে তথ্য মুছে ফেলা — দুটো ভিন্ন বিন্দু এক জায়গায় পড়ে গেছে, কে কোথা থেকে এলো বলা অসম্ভব — inverse নেই। উল্টো দিকে, \(\det \neq 0\) হলে elimination-এ \(n\)টা nonzero pivot পাবেই (Property 5) — Part II থেকে জানো তখন inverse আছে।

Property 7 — Product Rule: \(\det(AB) = \det A \cdot \det B\)

সবচেয়ে সুন্দর property, আর ছবিতে প্রায় trivial: \(AB\) মানে আগে \(B\)-র রূপান্তর, তারপর \(A\)-র। \(B\) ক্ষেত্রফল \(\det B\) গুণ করলো, তার ফলাফলকে \(A\) আবার \(\det A\) গুণ করলো — মোট \(\det A \cdot \det B\) গুণ। Scale factor-রা গুণ হয়। (সূত্র দিয়ে প্রমাণ করতে গেলে ঘাম ছুটে যায় — জ্যামিতি দিয়ে এক বাক্য। এটাই এই chapter-এর শিক্ষা।)

দুটো তাৎক্ষণিক উপহার:

\[\det(A^{-1}) = \frac{1}{\det A} \quad (\text{কারণ } \det(A^{-1})\det(A) = \det(I) = 1), \qquad \det(A^k) = (\det A)^k\]

Property 8 — \(\det(A^T) = \det A\)

Row আর column-এর ভূমিকা determinant-এ প্রতিসম — transpose নিলে কিছু বদলায় না। (Cofactor expansion row ধরেও চলে, column ধরেও — এই স্বাধীনতাটা আসলে এই property-রই ফল।) বোনাস: row নিয়ে বলা সব property (2, 3, 4) column-এর জন্যও অটোমেটিক সত্য।

⚠️ যেটা property না: \(\det(A + B) \neq \det A + \det B\) (প্রায় কখনোই না!)। \(\det(I + I) = \det(2I) = 2^n \neq 1 + 1\) — এক লাইনের counterexample। Determinant যোগের সাথে বন্ধুত্ব করে না, গুণের সাথে করে।

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

\(ad - bc\) কোথা থেকে এলো — কাটাকুটির প্রমাণ

Dissection proof of ad - bc

Column দুটো \((a,b) = (3,1)\) আর \((c,d) = (1,2)\)। Parallelogram-টাকে মুড়ে দাও \((a+c) \times (b+d)\) মাপের বড় আয়তক্ষেত্রে, তারপর বাড়তি টুকরোগুলো বাদ দাও: দুটো সবুজ ত্রিভুজ (প্রতিটা \(\frac{ab}{2}\)), দুটো কমলা ত্রিভুজ (প্রতিটা \(\frac{cd}{2}\)), দুটো লাল আয়তক্ষেত্র (প্রতিটা \(bc\))।

\[\text{area} = (a+c)(b+d) - ab - cd - 2bc = ab + ad + cb + cd - ab - cd - 2bc = \boxed{ad - bc}\]

মুখস্থের সূত্রটা আসলে একটা কাটাকুটির ছবি! সংখ্যায় মিলিয়ে নাও: \(4 \times 3 = 12\) থেকে \(3 + 2 + 2\) বাদ — \(\text{area} = 5 = 3\cdot2 - 1\cdot1\)

আর sign? \((a,b)\) থেকে \((c,d)\)-তে ঘড়ির উল্টো দিকে গেলে \(+\), ঘড়ির দিকে গেলে \(-\) — column অদল-বদল করা মানেই ঘোরার দিক উল্টানো, তাই Property 2।

কেন scale factor সব জায়গায় একই?

সংজ্ঞায় বলেছি "যেকোনো আকৃতির ক্ষেত্রফল একই গুণিতকে বদলায়" — কিন্তু কেন? Linear map-এর মূলমন্ত্র মনে করো (Part III): grid-এর প্রতিটা ঘর একই নিয়মে যায়। যেকোনো আকৃতিকে অসংখ্য ছোট ছোট grid-বর্গ দিয়ে ভরে ফেলো (গণিতবিদরা বলে "মোজাইক")। \(A\) প্রতিটা ছোট বর্গকে একই আকৃতির ছোট parallelogram বানায় — প্রতিটার ক্ষেত্রফল ঠিক \(|\det A|\) গুণ। টুকরোর যোগফলও তাই \(|\det A|\) গুণ। হাতি হোক বা বৃত্ত — মোজাইকের যুক্তি এক।

Elimination কেন det বদলায় না — তাসের ডেক

Property 4-এর shear-টা আরেকবার, এবার মন দিয়ে। "row 2 থেকে \(2 \times\) row 1 বিয়োগ" জাতীয় operation-এ parallelogram-এর একটা বাহু অন্য বাহুর সমান্তরালে সরে যায়। ত্রিভুজের সেই পুরনো সত্যটা মনে করো: ভিত্তি এক, উচ্চতা এক — শীর্ষ পাশে সরালেও ক্ষেত্রফল এক। Parallelogram-ও তাই: base ঠিক, height ঠিক, শুধু হেলানোটা বদলালো। এই একটা ছবিই ব্যাখ্যা করে দেয় কেন elimination-পথে det বের করা বৈধ — আর সেটাই \(O(n^3)\)-এ দ্রুততম পথ, যেখানে cofactor expansion-এর খরচ \(O(n!)\)\(n = 20\) হলেই মহাবিশ্বের বয়স পেরিয়ে যায়!

\(\det = 0\) আর "ফেরার পথ নেই"

fig04-এ ফিরে যাও। \(D\) পুরো 2D plane-কে একটা লাইনে ঢেলে দিয়েছে। এখন উল্টো প্রশ্ন: লাইনের একটা বিন্দু দেখিয়ে বলো — এটা plane-এর কোন বিন্দু থেকে এসেছিল? অসম্ভব — অসংখ্য বিন্দু ওখানে এসে পড়েছে (একটা গোটা লাইন-ভর্তি বিন্দু, Part IV-এর ভাষায় null space-এর একেকটা shifted কপি)। Function-এর ভাষায়: \(D\) one-to-one না, তাই inverse নেই। আর ক্ষেত্রফলের ভাষায়: \(0\) দিয়ে গুণ করে ফেলেছ, ভাগ করে ফেরত আসবে কী দিয়ে? \(\det(D^{-1}) = \frac{1}{\det D} = \frac{1}{0}\) — গণিত নিজেই হাত তুলে দিচ্ছে।

Volume হিসেবে cofactor expansion — কেন ভাঙা যায়

\(3\times3\)-এর cofactor expansion আসলে বলে: "parallelepiped-এর আয়তন = ভিত্তির ক্ষেত্রফল (একটা \(2\times2\) minor-এর কাজ) \(\times\) উচ্চতা (সামনের entry), সব দিক ধরে সাজিয়ে।" প্রতিটা \(a_{1j} C_{1j}\) term একেকটা "base \(\times\) height" টুকরো, আর \((-1)^{i+j}\) sign-গুলো টুকরোদের orientation মিলিয়ে রাখে। পুরোপুরি নিখুঁত করে বলতে গেলে multilinearity লাগে — সে গল্প graduate পর্যায়ের; আপাতত ছবিটাই সম্বল, আর সেটাই যথেষ্ট।

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

import numpy as np

np.random.seed(42)

A = np.array([[2., 1.],
              [1., 2.]])

# --- এক লাইনে determinant ---
print("det A =", np.linalg.det(A))                    # 3.0000000000000004

# --- জ্যামিতি যাচাই: unit square-এর ছবি parallelogram, area = |det| ---
# parallelogram-এর area = |cross product| = |ad - bc| — হাতে হিসাব
a, b = A[:, 0], A[:, 1]                               # দুই column
print("হাতে ad - bc =", a[0]*b[1] - a[1]*b[0])        # 3.0

# --- Property যাচাই: random matrix-এ ---
B = np.random.randn(3, 3)
C = np.random.randn(3, 3)
print("det(BC) =", np.linalg.det(B @ C))
print("det B * det C =", np.linalg.det(B) * np.linalg.det(C))   # হুবহু এক!
print("det(B.T) == det(B)?", np.isclose(np.linalg.det(B.T), np.linalg.det(B)))
print("det(2B) =", np.linalg.det(2*B), "= 2^3 * det B =", 8*np.linalg.det(B))

# --- det = 0: singular matrix ---
D = np.array([[2., 1.],
              [4., 2.]])                              # column-রা dependent
print("det D =", np.linalg.det(D))                    # 0.0
try:
    np.linalg.inv(D)
except np.linalg.LinAlgError as e:
    print("inverse নেওয়ার চেষ্টা:", e)                # Singular matrix!

# --- সাবধানবাণী: invertibility চেক-এ det ব্যবহার কোরো না ---
E = 1e-10 * np.eye(5)             # দিব্যি invertible (diagonal, সব pivot nonzero)
print("det E =", np.linalg.det(E))  # 1e-50 — শূন্যের মতো দেখায়, অথচ singular না!
print("বরং দেখো rank:", np.linalg.matrix_rank(E))     # 5 — full rank ✓

Output ব্যাখ্যা:

  • np.linalg.det ভেতরে ভেতরে elimination (LU decomposition) চালায় — Property 5-এর পথ, cofactor-এর \(O(n!)\) পথ না। তাই \(3.0000000000000004\)-এর মতো floating-point ধুলো লাগে।
  • Product rule আর transpose rule random matrix-এও নিখুঁত মিললো — property-গুলো শুধু পাঠ্যবইয়ের অলংকার না।
  • Singular \(D\)-তে NumPy LinAlgError ছুড়লো — fig04-এর "ফেরার পথ নেই"-এর কোড-রূপ।
  • শেষ ব্লকটা জরুরি পেশাদারি শিক্ষা: det খুব ছোট মানেই matrix singular না — শুধু স্কেল ছোট। \(10^{-10} I\)-এর det \(10^{-50}\), কিন্তু সে দিব্যি invertible। বাস্তব কোডে invertibility/ill-conditioning মাপতে rank বা condition number দেখো (condition number-এর পূর্ণ গল্প Chapter 6.5-এ)।

৭. Worked Examples

Example 1 — \(2\times2\): হিসাব + জ্যামিতি মিলিয়ে দেখা

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

সূত্রে: \(\det A = 3\cdot4 - 1\cdot2 = 10\)

জ্যামিতিতে: column দুটো \((3,2)\) আর \((1,4)\)। এরা independent (কেউ কারো গুণিতক না) — তাই চ্যাপ্টা হয়নি, \(\det \neq 0\) ✓। \((3,2)\) থেকে \((1,4)\)-এ ঘড়ির উল্টো দিকে ঘুরতে হয় — sign \(+\) ✓। মানে: এই matrix-এর ভেতর দিয়ে যাওয়া প্রতিটা আকৃতির ক্ষেত্রফল \(10\) গুণ হবে, আর কোনো আয়না-উল্টানো হবে না।

Example 2 — \(3\times3\): cofactor expansion, চালাক row বেছে

\(B = \begin{bmatrix}2 & 0 & 3\\ 1 & 4 & 0\\ 0 & 5 & 1\end{bmatrix}\)

ধাপ ১ — কোন row/column ধরবো? যেখানে শূন্য বেশি। প্রতি row/column-এ একটা করে শূন্য — প্রথম row-ই নিই।

ধাপ ২ — expansion:

\[\det B = 2 \cdot \det\begin{bmatrix}4&0\\5&1\end{bmatrix} - 0 \cdot (\cdots) + 3 \cdot \det\begin{bmatrix}1&4\\0&5\end{bmatrix}\]

মাঝেরটা শূন্যের সাথে গুণ — পুরো minor-টা হিসাবই করতে হলো না!

ধাপ ৩ — \(\det B = 2(4\cdot1 - 0\cdot5) + 3(1\cdot5 - 4\cdot0) = 2\cdot4 + 3\cdot5 = 23\)

চেক (অন্য পথে): তৃতীয় column ধরে expand করো: \(3\cdot(+1)\det\begin{bmatrix}1&4\\0&5\end{bmatrix} + 0 + 1\cdot(+1)\det\begin{bmatrix}2&0\\1&4\end{bmatrix} = 3\cdot5 + 8 = 23\) ✓ — যে পথই ধরো, উত্তর এক (Property 8-এর আশীর্বাদ)।

Example 3 — Elimination পথে determinant (কম্পিউটারের কায়দা)

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

ধাপ ১ — কোণায় \(0\) — pivot নেই! Row 1 ↔ Row 2 অদল-বদল (sign উল্টালো: এখন পর্যন্ত \(\times(-1)\)):

\[\begin{bmatrix}1 & 1 & 3\\ 0 & 2 & 1\\ 2 & 4 & 1\end{bmatrix}\]

ধাপ ২ — Row 3 \(-\) 2·Row 1 (\(\det\) অটুট, Property 4):

\[\begin{bmatrix}1 & 1 & 3\\ 0 & 2 & 1\\ 0 & 2 & -5\end{bmatrix}\]

ধাপ ৩ — Row 3 \(-\) Row 2:

\[\begin{bmatrix}1 & 1 & 3\\ 0 & 2 & 1\\ 0 & 0 & -6\end{bmatrix}\]

ধাপ ৪ — Triangular! Pivot-দের গুণফল \(= 1 \cdot 2 \cdot (-6) = -12\), আর একটা swap হয়েছিল:

\[\det C = (-1)^1 \times (-12) = 12\]

চেক (cofactor-এ, প্রথম column ধরে): \(0 - 1\cdot\det\begin{bmatrix}2&1\\4&1\end{bmatrix} + 2\cdot\det\begin{bmatrix}2&1\\2&3\end{bmatrix} = -1(2-4) + 2(6-2) = 2 + 8 = 10\)... মেলেনি? আবার দেখো — sign-এর দাবার বোর্ডে \(C_{21}\)-এর চিহ্ন \(-\), \(C_{31}\)-এর \(+\): \(-1 \cdot (2 - 4) = +2\), \(+2 \cdot (6 - 2) = 8\), যোগফল \(10\)? কিন্তু \(a_{21} = 1, a_{31} = 2\) — minor-গুলো ঠিক লিখি: \(M_{21} = \det\begin{bmatrix}2&1\\4&1\end{bmatrix} = -2\), \(M_{31} = \det\begin{bmatrix}2&1\\2&3\end{bmatrix} = 4\)। তাহলে \(\det C = -1\cdot(-2) + 2\cdot4 = 2 + 8 = 10 \neq 12\)?! — এখানেই হাতে-হিসাবের আসল শিক্ষা: দুই পথে ভিন্ন উত্তর মানে কোথাও ভুল, খুঁজে বের করো। ভুলটা ধাপ ৩-এ না, minor \(M_{31}\)-এ: row 3 বাদ যাবে, তাই \(M_{31} = \det\begin{bmatrix}2&1\\1&3\end{bmatrix} = 6 - 1 = 5\) (row 2-এরটা নিতে হবে, নিজের row বাদ!)। শুধরে: \(\det C = -1\cdot(-2) + 2\cdot5 = 2 + 10 = 12\) ✓✓ — এবার দুই পথ মিললো। দুই স্বাধীন পথে হিসাব করাই determinant-এ ভুল ধরার শ্রেষ্ঠ অভ্যাস।

৮. Problems ও Solutions

Problem 1. হিসাব করো: (a) \(\det\begin{bmatrix}5 & 2\\ 3 & 4\end{bmatrix}\) (b) \(\det\begin{bmatrix}4 & 6\\ 2 & 3\end{bmatrix}\) (c) \(\det\begin{bmatrix}0 & 1\\ -1 & 0\end{bmatrix}\)। প্রতিটার উত্তরের জ্যামিতিক মানে এক বাক্যে বলো।

Solution

(a) \(5\cdot4 - 2\cdot3 = 14\) — এই matrix ক্ষেত্রফল \(14\) গুণ করে, orientation ঠিক রাখে।

(b) \(4\cdot3 - 6\cdot2 = 0\) — column \((4,2)\) আর \((6,3)\) একই লাইনে (\(1.5\) গুণ) — plane চ্যাপ্টা হয়ে লাইনে পড়ে, singular, inverse নেই।

(c) \(0\cdot0 - 1\cdot(-1) = 1\) — এটা \(90°\) rotation: ক্ষেত্রফল অটুট (\(1\) গুণ), কোনো flip নেই — ঘোরানো জিনিস আয়নার মতো উল্টায় না।

Problem 2. Cofactor expansion দিয়ে (সবচেয়ে সুবিধার row/column বেছে) হিসাব করো:

\[\det\begin{bmatrix}3 & 0 & 2\\ 7 & 0 & 5\\ 1 & 4 & 6\end{bmatrix}\]
Solution

দ্বিতীয় column-এ দুটো শূন্য — ওটাই ধরি। একমাত্র nonzero entry \(a_{32} = 4\), দাবার বোর্ডে \((3,2)\) ঘরের চিহ্ন \((-1)^{3+2} = -\):

\[\det = -4 \cdot \det\begin{bmatrix}3 & 2\\ 7 & 5\end{bmatrix} = -4(15 - 14) = -4\]

এক লাইনে শেষ! ভুল row বেছে নিলে তিনটা \(2\times2\) হিসাব করতে হতো। শিক্ষা: expand করার আগে শূন্য গোনো।

Problem 3. না-হিসাব-করেই উত্তর দাও, কারণসহ: (a) \(\det\begin{bmatrix}1&2&3\\4&5&6\\1&2&3\end{bmatrix}\) (b) \(\det\begin{bmatrix}2&7&1\\0&3&5\\0&0&4\end{bmatrix}\) (c) \(A\) হলো \(4\times4\), \(\det A = 5\)\(\det(2A)\), \(\det(A^2)\), \(\det(A^{-1})\), \(\det(A^T)\) কত?

Solution

(a) \(0\) — প্রথম আর তৃতীয় row একই (Property 2-এর ফল)। দুই row এক মানে জায়গা চ্যাপ্টা।

(b) \(2\cdot3\cdot4 = 24\) — upper triangular, diagonal-এর গুণফল (Property 5)।

(c) \(\det(2A) = 2^4\cdot5 = 80\) (প্রতিটা row-ই দ্বিগুণ!); \(\det(A^2) = 5^2 = 25\); \(\det(A^{-1}) = \frac15\); \(\det(A^T) = 5\)। চারটাই properties থেকে সরাসরি — কোনো matrix না দেখেই।

Problem 4. Elimination পথে \(\det\begin{bmatrix}1 & 2 & 1\\ 2 & 4 & 5\\ 1 & 3 & 2\end{bmatrix}\) বের করো — প্রতি ধাপে determinant-এর কী হচ্ছে বলে বলে।

Solution

ধাপ ১: R2 − 2·R1, R3 − R1 (\(\det\) অটুট):

\[\begin{bmatrix}1 & 2 & 1\\ 0 & 0 & 3\\ 0 & 1 & 1\end{bmatrix}\]

ধাপ ২: \((2,2)\) ঘরে pivot নেই — R2 ↔ R3 (\(\det\)-এর sign উল্টালো):

\[\begin{bmatrix}1 & 2 & 1\\ 0 & 1 & 1\\ 0 & 0 & 3\end{bmatrix}\]

ধাপ ৩: Triangular — pivot-দের গুণফল \(1\cdot1\cdot3 = 3\), একটা swap:

\[\det = (-1)\times 3 = -3\]

চেক (cofactor, প্রথম row): \(1(8-15) - 2(4-5) + 1(6-4) = -7 + 2 + 2 = -3\)

Problem 5. প্রমাণ করো: (a) \(A\) invertible হলে \(\det(A^{-1}) = \frac{1}{\det A}\)। (b) \(Q\) orthogonal (\(Q^TQ = I\), Part V মনে করো) হলে \(\det Q = \pm 1\)। (c) (b)-এর জ্যামিতিক মানে কী?

Solution

(a) \(A A^{-1} = I\)-এর দুই পাশে det নাও; product rule: \(\det A \cdot \det(A^{-1}) = \det I = 1\)\(\det A \neq 0\) (invertible!), ভাগ করে দাও: \(\det(A^{-1}) = 1/\det A\)

(b) \(Q^TQ = I \Rightarrow \det(Q^T)\det(Q) = 1\)। Property 8 বলে \(\det(Q^T) = \det Q\), তাই \((\det Q)^2 = 1 \Rightarrow \det Q = \pm1\)

(c) Orthogonal matrix মানে rotation বা reflection — ক্ষেত্রফল/আয়তন এক চুলও বদলায় না (\(|\det| = 1\))। \(+1\) হলে খাঁটি rotation (orientation ঠিক), \(-1\) হলে ভেতরে একটা আয়না লুকানো (reflection)। Part V-এর "orthogonal matrix দৈর্ঘ্য বাঁচায়" আর এই chapter-এর "det = আয়তনের scale" — দুটো গল্প এক বিন্দুতে মিললো।

Problem 6. \((1,1)\), \((4,2)\), \((2,5)\) — এই তিন শীর্ষের ত্রিভুজের ক্ষেত্রফল determinant দিয়ে বের করো। (Hint: এক শীর্ষকে origin-এ সরাও; ত্রিভুজ = parallelogram-এর অর্ধেক।)

Solution

\((1,1)\)-কে origin-এ আনতে সবার থেকে বিয়োগ: বাকি দুই শীর্ষ হয় \(u = (3,1)\), \(v = (1,4)\)

\(u, v\)-এর parallelogram-এর signed area:

\[\det\begin{bmatrix}3 & 1\\ 1 & 4\end{bmatrix} = 12 - 1 = 11\]

ত্রিভুজ সেই parallelogram-এর অর্ধেক: \(\text{area} = \frac{11}{2} = 5.5\)

(উত্তর \(-\) এলে মানে শীর্ষ তিনটা ঘড়ির দিকে সাজানো ছিল — ক্ষেত্রফল তখন absolute value নিলেই হয়। GIS software, game engine — সবাই ত্রিভুজের ক্ষেত্রফল এভাবেই মাপে।)

Problem 7. \(A = \begin{bmatrix}1 & 2\\ 3 & k\end{bmatrix}\)। (a) \(k\)-এর কোন মানে \(A\) singular? (b) সেই \(k\)-তে \(A\)-এর column-দের ছবি এঁকে (বা বর্ণনা করে) দেখাও ঠিক কী চ্যাপ্টা হচ্ছে। (c) সেই \(k\)-তে \(Ax = (1, 3)\)-এর কয়টা সমাধান? \(Ax = (1, 4)\)-এর?

Solution

(a) \(\det A = k - 6 = 0 \Rightarrow k = 6\)

(b) \(k=6\)-এ column-রা \((1,3)\) আর \((2,6) = 2(1,3)\) — দুটোই এক লাইনে। পুরো plane-এর ছবি সেই লাইনটাই (fig04-এর দৃশ্য): unit square চ্যাপ্টা হয়ে \((1,3)\)-লাইনের ওপর একটা রেখাংশ।

(c) \((1,3)\) ঠিক সেই লাইনের ওপরে — অসংখ্য সমাধান (একটা solution + null space-এর পুরো লাইন)। \((1,4)\) লাইনের বাইরে — একটাও সমাধান নেই। Singular মানে এটাই: হয় ভিড়, নয় শূন্যতা — "ঠিক একটা" কখনো না। Part II-এর গল্পটা এবার determinant-এর চোখে দেখলে।

Problem 8. বন্ধু দাবি করলো: "elimination করলে তো determinant বদলায় না, তাই RREF-এর determinant আর \(A\)-এর determinant সমান — আর RREF-এর diagonal-এ সব \(1\), তাই সব invertible matrix-এর \(\det = 1\)!" ভুলটা কোথায়?

Solution

দুই জায়গায় ফাঁক:

  1. সব elimination ধাপ নিরীহ না। "এক row-এর গুণিতক আরেকটায় যোগ" \(\det\) বদলায় না ঠিকই, কিন্তু row swap sign উল্টায় (Property 2), আর RREF বানাতে গিয়ে pivot দিয়ে row ভাগ করা হয় — সেটা \(\det\)-কেও ভাগ করে দেয় (Property 3)!

  2. তাই ঠিক হিসাবটা: \(\det A = (\pm1)^{\text{swap}} \times (\text{যেসব pivot দিয়ে ভাগ করেছো তাদের গুণফল}) \times \det(\text{RREF})\)। Invertible matrix-এর RREF \(= I\), \(\det I = 1\) — তাহলে \(\det A\) = swap-sign × pivot-দের গুণফল, ঠিক Property 5-এর সূত্র।

শিক্ষা: elimination-পথে det বের করার সময় খাতার পাশে দুটো জিনিস টুকে রাখো — কয়টা swap, আর কোন কোন সংখ্যা দিয়ে row scale করলে।

৯. Common ভুল

❌ ভুল ধারণা ✅ সঠিক ধারণা
"\(\det(A+B) = \det A + \det B\)" না! Determinant যোগ মানে না, গুণ মানে: \(\det(AB) = \det A \det B\)। Counterexample: \(\det(I + I) = 2^n \neq 2\)
"\(\det(cA) = c \det A\)" \(c\) প্রতিটা row-তে ঢোকে — \(n\)টা row মানে \(\det(cA) = c^n \det A\)\(3\times3\)-কে \(2\) দিয়ে গুণ = det \(8\) গুণ (cube-এর আয়তন ভাবো)।
"det ঋণাত্মক মানে ক্ষেত্রফল কমেছে / ভুল হয়েছে" Sign আর মান দুটো আলাদা খবর: \(\vert \det\vert\) = কতগুণ, sign = আয়নায় উল্টেছে কি না। \(\det = -5\) মানে ক্ষেত্রফল \(5\) গুণ এবং orientation flip।
"Elimination-এ det বদলায় না, তাই যা খুশি করা যায়" তিন operation-এর তিন নিয়ম: গুণিতক-যোগ → অটুট; row swap → sign flip; row-কে \(c\) গুণ → det-ও \(c\) গুণ। শেষ দুটো ভুলে গেলে উত্তরের sign/স্কেল দুটোই ভুল হবে (Problem 8)।
"det ছোট (যেমন \(10^{-14}\)) মানেই singular" Float-এর ধুলো আর স্কেলের খেলা: \(10^{-10}I\)-এর det \(10^{-50}\) কিন্তু দিব্যি invertible; আবার সত্যিকারের singular matrix-ও float-এ \(10^{-16}\) দেখাতে পারে। কোডে ভরসা রাখো rank/condition number-এ, খালি det-এ না।
"Rectangular matrix-এরও determinant আছে" নেই — det শুধু square matrix-এর। \(3\times2\) matrix ক্ষেত্রফলকে plane থেকে 3D-র একটা তলে নেয় — "কতগুণ" প্রশ্নটাই তখন অন্যরকম (সে গল্পের নায়ক singular value, Chapter 6.6-এ)।

১০. এক নজরে

ধারণা সূত্র / বক্তব্য মনে রাখার ছবি
Determinant \(\det A\) = signed area/volume scale factor unit square → parallelogram (fig01)
\(2\times2\) \(ad - bc\) কাটাকুটির প্রমাণ (fig05)
\(n\times n\) cofactor expansion: \(\sum_j a_{ij}C_{ij}\), \(C_{ij} = (-1)^{i+j}M_{ij}\) শূন্য-ভরা row/column বেছো; sign = দাবার বোর্ড
Sign \(\det < 0\) ⟺ orientation flip আয়নায় ডান হাত = বাঁ হাত (fig02)
\(\det = 0\) ⟺ singular ⟺ columns dependent ⟺ inverse নেই plane চ্যাপ্টা হয়ে লাইন — ফেরার পথ নেই (fig04)
Row operations গুণিতক-যোগ: অটুট; swap: \(-\); row×\(c\): ×\(c\) তাসের ডেক shear-এ আয়তন অটুট
দ্রুত হিসাব elimination → pivot-দের গুণফল × \((\pm1)^{\text{swap}}\) \(O(n^3)\), cofactor \(O(n!)\) — কম্পিউটার সবসময় প্রথমটা
Product rule \(\det(AB) = \det A\det B\); \(\det(A^{-1}) = 1/\det A\); \(\det(A^T) = \det A\) scale factor-রা গুণ হয়
Triangular det = diagonal-এর গুণফল হেলানো অংশ শুধু shear
DS/ML Jacobian, Gaussian-এর normalizing constant, invertibility, graphics-এর orientation test এক সংখ্যায় রূপান্তরের সারমর্ম

পরের chapter-এর সেতু: determinant-এর সবচেয়ে বড় চাকরিটা এখনো বাকি। পরের chapter-এ খুঁজবো এমন বিশেষ দিক যেগুলো matrix-এর ধাক্কায় ঘোরে না — শুধু লম্বা/খাটো হয়: \(Av = \lambda v\)। সমস্যা হলো \(\lambda\) আর \(v\) দুটোই অজানা। মুক্তির কৌশল: "\(A - \lambda I\) কখন কোনো দিককে শূন্যে চুপসে দেয়?" — আর "চুপসে দেওয়া"-র নিখুঁত detector তো আজই বানিয়ে ফেললে: \(\det(A - \lambda I) = 0\)। Chapter 6.2: Eigenvalues ও Eigenvectors — linear algebra-র সবচেয়ে বিখ্যাত সমীকরণের দেশে।

📓 Notebook Project

notebooks/part-06/ch01-project.ipynb — determinant নিজের হাতে, দুই পথে: recursive cofactor expansion আর row reduction (partial pivoting-সহ) scratch-এ লিখে np.linalg.det-এর সাথে মেলানো; গতির লড়াইয়ে \(O(n!)\) বনাম \(O(n^3)\) নিজের চোখে দেখা; ২০টা random matrix-এ \(\det(AB) = \det A\det B\) আর \(\det(A^T) = \det A\) যাচাই; শেষে একটা ছোট্ট বাড়ি-আকৃতির polygon-কে matrix দিয়ে transform করে shoelace formula-য় মেপে দেখা — ক্ষেত্রফল ঠিক \(|\det A|\) গুণই হয়, আর negative det-এ ছাদটা কোন দিকে উল্টে যায়।