Информатика 3 месяца назад sonyamsk1106p46r5q

господа выручайте плзззззззз если что это надо делать на python
Дана последовательность натуральных чисел x1, x2, ..., xn. Стандартным отклонением называется величина σ=(x1−s)2+(x2−s)2+…+(xn−s)2n−1−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−√ где s=x1+x2+…+xnn — среднее арифметическое последовательности. Определите стандартное отклонение для данной последовательности натуральных чисел, завершающейся числом 0
заранее спасибо))))))))))

Ответ
1
nelle987

Конечно, для такой популярной задачи есть готовая имплиментация - например, она есть в пакете numpy, искомая функция numpy.std. Единственное, чтобы в знаменателе был n - 1, а не n, нужно добавить ddof=1

Можно посчитать и руками (и проверить, совпадает ли результат)

# python 3

from math import sqrt # квадратный корень

from numpy import std # готовая реализация для проверки

x = []

while True:

   temp = int(input()) # считываем значение во временную переменную

   x.append(temp) # добавляем в массив

   if temp == 0: # если это 0, то это последний элемент массива

       break

n = len(x) # количество элементов

s = sum(x) / n # среднее арифметическое

s2_1 = 0

for el in x:

   s2_1 += (el - s) ** 2 # вычисление суммы квадратов, вариант 1

s2_2 = sum((el - s) ** 2 for el in x) # вычисление суммы квадратов, вариант 2

std_1 = sqrt(s2_1/(n - 1))

std_2 = sqrt(s2_2/(n - 1))

std_3 = std(x, ddof=1)

print(std_1)  # первый вывод - вариант с вычислением суммы квадратов по методу 1

print(std_2)  # второй вывод - вариант с вычислением суммы квадратов по методу 2

print(std_3) # третий вывод - готовая функция из библиотеки numpy

Пример ввода:

1

1

1

1

1

100

0

Пример вывода:

37.48332962798263

37.48332962798263

37.48332962798263