با استفاده از 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) مقایسه کنید.

توسط پژوهشگر در 220 روز قبل ساعت 01:44
دسته بندی ها: Python Python for beginner
arman در 220 روز قبل ساعت 12:12

خیلی خوب است که با استفاده از numpy.random.choice (یا random.choice) از شبکه 1000 نقطه‌ای بازه [0,1] نمونه‌گیری می‌کنید و مقادیر f(x)=sin(x**2) را با جایگزینی می‌خوانید تا مقدار انتگرال را با روش مونت‌کارلو برآورد کنید. وقتی بازه طولش 1 است، میانگین مقادیر تابع تقریب انتگرال است و نیازی به ضرب در طول بازه ندارد؛ اما اگر بازه‌ای با طول L داشتید باید L را ضرب کنید. برای کارایی بهتر، محاسبه را به‌صورت برداری انجام داده و از seed برای تکرارپذیری استفاده کنید. همچنین مقایسه نتیجه با روش دقیق‌تر مانند scipy.integrate.quad یا numpy.trapz می‌تواند صحت تخمین را نشان دهد.

گزارش

1 پاسخ

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

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