Помощь - Поиск - Пользователи - Календарь
Полная версия: Найти среднее арифметическое значение X и среднее квадратное отклонение σ:
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
natali_cortocova
Мальчики помогите.
Дан массив X(N). Найти среднее арифметическое значение X и среднее квадратное отклонение σ.

IUnknown
Цитата
и среднее квадратное отклонение σ.
Среднеквадратическое отклонение (оно же корень квадратный из дисперсии)

for i := 1 to N do
aver := aver + X[ i ];
aver := aver / N;

for i := 1 to N do
sigma := sigma + sqr(X[ i ] - aver);
sigma := sqrt(sigma / N);
Всё просто.
natali_cortocova
Цитата(IUnknown @ 5.06.2012 19:43) *

Среднеквадратическое отклонение (оно же корень квадратный из дисперсии)

for i := 1 to N do
aver := aver + X[ i ];
aver := aver / N;

for i := 1 to N do
sigma := sigma + sqr(X[ i ] - aver);
sigma := sqrt(sigma / N);
Всё просто.



Спасибочки blum.gif а как с "Найти среднее арифметическое значение X"?
Krjuger
Сложить все числа и разделить на количество.
IUnknown
Среднее арифметическое X находится в моем коде в переменной aver, если что. Без среднего арифметического посчитать сигму... Хм... как бы это сказать... Несколько затруднительно, поэтому мы сначала ищем среднее арифметическое элементов, а потом с его помощью - отклонение.
natali_cortocova
Цитата(IUnknown @ 5.06.2012 20:50) *

Среднее арифметическое X находится в моем коде в переменной aver, если что. Без среднего арифметического посчитать сигму... Хм... как бы это сказать... Несколько затруднительно, поэтому мы сначала ищем среднее арифметическое элементов, а потом с его помощью - отклонение.


Что я сделала не так? Пишет что "нельзя преобразовать тип real к integer".

Const
n=10;

Var
X:array [1..n] of integer;
i,aver:integer;

begin
Write('Введите массив: ');
For i:=1 to n do
Read(X[i]);
Readln;

for i := 1 to N do
aver := aver + X[ i ];
aver := aver / N;

for i := 1 to N do
sigma := sigma + sqr(X[ i ] - aver);
sigma := sqrt(sigma / N);

Writeln('среднее арифметическое - ',aver);
Writeln('отклонение - ',sigma);
Readln;
end.
Krjuger
Потому что среднее арифметическое это вещественное число,а у вас оно обьявлено, как целое. Надо обьявить его, как вещественное и все.
IUnknown
Цитата
и все.
Ну, не всё smile.gif Сигма вон вообще не объявлена. Она, кстати, тоже вещественная. И это, не забывай обнулять переменные перед суммированием. Я этого не сделал - потому что набросок, а в программе лучше обнулять...
Krjuger
А я,как турбо паскаль,до первой ошибки smile.gif
natali_cortocova
Я плохо знаю что такое отклонение правильно ли оно выводится?

Const
nn=10;

Var
X:array [1..nn] of integer;
i, n :integer;
aver, sigma :real;

begin
Write('Количество элементов? '); Readln(n);
For i:=1 to n do
Read(X[i]);
Readln;

for i := 1 to N do
aver := aver + X[ i ];
aver := aver / N;

for i := 1 to N do
sigma := sigma + sqr(X[ i ] - aver);
sigma := sqrt(sigma / N);

Writeln('среднее арифметическое - ',aver);
Writeln('отклонение - ',sigma);
end.
TarasBer
Цитата(IUnknown @ 5.06.2012 19:50) *

Без среднего арифметического посчитать сигму... Хм... как бы это сказать...

Это правильнее, когда данные идут одно за другим (например, в результате многократного повторения эксперимента), а отдельно хранить их нельзя.
Надо всего лишь отдельно считать сумму квадратов и применить одну формулу.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.