Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 10.04.2013, 18:49   #1 (permalink)
Виктория 24
Новичок
 
Регистрация: 06.04.2013
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 34
По умолчанию Генерирование вещественных чисел

Здравствуйте! Пишу программу Генератор случайных чисел Методом Середины Квадратов на Delphi.
Мат.ожидание высчитывает правильно (примерно "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); // Дисперсия
Миниатюры
bdiag.jpg  
Вложения
Тип файла: rar Лаба 2.rar (238.9 Кб, 33 просмотров)
Виктория 24 вне форума   Ответить с цитированием

Старый 10.04.2013, 18:49
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Прочитайте пожалуйста аналогичные топики

Даны три положительных вещественных числа x, y, z
Сумма чисел
Написать подпрограмму обработки прямоугольной таблицы вещественных чисел
Вывести список положительных чисел, список отрицательных чисел на C#

Старый 10.04.2013, 20:29   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Виктория 24 Посмотреть сообщение
А то что-то не то высчитывает...
Естественно, не то. Потому что должно быть так:
sum2:= sum2 + sqr(chisla[j]-0.5);
Vladimir_S вне форума   Ответить с цитированием
Старый 10.04.2013, 20:58   #3 (permalink)
interacia
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;
в sum2 это будет дисперсия.
interacia вне форума   Ответить с цитированием
Старый 10.04.2013, 21:58   #4 (permalink)
Виктория 24
Новичок
 
Регистрация: 06.04.2013
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 34
По умолчанию

Цитата:
Естественно, не то. Потому что должно быть так:
sum2:= sum2 + sqr(chisla[j]-0.5);
Да, действительно, заработало!
Цитата:
Проще, в данной формуле откуда то взялось деление на N.Даже не знаю
что вам сказать в свое оправдание...
Может скриншот нашей лекции спасет
Вот что у меня получилось:
Код:
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;
Но как-то кривовато работает, если считает все аспекты сразу!
А если по отдельности, то правильно.
Миниатюры
10042013493.jpg  
Виктория 24 вне форума   Ответить с цитированием
Старый 11.04.2013, 09:49   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от interacia Посмотреть сообщение
в sum2 это будет дисперсия.
Извините, сударь, но НИ В КОЕМ СЛУЧАЕ! В Sum2 появится лишь сумма квадратов отклонений случайной величины от матожидания, каковая отнюдь дисперсией не является. По "физической" сути этот самый второй момент (дисперсия) есть мера средневзвешенного отклонения реализаций случайной величины от математического ожидания. В куче книжек показано, что в случае равномерного распределения дискретной случайной величины математическое ожидание есть среднее арифметическое всех реализаций, а дисперсия - среднее значение квадрата отклонения, т.е. сумма квадратов отклонений, деленная на количество проб.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 11.04.2013, 21:06   #6 (permalink)
interacia
Member
 
Регистрация: 29.01.2013
Сообщений: 91
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 565
По умолчанию

Здравствуйте уважаемый Vladimir_S.
С N это действительно я пере умничал или не до умничал.
В любом случаи спасибо а то так и помёр бы не просвещенным, за то теперь можно пойти спокойно умереть со стыда.
interacia вне форума   Ответить с цитированием
Старый 11.04.2013, 21:57   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от interacia Посмотреть сообщение
Здравствуйте уважаемый Vladimir_S.
С N это действительно я пере умничал или не до умничал.
В любом случаи спасибо а то так и помёр бы не просвещенным, за то теперь можно пойти спокойно умереть со стыда.
Ой! Что-то последнее время людей стал ненароком обижать... Извините. Кстати, сам, бывает, ляпы допускаю. И всегда прошу меня без экивоков харей тыкать, если кто заметит.
А умирать - всегда успеете. Не надо. Давайте еще поживем. Во благо нерадивых студентов.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 11:40.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.