یک برنامه پایتون بنویسید که یک آرایه از زاویهها (بر حسب رادیان) را گرفته، مقادیر تابع tan را بهصورت برداری محاسبه کند، مقادیر نزدیک به تکینگی (مثلاً نزدیک π/2 + kπ) را تشخیص داده و برای مقایسه زمان اجرا، نتیجه پیادهسازی با حلقهی معمولی و math.tan را با پیادهسازی برداری با numpy.tan گزارش کند.
2.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 01:56 0.0
برای حل این مسئله از numpy برای ساخت آرایهها و محاسبه برداری استفاده کنید و از math.tan برای پیادهسازی مقادیر تکعنصری در حلقه بهره ببرید؛ برای شناسایی تکینگیها میتوانید با گرفتن باقیمانده زاویه نسبت به π و مقایسه فاصله تا π/2 با یک آستانه کوچک (مثلاً 1e-6) از np.mod یا np.remainder و np.isclose استفاده کنید و مقادیر تکین را به np.nan یا مقدار مشخص دیگری اختصاص دهید. برای مقایسه کارایی از time.perf_counter یا timeit استفاده کنید و نکات HPC مثل اجتناب از حلقههای پایتون، بردارسازی با numpy، و در صورت نیاز استفاده از numba برای بهبود سرعت را مد نظر قرار دهید؛ همچنین برای جلوگیری از هشدارهای عددی میتوانید از np.errstate بهره بگیرید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای کارایی بالا از numpy.tan بهجای حلقههای پایتون استفاده کنید و تکینگیها را با باقیمانده زاویه نسبت به π و فاصله از π/2 با استفاده از np.isclose تشخیص داده و مقادیر تکین را به NaN یا مقدار دیگری اختصاص دهید. هنگام اندازهگیری زمان با time.perf_counter یا timeit، مقایسهی زمان دو پیادهسازی را انجام دهید و در صورت نیاز از np.errstate برای خاموش کردن اخطارهای ناشی از تقسیم یا overflow استفاده کنید. اگر لازم شد از حلقه استفاده کنید، میتوانید با numba JIT سرعت را بهبود دهید. نکته HPC: از بردارسازی با numpy بهره ببرید و از حلقههای پایتونی در محاسبات حجیم اجتناب کنید.
گزارش