Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 23.09.2011
Сообщений: 100

Правило для нахождения дисперсии

12.12.2013, 22:15. Показов 951. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задачка-то раз плюнуть, но тот предикат который я написала неверно считает. Дисперсию нахожу по формуле D=сумма((Xi-Xср)^2).
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
domains
i=real
tree=nil
;tr(i,tree,tree)
 
predicates
 tree_length(tree,i)
 tree_sum(tree,i)
 tree_sr(tree,i)
 dis(tree,i)
 
clauses
 tree_length (nil,0).
 tree_length(tr(_,L,R),N):-
        tree_length (L,N1), 
        tree_length (R,N2), 
        N=N1+N2+1.
        
 tree_sum (nil,0). 
 tree_sum(tr(X,L,R),N):-
       tree_sum (L,N1), 
       tree_sum (R,N2), 
       N=N1+N2+X.
       
 tree_sr (nil,0). 
 tree_sr(tr(X,L,R),N):-
      tree_sum(tr(X,L,R),N1), 
      tree_length(tr(_,L,R),N2),
      N=N1/N2.
      
 dis(nil,0).
 dis(tr(X,L,R),D):-
    tree_sr(tr(X,L,R),Xs),
    dis(L,D1),
    dis(R,D2),
    D=(X-Xs)*(X-Xs)+D1+D2.
    
goal
 %tree_sr(tr(2,tr(7,nil, nil),tr(3,tr(4,nil,nil),tr(1,nil,nil))),Sr).
 dis(tr(2,tr(7,nil, nil),tr(3,tr(4,nil,nil),tr(1,nil,nil))),Dispersiya).
Возвращает значение дисперсии 2,071, а должно получиться 21,2. Не поможете разобраться?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.12.2013, 22:15
Ответы с готовыми решениями:

Составьте правило нахождения номера первого вхождения
Составьте правило нахождения номера первого вхождения: 1. символа В в строку А; 2. строки В в строку А.

Написать рекурсивное правило для вычисления четных натуральных чисел в пределах n
Выручайте срочно надо

Программа в VBA для подсчёта дисперсии
В своё время прогулял лекции по VBA, а теперь жалею! кто может помочь с написанием проги для подсчёта дисперсии!:wall:

6
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
12.12.2013, 22:53
Да вроде правильно все получается, как это у Вас 21.2 получилось?
0
0 / 0 / 1
Регистрация: 23.09.2011
Сообщений: 100
12.12.2013, 23:11  [ТС]
Грымзик, я вручную посчитала и в экселе посчитала =( и там и там получились 21,2. А вот когда все элементы дерева заношу одинаковые, то бишь обнуляю возможную дисперсию, то программа как надо, выдает, что дисперсия = 0.
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
13.12.2013, 20:43
Да как это вы вручную так насчитали? Я вручную насчитала, все правильно - 2.071
0
0 / 0 / 1
Регистрация: 23.09.2011
Сообщений: 100
17.12.2013, 13:06  [ТС]
а вы по какой формуле считали? Я по этой: (2-3,4)^2+(7-3,4)^2+(3-3,4)^2+(4-3,4)^2+(1-3,4)^2=1,4^2+3,6^2+0,4^2+0,6^2+2,4^2=1,9 6+12,96+0,16+0,36+5,76=21,2. Мы явно считаем по каким-то разным формулам

Добавлено через 1 час 21 минуту
Ой, кстати, там в моей формуле еще все надо разделить на n, то бишь на 5. Тогда дисперсия = 4,24. Прописала это программе
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
domains
i=real
tree=nil
;tr(i,tree,tree)
 
predicates
 tree_length(tree,i)
 tree_sum(tree,i)
 tree_sr(tree,i)
 dis(tree,i)
 
clauses
 tree_length (nil,0).
 tree_length(tr(_,L,R),N):-
        tree_length (L,N1), 
        tree_length (R,N2), 
        N=N1+N2+1.
        
 tree_sum (nil,0). 
 tree_sum(tr(X,L,R),N):-
       tree_sum (L,N1), 
       tree_sum (R,N2), 
       N=N1+N2+X.
       
 tree_sr (nil,0). 
 tree_sr(tr(X,L,R),N):-
      tree_sum(tr(X,L,R),N1), 
      tree_length(tr(_,L,R),N2),
      N=N1/N2.
      
 dis(nil,0).
 dis(tr(X,L,R),D):-
    tree_sr(tr(X,L,R),Xs),
    tree_length(tr(X,L,R),Ver), %вот считаем количество вершин
    dis(L,D1),
    dis(R,D2),
    D=((X-Xs)*(X-Xs)+D1+D2)/Ver. %вот считаем дисперсию
    
goal
 dis(tr(2,tr(7,nil, nil),tr(3,tr(4,nil,nil),tr(1,nil,nil))),Dispersiya).
Теперь результат 0,399. Все равно не то
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
17.12.2013, 22:15
У нас разница во взгляданх на происхождение Xcр =) Я считала, что это среднее элементов текущего поддерева, а не всего большого дерева. Тогда tree_sr не должно быть в предикате dis, надо один раз вычислить
0
0 / 0 / 1
Регистрация: 23.09.2011
Сообщений: 100
18.12.2013, 12:11  [ТС]
Грымзик, верно =)я там вообще все переделала, выкладываю код, вдруг кому еще понадобиться
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
domains
i=real
tree=nil
;tr(i,tree,tree)
 
predicates
 tree_length(tree,i)
 tree_sum(tree,i)
 tree_sr(tree,i,i)
 dis(tree,i,i,i)
 dis1(tree,i)
 
 
clauses
 tree_length (nil,0).
 tree_length(tr(_,L,R),N):-
        tree_length (L,N1), 
        tree_length (R,N2), 
        N=N1+N2+1.
        
 tree_sum (nil,0). 
 tree_sum(tr(X,L,R),N):-
       tree_sum (L,N1), 
       tree_sum (R,N2), 
       N=N1+N2+X.
       
 tree_sr (nil,0,0). 
 tree_sr(tr(X,L,R),V,Sr):-
      tree_sum(tr(X,L,R),S), 
      tree_length(tr(_,L,R),V),
      Sr=S/V.
      
 dis(nil,_,_,0).
 dis(tr(X,L,R),Xsr,Versh,D):-
    dis(L,Xsr,Versh,D1),
    dis(R,Xsr,Versh,D2),    
    D=((X-Xsr)*(X-Xsr)/Versh)+D1+D2. %dolzhno byt=4,24
    
 dis1(nil,0).
 dis1(tr(X,L,R),D):-
    tree_sr(tr(X,L,R),V,Sr),
    dis(tr(X,L,R),Sr,V,Disp),
    D=Disp.
goal
 dis1(tr(2,tr(7,nil, nil),tr(3,tr(4,nil,nil),tr(1,nil,nil))),Dispersiya).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.12.2013, 12:11
Помогаю со студенческими работами здесь

Синхронизация потоков для вычисления дисперсии
Доброго времени суток. Необходима помощь с решением задачи. Задача состоит в следующем: 1. Есть выражение (в моем случае это вычисление...

Вычисление дисперсии для потока данных
Есть дискретный поток данных. Нужно рассчитать дисперсию для N последних значений, без использования буфера данных. В идеале...

Найти оценки для математического ожидания и дисперсии
По статистическим данным: 1. Построить полигон относительных частот и гистограмму; 2. Найти и построить статистическую функцию...

Cоставить формулу дисперсии для массива чисел
Есть массив arr. Нужно составить формулу для вычисления дисперсии. К сожалению в математике с этим не сталкивался, поэтому не имею...

Найти доверительные интервалы для среднего и дисперсии
Дан вариационный интервальный ряд, где n=66 -количество испытаний. Ищу интервал для генерального среднего (\bar{x}-({t}_{\gamma...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru