বীজগণিত · গণিতের ডায়েরি · মার্চ ২০২০
ফাংশনFunctions, Relations & their Graphs
ফাংশন হলো দুই সেটের মধ্যে এমন একটি সম্পর্ক, যেখানে প্রতিটি ইনপুটের জন্য ঠিক একটি আউটপুট থাকে। অর্থাৎ একই ইনপুট থেকে একাধিক আউটপুট বের হতে পারে না।
গণিতের ভাষায় আমরা লিখি:
\[ f : A \to B \]এখানে \(A\) হলো ইনপুটের সেট, আর \(B\) হলো আউটপুট যাওয়ার সম্ভাব্য সেট। \(A\) সেটের প্রতিটি element ফাংশনের মাধ্যমে \(B\) সেটের কোনো একটি element-এর সাথে যুক্ত হয়।
A function is a relation between two sets, where each input has exactly one output.
সহজভাবে লিখলে,
\[ y = f(x) \]এখানে \(x\) হলো input, \(f\) হলো নিয়ম (function), আর \(y\) হলো output। অর্থাৎ \(x\)-এর উপর \(f\) নিয়মটি প্রয়োগ করলে যে মান পাওয়া যায়, সেটাই \(y\)।
যেমন,
\[ f(x) = 2x + 3 \]তাহলে,
\[ f(1) = 2(1) + 3 = 5 \] \[ f(2) = 2(2) + 3 = 7 \]মানে ১ ইনপুট দিলে আউটপুট ৫, আর ২ ইনপুট দিলে আউটপুট ৭।
তাহলে ফাংশনের মূল কথা হলো:
প্রতিটি input-এর জন্য output থাকবে ঠিক একটি।
একই নিয়মে একই ইনপুট দিলে সবসময় একই আউটপুট। নিয়ম বদলে দেখো, আউটপুট বদলাবে; কিন্তু এক নিয়মে এক ইনপুটের উত্তর কখনো দুটো হয় না।
এই “এক ইনপুট → এক আউটপুট” কথাটাই ফাংশনের মেরুদণ্ড।
ফাংশনের তিনটা শব্দ খুব গুরুত্বপূর্ণ: domain, codomain, আর range। প্রথমে এরা কাছাকাছি মনে হয়, কিন্তু আসলে তিনজনের কাজ আলাদা।
\[ f : A \to B \]এখানে \(A\) সেটকে বলা হয় domain। অর্থাৎ যে সব জিনিস আমরা ফাংশনের ভেতরে ঢোকাতে পারি, তাদের পুরো দলটাই domain।
\(B\) সেটকে বলা হয় codomain। অর্থাৎ আউটপুটগুলো যে সেটের ভেতরে থাকার কথা, সেই বড় ঘরটাই codomain।
কিন্তু ফাংশন চালানোর পর আসলে যে মানগুলো পাওয়া যায়, শুধু সেই মানগুলোর দলকে বলা হয় range।
একটা উদাহরণ দেখি।
এখানে ৮ codomain-এর ভেতরে আছে, কিন্তু কোনো input থেকে ৮ বের হয়নি। তাই ৮ codomain-এর সদস্য, কিন্তু range-এর সদস্য নয়।
সহজভাবে বললে, codomain হলো সম্ভাব্য ঠিকানা, আর range হলো সত্যি সত্যি যেখানে তীর গিয়ে লেগেছে।
Codomain বড় ঘর, range হলো সত্যি সত্যি পাওয়া output। ৮-এ কোনো তীর আসেনি, তাই সে codomain-এ আছে কিন্তু range-এ নেই।
ফাংশন বোঝার আগে relation বুঝে নেওয়া ভালো। Relation মানে দুই সেটের মধ্যে যেকোনো ধরনের সম্পর্ক। এক সেটের কোনো element অন্য সেটের কোনো element-এর সাথে জোড়া বাঁধতে পারে।
\[ A = \{1, 2, 3\} \qquad B = \{a, b, c\} \]তাহলে \(A\) থেকে \(B\)-তে একটি relation হতে পারে:
\[ R = \{(1, a),\ (2, b),\ (3, c)\} \]এখানে প্রতিটি ordered pair বলছে, \(A\)-এর কোন element \(B\)-এর কোন element-এর সাথে সম্পর্কিত।
আরেকটা relation হতে পারে:
\[ R = \{(1, a),\ (1, b),\ (2, c)\} \]এটাও relation। কারণ relation-এর ক্ষেত্রে একই input একাধিক output-এর সাথে জুড়তে পারে। Relation খুব স্বাধীন। সে শুধু সম্পর্ক বানায়, strict নিয়ম মানতে হয় না।
1 থেকে দুই দিকে arrow বের হয়েছে: a এবং b। Relation-এ এটা চলে, function-এ চলে না।
এবার আসল পার্থক্যটা আসে। সব function-ই relation, কিন্তু সব relation function নয়।
Function হলো relation-এর এমন এক বিশেষ রূপ, যেখানে domain-এর প্রতিটি element থেকে ঠিক একটি করে arrow বের হবে। একটিও বাদ পড়বে না, আবার একই input থেকে দুই দিকে arrow-ও যাবে না।
\[ A = \{1, 2, 3\} \qquad B = \{a, b, c\} \] \[ f = \{(1, a),\ (2, b),\ (3, c)\} \]এটা function। কারণ 1, 2, 3—প্রতিটি input-এর ঠিক একটি করে output আছে।
\[ R = \{(1, a),\ (1, b),\ (2, c)\} \]এটা relation, কিন্তু function নয়। কারণ 1 input থেকে দুইটা output বের হয়েছে: \(a\) এবং \(b\)। একই input দুই জায়গায় গেলে function ভেঙে যায়।
Function একটু নিয়মানুবর্তী। সে প্রতিটি input-কে ঠিক একবারই পাঠায়। কোথায় পাঠাবে সেটা ভিন্ন হতে পারে, কিন্তু এক input থেকে দুই output সে মেনে নেয় না।
মাঝেরটা function নয়, কারণ 1 থেকে দুই দিকে arrow। ডানেরটা কিন্তু function; দুইজন একই output-এ গেলে সমস্যা নেই, সমস্যা এক input-এর দুই output-এ।
Set-এর ভাষায় function আরও সুন্দরভাবে লেখা যায়।
তাহলে \(f\) হলো \(A\) থেকে \(B\)-তে একটি function।
এখানে ordered pair-এর প্রথম অংশ input, দ্বিতীয় অংশ output।
Set notation-এর সৌন্দর্য হলো, পুরো function-টাকে এক লাইনে দেখা যায়। কে কোথায় গেল, কোন input কোন output দিল—সব ordered pair-এর ভেতরেই লেখা থাকে।
One-to-one function-কে injective function-ও বলা হয়। এর মূল কথা হলো: আলাদা input হলে output-ও আলাদা হবে।
অর্থাৎ দুইজন input একই output-এ গিয়ে পড়তে পারবে না।
\[ A = \{1, 2, 3\} \qquad B = \{a, b, c, d\} \] \[ f = \{(1, a),\ (2, b),\ (3, c)\} \]এটা one-to-one function। কারণ 1, 2, 3—তিনটি input তিনটি আলাদা output-এ গেছে।
\[ g = \{(1, a),\ (2, a),\ (3, b)\} \]এটা function হলেও one-to-one নয়। কারণ 1 এবং 2—দুইটি আলাদা input একই output \(a\)-তে গেছে।
সহজভাবে বললে, one-to-one function-এ কোনো output-এর কাছে ভিড় জমে না। প্রতিটি output বড়জোর একজন input-এর কাছ থেকেই arrow পায়।
Output repeat হয়নি, তাই one-to-one; কিন্তু codomain পুরো covered নয়।
Onto function-কে surjective function-ও বলা হয়। এর মূল কথা হলো: codomain-এর কোনো element একা পড়ে থাকবে না।
অর্থাৎ codomain-এর প্রতিটি element-এ অন্তত একটি করে arrow পৌঁছাতে হবে।
\[ A = \{1, 2, 3, 4\} \qquad B = \{a, b, c\} \] \[ f = \{(1, a),\ (2, b),\ (3, c),\ (4, c)\} \]এটা onto function। কারণ \(B\) সেটের a, b, c—প্রতিটা element-এ অন্তত একটি arrow এসেছে।
এখানে \(c\)-তে দুইটা arrow এসেছে, তাতে সমস্যা নেই। Onto হওয়ার জন্য দরকার সবাই যেন covered হয়।
\[ g = \{(1, a),\ (2, b),\ (3, b)\} \]যদি codomain হয় \(B = \{a, b, c\}\), তাহলে \(g\) onto নয়। কারণ \(c\)-তে কোনো arrow যায়নি।
Onto function-এর ভাবটা এমন: codomain-এর কোনো ঘর খালি থাকবে না। Range আর codomain এক হয়ে যাবে।
Codomain পুরো covered, তাই onto; কিন্তু c-তে দুই arrow এসেছে, তাই one-to-one নয়।
যে function একই সাথে one-to-one এবং onto, তাকে বলে bijective function।
মানে, আলাদা input আলাদা output-এ যাবে, আবার codomain-এর কোনো element খালি পড়েও থাকবে না।
\[ A = \{1, 2, 3\} \qquad B = \{a, b, c\} \] \[ f = \{(1, a),\ (2, b),\ (3, c)\} \]এটা bijective function।
প্রথমত, কোনো দুই input একই output-এ যায়নি। তাই এটি one-to-one।
দ্বিতীয়ত, codomain-এর a, b, c—সবগুলোতেই arrow পৌঁছেছে। তাই এটি onto।
Bijective function দেখতে সবচেয়ে পরিপাটি। এক পাশে যত input, অন্য পাশে তত output, আর প্রত্যেকের সাথে প্রত্যেকের এক-একটা পরিষ্কার জোড়া। যেন দুই সেটের মধ্যে নিখুঁত হাত মেলানো।
একদিকে repeat নেই, অন্যদিকে কেউ বাদও নেই।
সব function one-to-one বা onto হবে এমন নয়। কিছু function আছে যেখানে আলাদা input একই output-এ গিয়ে পড়ে। এদের বলে many-to-one function।
\[ f = \{(1, a),\ (2, a),\ (3, b)\} \]এটা function, কারণ প্রতিটি input-এর ঠিক একটি output আছে। কিন্তু one-to-one নয়, কারণ 1 এবং 2 একই output \(a\)-তে গেছে।
আবার যদি codomain-এর কিছু element untouched থেকে যায়, তাহলে function-টা onto নয়। তখন তাকে into function বলা যায়।
\[ A = \{1, 2, 3\} \qquad B = \{a, b, c, d\} \] \[ f = \{(1, a),\ (2, b),\ (3, c)\} \]এখানে \(d\)-তে কোনো arrow যায়নি। তাই function-টা into, onto নয়।
আরেকটি চেনা function হলো identity function। এখানে input নিজেকেই output হিসেবে পায়।
\[ f(x) = x \]মানে 1 গেলে 1, 2 গেলে 2, 3 গেলে 3। যেন আয়নায় নিজের মুখ দেখা।
আর constant function-এ সব input একই output দেয়।
\[ f(x) = 5 \]এখানে \(x\) যাই হোক, output সবসময় 5। সবাই আলাদা দরজা দিয়ে ঢোকে, কিন্তু শেষে একই ঘরে এসে দাঁড়ায়।
চার রকম চেনা মুখ: ভিড় জমানো many-to-one, ঘর খালি রাখা into, আয়নার মতো identity, আর সবাইকে এক ঘরে পাঠানো constant।
এবার সেট থেকে গ্রাফে আসি। Function-এর প্রতিটি input-output জোড়াকে আমরা ordered pair হিসেবে লিখতে পারি।
\[ f(x) = 2x + 1 \] \[ f(0) = 1 \;\to\; (0, 1) \qquad f(1) = 3 \;\to\; (1, 3) \qquad f(2) = 5 \;\to\; (2, 5) \]এই ordered pair-গুলো coordinate plane-এ বসালে যে ছবি তৈরি হয়, সেটাই function-এর graph।
Graph আসলে function-এর চলার পথ। Equation আমাদের নিয়ম বলে, table আমাদের কয়েকটা মান দেখায়, আর graph আমাদের পুরো চেহারাটা দেখায়।
Ordered pair জমতে জমতেই graph তৈরি হয়।
Graph থেকে domain আর range পড়ার একটা সুন্দর উপায় আছে।
Domain দেখতে হলে x-axis বরাবর ভাবতে হয়। Graphটি বাম থেকে ডানে কোন কোন x-value ব্যবহার করেছে, সেটাই domain।
Range দেখতে হলে y-axis বরাবর ভাবতে হয়। Graphটি নিচ থেকে ওপর পর্যন্ত কোন কোন y-value ছুঁয়েছে, সেটাই range।
যেমন, \(f(x) = x^2\)। এর graph হলো ওপরের দিকে খোলা parabola।
এই graph বাম দিকেও অসীম যায়, ডান দিকেও অসীম যায়। তাই domain হলো সব real number।
\[ \text{Domain} = \mathbb{R} \]কিন্তু \(y\) কখনো 0-এর নিচে নামে না। তাই range হলো:
\[ \text{Range} = [0, \infty) \]অর্থাৎ graph আমাদের শুধু ছবি দেখায় না; কোথায় input চলতে পারে আর output কোথায় আটকে থাকে, সেটাও চোখের সামনে খুলে দেয়।
x-axis বরাবর graph সব জায়গায় পৌঁছায়, তাই Domain = ℝ। y-axis বরাবর 0-এর নিচে কিছু নেই, তাই Range = [0, ∞)।
Graph দেখে function চিনতে সবচেয়ে সহজ পরীক্ষা হলো vertical line test।
Graph-এর ওপর দিয়ে একটি খাড়া রেখা কল্পনা করো। যদি কোনো জায়গায় সেই খাড়া রেখা graph-কে একবারের বেশি কাটে, তাহলে সেটি function নয়।
কারণ একই x-value-এর জন্য তখন একাধিক y-value পাওয়া যাচ্ছে।
একটি circle ধরা যাক। কোনো একটি x-value-তে vertical line দিলে circle-কে ওপরেও কাটে, নিচেও কাটে। অর্থাৎ একই x-এর জন্য দুইটি y। তাই পুরো circle y as a function of x নয়।
কিন্তু \(y = x^2\) graph-এ vertical line যেখানেই দাও, একবারই কাটবে। তাই এটি function।
Function হওয়ার শর্তটা এখানেও একই: এক input, এক output।
এক vertical line একবারের বেশি কাটলে function নয়। স্লাইডার টেনে circle বা পাশের parabola-য় এমন জায়গা খুঁজে দেখো।
Function কিনা বোঝার জন্য vertical line test লাগে। কিন্তু function one-to-one কিনা বোঝার জন্য লাগে horizontal line test।
এবার খাড়া রেখা নয়, আড়াআড়ি রেখা টানা হয়।
যদি কোনো horizontal line graph-কে একবারের বেশি কাটে, তাহলে function-টা one-to-one নয়। কারণ একই output দুইটি আলাদা input থেকে এসেছে।
যেমন, \(f(x) = x^2\)। এটা function, কারণ vertical line test পাস করে। কিন্তু one-to-one নয়, কারণ \(y = 4\) হলে \(x = 2\) এবং \(x = -2\)—দুই input থেকেই একই output আসে।
অন্যদিকে, \(f(x) = x\)। এটা one-to-one। প্রতিটি input আলাদা output দেয়, আর horizontal line graph-কে একবারের বেশি কাটে না।
বামে horizontal line দুই জায়গায় কাটছে: একই output, দুই input। ডানে যেখানেই টানো, কাটবে একবারই।
Graph দেখে onto বোঝার সময় একটু সাবধানে থাকতে হয়। কারণ onto হওয়া শুধু graph-এর উপর নয়, codomain-এর উপরও নির্ভর করে।
ধরা যাক, \(f(x) = x^2\)। এর range হলো \([0, \infty)\)।
এখন যদি codomain হয় \(\mathbb{R}\), তাহলে function-টা onto নয়। কারণ negative real number-গুলো codomain-এ আছে, কিন্তু কোনো \(x\) বসিয়ে negative output পাওয়া যায় না।
কিন্তু যদি codomain ধরা হয় \([0, \infty)\), তাহলে একই function onto হয়ে যায়। কারণ এবার codomain-এর প্রতিটি মানই কোনো না কোনো input থেকে পাওয়া সম্ভব।
তাই onto বলার আগে সবসময় প্রশ্ন করতে হবে: function কোথা থেকে কোথায় যাচ্ছে?
\[ f : A \to B \]এখানে \(B\) কী, সেটা না জানলে onto নিয়ে final কথা বলা যায় না।
Graph একই, কিন্তু codomain বদলালে রায় বদলে যায়। ছায়া দেওয়া অংশে কোনো output নামে না।
শেষ পর্যন্ত function আসলে একটি disciplined relation। Relation অনেক স্বাধীন—এক input চাইলে একাধিক output-এ যেতে পারে। কিন্তু function সেখানে নিয়ম আনে: প্রতিটি input-এর ঠিক একটি output থাকবে।
Domain বলে কোথা থেকে যাত্রা শুরু, codomain বলে কোথায় যাওয়ার অনুমতি আছে, আর range বলে সত্যি সত্যি কোথায় পৌঁছানো হলো।
তারপর function-এর ভেতরেও চরিত্র বদলায়। কেউ one-to-one, যেখানে আলাদা input আলাদা output পায়। কেউ onto, যেখানে codomain-এর কোনো element একা পড়ে থাকে না। কেউ bijective, যেখানে দুই দিকেই নিখুঁত মিল। আর graph এলে এই পুরো গল্প চোখের সামনে ছবি হয়ে দাঁড়ায়।
তাই function শুধু equation নয়। এটা input, output, set, arrow, ordered pair আর graph—সব মিলিয়ে এক ধরনের ভাষা, যেখানে সম্পর্ককে নিয়মের ভেতর সাজিয়ে দেখা যায়।
- ফাংশন, ডোমেইন ও রেঞ্জের সংজ্ঞা, vertical line test, এবং জোড়-বিজোড় ফাংশনের শর্ত যাচাই করা হয়েছে স্ট্যান্ডার্ড বীজগণিতের সংজ্ঞা দিয়ে (Khan Academy, OpenStax Algebra)।
- সব worked example (পিসওয়াইজ, কম্পোজিট, evaluating, even/odd) আলাদা করে আবার কষে মিলিয়ে দেখা হয়েছে। সবগুলোর উত্তর ডায়েরির সাথে মিলেছে।