golim22

Untitled

Apr 10th, 2018
284
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.57 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4. #define AMOUNT 1000
  5. int main() { //явный метод эйлера. след. итерация вычисляется на основе пред. значения
  6. //одношаговый
  7. double a = 0.9, b = 0.1, h = 0.01, Y[AMOUNT];
  8. Y[0] = 1;
  9. ofstream file;
  10. file.open("zopka.txt", fstream::trunc);
  11. //4islennij
  12. //cout << "y_0: " << Y[0] << endl;
  13. for (int i = 1; i < AMOUNT; i++) {
  14. Y[i] = Y[i - 1] + h * (a * Y[i - 1] - b * pow(Y[i - 1], 2));
  15. if (AMOUNT == 1000) {
  16. if (i % 2 != 0) {
  17. //cout << "y_" << i << ": " << Y[i] << endl;
  18. file << Y[i] << endl;
  19. }
  20. }
  21. else {
  22. //cout << "y_" << i << ": " << Y[i] << endl;
  23. file << Y[i] << endl;
  24. }
  25. }
  26. int x = a / h;
  27. //cout << endl << "Result" << endl;
  28. //cout << endl << "Analyth y_" << x << " (t) = " << (Y[0] * a * exp(a * h)) / (a + b * Y[0] * (exp(a * h) - 1)) << endl;
  29. //cout << endl << "Euler method y_" << x << " (t) = " << Y[x] << endl<<endl;
  30. // analyth
  31. ofstream file1;
  32. file1.open("zopka2.txt", fstream::trunc);
  33. //cout << "y_0: " << Y[0] << endl;
  34. for (int j = 1; j < AMOUNT; j++) {
  35.  
  36. Y[j] = (Y[0] * a * exp(a * h * j)) / (a + b * Y[0] * (exp(a * h * j) - 1));
  37. if (AMOUNT == 1000) {
  38. if (j % 2 != 0) {
  39. //cout << "y_" << j << ": " << Y[j] << endl;
  40. file1 << Y[j] << endl;
  41. }
  42. }
  43. else {
  44. //cout << "y_" << j << ": " << Y[j] << endl;
  45. file1 << Y[j] << endl;
  46. }
  47. }
  48.  
  49. file.close();
  50. file1.close();
  51. system("PAUSE");
  52. }
  53.  
  54. //метод ад.башфорда неявный, многошаговый
Add Comment
Please, Sign In to add comment