با استفاده از تابع 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

توسط پژوهشگر در 202 روز قبل ساعت 02:53
دسته بندی ها: C Plus Plus C Plus Plus for beginner
arash در 202 روز قبل ساعت 08:11

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

گزارش

1 پاسخ

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

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