Advertisement
golim22

Untitled

Apr 10th, 2018
325
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.91 KB | None | 0 0
  1.  
  2.  
  3. #include <iostream>
  4. #include <cmath>
  5. #include <ctime>
  6. #include <fstream>
  7. #include <iomanip>
  8. using namespace std;
  9.  
  10.  
  11. double f(double);
  12. double fa(double);
  13.  
  14.  
  15. int main()
  16. {
  17. const int nm = 2;
  18. double *YE, *YB, *YB50, *OS1E, *OS2E, *OS1B, *OS2B, t = 0, k = 0, h1 = 0.2, h2 = 0.02, w = 1, *w4;
  19. ofstream fout;
  20. char fname[15] = "Ish_dannye.txt";
  21.  
  22.  
  23.  
  24. char const* pS[nm] = { "1. Diffury.",
  25. "0. Exit."
  26. };
  27. int v;
  28. do
  29. {
  30. cout << "\nMenu\n";
  31. for (int i = 0; i < nm; i++) cout << pS[i] << endl;
  32. cout << "\nYour choice - > ";
  33. cin >> v;
  34. cin.get();
  35.  
  36. switch (v)
  37. {
  38. case 1:
  39. cout << "\n" << pS[0] << "\n\n";
  40.  
  41.  
  42. YE = new double[500];
  43. YB = new double[500];
  44. YB50 = new double[50];
  45. OS1E = new double[50];
  46. OS2E = new double[500];
  47. OS1B = new double[50];
  48. OS2B = new double[500];
  49. w4 = new double[4];
  50.  
  51. //Ejler
  52. YE[0] = 1; OS1E[0] = 0; OS2E[0] = 0; w4[0] = 1;
  53. for (int i = 1; i < 500; i++)
  54. {
  55. k = k + 0.2; t = t + 0.02;
  56. if (i < 50)
  57. {
  58. YE[i] = w + h1*f(w);
  59. w = YE[i];
  60. OS1E[i] = fa(k) - YE[i];
  61. cout << fa(k) << " - " << YE[i] << " = " << fa(k) - YE[i] << endl;
  62. //cin.get();
  63. if (i < 4)
  64. {
  65. w4[i] = YE[i];
  66. }
  67.  
  68. }
  69. YE[i] = YE[i - 1] + h2*f(YE[i - 1]);
  70. OS2E[i] = fa(t) - YE[i];
  71. }
  72. //Adams-Bawfort
  73. k = 0.6; t = 0.06;
  74. YB[0] = 1; OS1B[0] = 0; OS2B[0] = 0; YB50[0] = 1;
  75. for (int i = 1; i < 500; i++)
  76. {
  77. if (i < 4)
  78. {
  79. YB[i] = YE[i];
  80. YB50[i] = w4[i];
  81. OS1B[i] = OS1E[i]; OS2B[i] = OS2E[i];
  82. cout << " - " << YB50[i] << " (" << YE[i] << ") = " << "_________________" << endl;
  83.  
  84. //cin.get();
  85. }
  86. else
  87. {
  88. t = t + 0.01; k = k + 0.05;
  89. if (i < 50)
  90. {
  91. YB50[i] = YB50[i - 1] + (h1 / 24)*(55 * f(YB50[i - 1]) - 59 * f(YB50[i - 2]) + 37 * f(YB50[i - 3]) - 9 * f(YB50[i - 4])); //метод Адамса
  92. YB50[i] = YB50[i - 1] + (h1 / 24)*(9 * f(YB50[i]) + 19 * f(YB50[i - 1]) - 5 * f(YB50[i - 2]) + f(YB50[i - 3])); //Метод Башфорта
  93. OS1B[i] = fa(k) - YB50[i];
  94. cout << fa(k) << " - " << YB50[i] << " (" << YE[i] << ") = " << fa(k) - YB50[i] << endl;
  95. //cin.get();
  96. }
  97. YB[i] = YB[i - 1] + (h2 / 24)*(55 * f(YB[i - 1]) - 59 * f(YB[i - 2]) + 37 * f(YB[i - 3]) - 9 * f(YB[i - 4])); //метод Адамса-Башфорта
  98. YB[i] = YB[i - 1] + (h2 / 24)*(9 * f(YB[i]) + 19 * f(YB[i - 1]) - 5 * f(YB[i - 2]) + f(YB[i - 3]));
  99. OS2B[i] = fa(t) - YB[i];
  100. }
  101. }
  102.  
  103. fout.open(fname);
  104. fout << "Ejler znachenija:" << endl;
  105. for (int i = 0; i < 500; i++)
  106. {
  107. fout << YE[i] << " ";
  108. }
  109. fout << endl << endl;
  110.  
  111. fout << "Ejler owibki h1=0.2:" << endl;
  112. for (int i = 0; i < 50; i++)
  113. {
  114. fout << OS1E[i] << " ";
  115. }
  116. fout << endl << endl;
  117.  
  118. fout << "Ejler owibki h2=0.02:" << endl;
  119. for (int i = 0; i < 500; i++)
  120. {
  121. fout << OS2E[i] << " ";
  122. }
  123. fout << endl << endl;
  124.  
  125. fout << "Adams-Bawf znachenija:" << endl;
  126. for (int i = 0; i < 500; i++)
  127. {
  128. fout << YB[i] << " ";
  129. }
  130. fout << endl << endl;
  131.  
  132. fout << "Adams-Bawf owibki h1=0.2:" << endl;
  133. for (int i = 0; i < 50; i++)
  134. {
  135. fout << OS1B[i] << " ";
  136. }
  137. fout << endl << endl;
  138.  
  139. fout << "Adams-Bawf owibki h2=0.02:" << endl;
  140. for (int i = 0; i < 500; i++)
  141. {
  142. fout << OS2B[i] << " ";
  143. }
  144. fout << endl << endl;
  145. fout.close();
  146.  
  147. break;
  148.  
  149.  
  150.  
  151. case 0:
  152. delete[] YE;
  153. delete[] YB;
  154. delete[] YB50;
  155. delete[] OS1E;
  156. delete[] OS2E;
  157. delete[] OS1B;
  158. delete[] OS2B;
  159. delete[] w4;
  160.  
  161. break;
  162. default: cout << "\nIllegal choice\n\n";
  163. }
  164. } while (v != 0);
  165.  
  166.  
  167.  
  168. return 0;
  169. }
  170.  
  171.  
  172.  
  173. double f(double x)
  174. {
  175. double xy = 0;
  176. xy = 0.15*x - 0.03*x*x;
  177.  
  178. return xy;
  179. }
  180.  
  181. double fa(double t)
  182. {
  183. double xya = 0;
  184. xya = (0.15*exp(0.15*t)) / (0.12 + 0.03*exp(0.15*t));
  185.  
  186. return xya;
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement