با استفاده از تابع std::accumulate از هدر جمع عناصر یک بردار اعشاری را محاسبه کرده و میانگین و واریانس نمونه را نیز بهدست آورید بهطوری که دقت عددی مناسبی حفظ شود.
2.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:53 0.0
برای حل، هدر را وارد کنید و از std::accumulate برای محاسبه جمع و نیز جمع مربعات (با یک lambda ساده یا دو فراخوانی جداگانه) استفاده کنید؛ مقدار اولیهٔ تجمع را از نوع long double یا double با مقدار صفر تنظیم کنید تا دقت حفظ شود، سپس میانگین = sum / n و واریانس نمونه = (sum_sq - n*mean*mean) / (n-1) را محاسبه کنید و برای n
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای حفظ دقت با std::accumulate مقادیر جمع و جمع مربعات را با مقدار اولیه از نوع long double آغاز کنید (مثلاً 0.0L) تا دامنهٔ محاسبه دقیقتر باشد. سپس mean = sum / n و واریانس نمونه را با فرمول (sum_sq - n*mean*mean) / (n-1) به دست آورید. این روش با دادههای بزرگ ممکن است به خطای گرد شدن قابلتوجهی منجر شود، بنابراین برای پایداری بیشتر میتوانید از دو پاس یا از الگوریتمهایی مانند Welford/Kahan استفاده کنید. اگر همچنان از accumulate برای هر دو مقدار استفاده میکنید، از صحت نوع دادهها و تبدیلهای صریح مطمئن شوید تا از کاهش دقت جلوگیری شود.
گزارش