১১.১) Plotting

ম্যাথম্যাটিকাতে আমার সবচেয়ে প্রিয় জিনিসটা হলো plotting বা গ্রাফ আঁকা। আমরা স্কুল-কলেজে থাকতে যেসব গ্রাফ আঁকতে অনেক খাটনি করেছি সেগুলো ম্যাথম্যাটিকাতে এক লাইন কোড লিখেই করা যায়। শুধু তাই নয়, গ্রাফ গুলো দেখতেও অনেক সুন্দর লাগে।

আমরা গ্রাফ পেপারে কীভাবে গ্রাফ এঁকেছি? প্রথমে যে ফাংশন টার গ্রাফ আঁকতে চাই সেটা ঠিক করেছি। তারপর x এর কয়েকটা মান বেছে নিয়েছি। x এর সেই মান গুলো ফাংশনে বসিয়ে যে মান গুলো পেয়েছিলাম সেগুলোকে y ধরে নিয়েছি। এরপরে (x,y) হিসেবে সেগুলো পয়েন্টকে গ্রাফে বসাইছি। সবশেষে সেগুলো রেখা দ্বারা যোগ করেছি। ম্যাথমেটিকা তেও কিছুটা এভাবেই প্লট করে। প্রথমে আমাদের বলে দিতে হয় কোন ফাংশনের গ্রাফ চাই আমরা, তারপর বলতে হয় x এর মান কোন রেঞ্জে থাকবে। ব্যাস হয়ে গেল! এখন এই গ্রাফ আঁকার জন্য ম্যাথমেটিকা ফাংশনের নাম হলো Plot[]

তো আমরা যদি x^2 কে প্লট করতে চাই? তাহলে লিখবো, Plot[x², {x,-5,5}]

এখানে x এর রেঞ্জ -5 থেকে 5

তাহলে একটা সুন্দর গ্রাফ পেয়ে গেলাম। আমরা আরও কয়েকটা উদাহরণ দেখি।

আমরা যে শুধু বহুপদী প্লট করতে পারি এমন না। ত্রিকোণমিতি ফাংশন, লগারিদমিক ফাংশন, এক্সপোনেনশিয়াল সহ যাবতীয় সব ফাংশনই প্লট করা যাবে ম্যাথম্যাটিকা দিয়ে। আমাদের একটাই কাজ কোন ফাংশন প্লট করবো সেটার নাম আর রেঞ্জ বলে দেওয়া। (এগুলার ভেতর রেডিয়ান মান দিতে হয়।)

আমরা প্রতিটা প্লট ফাংশনের জন্য আলাদা আলাদা গ্রাফ পেয়েছি। আমরা চাইলে একটা গ্রাফের মধ্যে একাধিক ফাংশনের গ্রাফ দেখাতে পারি। এরজন্য, যে কয়টা ফাংশনকে আমরা একসাথে দেখাতে চাই ওগুলাকে লিস্ট আকারে লিখতে হবে। অর্থাৎ, এক জোড়া second bracket এর মধ্যে কমা দিয়ে পর পর লিখতে হবে।

এখানে নতুন একটা জিনিস আমরা দেখতে পারতেছি, যার নাম হলো PlotLegends -> "Expressions" , এটা হলো Plot[] এর একটা অপশন। এরকম আরও অনেক অপশন আছে যা আমরা সামনে দেখবো। মূলত এসব অপশন দিয়ে প্লট করে আরও সুন্দর করে উপস্থাপন করা হয়। আমরা যদি একটি প্লটেই একাধিক ফাংশন প্লট করি তাহলে সেগুলা একেকটা একেক রঙের হয়। PlotLegends বেসিক্যালি কোন রঙের কার্ভ কোন ফাংশনটাকে রিপ্রেজেন্ট করে সেটার নাম গ্রাফের পাশে দেখায়। এখানে "Expressions" দিয়ে বলা হচ্ছে প্লটের নাম গুলো হবে তার ফাংশনের নামে (যেমন sin(x), sin(2x) ইত্যাদি) । আমরা যদি PlotLegends -> {"func1", "func2", "func3", "func4", "func5"} দিতাম তাহলে গ্রাফের সাইডে এসব নামই দেখাতো।

আরেকটি অপশন আছে, AxesLabel এটা দিয়ে আমরা আমাদের অক্ষ গুলোর নাম দিতে পারি। যেমন AxesLabel→{ "radians", "sine"} । গ্রাফের মূলবিন্দুর স্থানাংক কোন বিন্দুতে হবে সেটাও আমরা ঠিক করে দিতে পারি AxesOrigin অপশন দিয়ে। আমরা চাইলে আমাদের গ্রাফের চারপাশে ফ্রেম দিতে পারি। তার জন্য লিখবো Frame→True আবার ছকের মতো লাইনও আঁকতে পারি। Gridlines -> All

আমরা যে গ্রাফ গুলা এতোক্ষণ ড্র করলাম, সেগুলোতে আমরা বিভিন্ন রঙ দিতে পারি, আবার এই কার্ভ গুলোর ধরণ কেমন হবে সেগুলোও ঠিক করে দিতে পারি। এই কাজগুলোর জন্য যে অপশন ব্যবহার হয়ে প্লট ফাংশনের মধ্যে সেটার নাম হলো PlotStyle, নাম টা অনেক ইনটুইটিভ, শুনেই বোঝা যাচ্ছে যে আমাদের গ্রাফ গুলোতে বিভিন্ন স্টাইল দিবে।

প্রথমেই রঙের ব্যাপারটা দেখা যাক। আমরা সিম্পল একটা গ্রাফ আঁকি Sin(x) এর । বাই ডিফল্ট ম্যাথমেটিকা এটাকে নীল কালার করে দেয়। আমরা এখন PlotStyle দিয়ে এটাকে অন্য কালার করবো। PlotStyle-সবুজ চাইলে Green দিব। অন্য রঙ চাইলে সেই রঙের ইংরেজি নাম টা দিতে হতো। তবে অবশ্যই প্রথম অক্ষর টা বড় হাতের দেওয়া লাগবে।

এখানে যে বক্ররেখা টা পেয়েছি আমরা, সেটা কিন্তু স্কুথ, অর্থাৎ অবিচ্ছিন। আমরা চাইলে বিচ্ছিন্ন বক্ররেখা দিয়েও এগুলো আঁকতে পারি। এরজন্য আমাদেরকে PlotStyleDashed দিতে হবে। তাহলে এটা নিরবচ্ছিন্ন বক্ররেখার বদলে ড্যাশ ড্যাশ দিয়ে দেখাবে। একেকটা ড্যাশ কতটুকু লম্বা হবে সেটা আমরা ঠিক করবো Dashing দিয়ে। আর কতটুকু মোটা হবে সেগুলা ঠিক করবো Thickness দিয়ে। আমরা এগুলা PlotStyle অপশন এর মধ্যে দিব।

অপশন এর ভেতর যেগুলো সাব-অপশন টাইপ জিনিসপাতি থাকে, যেমন এক্ষেত্রে dashing thikcness color-name সেগুলোকে Directives বলে। যেহেতু প্লটস্টাইল অপশন এ এখন একাধিক ডিরেক্টিভ আছে তাই আমরা সেগ্যলো একটা সেকেন্ড ব্রাকেট দিয়ে একসাথে করে রাখবো। অবিচ্ছিন্ন আর বিচ্ছিন্ন বক্ররেখা ছাড়াও গ্রাফগুলোকে আমরা বিন্দু বিন্দু দিয়েও দেখাতে পারি। এর জন্য dashing এর বদলে dotted দিতে হবে।

PlotStyle অনেক vast একটা জিনিস, এখানে খুব সামান্যই টাচ করা হয়েছে। ডকুমেন্টেশন দেখে নিজে নিজে আরও explore করতে আমি সাজেস্ট করবো ।

Last updated