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

توسط پژوهشگر در 220 روز قبل ساعت 01:49
دسته بندی ها: C for beginner
arman در 220 روز قبل ساعت 11:56

برای تولید اعداد تصادفی با کیفیت از srand(time(NULL)) استفاده کنید و مقداردهی اولیه را انجام دهید. از (double)rand() / (double)RAND_MAX برای تولید اعداد یکنواخت در [0,1] استفاده کنید و آن‌ها را به بازه [0,π] مقیاس دهید. تخمین انتگرال برابر π ضربدر میانگین sin(x) در نمونه‌ها است و مقدار دقیق 2 است، پس خطای مطلق را به صورت |تخمین - 2| چاپ کنید. برای دقت بهتر، N را بزرگ انتخاب کنید و اگر دوست دارید، واریانس نمونه را هم محاسبه کنید تا خطای استاندارد را برآورد کنید.

گزارش

1 پاسخ

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

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