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

Найти математическое ожидание, дисперсию, и среднее квадратичное - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.91
hisp
0 / 0 / 0
Регистрация: 03.11.2010
Сообщений: 14
03.11.2010, 05:21     Найти математическое ожидание, дисперсию, и среднее квадратичное #1
извините, я новичок на форуме и не знаю куда податься
дана задача:
задается таблица:
x| x1 | x2 | x3 | xn |x++... |
p| p1 | p2 | p3 | pn |p++... |
Найти: математическое ожидание, дисперсию, и среднее квадратичное
отклонение- это все я реализовал ;
но не могу додуматься как реализовать:
сумма p(вероятностей) всегда должна равнятся 1; если один из элементов не известен , то его необходимо найти по формуле (1 - (сумма известных вероятностей)), т.е если P|P1|P2|P3=?| то P3=1-(P1+P2); Как это сделать?
Помогите, пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2010, 05:21     Найти математическое ожидание, дисперсию, и среднее квадратичное
Посмотрите здесь:

Среднее квадратичное отклонение C++
Математическое ожидание,Дисперсия C++
C++ Вычислить математическое ожидание, дисперсию и среднеквадратичное отклонение случайной величины
Среднее квадратичное отклонение от среднего арифметического C++
Найти Мат.ожидание M= (1/N) S X(i), дисперсию, сред. кв. отклонение C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Runa
 Аватар для Runa
130 / 82 / 3
Регистрация: 28.08.2009
Сообщений: 363
03.11.2010, 06:00     Найти математическое ожидание, дисперсию, и среднее квадратичное #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
printf("vvedite nomer neizvestnogo elementa p");
    scanf("%f",&f);
    float sum = 0;
    for(int i=0; i<n; i++)
    {
        if(i==f-1)
        {
            continue;
        }
        else
        {
            sum += p[i]; 
        }
    }
    float res = 1-sum;
    printf("neizvestni element = %f", res);
n - количество элементов p
f - номер элемента, который нужно вычислить
hisp
0 / 0 / 0
Регистрация: 03.11.2010
Сообщений: 14
03.11.2010, 06:17  [ТС]     Найти математическое ожидание, дисперсию, и среднее квадратичное #3
спасибо, попробую
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
03.11.2010, 17:45     Найти математическое ожидание, дисперсию, и среднее квадратичное #4
Можно вот так:
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
#include <iostream>
#include <stdexcept>
#include <deque>
#include <cmath>
 
const double eps = .0001;
 
class prob
{
    double  p;
    bool    defined;
 
public:
    prob()
        : p ( 0 ), defined ( false ) {}
 
    prob ( double _p )
    {
        define ( _p );
    }
 
    void define ( double _p )
    {
        if ( ( _p > 1 ) || ( _p < 0 ) )
            throw std::domain_error ( "Illegal value" );
        p = _p;
        defined = true;
    }
 
    void undef()
    {
        p = 0;
        defined = false;
    }
 
    bool isDefined() const
    {
        return defined;
    }
 
    double value() const
    {
        if ( !defined )
            throw std::logic_error ( "Value is not defined" );
 
        return p;
    }
 
    friend std::ostream& operator << ( std::ostream& os, const prob& rhs )
    {
        if ( rhs.defined )
            os << rhs.p;
        else
            os << "<undef>";
        return os;
    }
};
 
bool lookupAndSet ( std::deque<prob>& ps )
{
    std::deque<prob>::iterator it = ps.begin();
    while ( ( it != ps.end() ) && it->isDefined() )
        ++it;
 
    // Если нашли неопределенное значение
    if ( it != ps.end() )
    {
        double undefValue = 1;
        for ( std::deque<prob>::const_iterator i = ps.begin(); i != ps.end(); ++i )
            if ( i != it )
                undefValue -= i->value();
 
        if ( undefValue < 0 )
            throw std::domain_error ( "Illegal value" );
 
        it->define ( undefValue );
        return true;
    }
    else // Если все значения известны
    {
        // Проверяем, равна ли сумма вероятностей единице
        double sum = 0;
        for ( std::deque<prob>::const_iterator i = ps.begin(); i != ps.end(); ++i )
            sum += i->value();
        if ( fabs ( sum - 1 ) > eps )
            return false;
        return true;
    }
}
 
int main()
{
    int i;
    std::deque<prob>::const_iterator it;
 
    std::deque<prob> w;
 
    w.push_back ( prob ( .3 ) );
    w.push_back ( prob ( .027 ) );
    w.push_back ( prob( ) );
    w.push_back ( prob ( .42 ) );
    w.push_back ( prob ( .011 ) );
 
    // Печать вероятностей до установки неизвестной
    std::cout << "The given probabilities:" << std::endl;
    for ( it = w.begin(), i = 0; it != w.end(); ++it, ++i )
        std::cout << "p[" << i << "] = " << *it << std::endl;
 
    if ( !lookupAndSet ( w ) )
    {
        std::cerr << "Error: sum of probabilities is more than 1" << std::endl;
        std::cerr << "The execution is aborting..." << std::endl;
        return 1;
    }
 
    std::cout << std::endl <<
              "The probabilities after lookup:" << std::endl;
    // Печать вероятностей после установки неизвестной
    for ( it = w.begin(), i = 0; it != w.end(); ++it, ++i )
        std::cout << "p[" << i << "] = " << *it << std::endl;
    return 0;
}
hisp
0 / 0 / 0
Регистрация: 03.11.2010
Сообщений: 14
07.11.2010, 23:45  [ТС]     Найти математическое ожидание, дисперсию, и среднее квадратичное #5
конечно спасибо, только мне в этом еще разбираться и разбираться)

Добавлено через 2 часа 47 минут
а по проще нельзя:?)
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
08.11.2010, 03:36     Найти математическое ожидание, дисперсию, и среднее квадратичное #6
Цитата Сообщение от hisp Посмотреть сообщение
а по проще нельзя:?)
конечно можно! См. второй пост этой темы
hisp
0 / 0 / 0
Регистрация: 03.11.2010
Сообщений: 14
08.11.2010, 21:45  [ТС]     Найти математическое ожидание, дисперсию, и среднее квадратичное #7
у меня так получилось
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
int main()
{
  int i;
  int n;
  float sum=0;
  float st=0;
  cout << "vvedite kol-vo znach p:";
  cin >> n;
  float p[n];
  for (i=0;i<n;i++) 
  { 
        cout << "P" << i << "=";
        cin >> p[i];
  }
  for (i=0;i<n;i++)
  {
         if (p[i]!=0)
        {
              sum+=p[i];
              
        }
        
 } 
st=1-sum;
cout << st;
}
Runa
 Аватар для Runa
130 / 82 / 3
Регистрация: 28.08.2009
Сообщений: 363
09.11.2010, 02:09     Найти математическое ожидание, дисперсию, и среднее квадратичное #8
так получается, что у тебя вероятности, равной нулю вообще не бывает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2010, 20:35     Найти математическое ожидание, дисперсию, и среднее квадратичное
Еще ссылки по теме:

Определить математическое ожидание дискретной случайной величины C++
C++ Определить параметры распределения (мат.ожидание, дисперсию, СКО, коэф.корреляции)
C++ Найти среднее квадратичное элементов массива

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

Или воспользуйтесь поиском по форуму:
hisp
0 / 0 / 0
Регистрация: 03.11.2010
Сообщений: 14
09.11.2010, 20:35  [ТС]     Найти математическое ожидание, дисперсию, и среднее квадратичное #9
ну в общем да, только у препода спросил, сказал ничего страшного все равно в учебниках не дают такого, чтобы для этой задачи вероятность была нулевая
Yandex
Объявления
09.11.2010, 20:35     Найти математическое ожидание, дисперсию, и среднее квадратичное
Ответ Создать тему
Опции темы

Текущее время: 21:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru