Распределения. Обобщенные функции и теоретические функции распределений ч.6. листинг 2

 

Листинг 2
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
using System;
using System.Collections.Generic;
using System.Text;
 
namespace Законы_распределения.Распределения
{
    public class Processing
    {
        private Распределения.OutValues ouVal;
        private Распределения.EnterValues enVal;
        private Распределения.Functoins Func;
        private Распределения.SwitchOn sOn;
        private double[] arF;
        public Processing(Распределения.OutValues ouVal, Распределения.EnterValues enVal,
            Распределения.Functoins Func, Распределения.SwitchOn sOn)
        {
            this.ouVal = ouVal;
            this.enVal = enVal;
            this.Func = Func;
            this.sOn = sOn;
        }
        public void Calculation()
        {
            double Int = (Math.Abs(Func.maxX(ouVal._arX)) + Math.Abs(Func.minX(ouVal._arX))) / (double)enVal._Ntb;
            double sumInt = Func.minX(ouVal._arX);
            ouVal._arTable = new double[enVal._Ntb, 7];
            arF = new double[enVal._Ntb];
            for (int i = 0; i < enVal._Ntb; i++)
            {
                ouVal._arTable[i, 0] = i + 1;
                sumInt += Int;
                ouVal._arTable[i, 1] = sumInt;
                for (int j = 0; j < enVal._N; j++)
                {
                    if (ouVal._arTable[i, 1] - Int <= ouVal._arX[j] && ouVal._arX[j] < ouVal._arTable[i, 1])
                    {
                        ouVal._arTable[i, 2]++;
                    }
                }
                ouVal._arTable[i, 4] = ouVal._arTable[i, 2] / (double)enVal._N;
                findF(Int);
                ouVal._arTable[i, 5] = arF[i];
                ouVal._arTable[i, 3] = ouVal._arTable[i, 5] * (double)enVal._N;
                ouVal._arTable[i, 6] = Func.Xi2(i);
            }
 
            ouVal._MatO = Func.MatOX();
            ouVal._Disp = Func.DispX(ouVal._MatO);
            ouVal._Sko = Func.SkoX(ouVal._Disp);
            ouVal._Xi2 = Func.sumXi2(ouVal._arTable);
            //
            ouVal._Sko_T = Math.Sqrt(ouVal._Disp_T);
            //
            ouVal._maxfFR = Func.maxFR();
            //
            Totals();
        }
        private void findF(double Int)
        {
            double[] arChG;
            int nG = 1;
            switch(sOn._rdChoice)
            {
                case 10://Равномерное
                    {
 
                        for (int i = 0; i < enVal._Ntb; i++)
                        {
                            arF[i] = Func.fR(Int, i);
                        }
                        Func.varR_T();
                        break;
                    }
                case 11://Нормальное
                    {
 
                        for (int i = 0; i < enVal._Ntb; i++)
                        {
                            arF[i] = Func.fNorm(Int, i);
                        }
                        Func.varNorm_T();
                        break;
                    }
            }
        }
        public void Totals()
        {
            ouVal._sumInt = 0;
            ouVal._sumNi = 0;
            ouVal._sumNi_T = 0;
            ouVal._sumCha = 0;
            ouVal._sumCha_T = 0;
            ouVal._sumXi2 = 0;
            for (int i = 0; i < enVal._Ntb; i++)
            {
                ouVal._sumInt += ouVal._arTable[i, 1];
                ouVal._sumNi += (int)(ouVal._arTable[i, 2]);
                ouVal._sumNi_T += ouVal._arTable[i, 3];
                ouVal._sumCha += ouVal._arTable[i, 4];
                ouVal._sumCha_T += ouVal._arTable[i, 5];
                ouVal._sumXi2 += ouVal._arTable[i, 6];
            }
        }
    }
}

Добавить комментарий