Advertisement
Guest User

Untitled

a guest
Oct 18th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.29 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <iomanip>
  4. #include <math.h>
  5. #include <vector>
  6. using namespace std;
  7.  
  8. void recursion();
  9. void uniform();
  10. void exponent();
  11.  
  12. int main()
  13. {
  14. cout << "Recursion method:" << endl; //2nd work, 1st task
  15. recursion();
  16. //cout << endl << endl << "Uniform distribution:" << endl;
  17. //uniform();
  18. //cout << endl << endl << "Exponential distribution:" << endl; //2nd work, 2nd task
  19. //exponent();
  20. system("pause");
  21. return 0;
  22. }
  23.  
  24. void recursion()
  25. {
  26. double Mat, D, sigma, sum = 0, sumd = 0, sumd_buff;
  27. double Z[100], x[100];
  28. double x1[100], q;
  29. int n = 100;
  30. int Z_1 = 12345,
  31. Z0 = 97531,
  32. a0 = 1,
  33. a1 = 1,
  34. M = 5000;
  35.  
  36. Z[0] = Z_1;
  37. Z[1] = Z0;
  38. for (int i = 2; i < n; i++)
  39. Z[i] = a0*Z[i - 2] + a1*Z[i - 1];
  40.  
  41. cout << "x:" << endl;
  42. for (int i = 0; i < n; i++)
  43. {
  44. x[i] = fmod(Z[i], M);
  45. x1[i] = x[i] / M;
  46. cout << x1[i] << endl;
  47. }
  48.  
  49. for (int i = 0; i < n; i++)
  50. {
  51. sum = sum + x1[i];
  52. sumd_buff = pow(x1[i], 2);
  53. sumd += sumd_buff;
  54. }
  55. Mat = sum / n;
  56. D = (sumd / n) - (pow(Mat, 2));
  57. sigma = sqrt(D);
  58. cout << "Mat = " << Mat << endl << "D = " << D << endl << "Sigma = " << sigma << endl;
  59.  
  60. //-----------2nd work-----------//
  61. double b = 0.9, t = 1.643, e1, e2, Id1, Id2, Im1, Im2, u4, us, u_buff, u_sum = 0, sigmaD;
  62. e1 = sigma * t;
  63. Id1 = Mat - e1;
  64. Id2 = Mat + e1;
  65. for (int i = 0; i < n; i++)
  66. {
  67. us = x1[i] - Mat;
  68. u_buff = pow(us, 4);
  69. u_sum += u_buff;
  70. }
  71. u4 = u_sum / n;
  72. sigmaD = sqrt((u4/n)-(((n-3)/(n*(n-1)))*pow(D,2)));
  73. e2 = sigmaD * t;
  74. Im1 = D - e2;
  75. Im2 = D + e2;
  76. cout << "Id = (" << Id1 << "; " << Id2 << ")" << endl;
  77. cout << "Im = (" << Im1 << "; " << Im2 << ")" << endl;
  78.  
  79. double Xnabl = 0, Xkrit = 11.0705, min = x1[0], max = x1[0], h, td;
  80. int k;
  81. for (int i = 0; i < n; i++)
  82. {
  83. if (x1[i] < min) min = x1[i];
  84. if (x1[i] > max) max = x1[i];
  85. }
  86. cout << "Xmax = " << max << endl << "Xmin = " << min << endl;
  87. h = max - min;
  88. k = 1 + log2(n);
  89. td = h / k;
  90. cout << "t = " << td << endl;
  91. vector<double> xi;
  92. for (int i = 0; i < k; i++)
  93. xi.push_back(min + i*td);
  94. xi.push_back(max);
  95. vector<int> mi;
  96. for (int i = 0; i < k; i++)
  97. mi.push_back(0);
  98. for (int i = 0; i < n; i++)
  99. for (int j = 0; j < k; j++)
  100. {
  101. if (x1[i] >= xi[j] && x1[i] <= xi[j + 1])
  102. {
  103. mi[j]++;
  104. break;
  105. }
  106. }
  107. double mi_;
  108. double summi, sumpow, sumnabl = 0;
  109. for (int i = 0; i < k; i++)
  110. {
  111. mi_ = (xi[i+1] - xi[i])*n; //1 - pow(e, (-jl*x[i])); //e = 2.72;
  112. summi = mi[i] - mi_;
  113. sumpow = pow(summi, 2);
  114. sumnabl += sumpow;
  115. }
  116. Xnabl = sumnabl / mi_;
  117. cout << "Pirson:" << endl << "Xkrit (0.05; 5) = " << Xkrit << endl << "Xnabl = " << Xnabl << endl;
  118. if (Xnabl < Xkrit) cout << "H0 is not rejected" << endl;
  119. else cout << "H0 is rejected" << endl;
  120. }
  121.  
  122. void uniform()
  123. {
  124. int n = 100;
  125. double r[100], x[100], Mat, D, sigmau, sum = 0, sumd_buff, sumd = 0, sigma;
  126. int b = rand(), a = rand() < b;
  127. cout << "a = " << a << ";" << setw(8) << "b = " << b << endl << "x:" << endl;
  128. for (int i = 0; i < n; i++)
  129. {
  130. r[i] = ((double)rand() / (RAND_MAX));
  131. x[i] = a + (b - a)*r[i];
  132. cout << x[i] << endl;
  133. }
  134.  
  135. for (int i = 0; i < n; i++)
  136. {
  137. sum = sum + x[i];
  138. sumd_buff = pow(x[i], 2);
  139. sumd += sumd_buff;
  140. }
  141. Mat = sum / n;
  142. D = (sumd / n) - (pow(Mat, 2));
  143. sigmau = sqrt(D);
  144. cout << "Mat = " << Mat << endl << "D = " << D << endl << "Sigma = " << sigmau << endl;
  145.  
  146. //------------2nd work---------//
  147. double t = 1.643, e1, e2, Id1, Id2, Im1, Im2, u4, us, u_buff, u_sum = 0, sigmaD;
  148. e1 = sigmau * t;
  149. Id1 = Mat - e1;
  150. Id2 = Mat + e1;
  151. for (int i = 0; i < n; i++)
  152. {
  153. us = x[i] - Mat;
  154. u_buff = pow(us, 4);
  155. u_sum += u_buff;
  156. }
  157. u4 = u_sum / n;
  158. sigmaD = sqrt((u4 / n) - (((n - 3) / (n*(n - 1)))*pow(D, 2)));
  159. e2 = sigmaD * t;
  160. Im1 = D - e2;
  161. Im2 = D + e2;
  162. cout << "Id = (" << Id1 << "; " << Id2 << ")" << endl;
  163. cout << "Im = (" << Im1 << "; " << Im2 << ")" << endl;
  164. }
  165.  
  166. void exponent()
  167. {
  168. int n = 100;
  169. double r[100], x[100], Mat, D, sigmau, sum = 0, sumd_buff, sumd = 0, sigma;;
  170. double jl = 0.8;
  171. cout << "x:" << endl;
  172. for (int i = 0; i < n; i++)
  173. {
  174. r[i] = ((double)rand() / (RAND_MAX));
  175. x[i] = (-1 / jl) * log(r[i]);
  176. cout << x[i] << endl;
  177. }
  178.  
  179. for (int i = 0; i < n; i++)
  180. {
  181. sum = sum + x[i];
  182. sumd_buff = pow(x[i], 2);
  183. sumd += sumd_buff;
  184. }
  185. Mat = sum / n;
  186. D = (sumd / n) - (pow(Mat, 2));
  187. sigmau = sqrt(D);
  188. cout << "Mat = " << Mat << endl << "D = " << D << endl << "Sigma = " << sigmau << endl;
  189.  
  190. //-----------2nd work----------//
  191. double b = 0.9, t = 1.643, e1, e2, Id1, Id2, Im1, Im2, u4, us, u_buff, u_sum = 0, sigmaD;
  192. e1 = sigmau * t;
  193. Id1 = Mat - e1;
  194. Id2 = Mat + e1;
  195. for (int i = 0; i < n; i++)
  196. {
  197. us = x[i] - Mat;
  198. u_buff = pow(us, 4);
  199. u_sum += u_buff;
  200. }
  201. u4 = u_sum / n;
  202. sigmaD = sqrt((u4 / n) - (((n - 3) / (n*(n - 1)))*pow(D, 2)));
  203. e2 = sigmaD * t;
  204. Im1 = D - e2;
  205. Im2 = D + e2;
  206. cout << "Id = (" << Id1 << "; " << Id2 << ")" << endl;
  207. cout << "Im = (" << Im1 << "; " << Im2 << ")" << endl;
  208.  
  209. double Xnabl = 0, Xkrit = 7.81, mi[100], mi_[100], sum1, sum2, sum3;
  210. for (int i = 0; i < n; i++)
  211. {
  212.  
  213. }
  214. cout << "Pirson:" << endl << "Xkrit (0.05; 3) = " << Xkrit << endl << "Xnabl = " << Xnabl << endl;
  215. if (Xnabl < Xkrit) cout << "H0 is not rejected" << endl;
  216. else cout << "H0 is rejected" << endl;
  217. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement