با استفاده از تابع std::accumulate در C++ برنامه‌ای بنویسید که حاصل‌جمع، میانگین و تقریب انتگرال عددی با قاعده ذوزنقه‌ای را برای یک بردار از مقادیر اعشاری محاسبه و نمایش دهد.

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

0.0

در فایل کد از هدر و استفاده کنید؛ برای حاصل‌جمع از std::accumulate با مقدار اولیه 0.0 (نوع double) بهره ببرید و برای میانگین حاصل‌جمع را بر اندازه بردار تقسیم کنید. برای تقریب انتگرال به قاعده ذوزنقه‌ای با گامی ثابت h از رابطه I ≈ h*( (f0+fn)/2 + sum_{i=1}^{n-1} f_i ) استفاده کنید — جمع میانی را می‌توانید با std::accumulate روی بازه بردار.begin()+1 تا بردار.end()-1 محاسبه کنید. نکات: از نوع double برای دقت عددی استفاده کنید، برای نمایش نتیجه setprecision به کار ببرید و برای داده‌های بزرگ می‌توانید با توابع موازی‌تر مثل std::transform_reduce یا execution policyها کارایی را بهتر کنید.

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

نکته‌ای کوتاه: برای جمع از std::accumulate با مقدار اولیه 0.0 از نوع double استفاده کنید تا دقت و سازگاری نتیجه حفظ شود. سپس میانگین را با تقسیم حاصل جمع بر اندازه بردار محاسبه کنید و در صورت احتمال صفر بودن اندازه بردار، خطا را کنترل کنید. برای تقریب انتگرال به قاعده ذوزنقه‌ای از I ≈ h*( (f0+fn)/2 + sum_{i=1}^{n-1} f_i ) استفاده کنید و جمع میانی را با std::accumulate روی بازه begin()+1 تا end()-1 به‌دست آورید. داده‌های بزرگ را می‌توانید با استفاده از پروگرمینگ موازی مانند std::execution::par یا std::transform_reduce به کارایی بهتری برسانید.

گزارش

1 پاسخ

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

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