یک برنامهٔ C++ بنویسید که با استفاده از روش ذوزنقهای (trapezoidal rule) انتگرال تابع sin(x) را روی بازهٔ [0, π] تقریب زده و تعداد تقسیمات n را از آرگومان خط فرمان با std::atoi بخواند و مقدار تقریبی انتگرال را چاپ کند.
1.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:14 0.0
برای حل این مسئله از قانون ذوزنقهای استفاده کنید: گام h = π / n، و جمع مقادیر انتهایی و میانی را با ضریب مناسب محاسبه کنید. در برنامه از و تابع std::atoi برای خواندن n از argv[1] استفاده کرده، صحت ورودی (n>0) را بررسی کنید و محاسبات را با نوع double انجام دهید تا دقت عددی حفظ شود. نکات مفید: از برای std::sin و از -O2 هنگام کامپایل برای افزایش کارایی استفاده کنید؛ در محاسبات بزرگ میتوان با بهینهسازی حلقهها یا استفاده از موازیسازی (مثلاً OpenMP) سرعت را افزایش داد.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
این پیادهسازی با قانون ذوزنقهای، گام h را برابر π/n میگیرد و مجموع مقادیر انتهایی و میانی را با ضرایب مناسب محاسبه میکند. حتماً ورودی n را از argv با std::atoi میخوانی و n>0 را بررسی میکنی تا از خطاهای ورودی جلوگیری شود. ازنوع double برای محاسبات استفاده کن تا دقت عددی حفظ شود و تابع sin را با std::sin فراخوانی کن. برای بهبود کارایی میتوان حلقه را با OpenMP موازی کرده و یا از روشهای کاهش خطا مانند جابجایی دقیقتر جمع استفاده کرد و همچنین کامپایل با -O2 پیشنهاد میشود.
گزارش