یک برنامه 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 موازی‌سازی کنید.

توسط پژوهشگر در 221 روز قبل ساعت 01:43
دسته بندی ها: C Plus Plus C Plus Plus for beginner
nima در 221 روز قبل ساعت 12:16

برای اعتبار ورودی‌ها، ابتدا باید 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 موازی کنید.

گزارش

1 پاسخ

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

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