یک برنامهٔ C بنویسید که با استفاده از تابع rand از stdlib.h و روش مونتکارلو انتگرال ∫₀^π sin(x) dx را با N نمونه تخمین زده و مقدار تقریبی همراه با خطای مطلق نسبت به مقدار دقیق را چاپ کند.
3.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 01:49 0.0
برای حل، از srand برای مقداردهی اولیه و rand()/ (double)RAND_MAX برای تولید اعداد یکنواخت در بازه [0,1] استفاده کنید و آنها را در [0,π] مقیاس دهید (π≈3.141592653589793). در یک حلقه N تکرار، مقدار sin(x) را جمع کنید، میانگین گرفته و در طول بازه (π) ضرب کنید تا تقریب انتگرال بدست آید؛ سپس اختلاف مطلق با مقدار دقیق 2 را نمایش دهید. نکات: از نوع double استفاده کنید، RAND_MAX را به صورت double کست کنید، برای دقت بهتر N را بزرگ انتخاب کنید و برای بذر تصادفی میتوانید time(NULL) را از time.h استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای تولید اعداد تصادفی با کیفیت از srand(time(NULL)) استفاده کنید و مقداردهی اولیه را انجام دهید. از (double)rand() / (double)RAND_MAX برای تولید اعداد یکنواخت در [0,1] استفاده کنید و آنها را به بازه [0,π] مقیاس دهید. تخمین انتگرال برابر π ضربدر میانگین sin(x) در نمونهها است و مقدار دقیق 2 است، پس خطای مطلق را به صورت |تخمین - 2| چاپ کنید. برای دقت بهتر، N را بزرگ انتخاب کنید و اگر دوست دارید، واریانس نمونه را هم محاسبه کنید تا خطای استاندارد را برآورد کنید.
گزارش