用TeeChart实现正态分布

来源:互联网 发布:拜占庭是罗马 知乎 编辑:程序博客网 时间:2024/06/04 17:57

   正态分布在日常生活工作中经常会碰到,今天讲下如何用TeeChart来实现正态分布图

1、准备一组数据,数据量要足够的大,太少了不行。100个测试数据如下:

ID      DataValue

1    15.0000
2    20.0000
3    20.9000
4    24.4000
5    24.5000
6    24.7000
7    25.0000
8    25.0000
9    25.2000
10    25.2000
11    25.3000
12    25.4000
13    25.6000
14    26.0000
15    26.0000
16    26.0000
17    26.2000
18    26.4000
19    26.6000
20    26.7000
21    26.8000
22    26.9000
23    26.9000
24    26.9000
25    26.9000
26    27.1000
27    27.1000
28    27.1000
29    27.2000
30    27.2000
31    27.3000
32    27.5000
33    27.6000
34    27.6000
35    27.6000
36    27.6800
37    27.7000
38    27.8000
39    27.8000
40    27.8000
41    28.0000
42    28.0000
43    28.2000
44    28.2000
45    28.2000
46    28.2000
47    28.2000
48    28.5000
49    28.6000
50    28.6000
51    28.6000
52    28.6000
53    28.7000
54    28.7000
55    28.8000
56    28.9000
57    29.3000
58    29.3000
59    29.6000
60    29.6000
61    29.7000
62    29.7000
63    29.8000
64    29.8000
65    29.8000
66    29.8000
67    29.8000
68    30.0000
69    30.0000
70    30.0000
71    30.0000
72    30.0000
73    30.0000
74    30.0000
75    30.0000
76    30.0000
77    30.0000
78    30.0000
79    30.0000
80    30.0000
81    30.0000
82    30.0000
83    30.6000
84    30.7000
85    30.8000
86    30.9000
87    31.6000
88    32.0000
89    32.0000
90    32.0000
91    32.5000
92    32.5000
93    32.8000
94    32.9000
95    34.1000
96    34.2000
97    35.0000
98    37.0000
99    37.8000
100    38.1000

2、根据这些数据计算出平均值和样本标准差,并进行分组统计

  U :=28.6528;//样本平均值
  S :=3.2422;//样本标准差

分组            数量

>=15~18    1
18~21         2
21~24         0
24~27        22
27~30        42
30~33        27
33~36        3
36~39        3

Max (数量)=42  ,峰值是28.5

3、正态分布函数

 f(x)=1/[SQRT(2*Pi)*S]  *Exp(-0.5*Power(X-U,2)/(S*S)----  公式可以通过百度找到

L1 :=U-3*s :=28.6528-3*3.2422 =18.9262 //下限

L2  :=U+3*s :=28.6528+3*3.2422 =38.3794 //上限

A :=1/(s*sqrt(2*pi)

4、画图

在TeeChart 中增加一个散点图

E :=-0.5*power(28.5-U,2)/(S*S);//28.5

A :=1/(s*sqrt(2*pi);

F :=A*Exp(E);

F :=42/F;

for I :=L1 to L2 do

{

E :=-0.5*POWER(I-U,2)/(s*s);

Y :=EXP(E);

Y :=A*Y;

Y :=F*A*Exp(E);

Chart1.SeriesList[1].AddXY(I,Y);

I :=I+0.0035;//  0.0035是控制曲线平滑度

}


  for I :=0 to 42 do
    {

      Chart1.SeriesList[1].AddXY(18.9262,I,'',clGreen);
      I :=I+0.005;//控制控制线的平滑度
    };



原创粉丝点击