یک کلاس پایه 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||

توسط پژوهشگر در 198 روز قبل ساعت 05:50
دسته بندی ها: Python Python for beginner
nima در 198 روز قبل ساعت 05:51

برای کلاس‌ها بهتر است سازندهٔ پایه پارامترهای تابع، گرادیان و هسین را به‌صورت callable بگیرد و از numpy برای محاسبات برداری استفاده کنید. توجه داشته باشید که روش نیوتن نیاز به معکوس‌پذیری هسین دارد؛ برای پایداری از ترفندهایی مثل regularization (اضافه کردن μI)، استفاده از pseudo-inverse یا کاهش گام (damping/line search) بهره ببرید. معیار توقف بر پایه ||x_{k+1}-x_k|| < tol مناسب است اما بهتر است معیار ترکیبی شامل ||grad|| نیز باشد تا مقیاس مسئله را پوشش دهد. برای اجرا روی چند نقطه شروع از try/except برای گرفتن خطاهای عددی و گزارش وضعیت الگوریتم‌ها استفاده کنید.

گزارش

1 پاسخ

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

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