یک برنامه C++ بنویسید که با گرفتن یک آرگومان خط فرمان (تعداد زیربازهها) از طریق std::atoi انتگرال عددی تابع sin(x) را در بازه [0, π] با روش ذوزنقهای محاسبه و نتیجه را چاپ کند.
2.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:43 0.0
در برنامه از و تابع std::atoi برای تبدیل argv[1] به عدد صحیح استفاده کنید، سپس با تعیین a=0 و b=π (مثلاً با acos(-1.0)) گام h=(b-a)/n را محاسبه کرده و با جمعزدن مقادیر انتهایی و جمع مقادیر میانی در یک حلقه نتیجهٔ روش ذوزنقهای را بهدست آورید؛ از نوع double برای دقت بهتر استفاده کنید و ورودیها را برای n>0 بررسی کنید. نکات: از برای توابع مثل sin و بدستآوردن π استفاده کنید، ورودیها را اعتبارسنجی کنید و برای افزایش کارایی در محاسبات بزرگ میتوانید حلقهٔ جمع را با OpenMP بهصورت parallel for reduction موازیسازی کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای اعتبار ورودیها، ابتدا باید argc>1 باشد و مقدار argv[1] با std::atoi به عدد صحیح تبدیل شود، هرچند std::atoi خطاها را بهدرستی گزارش نمیکند و ورودی نامعتبر ممکن است نتیجه را گمراه کند. بازه [0، π] را با a=0 و b=acos(-1.0) تعریف کنید، گام h=(b-a)/n را محاسبه کنید و با sin(x) و قانون ذوزنهای مقدار تقریبی را محاسبه نمایید. محاسبات را از جنس double انجام دهید و طبق فرمول ذوزنقهای، مقدار f(a) و f(b) را بهنصف ضرب و جمع مقادیر میانی را اضافه کنید تا نتیجه بهدست آید. برای افزایش کارایی، میتوانید حلقه جمع را بهصورت parallel for با reduction در OpenMP موازی کنید.
گزارش