برنامه دوم محاسبات ریاضی در پایتون: ریشه دوم اعداد
جمع بندی
امروزه اهمیت برنامه نویسی در علم ریاضیات بر کسی پوشیده نیست. استفاده روزافزون از زبانهای برنامه نویسی در حل مسائل ریاضی، پیشرفت کارهای علمی و پژوهشی را سرعت بخشیده است. از جمله زبانهای برنامه نویسی پرکاربرد در زمینه ریاضیات، پایتون است. در مقاله ی آموزش ریاضیات در پایتون از مجموعه مقالات چگونه با پایتون برنامه بنویسم، قصد داریم با نوشتن برنامه هایی که ما را در رسیدن به جواب مسائل ریاضی یاری میرسانند، گوشه ای کوچک از این کاربرد را به نمایش بگذاریم. و شما را با نحوه ی محاسبات ریاضی در پایتون آشنا کنیم، در ادامه با ما همراه باشید.
برنامه ی اول محاسبات ریاضی در پایتون
ریشههای معادله ی درجه دوم در ادامه ی مقاله ی آموزش ریاضیات در پایتون برنامه ای مینویسیم که ریشههای معادله ی درجه دوم را به ازای مقادیر مختلف محاسبه کند.
همان گونه که میدانید برای حل معادله ی درجه دوم ax^2+bx+c=0 میتوان از فرمول زیر استفاده کرد:
در اینجا، ابتدا باید جذر را محاسبه کرده و پس از آن سه حالت زیر برقرار خواهد بود:
اگر باشد، آن گاه معادله دارای دو جواب (ریشه) حقیقی متمایز زیر است:
اگر باشد، آنگاه معادله دارای یک جواب حقیقی مضاعف زیر است:
اگر باشد، آنگاه معادله دارای جواب حقیقی نیست.
با توجه به فرمول و رابطه هایی که وجود دارد، میتوانیم الگوریتمی برای حل معادله درجه دوم بنویسیم.
الگوریتم برنامه ی محاسبه ریشههای معادله ی درجه دوم در پایتون:
اگر بخواهیم روش حل سوال را به صورت الگوریتم وار بنویسیم، این گونه خواهد شد:
مقادیر a و b و c را از ورودی بگیر.
دستورالعمل را اجرا کن.
اگر مقدار d بزرگتر از صفر است به گام 4 برو، در غیر این صورت به گام 7 برو.
دستورالعمل را اجرا کن.
دستورالعمل را اجرا کن.
مقادیر x1 و x2 را چاپ کن و به گام 11 برو.
اگر مقدار d مساوی با صفر باشد، به گام 8 برو در غیر این صورت به گام 10 برو.
دستورالعمل را اجرا کن.
مقدار x1 ، که ریشه مضاعف است (x1=x2) را چاپ کن و به گام 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]))
برنامه ی ما با روش لیستها هم نوشته شد. در برنامه نویسی میتواند روشهای مختلفی برای کدنویسی وجود داشته باشد و این سلیقه ی برنامه نویس است که از چه روشی استفاده کند و هیچ محدودیتی در این کار وجود ندارد.
جمع بندی
دیدید که چگونه با چند خط کد، توانستیم برنامه هایی بنویسیم که در ثانیه ای مسائلی از ریاضیات در پایتون را حل کند که به صورت دستی هم وقت بیشتری نیاز دارد و هم درصد اشتباه در آن زیاد است. به هرحال علم رایانه و به خصوص برنامه نویسی، کمک شایانی به رشتههای علمی از جمله ریاضیات میکند. یادگیری زبان برنامه نویسی پایتون، در هر زمینه ای میتواند کاربرد داشته باشد.پس با کمی تلاش و پشتکار، شما نیز میتوانید یکی از برنامه نویسان پایتون باشید.
اگر به یادگیری بیشتر در زمینه ی برنامه نویسی پایتون علاقه داری، یادگیری زبان پایتون بسیار ساده است. و با شرکت در دوره ی آموزش پایتون وب در آینده میتونی اپلیکیشن موبایل و دسکتاپ بسازی و وارد حوزه ی هوش مصنوعی هم شوی.