গণিতের যেসব শাখার ব্যবহার অনেক জায়গাতেই দেখা যায় তার মধ্যে অন্যতম হলো লিনিয়ার এ্যালজেবরা। আর লিনিয়ার এ্যালজেবরার একটা বড় অংশ জুড়ে আছে ম্যাট্রিক্স। হাতে কলমে ম্যাট্রিক্স নিয়ে কাজ করা যতটা কঠিন, ম্যাথমেটিকায় ঠিক ততটাই সহজ। আমরা এই সেকশনে ম্যাট্রিক্স নিয়ে কীভাবে কাজ করতে হয় সেসব দেখবো।
মেনু থেকে ম্যাট্রিক্স তৈরী
ম্যাথমেটিকা নোটবুকে ম্যাট্রিক্স আনতে হলে আমাদেরকে menu bar থেকে Insert এ ক্লিক করে Table/Matrix অপশন থেকে new... এ ক্লিক করতে হবে। তাহলে আমাদের সামনে একটি pop-up window চলে আসবে।
এরপর সেই pop-up window এর Make: সেকশনে আমাদেরকে Matrix সিলেক্ট করতে হবে এবং কতগুলি row এবং column চাই সেটা লিখে ok তে ক্লিক করতে হবে। তাহলে আমরা আমাদের নোটবুকে একটি ম্যাট্রিক্স পেয়ে যাব যার প্রতিটা entry আপাতত ফাঁকা(empty box দেওয়া)। সেসব ফাঁকা জায়গায় আমরা আমাদের কাঙ্ক্ষিত ভ্যালু গুলো বসিয়ে দিলেই আমাদের কাজ শেষ। এরপর enter চাপ দিলে আমরা আমাদের ম্যাট্রিক্স পেয়ে যাব।
(আমরা চাইলে আমাদের ম্যাট্রিক্স টা একটি ভ্যারিয়েবলেও এ্যাসাইন করে রাখতে পারতাম পরবর্তী ইউজের জন্য।)
লিস্ট থেকে ম্যাট্রিক্স তৈরী
এন্টার চাপার পর আমরা খেয়াল করবো আমাদের ম্যাট্রিক্স টা ম্যাথমেটিকা একটি nested list (লিস্টের ভেতরে লিস্ট) হিসেবে স্টোর করে রেখেছে। পুরা লিস্টটা ম্যাট্রিক্স টাকে রিপ্রেজেন্ট করতেছে,আর লিস্টের ভেতরে যেসব লিস্ট element হিসেবে আছে সেগুলা মূলত row গুলোকে রিপ্রেজেন্ট করতেছে। ভেতরের লিস্টের প্রতিটা উপাদান আবার এক একটি entry কে বুঝাচ্ছে।
ম্যাথমেটিকা যেহেতু ম্যাট্রিক্সকে একটি নেস্টেড লিস্ট হিসেবেই ট্রিট করতেছে, তাহলে কি আমরা একটি নেস্টেড লিস্ট থেকে ম্যাট্রিক্স বানাতে পারবো?
হ্যাঁ, পারবো! তারজন্য আমাদের যে ফাংশনটার দরকার হবে সেটি হলো MatrixForm।
এর জন্য আমরা প্রথমে একটি নেস্টেড লিস্ট নিব, তারপর সেটিকে MatrixForm[] এর মধ্যে দিলেই আমাদের কাজ হয়ে যাবে।
আমরা MatrixForm[A] এভাবে না করে A // MatrixForm ও ইউজ করতে পারতাম।
ম্যাট্রিক্স অপারেশন
আমরা তো হাতে কলমে ২টি ম্যাট্রিক্সের যোগ, গুণ করতে পারি। কিন্তু, ম্যাথমটিকাতে এই কাজগুলো করা একদম জলের মতো সহজ।
আমরা শুধু ২টা ভ্যারিয়েবলে ২টা ম্যাট্রিক্স নিব (ধরি A এবং B)। তারপর যোগের জন্য A+B করবো এবং গুণের জন্য A.B করবো।
এখানে A+B এর রেজাল্টাও আমরা নেস্টেড লিস্ট আকারে পেয়েছি, তাই MatrixForm ইউজ করতে হবে যদি আমরা সুন্দর করে আউটপুট দেখতে চাই।
(খেয়াল করতে হবে যে আমরা গুণের জন্য * না দিয়ে . দিয়েছি।)
ম্যাট্রিক্সের উপর Power দিলে তা প্রতিটা এলিমেন্টের উপর power বসায়
যদি আমরা ম্যাট্রিক্সের প্রতিটা উপাদানকে power না করতে চেয়ে পুরা ম্যাট্রিক্সটাকেই Power করতে চাই তাহলে আমরা MatrixPower[] ইউজ করবো। (অর্থাৎ, ম্যাট্রিক্সটাকে নিজের সাথেই একাধিকবার গুণ করতে চাইলে)
এছাড়াও আমরা ম্যাট্রিক্স রিলেটডে অন্যান্য কাজও করতে পারি যেমন: ম্যাট্রিক্সকে ট্রান্সপোজ করা, ট্রেস বের করা, ইনভার্স বের করা, নির্ণায়ক বের করা ইত্যাদি।
Trace বের করার জন্য Tr[] ফাংশন ইউজ করবো।
নির্ণায়ক বের করা
Solving Linear Equations
আমরা system of linear equations ও ম্যাথমেটিকা দিয়ে সলভ করতে পারি, তার জন্য আমাদেরকে RowReduce[] ফাংশনটা ইউজ করতে হবে। এই ফাংশনের মধ্যে system টার Augmented Matrix দিতে হবে, তাহলেই হয়ে যাবে।
M একটি Augmented Matrix জন্য এর উপাদান গুলো হলো x,y,z এর coefficient এবং constant term। Row Reduce করে আমরা যে ম্যাট্রিক্স টা পেলাম সেখানের সর্বডানের কলাম গুলো হলো আমাদের সল্যুশন।
আমরা একই কাজ mx = b সলভ করেও করতে পারতাম, যেখানে m হলো coefficient এর ম্যাট্রিক্স 1252−54−34−1, x হলো ভ্যারিয়েবলের কলাম ম্যাট্রিক্স xyz, b হলো constant term গুলোর কলাম ম্যাট্রিক্স −3135। আর এই সলভের কাজ করতো LinearSolve নামক ফাংশন যার মধ্যে আমরা m ও b ম্যাট্রিক্স টা পাস করতাম।
এখানে 2, -1, 1 হলো যথাক্রমে x, y, z এর সমাধান
Eigenvalue & Eigenvector
আইগেন ভ্যালু আর আইগেন ভেক্টর লিনিয়ার এ্যালজেবরার একটি গুরুত্বপূর্ণ বিষয়। ম্যাথমেটিকায় এগুলা আমরা একই নামের ফাংশন ইউজ করে বের করবো।
এখানে //N এর কাজ কী তা মনে আছে?
ম্যাথমেটিকায় ম্যাট্রিক্স নিয়ে এই ছিল বেসিক আলোচনা, আশা করি নিজ উদ্যোগে আমরা explore করতে থাকবো।