جشنواره فطر سون لرن

ریاضیات در پایتون - چگونه با پایتون برنامه بنویسیم؟ قسمت ششم

دسته بندی: پایتون
زمان مطالعه: 9 دقیقه
۳۱ اردیبهشت ۱۳۹۹

امروزه اهمیت برنامه‌نویسی در علم ریاضیات بر کسی پوشیده نیست. استفاده روزافزون از زبان‌های برنامه‌نویسی در حل مسائل ریاضی، پیشرفت کارهای علمی و پژوهشی را سرعت بخشیده است. از جمله زبان‌های برنامه‌نویسی پرکاربرد در زمینه ریاضیات، پایتون است. در مقاله‌ی آموزش ریاضیات در پایتون از مجموعه مقالات چگونه با پایتون برنامه بنویسم، قصد داریم با نوشتن برنامه‌هایی که ما را در رسیدن به جواب مسائل ریاضی یاری می‌رسانند، گوشه‌ای کوچک از این کاربرد را به نمایش بگذاریم. و شما را با نحوه‌ی محاسبات ریاضی در پایتون آشنا کنیم، در ادامه با ما همراه باشید.

برنامه‌ی اول محاسبات ریاضی در پایتون: ریشه‌های معادله‌ی درجه دوم

در ادامه‌ی مقاله‌ی آموزش ریاضیات در پایتون برنامه‌ای می‌نویسیم که ریشه‌های معادله‌ی درجه دوم را به ازای مقادیر مختلف محاسبه کند.

همان‌گونه که می‌دانید برای حل معادله‌ی درجه دوم ax^2+bx+c=0 می‌توان از فرمول زیر استفاده کرد:

 ریاضیات در پایتون

 

 

در اینجا، ابتدا باید جذر را محاسبه کرده و پس از آن سه حالت زیر برقرار خواهد بود:

  • اگر  باشد، آن گاه معادله دارای دو جواب (ریشه)  حقیقی متمایز زیر است: ریاضیات در پایتون

 

  • اگر باشد، آنگاه معادله دارای یک جواب حقیقی مضاعف زیر است:

 

  • اگر باشد، آنگاه معادله دارای جواب حقیقی نیست.

با توجه به فرمول و رابطه‌هایی که وجود دارد، می‌توانیم الگوریتمی برای حل معادله درجه دوم بنویسیم.

الگوریتم برنامه‌ی محاسبه ریشه‌های معادله‌ی درجه دوم در پایتون:

اگر بخواهیم روش حل سوال را به صورت الگوریتم‌وار بنویسیم، این‌گونه خواهد شد:

  1. مقادیر a و b و c را از ورودی بگیر.
  2. دستورالعمل  ریاضیات در پایتون را اجرا کن.
  3. اگر مقدار d بزرگتر از صفر است به گام 4 برو، در غیر این صورت به گام 7 برو.
  4. دستورالعمل  ریاضیات در پایتون  را اجرا کن.
  5. دستورالعمل  ریاضیات در پایتون  را اجرا کن.
  6. مقادیر x1 و x2 را چاپ کن و به گام 11 برو.
  7. اگر مقدار d مساوی با صفر باشد، به گام 8 برو در غیر این صورت به گام 10 برو.
  8. دستورالعمل  ریاضیات در پایتون  را اجرا کن.
  9. مقدار x1 ، که ریشه مضاعف است (x1=x2) را چاپ کن و به گام 11 برو.
  10. پیامی به صورت "ریشه حقیقی ندارد" چاپ کن.
  11. به اجرای الگوریتم خاتمه بده.

نوشتن برنامه‌ی محاسبه ریشه‌های معادله‌ی درجه دوم در پایتون:

برای نوشتن این برنامه و گرفتن جذر، از کتابخانه‌ی math پایتون کمک می‌گیریم. لذا این کتابخانه را در ابتدای کدها وارد می‌کنیم.

Import math
…

ابتدا باید مقادیر a و b و c را از کاربر بگیریم. برای راهنمایی بیشتر کاربر، می‌توانیم قبل از دریافت مقادیر، با پیغامی توضیح دهیم هدف از گرفتن متغیرها چیست. به این صورت:

import math

print('Solve the quadratic equation ax**2 + bx + c = 0')
a = int(input('Enter a: '))
b = int(input('Enter b: '))
c = int(input('Enter c: '))

…

در ادامه طبق الگوریتم، باید گام دوم را اجرا کنیم. به این صورت:

…

d = (b**2) - (4*a*c)

…

اکنون نوبت به آن رسیده که با دستور شرطی if ، بررسی می‌کنیم اگر مقدار متغیر d بزرگتر از صفر بود، معادله ما دارای دو ریشه خواهد بود. در این قسمت برای جذر گرفتن متغیر d از متد sqrt از کتابخانه math کمک می‌گیریم. به این صورت:

…

if d>0:
   sol1 = (-b-math.sqrt(d))/(2*a)
   sol2 = (-b+math.sqrt(d))/(2*a)
   print('The solution are {0} and {1}'.format(sol1,sol2))

…

در ادامه با دستور elif بررسی می‌کنیم متغیر d اگر مساوی صفر باشد، معادله ما دارای ریشه مضاعف است و از رابطه زیر به دست می‌آید. به این صورت:

…

if d>0:
    sol1 = (-b-math.sqrt(d))/(2*a)
    sol2 = (-b+math.sqrt(d))/(2*a)
    print('The solution are {0} and {1}'.format(sol1,sol2))
elif d==0:
    sol1 = -b//(2*a)
    print('The solution is {0} '.format(sol1))

…

در پایان نیز با دستور else اگر متغیر d ما کوچکتر از صفر باشد، معادله‌ی ما جواب ندارد و ما با پیغامی این مورد را به اطلاع کاربر می‌رسانیم. به این صورت:

…

if d>0:
    sol1 = (-b-math.sqrt(d))/(2*a)
    sol2 = (-b+math.sqrt(d))/(2*a)
    print('The solution are {0} and {1}'.format(sol1,sol2))
elif d==0:
    sol1 = -b//(2*a)
    print('The solution is {0} '.format(sol1))
else:
    print('The equation has no answer')

کد ما کامل شد و با چند خط کد، توانستیم برنامه‌ای بنویسیم که معادله‌ی درجه دوم را حل کند. کد یکجای برنامه‌ی ما به این صورت است:

import math

print('Solve the quadratic equation ax**2 + bx + c = 0')
a = int(input('Enter a: '))
b = int(input('Enter b: '))
c = int(input('Enter c: '))

# calculate the discriminant
d = (b**2) - (4*a*c)

if d>0:
    sol1 = (-b-math.sqrt(d))/(2*a)
    sol2 = (-b+math.sqrt(d))/(2*a)
    print('The solution are {0} and {1}'.format(sol1,sol2))
elif d==0:
    sol1 = -b//(2*a)
    print('The solution is {0} '.format(sol1))
else:
    print('The equation has no answer')

برنامه دوم محاسبات ریاضی در پایتون: ریشه دوم اعداد

در ادامه‌ی مقاله‌ی آموزش ریاضیات در پایتون ، برنامه‌ای می‌نویسیم که چند عدد مختلف را از ورودی بخواند و ریشه‌ی دوم آنها را محاسبه کرده و با 4 رقم اعشار در خروجی چاپ کند.

در ریاضیات، به جذر یک عدد، ریشه دوم آن عدد نیز گفته می‌شود. پس برای حل این سوال باید برنامه‌ای بنویسیم که تعدادی عدد دریافت کند، سپس جذر یا ریشه‌ی دوم آن را محاسبه و در پایان چاپ کند.

روش اول: استفاده از دیکشنری پایتون

ما قصد داریم هم عدد و هم ریشه‌ی دوم عدد را در انتها چاپ کنیم، برای این کار، می‌توانیم هم از لیست‌های پایتون و هم از دیکشنری پایتون استفاده کنیم. ابتدا برنامه را با استفاده از دیکشنری پایتون می‌نویسیم و در ادامه روش استفاده از لیست‌ها را توضیح می‌دهیم.

نوشتن برنامه‌ی محاسبه ریشه دوم اعداد در پایتون:

همانند برنامه‌ی قبلی، ما برای جذر گرفتن می‌توانیم از متد sqrt() کتابخانه math کمک بگیریم ولی این بار از یک تکنیک برای جذر گرفتن استفاده می‌کنیم. پس لزومی به وارد کرد کتابخانه نداریم.

ابتدا یک دیکشنری خالی تعریف کرده و نامی برای آن تعیین می‌کنیم. به این صورت:

root_dict = dict()

...

برای ورودی گرفتن چندین عدد از کاربر و خاتمه دادن به آن، وقتی که عدد 1- وارد شود، می‌توانیم از یک حلقه‌ی تکرار while استفاده کنیم. روش انجام این کار به این صورت است که ابتدا یک عدد از کاربر دریافت می‌کنیم و در حلقه‌ی تکرار تا وقتی عدد 1- نباشد، یک عدد دیگر دریافت می‌کنیم. به این شکل:

number = int(input('Enter a Number: '))

while number != -1:
    number = int(input('Enter a Number: '))

برای آن که کدهای ما کمتر و تمیزتر باشد، در همان حلقه‌ی تکرار، عملیات محاسبه ریشه‌ی دوم و ذخیره آنها در دیکشنری را به انجام می‌رسانیم. به این صورت:

...

while number != -1:
    root = number ** 0.5
    root_dict[number] = root
    number = int(input('Enter a Number: '))

...

همان‌گونه که ملاحضه می‌کنید، ما برای گرفتن جذر، عدد را به توان 0.5 می‌رسانیم. به این طریق بدون نیاز به کتابخانه‌ی خاصی موفق به محاسبه ریشه‌ی دوم عدد می‌شویم. در ادامه نیز، هم عدد را و هم ریشه‌ی دوم عدد را در دیکشنری، اضافه می‌کنیم.

حال که ریشه‌ی دوم اعداد را به دست آوردیم، وقت آن است که آنها را چاپ کنیم. برای چاپ مقادیر دیکشنری از یک حلقه‌ی تکرار for استفاده می‌کنیم. به این صورت:

...

for item in root_dict.keys():
    print('The square root of %d is %0.4f'%(item, root_dict[item]))

...

برای آشنایی بیشتر با عملگر %، مقاله‌ی قالب‌بندی خروجی در پایتون را مطالعه کنید.

اکنون نوشتن برنامه‌ی ما به پایان رسید. کد یکجای برنامه را در زیر ببینید:

root_dict = dict()
number = int(input('Enter a Number: '))

while number != -1:
    root = number ** 0.5
    root_dict[number] = root
    number = int(input('Enter a Number: '))

for item in root_dict.keys():
    print('The square root of %d is %0.4f'%(item, root_dict[item]))

روش دوم: استفاده از لیست‌های پایتون برای محاسبه ریشه دوم اعداد در پایتون

در این روش به جای استفاده از دیکشنری، از دو لیست مجزا برای ذخیره اطلاعات استفاده می‌کنیم و در انتها آنها را در خروجی چاپ می‌کنیم.

ابتدا دو لیست با نام‌های مختلف و مرتبط به اعداد و ریشه‌ی دوم اعداد تعریف می‌کنیم. ما از این نام‌ها استفاده کردیم:

root_list = list()
number_list = list()

...

در ادامه، همانند روش اول از یک حلقه‌ی تکرار while برای گرفتن ورودی از کاربر استفاده می‌کنیم. به این صورت:

...

number = int(input('Enter a Number: '))

while number != -1:
    number = int(input('Enter a Number: '))

...

در اینجا نیز ما عملیات خود را در همین حلقه‌ی while انجام می‌دهیم تا از حجم کد ما کاسته شود. پس در حلقه، ابتدا ریشه‌ی دوم عدد دریافتی را محاسبه و در لیستی که به این منظور تعریف کردیم اضافه می‌کنیم، سپس خود عدد را در لیست دیگر اضافه می‌کنیم. به این صورت:

...

while number != -1:
    root = number ** 0.5
    root_list.append(root)
    number_list.append(number)
    number = int(input('Enter a Number: '))

...

بعد از پایان حلقه، باید مقادیری که به دست آوردیم را در خروجی چاپ کنیم. ما از یک حلقه‌ی تکرار  for که از صفر تا طول یکی از لیست‌ها را پیمایش می‌کند، استفاده می‌کنیم و در ادامه مقادیر را چاپ می‌کنیم. به این صورت:

...

for i in range(len(root_list)):
    print('The square root of %d is %0.4f'%(number_list[i], root_list[i]))

...

کد یکجای برنامه را در زیر ببینید:

root_list = list()
number_list = list()
number = int(input('Enter a Number: '))

while number != -1:
    root = number ** 0.5
    root_list.append(root)
    number_list.append(number)
    number = int(input('Enter a Number: '))

for i in range(len(root_list)):
    print('The square root of %d is %0.4f'%(number_list[i], root_list[i]))

 برنامه‌ی ما با روش لیست‌ها هم نوشته شد. در برنامه‌نویسی می‌تواند روش‌های مختلفی برای کدنویسی وجود داشته باشد و این سلیقه‌ی برنامه‌نویس است که از چه روشی استفاده کند و هیچ محدودیتی در این کار وجود ندارد.

جمع بندی:

دیدید که چگونه با چند خط کد، توانستیم برنامه‌هایی بنویسیم که در ثانیه‌ای مسائلی از ریاضیات در پایتون را حل کند که به صورت دستی هم وقت بیشتری نیاز دارد و هم درصد اشتباه در آن زیاد است. به هرحال علم رایانه و به خصوص برنامه‌نویسی، کمک شایانی به رشته‌های علمی از جمله ریاضیات می‌کند. یادگیری زبان برنامه‌نویسی پایتون، در هر زمینه‌ای می‌تواند کاربرد داشته باشد.پس با کمی تلاش و پشتکار، شما نیز می‌توانید یکی از برنامه‌نویسان پایتون باشید.

اگر به یادگیری بیشتر در زمینه‌ی برنامه نویسی پایتون علاقه داری، یادگیری زبان پایتون بسیار ساده است. و با شرکت در دوره‌ی متخصص پایتون توسعه وب در آینده می‌تونی اپلیکیشن موبایل و دسکتاپ بسازی و وارد حوزه‌ی هوش مصنوعی هم شوی.

 

چه امتیازی به این مقاله می دید؟
نویسنده عبدالرضا مولایی
هیچوقت برای یادگیری دیر نیست؛ همیشه چیزهای جدید برای آموختن وجود دارد.. این دو جمله، همیشه آویزه‌ی گوش منه، چون باعث میشه از یادگیری چیزهای تازه هراسی نداشته باشم.

نظرات کاربران

علی

خوب بود

ارسال دیدگاه
خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :