[Home]

Table of contents


$ \newcommand{\ga}{{\mathrm GA}} \newcommand{\span}{{\mathrm span}} \newcommand{\bz}{{\mathbf 0}} \newcommand{\bo}{{\mathbf 1}} \newcommand{\lc}{\rfloor} \newcommand{\rc}{\lfloor} \newcommand{\grd}[1]{\langle#1\rangle} $ Geometric Algebra

Geometric Algebra

এখানে আমরা Geometric Algebra বলে একটা জিনিস শিখব৷ এর ণানারকম অদ্ভুত অদ্ভুত প্রয়োগ আছে৷ Computer-এ যারা ছবি আঁকে তারা এটা ব্যবহার করে, আবার যারা ভৌতবিজ্ঞানের জটিল গবেষণা করে তাদেরও নাকি এটা কাজে লাগে! ব্যাপারটা শেখার তার জন্য ${\mathbb R}^n$ কাকে বলে সেটা জানলে সুবিধা হবে৷ যদি $n$-খানা real number পরপর লেখো তবে তাকে বলে একটা $n$-tuple. সাধারণতঃ, এদের দুপাশে এক জোড়া গোল ব্র্যাকেট বসিয়ে দেওয়া হয়, যেমন $(2,3,2)$ হল একটা $3$-tuple. যতরকম 3-tuple সম্ভব, তাদের সবার set-কে বলে ${\mathbb R}^3.$ তেমনি যাবতীয় $n$-tuple-এর set-কে বলে ${\mathbb R}^n.$ চাইলে একটা $n$-tuple-এর সাথে আরেকটা $n$-tuple যোগ বা বিয়োগ করতে পারো৷ যেমন দুটো 4-tuple-এর যোগের উদাহরণ হল-- $$(2,3,-5,6) + (20,30,40, 60) = (22,33,35,66).$$ মানে প্রথমটার প্রথম সংখ্যার সাথে দ্বিতীয়টার প্রথম সংখ্যার যোগ, এইরকম৷ কোনো $n$-tuple-কে একটা সংখ্যা দিয়ে গুণও করা যায়, যেমন $2\times(1,2,3)=(2,4,6).$

একটা $n$-tuple লিখতে $n$-খানা সংখ্যা লিখতে হয়৷ আমরা খুব বড় বড় $n$-এর জন্য ${\mathbb R}^n$ নিয়ে কাজ করব৷ তাই লিখতে হাত ব্যথা হয়ে যাবে৷ সৌভাগ্যক্রমে আমরা যে সব $n$-tuple লিখব, তাদের অধিকাংশ সংখ্যাই হবে $0.$ যেমন ধরো এই 16-tuple-টা-- $$(2,0,0,1,3,0,0,0,0,0,0,0,0,0,0,0).$$ এরকম ক্ষেত্রে একটা কৌশল করলে লেখার পরিশ্রম অনেকটা বাঁচানো যায়৷ কৌশলটা বোঝানোর জন্য আবার ${\mathbb R}^3$-র উদাহরণ নিই৷ তিনটে যেকোনো শব্দ নাও, ধরো চেয়ার, টেবিল আর কলম৷ তাহলে আমরা $(2,3,-4)$ না লিখে বলব
$2$চেয়ার $+$ $3 $ টেবিল $-4$ কলম৷
এর সঙ্গে যদি $3$ চেয়ার $-5$ টেবিল $+6$ কলম যোগ করতে হয়, তবে চেয়ারগুলোকে আলাদা করে যোগ, করব, টেবিলগুলোকে আলাদা করে, এইরকম৷ এই কৌশলটার সুবিধা হল, এতে $0$-গুলোকে আলাদা করে লিখতে হয় না৷ যেমন যদি খালি চেয়ার লিখি, তবে সেটা 3-tuple হিসেবে হবে $(1,0,0).$ অবশ্য $(0,0,0)$-কে এভাবে লেখা মুস্কিল, তাই তার জন্য একটা আলাদা চিহ্ন ব্যবহার করব, $\bz.$

কী জিনিস?

Geometric Algebra-র মূল জিনিসটা হল $\ga(p,q,r)$ যেখানে $p,q,r$ প্রত্যেকেই একেকটা nonnegative integer. এটার সংজ্ঞাটা এবার আমরা ধাপে ধাপে শিখব৷ সুবিধার জন্য এই উদাহরণটা মাথায় রাখো, $\ga(1,1,1).$ প্রথমেই $n=p+q+r$ বার করে নাও৷ আমাদের উদাহরণে $n=3.$ তাহলে $\ga(p,q,r)$ হল আসলে ${\mathbb R}^{2^n},$ মানে আমাদের উদাহরণে ${\mathbb R}^8.$ অবশ্যই খালি ${\mathbb R}^{2^n}$ হলে লোকে সেটাকে খামোখা আর নতুন করে $\ga(p,q,r)$ নাম দিত না৷ সুতরাং $\ga(p,q,r)$-এর মধ্যে বাড়তি কিছু একটা নিশ্চয়ই আছে৷ যেটা আছে সেটা হল দুটো vector-কে গুণ করার একটা কায়দা, মানে এমন একটা গুণ যেটা দিয়ে দুটো vector-কে গুণ করে আরেকটা vector পাওয়া যায়৷ সেটার সংজ্ঞাটা বোঝার জন্য প্রথমে একটা $2^n$-tuple-কে সহজে লেখার জন্য একটা চেয়ার-টেবিল-কলম জাতীয় কৌশল করে রাখি৷ ব্যাপারটা $n=3$ দিয়ে বোঝাব৷ এখানে আমাদের দরকার $2^n=2^3=8$-খানা যা খুশি শব্দ৷ এদের বানাবো এইভাবে--প্রথমে $\{1,2,...,n\}$ নাও, মানে আমাদের ক্ষেত্রে $\{1,2,3\}.$ এর মোট $2^n = 8$-টা subset সম্ভব-- $$\phi, \{1\}, \{2\}, \{3\}, \{1,2\}, \{1,3\}, \{2,3\}, \{1,2,3\}.$$ এরাই হবে আমাদের আটটা শব্দ! সুতরাং ${\mathbb R}^8$-এর বিভিন্ন সদস্য দেখতে হবে এইরকম-- $$2\phi-4\{1,2\}+10\{2,3\}-16\{1,2,3\}.$$ তবে লোকে সাধারণতঃ এইভাবে লেখে না৷ $\{1\}$-এর বদলে লেখে $e_1,$ তেমনই $\{1,2\}$-এর বদলে লেখে $e_{12}.$ এখানে $e$ অক্ষরটার কোনো আলাদা গুরুত্ব নেই (সম্ভবতঃ ওটা Euclid-এর নামের আদ্যাক্ষর বলে এখানে ব্যবহৃত হচ্ছে)৷ এই কায়দায় $\phi$-কে লেখা হয় $\bo.$

এবার যে কোনো দুটো vector-কে গুণ করা শিখব৷ $\bo$ দিয়ে গুণ করলে কিছুই বদলায় না৷ এবার বলি $e_i$-দের কী করে গুণ করতে হয়৷ ধরো $e_1e_2$ বার করতে চাও৷ উত্তর হবে $e_{12}.$ ব্যস্! তেমনি $e_1e_3=e_{13}$ আর $e_2e_3 = e_{23}.$ প্রতি ক্ষেত্রেই বাঁদিকে index-গুলো ছোটো থেকে বড় সাজানো ছিল৷ যদি $e_2e_1$ বার করতে চাও, তবে হবে $-e_{12}.$ একইভাবে $e_3e_2 = -e_{23}.$ এতক্ষণ পর্যন্ত $p,q,r$-এর কোনো ভূমিকা নেই৷ এবার ওরা মঞ্চে প্রবেশ করবে৷ ধরো $e_ie_i$ বার করতে চাও৷ তবে উত্তর হবে হয় $\bo$ নয়তো $-\bo$ আর নয়তো $0.$ কোনটা হবে নির্ভর করবে $i$ কত তার উপরে৷ যদি $i=1,...,p$ হয়, তবে উত্তর হবে $\bo.$ যদি $i=p+1,...,p+q$ হয়, তবে উত্তর হবে $-\bo,$ আর নইলে হবে $0.$ সুতরাং আমাদের ক্ষেত্রে $e_1e_1=\bo,$ $e_2e_2=-\bo$ আর $e_3e_3=0.$

এবার এই সূত্র ব্যবহার করে $(\bo+2e_1 - e_3)(e_1-e_2)$ বার করা যাবে স্কুলে যেভাবে ব্র্যাকেট তুলে গুণ করা শিখেছিলে, ঠিক সেইভাবে-- $$(\bo+2e_1 - e_3)(e_1-e_2) = \bo e_1+2e_1e_1 - e_3e_1-\bo e_2-2e_1e_2 +e_3e_2 =e_1+2\bo + e_{13}-e_2-2e_{12} -e_{23}.$$ এবার ধরো $e_{12}e_3$ গুণ করতে বলল৷ তবে আন্দাজ করতে পারছ যে, উত্তর হবে $e_{123}.$ কিন্তু যদি $e_{12}e_1$ বার করে দিত? তবে এইভাবে এগোও, প্রথমে $e_{12} = e_1e_2$ লিখে নাও৷ তারপর গুণ করো $$e_{12}e_1 = e_1e_2e_1 = -e_1e_1e_2 = -\bo e_2 = -e_2.$$ মানে কায়দাটা হল এই--প্রথমে সব কিছুকে একটা index-ওয়ালা জিনিস দিয়ে ভেঙে লেখো৷ তারপর পশাপাশি index-দের স্থানবিনিময় করে করে index-গুলোকে ছোটো থেকে বড় সাজিয়ে নাও৷ যদি কোনো index একাধিকবার এসে থাকে, সেগুলো এর ফলে পাশাপাশি চলে আসবে৷ সেগুলোকে $e_ie_i$-এর সূত্র দিয়ে কাটাকাটি করে দাও৷

আরেকটা উদাহরণ দেখি৷ ধরো $p=3,$ $q=2$ আর $r=3.$ তাহলে $e_{136}e_{23567} = ?$ ধাপগুলো সংক্ষেপে লেখার জন্য খালি index-গুলোকেই লিখছি-- $$13623567 = -13263567 =12363567 =-12336567 =12335667 = 125667 = 0.$$ অবশ্য একটু অভ্যাস হয়ে গেলেই এত কষ্ট করতে হবে না৷ যেই দেখা যাবে দু দিকেই $6$ রয়েছে, অমনি বলে দেব যে উত্তরটা $0$ হবে, কারণ $e_6e_6 = 0.$

খানিকটা চেষ্টা করলেই দেখাতে পারবে যে, এইভাবে গুণ করাটা associative হয়৷

ব্যস্, এই হল $\ga(p,q,r)$-এর সংজ্ঞা!

গাঁজার দম

বুঝতেই পারছ এভাবে ধরে ধরে গুণ করতে গেলে হাত ব্যথা হয়ে যাবে৷ সৌভাগ্যক্রমে বিভিন্ন কম্পিউটার প্রোগ্রাম আছে এইসব করার জন্য৷ এদের মধ্যে সবচেয়ে ছোটোটার নাম গাঁজা! হ্যাঁ, মজা নয়, একেবারে গাঁজা! ইংরাজীতে GANJA, যেটা বোধহয় Geometric Algebra iN JAvascript-এর সংক্ষিপ্তরূপ৷ প্রোগ্রামটা স্রেফ $177$ লাইন লম্বা৷ টুক করে একটা ওয়েবপেজে ঢুকিয়ে দিলেই হল, যেমন ঢোকানো আছে আমাদের এই ওয়েবপেজে, যেটা তুমি এখন পড়ছ৷ প্রোগ্রামটা লিখেছেন Enki নামের একজন৷ নীচের textfield-টায় কিছু expression ঢুকিয়ে ''$=$'' চিহ্নটা টিপে দিলেই উত্তর পেয়ে যাবে৷ Expression লেখাটা খুবই সহজ৷ যদি $2e_1+4e_{23}$ আর $3e_2$ গুণ করতে চাও, তবে লিখতে হবে (2e1+4e23) * 3e2. একটাই খালি জটিলতা--খালি $e_1$ বোঝাতে লিখতে হবে 1e1. অর্থাৎ coefficient-টা লিখতে হবেই, সেটা $1$ হলেও বাদ রাখা চলবে না৷

যা উত্তর হয়
গাঁজা যেকোনো $p,q,r$ নিয়েই কাজ করতে পারে, খালি গোড়ায় সেটা বলে দিতে হয়৷ এখানে আমরা $p=4,q=1,r=0$ নিয়েছি৷

নানা ভাষা

এবার কয়েকটা নতুন ভাষা শেখা যাক৷ আমরা দুটো vector-কে যেভাবে গুণ করতে শিখলাম তাকে বলে fundamental product. এটা থেকে আরো চার রকমের product বানাব আমরা৷

Conformal Geometric Algebra (CGA)

এবার প্রশ্ন হল এত সব করে লাভটা কী হল? লাভ শুনেছি অনেক৷ Physics-এর spinor, অংকের quaternion আর computer graphics-এর নানারকম জিনিস, সবাইকেই এইসব product দিয়ে সুন্দরভাবে লিখে ফেলা যায়! আমরা এখানে computer graphics-এর দিকটা শিখব৷ এর জন্য Conformal Geometric Algebra (CGA) বোঝা দরকার৷ জিনিসটা হল $\ga(4,1,0)$ এবং সেখান থেকে আমাদের পরিচিত ${\mathbb R}^3$-তে যাতায়াত করার একটা পথ৷ যেহেতু $4+1+0 = 5,$ তাই $\ga(4,1,0)$ হল আসলে ${\mathbb R}^{32}.$ এর standard basis হল $e_A$ জাতীয় multivector দিয়ে তৈরী, যেখানে $A\subseteq \{1,...,5\}.$

$\ga(4,1,0)$-এর কিছু সদস্যর বিশেষ গুরুত্ব আছে৷ এদের পরিচয় নেওয়া যাক৷ ${\mathbb R}^3$ আর $C$-এর মধ্যে একটা সহজ bijection আছে-- $$c(x,y,z)= x e_1+ye_2+ze_3 + \frac12(x^2+y^2+z^2)e_\infty+e_0.$$ এইটাই হল ${\mathbb R}^3$ আর $\ga(4,1,0)$-এর মধ্যে যোগসূত্র৷ এর ফলে কী লাভ হবে তার একটা ধারণা দিই--
  1. ধরো ${\mathbb R}^3$ -তে কোনো একটা অংক আছে বিভিন্ন point নিয়ে, যেমন $c_1,...,c_4\in{\mathbb R}^3$ দেওয়া আছে, যারা coplanar নয়৷ তাহলে ওদের মধ্যে দিয়ে ঠিক একটাই sphere আঁকা যাবে৷ এবার আরেকটা $x\in{\mathbb R}^3$ দিয়ে জানতে চাওয়া হচ্ছে এই $x$-টাও ওই sphere-এর গায় আছে কিনা৷ এই প্রশ্নটায় পাঁচটা point হল ইনপুট, আর আউটপুট হল হ্যাঁ বা না৷ এরকমক্ষেত্রে আমরা প্রথমেই এই point কটাকে $\ga(4,1,0)$-র মধ্যে এনে ফেলব৷ তারপর ওদেরকে fundamental product দিয়ে খানিকটা চটকালেই উত্তর বেরিয়ে আসবে৷ অবশ্য, প্রশ্ন উঠতেই পারে যে চটকানোটা ${\mathbb R}^3$-র মধ্যে করলেও তো উত্তর বার করা যেত, খামোখা $\ga(4,1,0)$-তে যাবার বাড়তি সুবিধাটা কোথায়? উত্তর হল, $\ga(4,1,0)$-এর মধ্যে অনেক অল্প চটকালেই কাজ হবে৷
  2. এই অংকে আউটপুটটা ছিল হ্যাঁ-না টাইপের৷ অনেক অংক থাকে যেখানে উত্তরটা হল একটা point. যেমন ধরো, তিনটে point দেওয়া আছে $a,b,c\in{\mathbb R}^3,$ যারা এক লাইনে নেই৷ তাহলে ওদের মধ্যে দিয়ে একটা plane পাবে৷ সেই plane বরাবর একটা আয়না বসাও৷ এবার যদি $x\in{\mathbb R}^3$ হয়, তবে এই আয়নায় $x$-এর reflection-টা কোথায় পড়বে? এখানেও একইব্যাপার, $a,b,c,x$-কে প্রথমে $\ga(4,1,0)$-র মধ্যে এনে ফ্যালো৷ তারপর চটকাও৷ তাহলে উত্তর পাবে একটা multivector যেটা $C$-এর মধ্যে থাকবেই৷ এবার সেখান থেকে আবার ${\mathbb R}^3$-এ ফিরে এসো৷
  3. ${\mathbb R}^3$ নিয়ে কাজ করার সময়ে point ছাড়াও নানারকমের জিনিস নিয়ে কাজ করতে হয়, যেমন sphere বা plane, এইসব৷ এদের জন্য computer-এ নানারকম data type বানাতে হয়৷ সেসব নিয়ে কাজ করা ঝকমারি৷ এরকম নানা কাজের জিনিসকে multivector বলে ভাবা যায়, তাই multivector-দের জন্য একটা data type বানানেই চলে, প্রতিটা জিনিসের জন্য আলাদা করে বানাতে হয় না৷

Direct representation

অনেক কোনো $A\subseteq{\mathbb R}^3$-এর জন্য এমন একটা blade পাই $v$, যাতে $x\in A\wedge c(x)\cdot v = 0$ হয়৷ এরকম ক্ষেত্রে আমরা $v$-কে বলি $A$-র একটা direct representation. অনেক সময়ে একে Outer Product Null Space (OPNS)-ও বলে৷ বলাই বাহুল্য যে, যেকোনো একটা blade যদি নিই, তবে তার একটা OPNS থাকবেই৷ যদি blade-টার মধ্যে একটা factor হয় $e_\infty$, তবে তার OPNS-কে বলব একটা flat set, নইলে বলব একটা round set.

প্রথমে flat কিছু OPNS দিচ্ছি-- এবার round কিছু OPNS দেব--

আমরা এখানে $c(x,y,z)$ ছাড়াও আরেকটা function ব্যবহার করব-- $$p(x,y,z) = x e_1+y e_2+z e_3.$$ এটা ব্যবহার করে $c(x,y,z)$-কে একটু সহজে লেখা যায়-- $$c(x,y,z) = p(x,y,z)+\frac 12p(x,y,z)^2 e_\infty + e_0.$$ এখানে $p(x,y,z)^2$-টা geometric product দিয়ে করা হয়েছে৷

এবার প্রয়োগগুলো বলি৷
  1. যদি $x,y\in{\mathbb R}^3$ হয়, তবে $-2c(x)\lc c(y)$ হবে ওদের মধ্যে দূরত্বের square.
  2. যদি $p,q\in{\mathbb R}^3$ হয়, তবে ওদের যোগ করে যে সরলরেখাটা পাওয়া যাবে, তার equation হল $c(x)\wedge (c(p)\wedge c(q)\wedge e_\infty)=0.$
  3. যদি $a,b\in{\mathbb R}^3$ হয়, তবে ওদের ঠিক মাঝখান দিয়ে যে plane-টা যাবে তার equation হবে $c(x)\bullet (c(a)-c(b)) = 0.$ অর্থাৎ কোনো $x\in{\mathbb R}^3$ এই plane-টায় থাকা মানে $c(x)\bullet (c(a)-c(b)) = 0$ হওয়া৷
  4. যে sphere-টার কেন্দ্র $a\in{\mathbb R}^3$-তে আর radius হল $r>0,$ তার equation হবে $c(x)\bullet (c(a)-\frac 12r^2 e_\infty)=0.$ যদি $=$-র জায়গায় $>$ হয়, তবে $x\in{\mathbb R}^3$-টা sphere-টার ভিতরে থাকবে, $< $ হলে বাইরে থাকবে৷
  5. যে plane-এর normal হল $n\in{\mathbb R}^3$ আর origin থেকে দূরত্ব হল $d,$ তার equation হবে $c(x)\bullet (p(n)+de_\infty)=0.$
  6. যে plane-এর normal হল $n\in{\mathbb R}^3$ আর $p\in{\mathbb R}^3$ দিয়ে যায়, তার equation হবে $c(x)\bullet \big( p(n)+(c(p)\bullet p(n) e_\infty \big)=0.$
  7. যে circle-টার centre হল $a\in{\mathbb R}^3$ এবং radius হল $r$ এবং normal-টা হল $n\in{\mathbb R}^3,$ তার equation হবে $p(x)\lc (c(a)-\frac 12r^2 e_\infty)\wedge (c(a)\cdot (c(n)e_\infty))=0.$

নাড়ানো-চাড়ানো

  1. Translation: ধরো $a\in{\mathbb R}^3.$ আমরা চাই কোনো $p\in{\mathbb R}^3$-কে $p+a$-তে নিয়ে যেতে৷ তবে $c(p)$ থেকে $c(p+a)$ বার করা যাবে কী করে? একটা কায়দা অবশ্যই $c(p)$ থেকে $p$ বার করে, তার সাথে $a$ যোগ করে, আবার $c(\cdot)$ লাগানো৷ কিন্তু সরাসরি $c(p)$ থেকে $c(p+a)$ বার করা সম্ভব-- $$c(p+a) = e^{-c(a)e_\infty}c(p) e^{-c(a)e_\infty}.$$