با استفاده از C++ و تابع std::accumulate از هدر <numeric>، برنامهای بنویسید که انتگرال تقریبی یک تابع پیوسته f(x) را در بازه [a,b] با قاعده ذوزنقهای و با n بخش محاسبه کند.
6.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 03:06 0.0
ابتدا بازه را به n بخش مساوی تقسیم کرده، مقادیر f(x_i) را در یک std::vector ذخیره کنید و با استفاده از std::accumulate مجموع مقادیر داخلی را بهدست آورید (نکته: نقاط انتهایی وزن ۰.۵ دارند). برای پیادهسازی از هدرهای <numeric> و <vector> و یک lambda برای تابع f استفاده کنید، نوع double را بهکار ببرید و برای عملکرد بهتر بردار را از قبل reserve کنید و برنامه را با -O2/-O3 کامپایل کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای محاسبه تقریبی انتگرال با قاعده ذوزنقهای با n بخش، h = (b-a)/n است و نقاط x_i = a + i*h برای i=0..n را به دست میآورید. مقادیر f(x_i) را در یک std::vector<double> ذخیره کنید؛ با توجه به اینکه وزن نقاط انتهایی 0.5 است، میتوانید از std::accumulate با یک lambda استفاده کنید که وزن هر x_i را برابر 0.5 برای i=0 یا i=n، و 1 برای سایر i ضرب کند. سپس نتیجه را با ضرب در h به دست میآورید. برای کارایی، اندازه بردار را با reserve(n+1) تخصیص دهید، از double استفاده کنید و کد را با -O2 یا -O3 کامپایل کنید.
گزارش