Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2017
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.14 KB | None | 0 0
  1. // D_URR_Szymanek_Piotr.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6. #include <math.h>
  7.  
  8. using namespace std;
  9.  
  10. double f1(double t, double x, double y);
  11. double f2(double t, double x, double y);
  12. void k1(double t, double x, double y);
  13. void k2(double t, double x, double y);
  14. void k3(double t, double x, double y);
  15. void k4(double t, double x, double y);
  16. void x1();
  17. int r = 2;
  18. double h = pow(10, -4);
  19. double K1[2], K2[2], K3[2], K4[2], X[2] = { 1,1 };
  20.  
  21. int main()
  22. {
  23. int i = 0;
  24. double t = 0, t0 = 1;
  25. while (t != 3)
  26. {
  27. t = t0 + i*h;
  28. k1(t, X[0], X[1]);
  29. k2(t, X[0], X[1]);
  30. k3(t, X[0], X[1]);
  31. k4(t, X[0], X[1]);
  32. x1();
  33. i++;
  34. }
  35. cout <<"Tk= "<< t << endl;
  36. cout << "X0= " << X[0] << endl;
  37. cout << "X1= " << X[1] << endl;
  38. cout << "h=" << h << endl;
  39. system("PAUSE");
  40. return 0;
  41. }
  42.  
  43. double f1(double t, double x, double y)
  44. {
  45. return (-x / t)+ y;
  46. }
  47.  
  48. double f2(double t, double x, double y)
  49. {
  50. return (-2.0 *x) / (t*t) + y / t;
  51. }
  52.  
  53. void k1(double t, double x, double y)
  54. {
  55. double pom = 0;
  56. for (int i = 0; i<r; i++)
  57. {
  58. switch (i)
  59. {
  60. case 0: pom = h*f1(t, x, y); break;
  61. case 1: pom = h*f2(t, x, y); break;
  62. }
  63. K1[i] = pom;
  64. }
  65. }
  66.  
  67. void k2(double t, double x, double y)
  68. {
  69. double pom = 0;
  70. for (int i = 0; i<r; i++)
  71. {
  72. switch (i)
  73. {
  74. case 0: pom = h*f1(t + 0.5*h, x + 0.5*K1[0], y + 0.5*K1[1]); break;
  75. case 1: pom = h*f2(t + 0.5*h, x + 0.5*K1[0], y + 0.5*K1[1]); break;
  76. }
  77. K2[i] = pom;
  78. }
  79. }
  80.  
  81. void k3(double t, double x, double y)
  82. {
  83. double pom = 0;
  84. for (int i = 0; i<r; i++)
  85. {
  86. switch (i)
  87. {
  88. case 0: pom = h*f1(t + 0.5*h, x + 0.5*K2[0], y + 0.5*K2[1]); break;
  89. case 1: pom = h*f2(t + 0.5*h, x + 0.5*K2[0], y + 0.5*K2[1]); break;
  90. }
  91. K3[i] = pom;
  92. }
  93. }
  94.  
  95. void k4(double t, double x, double y)
  96. {
  97. double pom = 0;
  98. for (int i = 0; i<r; i++)
  99. {
  100. switch (i)
  101. {
  102. case 0: pom = h*f1(t + h, x + K3[0], y + K3[1]); break;
  103. case 1: pom = h*f2(t + h, x + K3[0], y + K3[1]); break;
  104. }
  105. K4[i] = pom;
  106. }
  107. }
  108.  
  109. void x1()
  110. {
  111. for (int i = 0; i<r; i++)
  112. X[i] = X[i] + 1.0 / 6 * (K1[i] + 2 * K2[i] + 2 * K3[i] + K4[i]);
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement