10.04.2013, 18:49 | #1 (permalink) |
Новичок
Регистрация: 06.04.2013
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 34
|
Генерирование вещественных чисел
Мат.ожидание высчитывает правильно (примерно "0,5"). (Цикл мат.ожидания пока заключила в скобки) Скажите, правильно ли я написала код для вычисления значения дисперсии D = 1/12 (~ 0,083) согласно формуле. (Скрин.) А то что-то не то высчитывает... Код:
begin sum2:= sum + sqr(chisla[j]-0.5); inc(j,1); end; Edit6.Text:=floattostr((1/N)*sum2); // Дисперсия |
10.04.2013, 18:49 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Прочитайте пожалуйста аналогичные топики Даны три положительных вещественных числа x, y, z Сумма чисел Написать подпрограмму обработки прямоугольной таблицы вещественных чисел Вывести список положительных чисел, список отрицательных чисел на C# |
10.04.2013, 20:58 | #3 (permalink) |
Member
Регистрация: 29.01.2013
Сообщений: 91
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 565
|
В куске представленного кода нет цикла. Подозреваю что вы его оставили за кадром. Если вычисления проходят в цикле то формула на рисунке реализована программно правильно.
Но вот только Дисперсия равна разности между математическим ожиданием квадрата случайной величины и квадратом ее математического ожидания. D(X)=M(X^2)-[M(X)]^2. Проще, в данной формуле откуда то взялось деление на N. Возможно так получиться Код:
sum2:=0; for j:=1 to N do begin sum2:= sum2 + sqr(chisla[j]-0.5); end; |
10.04.2013, 21:58 | #4 (permalink) | ||
Новичок
Регистрация: 06.04.2013
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 34
|
Цитата:
Цитата:
Может скриншот нашей лекции спасет Вот что у меня получилось: Код:
j:=1; sum:=0; sum2:=0; sum3:=0; //for j:=1 to N do while j <= High(chisla) do begin {sum:= sum + chisla[j]; inc(j,1); Edit5.Text:=floattostr((1/N)*sum); // Мат.ожидание} sum2:= sum2 + sqr(chisla[j]-0.5); inc(j,1); Edit6.Text:=floattostr((1/N)*sum2); // Дисперсия {sum3:= sum3 + sqr(chisla[j]); inc(j,1); Edit7.Text:=floattostr((1/N)*sum3); // Сумма квадратов} end; А если по отдельности, то правильно. |
||
11.04.2013, 09:49 | #5 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Извините, сударь, но НИ В КОЕМ СЛУЧАЕ! В Sum2 появится лишь сумма квадратов отклонений случайной величины от матожидания, каковая отнюдь дисперсией не является. По "физической" сути этот самый второй момент (дисперсия) есть мера средневзвешенного отклонения реализаций случайной величины от математического ожидания. В куче книжек показано, что в случае равномерного распределения дискретной случайной величины математическое ожидание есть среднее арифметическое всех реализаций, а дисперсия - среднее значение квадрата отклонения, т.е. сумма квадратов отклонений, деленная на количество проб.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
11.04.2013, 21:06 | #6 (permalink) |
Member
Регистрация: 29.01.2013
Сообщений: 91
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 565
|
Здравствуйте уважаемый Vladimir_S.
С N это действительно я пере умничал или не до умничал. В любом случаи спасибо а то так и помёр бы не просвещенным, за то теперь можно пойти спокойно умереть со стыда. |
11.04.2013, 21:57 | #7 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
А умирать - всегда успеете. Не надо. Давайте еще поживем. Во благо нерадивых студентов. |
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|