یک برنامه پایتون بنویسید که یک ماتریس تصادفی بزرگ n×n از اعداد اعشاری تولید کند، مقادیر ویژهٔ آن را با استفاده از numpy محاسبه کند و زمان اجرای محاسبه را چاپ نماید.
4.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:07 0.0
برای حل: از numpy (مثلاً numpy.random.default_rng) برای تولید ماتریس تصادفی استفاده کنید و برای دقت و سرعت، اگر خواستید ماتریس را برابر-متقارن کنید (A = (M+M.T)/2) تا بتوانید از numpy.linalg.eigh استفاده کنید که سریعتر است. با time.perf_counter زمان شروع و پایان محاسبهٔ مقادیر ویژه را اندازهگیری کنید. نکات: برای تکرارپذیری یک seed تنظیم کنید، از حلقههای پایتون خودداری کنید و از عملیات برداری numpy بهره ببرید تا از بهینهسازیهای BLAS/LAPACK بهرهمند شوید؛ همچنین اندازه n را تدریجی افزایش دهید تا مصرف حافظه و زمان اجرا را بسنجید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای تولید ماتریس تصادفی n×n با سرعت و تکرارپذیری، از numpy.random.default_rng با یک seed ثابت استفاده کنید و از عملیات برداری به جای حلقههای پایتون بهره ببرید. اگر A = (M + M.T)/2 را بسازید، ماتریس همصفری به دست میآید و میتوانید با numpy.linalg.eigh سریعتر به مقادیر ویژه برسید. زمان اجرای محاسبه را با time.perf_counter اندازهگیری کنید و برای نانهای مختلف به تدریج اندازه n را افزایش دهید تا مصرف حافظه و زمان را بسنجید. در صورت بزرگ بودن n، حافظه و کارایی را مد نظر قرار دهید و در نهایت برای مقادیر ویژه بزرگ از روشهای تقریبی یا ماتریسهای کمرتبه استفاده کنید تا کارایی بهتری داشته باشید.
گزارش