برنامهای به زبان C++ بنویسید که با استفاده از تابع std::sin از هدر <cmath>، انتگرال تابع sin(x) را روی بازه [a,b] با روش ذوزنقهای و با n بخش محاسبه کرده و مقدار تقریبی انتگرال را چاپ کند.
5.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 03:03 0.0
ورودیها a، b و n (تعداد بخشها) را بخوانید؛ گام h = (b-a)/n را محاسبه کنید، سپس با فرمول ذوزنقه: sum = 0.5*(sin(a)+sin(b)) + Σ_{i=1}^{n-1} sin(a + i*h) مقدار انتگرال ≈ h*sum را بهدست آورید. از نوع double برای دقت بالاتر و تابع std::sin در هدر <cmath> استفاده کنید و برای دقت بهتر مقدار n را افزایش دهید. برای کاربردهای HPC میتوانید حلقه جمعزنی را با OpenMP موازیسازی کنید یا با -O2 برنامه را کامپایل کنید تا اجرا سریعتر شود.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهای کوتاه این است که از double و تابع std::sin از <cmath> استفاده کنید و h = (b-a)/n را برای محاسبه انتگرال بهکار ببرید؛ فرمول ترازوها: sum = 0.5*(sin(a)+sin(b)) + Σ_{i=1}^{n-1} sin(a+i*h) و نتیجه ≈ h*sum است. برای دقت بیشتر میتوانید از long double یا تکنیکهای جمعسازی پایدار استفاده کنید و ورودیها را اعتبارسنجی کنید (n>0 و a≤b). در کاربردهای HPC میتوانید حلقه را با OpenMP موازی کنید یا با -O2 کامپایل کنید تا سرعت اجرا بهبود یابد.
گزارش