scientific calculator on wooden surface

পাইথনে ডেটা টাইপ ও ম্যাথ

প্রোগ্রাম কি? – কম্পিউটারকে দেয়া কিছু নির্দেশনা

কম্পিউটার নির্দেশনা দিয়ে কি করবে? – কাজ করবে, সমস্যা সমধান করবে

কম্পিউটার কি নিয়ে কাজ করবে? – ডেটা(Data) নিয়ে

প্রোগ্রামিঙের একটি মৌলিক ভিত্তি হলো ডেটা। ডেটা নিয়ে আমাদেরকে বিভিন্ন কাজ করতে হবে। তাই বিভিন্ন ডেটা টাইপ নিয়ে আমাদের জানতে হবে। নিচের অনুচ্ছেদটি লক্ষ্য করুন:

রুমী সকাল দশটা দশে পাই এর মান যে ৩.১৪ তা আবিষ্কার করলো ২২ কে ৭ দিয়ে ভাগ করার পর।

এখানে দুই ধরণের ডেটা আছে। সাধারণ অক্ষরযুক্ত আর গাণিতিক।

গাণিতিক ডেটাকেও আবার আমরা দুই ভাগে ভাগ করতে পারি। পূর্ণ সংখ্যা আর দশমিক সংখ্যা।

পাইথনে, সাধারণ অক্ষরযুক্ত ডাটা হলো string। পূর্ণ সংখ্যাকে বলে integer। আর দশমিক সংখ্যাকে বলে float।

তাহলে আমরা রুমীর আবিষ্কারকে বিশ্লেষণ করতে পারি। এখানে,

string রুমী, সকাল, দশটা, দশ, পাই …. ইত্যাদি

integer ২২, ৭

float ৩.১৪১৫৯

এখন আমরা পাইথনের একটা কমান্ড শিখবো। তা হলো type()। এর মাধ্যমে কোন ডাটা কোন টাইপের তা বোঝা যায়।

যেমন পাইথন শেলে যদি আমরা কাজ করি:

>>> type(‘123547’)
<type ‘integer’>

>>> type(‘1235.458’)
<type ‘float’>

>>> type(‘python’)
<type ‘string’>

>>> type(‘python’)
<type ‘string’>

গণিতবিদ পাইথন

আমরা এখন পাইথনকে একটা ক্যালকুলেটর হিসেবে ব্যবহার করতে পারবো। আজকেও আমরা শেল ইন্টারপ্রেটর দিযে কাজ করবো। গাণিতিক হিসাব-নিকাশের জন্য পাইথন খারাপ না। চলুন তাহলে দেখি:

>>> 3+8
11

>>> 5*5
25

>>> 35/7
5

উপরের কোড গুলোতে যথাক্রমে যোগ, গুণ আর ভাগ করা হয়েছে। আসুন, আমরা একটু বিস্তারিত হিসাব করি:

>>> 8/2
4

স্বাভাবিক। ৮ কে ২ দিয়ে ভাগ করলে তো ৪-ই হবে। কিন্তু, একি — !

>>> 9/2
4

৯ কে দুই দিয়ে ভাগ করলে ৪.৫ হওয়ার কথা। তাহলে কি পাইথন অঙ্কে কাঁচা? – না। তা নয়। পূর্বের পোস্টের কথা খেয়াল করুন। গাণিতিক ডাটা কয়েক ধরনের হতে পারে। পূর্ণ সংখ্যা বা Integer, দশমিক বা Float ইত্যাদি। আরো আছে জটিল সংখ্যা বা Complex।  যখন পাইথনকে নির্দেশ দেয়া হচ্ছে তুমি ৯ কে ২ দিয়ে ভাগ করো, তখন সে ডাটা টাইপ Integer ধরে কাজ করছে। আমরা দশমিক পেতে চাইলে তাকে বোঝাতে হবে যে ডাটা টাইপ হলো Float। এক্ষেত্রে পদ্ধতি নিচে দেখুন:

>>> 9.0/2.0
4.5

পাইথন ঠিকই দশমিক দেখাচ্ছে। অর্থাৎ আমরা কমান্ড ইনপুটে দশমিক(.) চিহ্ন দেয়ার সাথে সাথেই পাইথন বুঝে ফেলছে যে ডাটা টাইপ হলো Float.

এই কাজ গুলো যদি আমরা ভেরিয়েবল বা চলক ব্যবহার করে করতে চাই, তাহলে কি রকম হতে পারে?

>>> a=25
>>> b=6.25
>>> a/b
4.0

>>> a/b+6
10.0

এখানে, a, b হলো ভ্যারিয়েবল। আর সংশ্লিষ্ট সংখ্যাগুলো হলো এদের মান।  পরবর্তীতে ভ্যারিয়েবল নিয়ে অনেকগুলো কাজ আমরা দেখবো।

অনুশীলন

একটি প্রোগ্রাম তৈরি করুন যা নিচের সমস্যাটির সমাধান করবে।

কোন নৌকার বেগ ঘন্টায় 5 কিলোমিটার। নদীতে স্রোতের বেগ ঘন্টায় 2 কিলোমিটার। নদীর স্রোত আর নৌকার চলন একই দিকে। তাহলে যাত্রা আরম্ভের দুই ঘন্টা পর নৌকাটি কত দূরত্ব অতিক্রম করবে?

সাধারণ ঐকিক নিয়মের অংক।

পাইথনে আরো গণিত

কোন কিছু বর্গ করা মানে দুইবার তাকে গুণ করা।  ঘন বা কিউবও করা যায়। কোন সংখ্যাকে উদ্দীষ্ট কোন ঘাতে উন্নীত করা যায়। পাইথনে সাধারণ কমান্ড হলো A**B। A হলো সংখ্যাটি আর B হলো ঘাত।

>>> 4**3
64

আরো একটা গাণিতিক বিষয়  লাগতে পারে। তা হলো ভাগশেষ। ভাগশেষ বের করার সাধারণ সংকেত হলো %। যেমন:

>>>25%3
1

>>>12%7
5

গণিতে পরমমান বা অ্যাবসুলেট ভ্যালু বলে একটা জিনিস প্রায়ই ব্যবহৃত হয়ে থাকে। এক্ষেত্রে কমান্ড হলো abs()। অর্থাৎ-

>>>abs(35)
35

>>>abs(-35)
35

** দিয়ে  তো কেবল বর্গ আমরা বের করলাম। এখন যদি কোন সংখ্যার ঘাত আমরা ৩ অথবা ৩০ এ উন্নীত করতে চাই? সেজন্য আছে pow(x,y)। অর্থাৎ 3^4 এর জন্য কমান্ড লিখবো

>>> pow(3,4)
81

একরাশ সংখ্যার মধ্যে সর্বোচ্চ আর সর্বনিম্ন বের করতে চান? এজন্য max() আর min()। মানে

>>> max(3215,65467,4875)
65467

>>> min(3215,9875,6568)
3215

>>> max(‘a’,’x’,’jk’)
‘x’

>>> min(‘S’,’A’,’a’)
‘A’

তার মানে ম্যাক্স আর মিন এই দুইটি কমান্ড শুধু সংখ্যা না, স্ট্রিং এর ক্ষেত্রেও প্রযোজ্য।

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

পাইথনে গণিত বিষয়ক তৃতীয় পোস্ট

কিন্তু, মডিউল জিনিসটা আবার কি? সাধারণভাবে মডিউল হলো আলাদা আলাদা প্রোগ্রাম। এ প্রোগ্রামগুলোকে আমরা অন্য কোন প্রোগ্রামে ব্যবহার করতে পারবো। বিভিন্ন মডিউল যোগ করে বিভিন্ন অ্যাপ্লিকেশন বানানো হয়।আমরা ম্যাথ মডিউল ব্যবহার করে গাণিতিক কাজের ক্ষেত্রে আমাদের স্বাধীনতা বাড়াতে পারবো। এজন্য-

>>>import math

এই ম্যাথ মডিউলের বিভিন্ন ফাংশন (ফাংশন? ইহা আবার কিহা?) ব্যবহার করবো। ম্যাথ মডিউলের বিভিন্ন কারিশমা আমরা পরের পোস্টে দেখবো।

আমরা math মডিউল ইম্পোর্ট করেছিলাম। আজকে এই মডিউলের কয়েকটি বিশেষ বিশেষ ফাংশন আমরা দেখবো।

>>> import math
>>> math.cos( 45 * math.pi/180 )
0.70710678118654757

>>> math.cos( 60 * math.pi/180 )
0.50000000000000011

এখানে কি হলো? math মডিউলের cos ফাংশন আমরা ব্যবহার করেছি। এজন্য math.cos() কমান্ড। আর ব্রাকেট এর ভেতরে যা যা আছে তা হলো এক্সপ্রেশন, যার মানের উপর কম্পিউটার কাজ করবে। ত্রিকোণমিতি যারা করেছেন, তারা জানেন যে উপরের গণিতটি কোসাইন বের করা। এই ফাংশন সাধারণত রেডিয়ানে করে পাইথন। রেডিয়ান থেকে ডিগ্রিতে কনভার্ট করার জন্য 45 ডিগ্রীকে (পাই/180) দিয়ে গুণ করতে হয়েছে। খেয়াল করুন,

>>> pi
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
NameError: name ‘pi’ is not defined

>>> math.pi
3.1415926535897931

গাণিতিক পাই, যার মান আসলে 3.14159…. , তাকে বোঝাতে হলে ব্যবহার করতে হবে math.pi কমান্ড। বোঝা যাচ্ছে, math মডিউলের মাহাত্ম্য?

আরো দেখুন ম্যাথ মডিউলের অন্যান্য ফাংশনের কাজ।

asin(x)
Returns the arc sine of x.

atan(x)
Returns the arc tangent of x.

atan2(y, x)
Returns the arc tangent of y / x. arctan y/x

cos(x)
Returns the cosine of x radians.

sin(x)
Returns the sine of x radians.

tan(x)
Returns the tangent of x radians.

অন্যান্য ফাংশন,

>>> math.sqrt( 1 - math.sin(39*math.pi/180)**2 )
0.77714596145697101

এটি বর্গমূলের ফাংশন।

>>> math.exp( math.log(10.0) / 2 )
3.1622776601683795

এটি এক্সপোনেনশিয়াল ফাংশন

আরো অন্যান্য ফাংশন,

exp(x)
Returns ‘math.e**x’ (ex ) inverse of log().
hypo(x)

Returns the Euclidean distance, ‘sqrt( x*x + y*y )’ ( x2 + y 2 ), length of the hypotenuse of a right
triangle with height of y and length of x.
log(x)
Returns the natural logarithm (base e) of x, inverse of exp().
log10(x)
Returns the logarithm (base 10) of x, inverse of 10x .
pow(x)
Returns x code(**) y.
sqrt(x)
Returns the square root of x. This version returns an error if you ask for ‘sqrt(-1)’, even though
Python understands complex and imaginary numbers.

কোডিং করার সময় হঠাৎ ম্যাথের ফাংশনগুলো ভুলে গেলে কি করবেন? কমান্ড দিন

>>>help(‘math’)

চলে আসবে ম্যাথ মডিউলে যুক্ত যাবতীয় ফাংশনের বর্ণনা। এখানে লক্ষ্য করার মতো দুইটি বিষয় আছে। প্রথমত, help() কমান্ড ব্যবহার করে পাইথনের যে কোন বিষয়ে সাহায্য পাওয়া যাবে। দ্বিতীযত, help(math) আর help(‘math’) দুইধরনের ফলাফল বয়ে আনবে। মডিউলের ক্ষেত্রে দ্বিতীয়টি প্রযোজ্য। আর পাইথনে যেসব কমান্ড সাধারণভাবেই আসে, তাদের ক্ষেত্রে প্রথম পদ্ধতিতে সাহায্য চাওয়া যায়।

ম্যাথ নিয়ে কাজকারবার আপাতত এখানে শেষ। উল্লেখ্য, উদাহরণগুলো প্রোগ্রামিং ফর নন প্রোগ্রামার বইটি থেকে নিয়েছি। কপি পেস্ট করতে সুবিধা বলে।

আচ্ছা, তাহলে গণিত বিষয়ে পাইথনের প্রাথমিক কথাবার্তার একটা শেষ আমরা আজকে টানতে পারি। কি বলেন?


“বায়োইনফরমেটিক্স প্রজেক্টে কিভাবে ভাবতে হয়” এটা নিয়ে আমি একটা ছোট ই-বুক তৈরি করেছি। ই-বুকটি পেতে চাইলে নিচের ফর্মে আপনার নাম ও ইমেইল ঠিকানা দিন। আমি ই-বুকটি আপনাকে পাঠিয়ে দেবো।

ধন্যবাদ!


Comments

Leave a Reply

Join as a subscriber

Only the posts on data visualization, bioinformatics how to tutorials, web-development, and general comments on research and science will be sent.

Join 73 other subscribers