Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru

RusFAQ.ru: Программирование на языке Pascal

Выпуск № 334
от 22.10.2004, 22:30

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 532
Отправлено ответов: 2027
Активность: 381.0 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Strory
Статус: Опытный
Общий рейтинг: 163.73
URL: МУАТ
Телефон: +7 (845-3) 54-16-74
[Подробней >>]
Boriss
Статус: Профессиональный
Общий рейтинг: 157.1
URL: Программирование на Паскале
[Подробней >>]
Tancho
Статус: Профессиональный
Общий рейтинг: 144.54
Телефон: сл. 0359 0391 65 631; 0359 0391 53 105
[Подробней >>]
 
Tigran K. Kalaidjian
Статус: Профессиональный
Общий рейтинг: 180.03
URL: Персональная страничка
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 531. Уважаемые Эксперты. Есть массив чисел real. нужно посчитать мат. ожидание и дисперсию. Пишу proced... (ответов: 4)

Вопросов: 1, ответов: 4


 Вопрос № 531


Уважаемые Эксперты.
Есть массив чисел real.
нужно посчитать мат. ожидание и дисперсию.
Пишу
procedure raschet;
begin
summa:=0;
summaq:=0;
sigma:=0;
for i:=0 to n do
begin
summa:=summa+r[i];
summaq:=summaq+sqr(r[i]);
end;
mo:=(1/n)*summa;
k1:=(1/n)*summaq;
k2:=((1/sqr(n)))*(sqr(summa));
sigma:=k1-k2; {((1/n)*summaq)-((1/sqr(n))*(sqr(summa)));}
writeln ('математическое ожидание - ',mo:8:3);
writeln ('дисперсия - ',sigma:8:3);
end;
получается ерунда : sigma(дисперсия) бывает меньше ноля.
если ктото из вас помнит статистику подкажите где ошибка в расчете sigma.
Массив чисел создается в других процедурах.
Заранее благодарен!



Вопрос отправлен: 19.10.2004, 22:28
Отправитель: Vlad (ivchencov@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Strory

Здравствуйте, Vlad!
Немного не по теме, но всё-же (статистику не помню ;)). В данном случае оптимизация, возможно, не совсем необходима, но нужно привыкать к хорошему стилю. Итак:
1) конструкции типа (summa:=summa+r[i];) нужно заменять на (inc(summa,r[i]););
2) лучше не использовать временные переменные и заменить
k1:=(1/n)*summaq;
k2:=((1/sqr(n)))*(sqr(summa));
sigma:=k1-k2;
на
sigma:=(1/n)*summaq-((1/sqr(n)))*(sqr(summa));
Для понимания, конечно, хуже, но для компилятора просто рай ;)
По оформлению:
1) все мы люди и приводить лучше щедро прокомментированный и полный код (а не одна процедура);
2) сам код обязательно вставлять в приложение, т.к. оформлениие (а именно ведущие пробелы) теряются и опять же код сложно читать.

ЗЫ Это ко всем подписчикам...

Ответ отправлен: 20.10.2004, 00:21
Отправитель: Strory


Отвечает Boriss

Добрый день, Vlad!
Это делается примерно так:
(дисперсию лучше считать по ее исходной формуле)

Приложение:

Ответ отправлен: 20.10.2004, 09:06
Отправитель: Boriss


Отвечает Tancho

Добрый день, Vlad!
Как видно из твоя прога у тебе дискретная случайная величина принимает n+1 - стойностях( от 0 до n ), а в таком
случае надо делить не на n, а на n+1!Или просумировай от 1 до n, и тогда можно делит на n!Иначе в формулах для математического ожиданию и дисперсию по моему других ошибок нет!

Ответ отправлен: 20.10.2004, 10:29
Отправитель: Tancho


Отвечает Tigran K. Kalaidjian

Доброе время суток, Vlad!
Насколько я помню, Sigma = summa((r[i] - mo)^2)/(n-1).
Организуйте цикл для суммы квадратов разности r[i] и mo, затем разделите на (n-1)
Если нужна рабочая программа по теме (на Turbo C) или подсчёт МНК (на Turbo Pascal) - пишите на kalaidjian@pochtamt.ru

Ответ отправлен: 21.10.2004, 21:02
Отправитель: Tigran K. Kalaidjian



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (26)
C / C++ (18)
Perl (8)
Builder / Delphi (17)
Pascal (20)
Basic / VBA (9)
Java / JavaScript (6)
PHP (18)
Криптография (8)
WinAPI (15)
Радиоэлектроника (15)
Пользователю
Windows 95/98/Me (43)
Windows NT/2000/XP (62)
"Железо" (39)
Поиск информации (21)
Администратору
Windows NT/2000/XP (37)
Linux / Unix (15)
Юристу
Гражданское право (7)
Семейное право (4)
Трудовое право (6)
КоАП (5)

Отправить вопрос всем экспертам выбранной рассылки.





http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.pasplus
Отписаться

В избранное