به عنوان برنامهنویسی که در حال ارتقای مهارتهای خود در زبان برنامه نویسی پایتون است، گاهی وقتها باید با محاسبات ریاضی هم روبهرو شویم. بهعنوان مثال در بین تمرینات و پروژههای مختلف برنامهنویسی به مسئلهای بر میخوریم که برای ادامه کار برنامه باید رادیکال عددی را حساب کنیم. در این مطلب از مجله فرادرس روش محاسبه رادیکال در پایتون را بررسی کردهایم. این نوشته را با مطالب پایه و اصولی مربوط به جذر اعداد، شروع میکنیم. در ابتدا بهطور خلاصه و برای یادآوری درباره رادیکال صحبت کردهایم و این عملیات ریاضی را تعریف کردیم. بعد از آن برای کمک به درک بهتر مفاهیم و روشهای محاسبه رادیکال، رویکردهای مختلف را همراه با نمونه کد به عنوان مثالی برای هر روش، بررسی کردهایم.
رادیکال در پایتون چیست؟
رادیکال یکی از سادهترین محاسبات پیشرفته ریاضی است که در زبان برنامهنویسی پایتون هم کاربرد بسیار گستردهای دارد. از آنجا که زبان برنامهنویسی پایتون، زبانی قدرتمند و همه کاره است برای نوشتن برنامههایی که با محاسبات عددی سر و کار دارند گزینه بسیار مناسبی است. یکی از این محاسبات عددی، عملیات بدست آوردن رادیکال است. پایتون برای محاسبه رادیکال روشهای متنوعی را ارائه داده است که در این مطلب با همه آنها آشنا خواهیم شد.
برای ادامه این مطلب از مجله فرادرس، قبل از اینکه به بحث برنامهنویسی بپردازیم بهتر است که برای یادآوری درباره رادیکال یا همال جذر اعداد در ریاضیات و مفهوم آن بحث کنیم. در علم ریاضیات رادیکال یا جذر هر عدد خاص، مقداری است که اگر ضرب در خودش شود مقدار همان عدد خاص بدست میآید. برای مثال رادیکال عدد ۹ برابر با ۳ است. زیرا «۳ ضرب در ۳ برابر با ۹ میشود» 3 * 3 = 9
. به همین صورت رادیکال عدد ۱۶ برابر با ۴ میشود زیرا 4 * 4 = 16
. شاید متوجه شدهاید که فقط از اعداد مثبت در مثالها استفاده میکنیم. زیرا اعداد منفی جذر در ریشه دوم ندارند. در واقع هیچ عددی ضرب در خودش کمتر از صفر -منفی- نمیشود.
تا اینجای مطلب درباره رادیکال و معنای آن در علم ریاضیات اطلاعاتی را از بابت یادآوری مطالعه کردیم. در ادامه به بحث درباره رادیکال در پایتون و روشهای محاسبه این مقدار خواهیم پرداخت.
روش انجام محاسبات ریاضی در پایتون
یکی از سریعترین روشهای محاسبه رادیکال در پایتون استفاده از عملگر توان **
است. البته برای محاسبه این عملیات ریاضی در پایتون روشهای گوناگونی مانند ابزار «درونی» (Built-In) کتابخانههای Math و Numpy نیز وجود دارد.
- روش اول: استفاده از عملگر توان **
- روش دوم: استفاده از تابع sqrt()
تعریف شده در کتابخانه Math
- روش سوم: استفاده از تابع sqrt()
تعریف شده در کتابخانه Numpy
در ادامه مطلب درباره هر کدام از روشهای بالا صحبت خواهیم کرد.
چگونه مهارت برنامهنویسی خود را در پایتون افزایش دهیم؟
به عنوان یکی از روشهای خوب برای آموختن پایتون میتوان از شرکت در کلاسهای حضوری نام برد. زیرا اساتید مجرب آن کلاسها، فرآیند نوشتن و اجرای کدها را به دانشجویان نشان میدهند. اما باید توجه کرد در کلاسهای آکادمیک، علاوه بر قدیمی بودن روش تدریس، هزینه بالایی نیز بر دانشجویان تحمیل میشود. ریسک پایین بودن کیفیت آموزش وجود دارد و مهمتر اینکه چنین کلاسهایی دارای چهارچوب زمانی خاصی نیز هستند. بنابراین پیدا کردن کلاسی که با زمان آزاد علاقهمندان به یادگیری، هماهنگ و از لحاظ هزینه مقرون به صرفه باشد، در عین حال کیفیت آموزشی خوب را هم تضمین کند کمی دشوار خواهد بود.
پس بهترین راه استفاده از فیلمهای آموزشی است. سایت فرادرس فیلمهای بسیار خوبی با آموزش مناسب و متناسب با همه سطوح دانش را برای دانشجویان فراهم کرده است. این فیلمهای آموزشی با دقت و حساسیت بالایی در انتخاب استاد و روش تدریس و حتی کیفیت مطالب مورد تدریس تولید شدهاند. در صورتی که علاقهمند به افزایش مهارت خود در زبان برنامهنویسی پایتون هستید، فیلمهای آموزشی زیر از فرادرس میتوانند گزینه خوبی برای شروع باشند.
محاسبه رادیکال با استفاده از عملگر توان
استفاده از عملگر توان **
یکی از آسانترین راهها برای محاسبه مقدار رادیکال اعداد است. البته که عملیات توان معمولا برای بزرگتر کردن اعداد استفاده میشود، اما بهتوان رساندن اعداد با توان 0.5
یعنی x**0.5
دقیقا برابر با محاسبه جذر اعداد است. این عملگر، عملوند سمت چپ خود را به توان عملوند سمت راست خود میرساند.
برای محاسبه رادیکال در پایتون با استفاده از عملگر **
باید عملوند سمت راست را برابر با مقدار 0.5
قرار دهیم. جواب عملیات برابر با مقدار رادیکال هر عملوند قرار گرفته در سمت چپ خواهد شد.
در قطعه کد زیر، مثال دیگری از محاسبه مقدار رادیکال دستهای از اعداد با استفاده از x**0.5
را مشاهده میکنید. توجه کنید که در تعداد عناصر لیستهای پایتون محدودیتی وجود ندارد. فقط مقدار این عناصر باید بزرگتر مساوی صفر باشند.
1values = [16, 25, 36, 49, 64]
2for x in values:
3 x_sqrt = x**0.5
4 print(f'value: {x} square root {x_sqrt}')
خروجی کد بالا با لیست دلخواه داده شده، بهصورت زیر است.
value: 16 square root 4.0 value: 25 square root 5.0 value: 36 square root 6.0 value: 49 square root 7.0 value: 64 square root 8.0
البته در پایتون بر عکس ریاضیات از عملگر توان برای مقادیر منفی نیز میتوان استفاده کرد.
خروجی کد بالا برابر با مقدار زیر است.
-2.0
در مورد بالا پایتون به این شکل -(4**0.5)
مسئله را درک میکند. زیرا بیشترین اولویت اجرا در عملگرهای پایتون، مربوط به عملگر توان است. در نتیجه عبارت محاسباتی -4**0.5
جواب کاملا منطقی -2
را برمیگرداند. به همچنین اگر مسئله را به شکل (-4)**0.5
به پایتون بدهیم جواب دیگری خواهیم گرفت.
خروجی کد بالا به شکل عدد مرکب ظاهر میشود.
(1.2246467991473532e-16+2j)
از آنجا که رادیکال اعداد منفی برابر با جوابی از جنس اعداد مرکب میشود، توصیه میکنیم که از دستور cmath.sqrt()
استفاده کنید. درباره این دستور در قسمت انتهایی بخش بعد توضیح دادهایم.
توجه کنید که عملوند دوم یا عملوند سمت راست عملگر **
میتواند هر عدد حقیقی باشد. بنابراین زمانی که میخواهید نتیجه رادیکال هر عدد را حساب کنید فقط باید از مقدار 0.5
در سمت راست این عملگر استفاده کنید. در کد زیر مثالهایی از مقادیر فرضی و دلخواه دیگری که میتوان در سمت راست عملگر **
قرار داد و نوع جواب هر کدام را نمایش دادهایم.
1x = 4
2
3print(f' x squared: {x**2}')
4print(f' x cubed: {x**3}')
5print(f' x to the power of -1 (x/x squared): {x**-1}')
6print(f' x to the power of -2 (x/x cubed): {x**-2}')
خروجی کد بالا بهصورت زیر است.
x squared: 16 x cubed: 64 x to the power of -1 (x/x squared): 0.25 x to the power of -2 (x/x cubed): 0.0625
درصورتی که تمایل دارید به طور کلی با انواع محاسبات ریاضی در پایتون آشنا شوید و مهارتهای مربوط به حل مسائل ریاضی خود را در پایتون ارتقا دهید، میتوانید از فیلم آموزش محاسبات عددی در پایتون فرادرس استفاده کنید.
محاسبه رادیکال با استفاده از تابع sqrt در کتابخانه Math
یکی دیگر از روشهای محاسبه مقدار رادیکال در پایتون استفاده از تابع sqrt()
است که در کتابخانه Math تعریف شده. کتابخانه Math یکی از کتابخانههای اصلی و تخصصی پایتون است. این کتابخانه برای انجام انواع عملیات ریاضی در پایتون تعریف شده است. در این بخش، اجرای عملیات رادیکال در پایتون را با استفاده از تابع sqrt()
از کتابخانه Math بر روی دو نوع عدد حقیقی و مرکب بررسی کردهایم.
محاسبه رادیکال در پایتون بر روی اعداد حقیقی
برای استفاده از تابع sqrt()
در ابتدا باید کتابخانه math
را در محیط کدنویسی پایتون «وارد» (Import) کرد. در کد نمایش داده شده پایین روش استفاده از تابع math.sqrt()
را مشاهده میکنیم. در این کد همان لیست اعدادی را استفاده کردیم که در مثال زده شده برای عملگر **0.5
دیدیم. در قسمت بالای این مطلب با استفاده از عملگر **0.5
مقدار رادیکال اعضای لیست این مثال را بدست آوردهایم.
1import math
2
3values = [16, 25, 36, 49, 64]
4
5for x in values:
6 x_sqrt = math.sqrt(x)
7 print(f'value: {x} square root {x_sqrt}')
خروجی کد بالا بهصورت زیر است.
value: 16 square root 4.0 value: 25 square root 5.0 value: 36 square root 6.0 value: 49 square root 7.0 value: 64 square root 8.0
همانطور که در خروجی برنامه نشان داده شد، جواب حاصل از استفاده تابع math.sqrt()
برابر با جوابی است که از عملیات **0.5
بدست آمده. مزیت عملیات **0.5
این است که در استفاده از روش **0.5
برخلاف استفاده از تابع math.sqrt()
دیگر نیازی به import کردن کتابخانه خاصی در محیط کدنویسی وجود ندارد.
از طرف دیگر، مهندسان زیادی بر این عقیده هستند که اجرای عملیات، توسط تابع math.sqrt()
معمولا سریعتر انجام میشود. مخصوصا اگر تابع sqrt()
را به صورت زیر import کرده باشیم.
استفاده از اعداد منفی در تابع math.sqrt()
خطای ValueError: math domain error
را برمیگرداند. به مثالی که در ادامه زده شده توجه کنید.
خروجی کد بالا بهصورت زیر است.
ValueError Traceback (most recent call last) in ----> 1 math.sqrt(-4) ValueError: math domain error
بسته به اینکه درباره مدیریت محاسبه رادیکال اعداد منفی چه تصمیمی گرفته باشیم، میتوانیم درباره رخداد خطای ValueError
هم روش برخورد و عکس العمل خاصی را در پیش بگیریم. البته به عنوان راه حل جایگزین میتوان از بروز خطای ValueError
در مسئله رادیکال اعداد منفی با استفاده از تابع cmath.sqrt()
نیز اجتناب کرد. روش استفاده از تابع cmath.sqrt()
را در بخش بعد خواهیم دید.
محاسبه رادیکال در پایتون بر روی اعداد مرکب
در زبان برنامهنویسی پایتون میتوان از اعداد منفی و مرکب نیز رادیکال گرفت. در واقع برای محاسبه رادیکال در پایتون باید از کتابخانه Cmath استفاده کرد. در کد زیر مثال کوچکی از استفاده این کتابخانه پیادهسازی شده است.
1import cmath
2
3c = (12 + 16j)
4
5cmath.sqrt(c)
خروجی کد بالا برابر با عدد مرکب (4+2j)
میشود.
یکی از بهترین راهها برای دوری از خطای ValueError: math domain error
استفاده از تابع cmath.sqrt()
است. با استفاده از این تابع میتوان خطاهای استثنا را مدیریت کرد.
برای مثال با استفاده از تابع cmath.sqrt()
در کد زیر توانستیم خطای استثنا ValueError
مربوط به اعداد منفی را مدیریت کنیم.
1import math
2import cmath
3
4values = [16, -25, 36, -49, 64]
5
6for x in values:
7 try:
8 x_sqrt = math.sqrt(x)
9 except ValueError:
10 x_sqrt = cmath.sqrt(x)
11
12 print(f'value: {x} square root {x_sqrt}')
خروجی کد بالا بهصورت زیر است.
value: 16 square root 4.0 value: -25 square root 5j value: 36 square root 6.0 value: -49 square root 7j value: 64 square root 8.0
محاسبه رادیکال با استفاده از تابع sqrt در کتابخانه Numpy
اگر با آرایههای پایتون مخصوص کتابخانه NumPy کار میکنید امکان استفاده از تابع numpy.sqrt()
را نیز خواهید داشت. در مثالهای زده شده پایین تابع مورد نظر به صورت np.sqrt()
فراخوانی شده است. فیلم آموزش پیشرفتهتر مربوط به مسائل ریاضی در هوش مصنوعی و یادگیری ماشین با عنوان آموزش ریاضی برای یادگیری ماشین در پایتون نیز در وبسایت فرادرس در دسترس است. مشاهده این فیلم آموزشی، مهارت برنامه نویسی شما را ارتقا میدهد.
استفاده از تابع np.sqrt()
بر روی آرایهای خاص، در جواب، آرایهای برمیگرداند که حاوی جذر همه اعضای آرایه اصلی است. مثالی که در زیر آمده روش ایجاد آرایه جدید از جنس آرایههای مخصوص کتابخانه NumPy را نشان میدهد. برای ایجاد آرایه مخصوص Numpy از لیست آمده در مثالهای قبلی استفاده کردهایم. در این کد از تابع np.sqrt()
نیز بعد از ایجاد آرایه Numpy استفاده کردهایم.
1import numpy as np
2
3values_array = np.array([16, 25, 36, 49, 64])
4
5sqrt_array = np.sqrt(values_array)
6
7print(f'values: {values_array} square root of values: {sqrt_array}')
خروجی کد بالا بهصورت زیر است.
values: [16 25 36 49 64] square root of values: [4. 5. 6. 7. 8.]
لازم به ذکر است که از تابع np.sqrt()
بر روی مقادیر مجزای عددی نیز میتوان استفاده کرد. اما استفاده از این تابع برای اعداد بهصورت مجزا توصیه نمیشود زیرا کتابخانه NumPy برای کار با آرایهها بهصورت اختصاصی بهینهسازی شده است.
چطور به پایتون بیشتر و بهتر مسلط شویم؟
در مطلب بالا به صورت مفصل در مورد رادیکال در پایتون صحبت کردیم، البته این یکی از مجموع عملیات ریاضی است که در این زبان برنامهنویسی میتوانید انجام دهید. اگر به عنوان یک برنامهنویس، تحلیلگر داده، متخصص هوش مصنوعی و غیره علاقهدارید مهارت خود در زمینه پایتون را افزایش دهید، فیلمهای آموزشی فرادرس میتوانند در این زمینه به صورت قابل توجهی کمک کنند.
در همین راستا، برخی از فیلمهای آموزشی فرادرس در زیر آورده شدهاند.
لازم به یادآوری است برای افرادی که علاقهمند به شروع یادگیری پایتون هستند، فرادرس یک فیلم آموزشی ۱۴۰ دقیقهای رایگان ارائه کرده است. میتوانید با دیدن آن با اصول اولیه و کلیدی این زبان برنامهنویسی آشنا شوید.
جمع بندی
محاسبه رادیکال در پایتون با استفاده از عملگر توان **
یا تابع math.sqrt()
به آسانی انجام میشود. لازم به یادآوری است که تابع math.sqrt()
معمولا سریعترین روش محاسبه رادیکال در پایتون است و تابع cmath.sqrt()
میتواند جذر اعداد مرکب را نیز محاسبه کند. به همچنین در زمان کار با آرایهها گزینه استفاده از تابع numpy.sqrt()
را نیز در اختیار داریم. تابع numpy.sqrt()
برای محاسبه رادیکال هر مقدار عددی به غیر از مقادیر منفی قابل استفاده است. در این مطلب از مجله فرادرس سعی کردیم همه روشهای مختلف محاسبه رادیکال در پایتون را توضح دهیم. برای کمک به درک بهتر این توضیحات، همراه هر کدام کدهایی نیز برای مثال نمایش دادهایم.
برای کسانی که تازه وارد دنیای برنامهنویسی شدهاند لازم است که با مفاهیم زیربنایی و الگوریتمهای پشت کدها آشنا شوند. این آشنایی شاید کمکی به برنامهنویس بهتر شدن نکند اما تاثیر بسیار زیادی در افزایش درک و توان حل مسائل پیچیدهتری در آینده را خواهد داشت. به همین منظور برای هر مسئلهای مانند مسئله محاسبه حاصل رادیکال در پایتون، باید با انواع روشهای ممکن و تفاوت آنها با یکدیگر آشنا شویم.
source