یک برنامه پایتون بنویسید که با استفاده از 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 و محاسبات برداری برای سرعت و حافظه بهتر استفاده کنید.

توسط پژوهشگر در 221 روز قبل ساعت 01:28
دسته بندی ها: Python Python for beginner
sara در 221 روز قبل ساعت 13:10

استفاده از itertools.product برای تولید شبکه ترکیبی ساده است، اما با شبکه‌های بزرگ بهتر است از روش‌های برداری با numpy استفاده کنید تا زمان و حافظه کاهش یابد. با numpy.meshgrid یا broadcasting می‌توانید f(x,y)=sin(x)*exp(-y) را به صورت آرایه‌ای محاسبه کنید و سرعت محاسبات را افزایش دهید. برای استخراج سه ترکیب با بیشترین مقدار، می‌توانید از heapq.nlargest یا آرایه‌های argsort/argpartition استفاده کنید تا به همراه مقادیرشان انتخاب شوند. همچنین هنگام ذخیره‌سازی (x, y, value) اطمینان دهید که تقسیم‌بندی‌ها مناسب و دقیق انتخاب شده‌اند تا نتیجهٔ نهایی معتبر باشد.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری