یک کلاس پایه Solver برای حل عددی مینیمم یک تابع و دو زیرکلاس GradientDescent و Newton پیادهسازی کنید، سپس یک اسکریپت ساده بنویسید که با چند نقطه شروع بهصورت خودکار هر الگوریتم را اجرا و نتایج را چاپ کند؛ در سازندهها از تابع built-in super برای فراخوانی سازنده کلاس پایه استفاده کنید.
40.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 05:50 0.0
در پایتون یک کلاس پایه (مثلاً Solver) با پارامترهایی مثل تابع هدف، گرادیان (در صورت نیاز)، مقدار آستانه (tol) و تکرار حداکثر (max_iter) تعریف کنید و سپس دو زیرکلاس GradientDescent و Newton بسازید که متد solve را بازنویسی میکنند. در سازندهٔ زیرکلاسها از super().__init__(...) برای مقداردهی اولیه پارامترهای مشترک استفاده کنید. برای محاسبات عددی از numpy بهره ببرید، معیار توقف ساده مانند ||x_{k+1}-x_k||
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای کلاسها بهتر است سازندهٔ پایه پارامترهای تابع، گرادیان و هسین را بهصورت callable بگیرد و از numpy برای محاسبات برداری استفاده کنید. توجه داشته باشید که روش نیوتن نیاز به معکوسپذیری هسین دارد؛ برای پایداری از ترفندهایی مثل regularization (اضافه کردن μI)، استفاده از pseudo-inverse یا کاهش گام (damping/line search) بهره ببرید. معیار توقف بر پایه ||x_{k+1}-x_k|| < tol مناسب است اما بهتر است معیار ترکیبی شامل ||grad|| نیز باشد تا مقیاس مسئله را پوشش دهد. برای اجرا روی چند نقطه شروع از try/except برای گرفتن خطاهای عددی و گزارش وضعیت الگوریتمها استفاده کنید.
گزارش