Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
sektor2009
3 / 3 / 0
Регистрация: 15.03.2009
Сообщений: 339
#1

Расчитать Хи^2 - C++

29.05.2014, 17:29. Просмотров 306. Ответов 2
Метки нет (Все метки)

как для этой программы рассчитать ХИ^2 по этой формуле, а именно у нас все есть кроме pk - как его найти ? экспоненциального распределения

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h> 
#include <conio.h> 
#include <math.h>
#include <iostream>
#include<stdlib.h>
FILE *a;
double chisla[100000];//100000 рандомных чисел по вычетам
double X[100000];
double *interval;
double M=123456789;
double h=2;
double X21,X22;//Хи квадрат для 2-х случаев
double step;//шаг интервала
double U;//определяет начальное число для счёта количеств
bool complite=false;//число в этом интервале или нет
double c,b;//интервалы
int s=0;//промежуточное значение для числа
int kolvo;
int k=16; //количество интервалов
int i;
using namespace std;
C++
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
void tabl()//вывод таблицы на экран
{
    U=c;
    i=0;
    while(i<k)
    {
        cout<<"interval = ["<<U<<";"<<U+step<<") "<<"kol-vo = "<<interval[i]<<" Veroyatnost = "<<interval[i]/kolvo<<"\n";
        U=U+step;
        i++;
    }
}
void main(void)
{
 
cout<<"\n a = ";
cin>>c;
cout<<"\n b = ";
cin>>b;
 
    //1 пункт
    a=fopen("Exp_random.txt","w");
    chisla[0]=pow(2.0,-42.0);
    cout.precision(5);
 
    for(i=1;i<99999;i++)//расчёт рандомной величины (0;1)
    {
    chisla[i]=M*chisla[i-1];
    chisla[i]=fmod(chisla[i],1);
    //cout<<chisla[i]<<"\n";
    }
    interval=new double[k];
    for(i=0;i<k;i++)//обнуляем новый массив
    {
        interval[i]=0;
    }
    step=(b-c)/k;//определение шага
        for(i=0;i<99999;i++)//расчёт случайной величины экспоненциального распределения
    {
    X[i]=-h*log(chisla[i]);
        if(i%100==0)
    {
fprintf(a,"%f \n",X[i]);
    }//запись в файл
    //cout<<chisla[i]<<"\n";
    }
 
        i=0;    
        kolvo=0;
        while(i<100000)//цикл нахождения частот и СВ
        {
                s=0;
                U=c;
                complite=false;
            while(complite==false&&X[i]>c&&X[i]<b)
            {
                if(U<X[i]&&X[i]<U+step)//проверяем какому промежутку принадлежит число
                {
                    complite=true;
                    interval[s]++;//определяем количество попаданий
                    kolvo++;
                }
                else
                {
                    U=U+step;//переходим на следующий отрезок
                }
                s++;
            }
 
            i++;
        }
        X21=0;
        X22=0;
        for(i=0;i<k;i++)//нахождение хи квадрат для первого случая
        {
            X21+=(pow(interval[i]-kolvo*((interval[i])/(kolvo)),2))/(kolvo*((interval[i])/(kolvo)));
        }
        tabl();
        cout<<"\n X2 = "<<X21<<"\n";
    
 
        //пункт 2
for(i=0;i<k;i++)//обнуляем новый массив
    {
        interval[i]=0;
    }
 
i=0;
fclose(a);
a=fopen("Obr_F.txt","w");
while(i<100000)//генерация случайной величины на отрезке cb
{
    X[i]=c+chisla[i]*(b-c);
    if(i%100==0)
    {
fprintf(a,"%f \n",X[i]);
    }
i++;
}
i=0;
kolvo=0;
while(i<100000)//цикл нахождения частот и СВ
        {
                s=0;
                U=c;
                complite=false;
                while(complite==false&&X[i]>c&&X[i]<b)
            {
                if(U<X[i]&&X[i]<U+step)//проверяем какому промежутку принадлежит число
                {
                    complite=true;
                    interval[s]++;//определяем количество попаданий
                    kolvo++;
                }
                else
                {
                    U=U+step;//переходим на следующий отрезок
                }
                s++;
            }
 
            i++;
        }
        for(i=0;i<k;i++)//нахождение хи квадрат для второго случая
        {
            X22+=(pow(interval[i]-kolvo*((interval[i])/(kolvo)),2))/(kolvo*((interval[i])/(kolvo)));
        }
        tabl();
        cout<<" \n X2 = "<<X22<<"\n";
        fclose(a);
        system("PAUSE");
    
}
Миниатюры
Расчитать Хи^2  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2014, 17:29     Расчитать Хи^2
Посмотрите здесь:

матрицу в С++ надо расчитать - C++
помогите пожалуйста, срочно надоТекстовую часть задания набирайте вручную.

Расчитать объём куба(по условию!) - C++
Здравствуйте дорогие форумчане, прошу помочь с расчетом объёма куба. Ниже прилагаю свои варианты, которые увы не смогли пройти...

расчитать значение выражения по формуле - C++
Делаю лабораторную работу. Необходимо написать программу, чтобы высчитывать по формуле, которая есть на рисунке во вложениях. По этой...

Необходимо расчитать значение по формуле - C++
Поставлена задача расчитать х по формуле \frac{sinx}{x} = \sum_{n = 0}^{\infty}\frac{{(-1)}^{n}{x}^{2n}}{(2n+1)!} при |x| &lt; ∞, где...

Расчитать значение функии f(x) по соответсвующей формуле. - C++
Добрый день, вот моё задание: Составьте алгоритм программы, которая принимает от пользователя значение x и в зависимости от его...

Как расчитать растояние на координатной плоскости напрямую? - C++
по пиратской карте даются указания куда идти (направление и число шагов) шаги всегда целые нужно расчитать расстояние напрямую до...

Расчитать значение числового ряда. Помогите найти ошибки. - C++
Необходимо расчитать значение числового ряда:Сумма(от n=1 до бесконечности) 1/((2n-1)*(2n+1)) =1/2 --&gt;(значение стремится к 0.5) И...

Расчитать величину и направление относа парашютиста, относительно точки десантирования - C++
Вот задача; имеется массив, содержащий данные о силе и направлении ветра на различных высотах. Произведена выброска парашютного десанта....

Расчитать зарплату госслужащего исходя из количества отработанных часов и почасовой ставки работника - C++
Здравствуйте, ув. программисты. Наткнулся на задачу. Ниже условия: &quot;Необходимо расчитать зарплату госслужащего исходя из...

Расчитать значения переменных y и z по заданным формулам, используя для ввода/вывода cin и cout - C++
Расчитать значения переменных y и z по заданным формулам (табл. 1). Для ввода/вывода использовать объекты cin и cout. Определить...

Расчитать значения переменных y и z по заданным формулам, используя для ввода/вывода cin и cout - C++
Расчитать значения переменных y и z по заданным формулам . Для ввода/вывод использовать объекты cin и cout. Определить разность между...

Расчитать - Pascal ABC
Пользователь вводит с клавиатуры число n. Расчитать с помощью цикла (Условие добавил во вложение картинкой) Я решил вот так, правильно...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
29.05.2014, 18:00     Расчитать Хи^2 #2
берешь значения функции распределения на границах интервала и находишь разность, че... при чем тут язык си плюс плюс?
sektor2009
3 / 3 / 0
Регистрация: 15.03.2009
Сообщений: 339
29.05.2014, 18:25  [ТС]     Расчитать Хи^2 #3
программа на Си++ Хи2 СЧИТАЕТ НЕ ПРАВЕЛЬНО , я ваш ответ не понял какую функцию берем??
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru