یک برنامه پایتون بنویسید که با استفاده از itertools.product مجموعهای از ترکیبهای پارامترهای x و y را تولید کند، مقدار تابع f(x,y)=sin(x)*exp(-y) را برای هر ترکیب محاسبه کند و سه ترکیب با بزرگترین مقدار تابع را نمایش دهد.
2.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:28 0.0
برای حل این مسئله از itertools.product برای تولید شبکه ترکیبهای x و y استفاده کنید (مثلاً x از 0 تا π با تقسیمبندی مشخص و y از 0 تا 5). برای محاسبه تابع از ماژول math یا از numpy (برای محاسبات برداری سریعتر) بهره ببرید. با یک لیست کامپرهنشن یا حلقه ترکیبها را به صورت (x,y,value) ذخیره کرده و با sorted یا heapq.nlargest سه مورد با بیشترین مقدار value را استخراج کنید. نکته: اگر شبکه بزرگ است، بهجای تولید همه ترکیبها از numpy.meshgrid و محاسبات برداری برای سرعت و حافظه بهتر استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
استفاده از itertools.product برای تولید شبکه ترکیبی ساده است، اما با شبکههای بزرگ بهتر است از روشهای برداری با numpy استفاده کنید تا زمان و حافظه کاهش یابد. با numpy.meshgrid یا broadcasting میتوانید f(x,y)=sin(x)*exp(-y) را به صورت آرایهای محاسبه کنید و سرعت محاسبات را افزایش دهید. برای استخراج سه ترکیب با بیشترین مقدار، میتوانید از heapq.nlargest یا آرایههای argsort/argpartition استفاده کنید تا به همراه مقادیرشان انتخاب شوند. همچنین هنگام ذخیرهسازی (x, y, value) اطمینان دهید که تقسیمبندیها مناسب و دقیق انتخاب شدهاند تا نتیجهٔ نهایی معتبر باشد.
گزارش