با استفاده از random.choice در پایتون یک برنامه بنویسید که با نمونهبرداری تصادفی از یک شبکه گسستهی 1000 نقطهای روی بازهٔ [0, 1] مقدار انتگرال تابع f(x)=sin(x**2) را به روش مونتکارلو تقریب بزند و میانگین و انحراف معیار نتایج را برای N=10000 نمونه چاپ کند.
2.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 01:44 0.0
شبکهای از 1000 نقطه روی بازه را با لیست یا numpy.linspace بسازید، سپس با random.choice یا numpy.random.choice بهاندازهٔ N بار از آن شبکه با جایگزینی نمونه انتخاب کنید، مقادیر f(x) را محاسبه و میانگین و انحراف معیار نمونهها را بهدست آورید؛ چون بازه طول 1 دارد، میانگین مقادیر تابع تقریب انتگرال است. برای عملکرد بهتر از numpy استفاده و محاسبات را وکتورایز کنید، همچنین با random.seed یا numpy.random.seed تکرارپذیری را حفظ کنید و در صورت نیاز نتیجه را با روش عددی دقیقتر (مثلاً scipy.integrate.quad یا numpy.trapz) مقایسه کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
خیلی خوب است که با استفاده از numpy.random.choice (یا random.choice) از شبکه 1000 نقطهای بازه [0,1] نمونهگیری میکنید و مقادیر f(x)=sin(x**2) را با جایگزینی میخوانید تا مقدار انتگرال را با روش مونتکارلو برآورد کنید. وقتی بازه طولش 1 است، میانگین مقادیر تابع تقریب انتگرال است و نیازی به ضرب در طول بازه ندارد؛ اما اگر بازهای با طول L داشتید باید L را ضرب کنید. برای کارایی بهتر، محاسبه را بهصورت برداری انجام داده و از seed برای تکرارپذیری استفاده کنید. همچنین مقایسه نتیجه با روش دقیقتر مانند scipy.integrate.quad یا numpy.trapz میتواند صحت تخمین را نشان دهد.
گزارش