توابع مثلثاتی با ufunc (ufunc Trigonometric)
در این بخش می خواهیم ببینیم توابع مثلثاتی با ufunc در NumPy چطور کار می کنند؛ از سینوس و کسینوس ساده تا تبدیل درجه و رادیان، به همراه چند مثال دقیق از منبع.
آشنایی با توابع مثلثاتی با ufunc در NumPy
در متن منبع گفته شده NumPy سه ufunc مثلثاتی sin()، cos() و tan() دارد.
این توابع ورودی را برحسب رادیان می گیرند و مقدار سینوس، کسینوس یا تانژانت را برمی گردانند.
اگر بخواهی مرجع اصلی را ببینی، بخش توابع مثلثاتی با ufunc در NumPy همین صفحه را کامل توضیح داده است.
import numpy as np
x = np.sin(np.pi / 2)
print(x)
طبق مثال منبع، این کد مقدار سینوس π/2 را حساب می کند که برابر 1 است.
در ادامه همان منبع، سینوس چند زاویه مختلف به صورت آرایه محاسبه شده است.
import numpy as np
arr = np.array([np.pi / 2, np.pi / 3, np.pi / 4, np.pi / 5])
x = np.sin(arr)
print(x)
همان طور که در منبع آمده، این بار سینوس برای تمام اعضای آرایه محاسبه می شود.
تبدیل درجه (Degree) به رادیان (Radian)
در متن منبع گفته شده همه توابع مثلثاتی NumPy به صورت پیش فرض رادیان می گیرند.
همچنین اشاره شده که رابطه رادیان این است: مقدار رادیان = π/180 × درجه.
برای تبدیل درجه به رادیان از تابع np.deg2rad() استفاده شده است.
import numpy as np
arr = np.array([90, 180, 270, 360])
x = np.deg2rad(arr)
print(x)
همان طور که منبع توضیح داده، این کد درجه های 90، 180، 270 و 360 را به رادیان تبدیل می کند.
تبدیل رادیان به درجه با ufunc
در ادامه منبع، تبدیل برعکس یعنی رادیان به درجه هم انجام شده است.
برای این کار از تابع np.rad2deg() استفاده شده است.
import numpy as np
arr = np.array([np.pi / 2, np.pi, 1.5 * np.pi, 2 * np.pi])
x = np.rad2deg(arr)
print(x)
طبق مثال، این بار چند مقدار رادیان مثل π/2 و π به درجه تبدیل می شوند.
توابع معکوس مثلثاتی با ufunc
در بخش بعدی منبع، توابع معکوس مثلثاتی معرفی شده اند.
در متن گفته شده هدف، پیدا کردن زاویه از روی مقدار سینوس، کسینوس یا تانژانت است.
برای این کار از ufunc های arcsin()، arccos() و arctan() استفاده می شود.
این توابع زاویه را برحسب رادیان برمی گردانند.
import numpy as np
x = np.arcsin(1.0)
print(x)
در متن اصلی، این مثال زاویه ای را نشان می دهد که سینوس آن برابر 1 است.
زاویه برای مقادیر آرایه با ufunc
در ادامه همان منبع، تابع معکوس سینوس روی یک آرایه اعمال شده است.
آرایه شامل مقادیر 1، -1 و 0٫1 است.
import numpy as np
arr = np.array([1, -1, 0.1])
x = np.arcsin(arr)
print(x)
طبق توضیح منبع، خروجی این کد زاویه متناظر هر مقدار سینوس در آرایه است.
محاسبه وتر مثلث قائم با np.hypot
در بخش آخر منبع، سراغ محاسبه وتر مثلث قائم با فرمول فیثاغورس رفته است.
در متن نوشته شده NumPy تابع hypot() را برای این کار فراهم کرده است.
این تابع دو مقدار را به عنوان ضلع های عمود و افقی می گیرد و وتر را برمی گرداند.
import numpy as np
base = 3
perp = 4
x = np.hypot(base, perp)
print(x)
همان طور که در منبع آمده، برای اضلاع 3 و 4 مقدار وتر برابر 5 می شود.
اگر بخواهی قبل از این، GCD را مرور کنی، می توانی به صفحه بزرگترین مقسوم علیه مشترک با ufunc برگردی.
تمرین گام به گام توابع مثلثاتی با ufunc
برای تمرین نکاتی که منبع درباره توابع مثلثاتی با ufunc گفته، این کارها را انجام بده:
- یک مقدار ساده مثل π/2 را با
np.sin()امتحان کن. - آرایه ای از چند زاویه بساز و با
np.deg2rad()آن ها را تبدیل کن. - چند مقدار سینوس بساز و زاویه شان را با
np.arcsin()حساب کن.
با همین سه مرحله، توابع مثلثاتی با ufunc در NumPy برایت خیلی قابل لمس تر می شوند.
جمع بندی سریع توابع مثلثاتی با ufunc
در منبع این بخش، چند نکته کلیدی درباره توابع مثلثاتی با ufunc در NumPy دیده می شود:
- توابع
sin()،cos()وtan()در NumPy ufunc هستند و با رادیان کار می کنند. - با
np.deg2rad()وnp.rad2deg()تبدیل بین درجه و رادیان انجام می شود. - توابع
arcsin()،arccos()وarctan()زاویه را از روی مقدار مثلثاتی برمی گردانند. - تابع
np.hypot()با استفاده از قضیه فیثاغورس طول وتر را محاسبه می کند. - همه مثال ها در منبع با آرایه های NumPy نوشته شده اند و در ادیتور W3Schools قابل اجرا هستند.