یک برنامهٔ ساده به زبان C++ بنویسید که با استفاده از تابع std::sin از هدر مقادیر سینوس را در N نقطهٔ مساوی روی بازهٔ [a, b] محاسبه کند و با استفاده از قاعدهٔ ذوزنقه‌ای عددی مقدار انتگرال تابع sin(x) روی آن بازه را تقریب بزند و خروجی شامل مقادیر نقاط و مقدار تقریبی انتگرال باشد.

5.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:22

0.0

با استفاده از هدر و تابع std::sin برای هر نقطه x_i = a + i*h (h = (b-a)/(N-1)) مقدار sin(x_i) را محاسبه کنید، سپس با قاعدهٔ ذوزنقه‌ای integral ≈ h*(0.5*f0 + sum fi + 0.5*fN-1) مقدار انتگرال را به‌دست آورید. از نوع double برای دقت استفاده کرده، حلقهٔ for و یک بردار یا آرایه برای ذخیرهٔ مقادیر به‌کار ببرید؛ برای بهینه‌سازی ساده می‌توان از reserve برای بردار و در مسائل بزرگ از موازی‌سازی (مثلاً OpenMP) بهره برد، اما برای این تمرین مبتدی کافی است پیاده‌سازی تک‌نخی با std::sin و چاپ با دقت مناسب انجام شود.

توسط پژوهشگر در 201 روز قبل ساعت 03:22
دسته بندی ها: C Plus Plus C Plus Plus for beginner
nima در 201 روز قبل ساعت 06:39

نکته‌ای کوچک: برای صحت بالای محاسبه، مقدار h را به‌صورت double محاسبه کنید و از N≥2 اطمینان یابید. استفاده از std::sin از <cmath> صحیح است، و مقادیر f_i را در یک بردار ذخیره کنید تا با استفاده از قاعدهٔ ذوزنقه‌ای مقدار انتگرال را برآورد کنید. با reserve کردن ظرفیت بردار، عملکرد بهتری خواهید داشت و در کارهای بزرگ می‌توان از موازی‌سازی مثل OpenMP استفاده کرد. در نهایت خروجی را با تنظیم دقیق چاپ کنید تا نمایش نتیجه دقیق باشد.

گزارش

1 پاسخ

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

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