fork download
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. double function1(double t, double z1, double z2) {
  7. return t*z1+t*t*z2+3*t*t-t*(t*t*t-8)-t*t*(t+9);
  8. }
  9.  
  10. double function2(double t, double z1, double z2) {
  11. return t*t*t*z1+0.5*t*t*t*t-t*t*t*(t*t*t-8)-0.5*t*t*t*t*(t+9) ;
  12. }
  13.  
  14. double function3(double t, double z1, double z2) {
  15. return t*z1+t*t*z2+t;
  16. }
  17.  
  18. double function4(double t, double z1, double z2) {
  19. return t*t*t*z1+0.5*t*t*t*t*z2+ t*t*t;
  20. }
  21.  
  22. double function5(double t, double z1, double z2) {
  23. return t*z1+t*t*z2+t*t;
  24. }
  25.  
  26. double function6(double t, double z1, double z2) {
  27. return t*t*t*z1+0.5*t*t*t*t*z2+ 0.5*t*t*t*t;
  28. }
  29.  
  30. int main() {
  31. int N = 10;
  32. double z1[20], z2[20], x1[20], x2[20], t[20], h = 0.1, T = 1, Q[2][2], F[2], aF[2], L[100];
  33. double k11, k12, k21, k22, k31, k32, k41, k42, j11, j12, j21, j22, j31, j32, j41, j42, m11, m12, m21, m22, m31, m32, m41, m42;
  34. double B[2][2] = { { 2, 0 },{ 0, 2 } };
  35. double C[2][2] = { { -1, 0 },{ 0, -1 } };
  36. double d[2] = { -9, 8 };
  37. double I[2][2] = { { 1,0 },{ 0,1 } };
  38.  
  39. for (int i = 0; i < N; i++) {
  40. t[i] = i * h;
  41. z1[0] = 0;
  42. z2[0] = 0;
  43.  
  44. k11 = function1(t[i], z1[i], z2[i]);
  45. k12 = function2(t[i], z1[i], z2[i]);
  46.  
  47. k21 = function1(t[i] + h / 2, z1[i] + h * k11 / 2, z2[i] + h * k12 / 2);
  48. k22 = function2(t[i] + h / 2, z1[i] + h * k11 / 2, z2[i] + h * k12 / 2);
  49.  
  50. k31 = function1(t[i] + h / 2, z1[i] + h * k21 / 2, z2[i] + h * k22 / 2);
  51. k32 = function2(t[i] + h / 2, z1[i] + h * k21 / 2, z2[i] + h * k22 / 2);
  52.  
  53. k41 = function1(t[i] + h, z1[i] + h * k31, z2[i] + h * k32);
  54. k42 = function2(t[i] + h, z1[i] + h * k31, z2[i] + h * k32);
  55.  
  56. z1[i + 1] = z1[i] + h / 6 * (k11 + 2 * k21 + 2 * k31 + k41);
  57. z2[i + 1] = z2[i] + h / 6 * (k12 + 2 * k22 + 2 * k32 + k42);
  58. cout << z1[i]<<" "<<i << " z1 z2 " << z2[i] << endl;
  59. }
  60. cout << endl;
  61.  
  62. double w[2][2] = { 0 };
  63.  
  64. for (int i = 0; i < N; i++) {
  65. t[i] = i * h;
  66.  
  67. j11 = function3(t[i], w[0][0], w[1][0]);
  68. j12 = function4(t[i], w[0][0], w[1][0]);
  69.  
  70. j21 = function3(t[i] + h / 2, w[0][0] + h * k11 / 2, w[1][0] + h * k12 / 2);
  71. j22 = function4(t[i] + h / 2, w[0][0] + h * k11 / 2, w[1][0] + h * k12 / 2);
  72.  
  73. j31 = function3(t[i] + h / 2, w[0][0] + h * k21 / 2, w[1][0] + h * k22 / 2);
  74. j32 = function4(t[i] + h / 2, w[0][0] + h * k21 / 2, w[1][0] + h * k22 / 2);
  75.  
  76. j41 = function3(t[i] + h, w[0][0] + h * k31, w[1][0] + h * k32);
  77. j42 = function4(t[i] + h, w[0][0] + h * k31, w[1][0] + h * k32);
  78.  
  79. w[0][0] = w[0][0] + h / 6 * (j11 + 2 * j21 + 2 * j31 + j41);
  80. w[1][0] = w[1][0] + h / 6 * (j12 + 2 * j22 + 2 * j32 + j42);
  81. }
  82.  
  83. for (int i = 0; i < N; i++) {
  84. t[i] = i * h;
  85.  
  86. m11 = function5(t[i], w[0][1], w[1][1]);
  87. m12 = function6(t[i], w[0][1], w[1][1]);
  88.  
  89. m21 = function5(t[i] + h / 2, w[0][1] + h * k11 / 2, w[1][1] + h * k12 / 2);
  90. m22 = function6(t[i] + h / 2, w[0][1] + h * k11 / 2, w[1][1] + h * k12 / 2);
  91.  
  92. m31 = function5(t[i] + h / 2, w[0][1] + h * k21 / 2, w[1][1] + h * k22 / 2);
  93. m32 = function6(t[i] + h / 2, w[0][1] + h * k21 / 2, w[1][1] + h * k22 / 2);
  94.  
  95. m41 = function5(t[i] + h, w[0][1] + h * k31, w[1][1] + h * k32);
  96. m42 = function6(t[i] + h, w[0][1] + h * k31, w[1][1] + h * k32);
  97.  
  98. w[0][1] = w[0][1] + h / 6 * (m11 + 2 * m21 + 2 * m31 + m41);
  99. w[1][1] = w[1][1] + h / 6 * (m12 + 2 * m22 + 2 * m32 + m42);
  100. }
  101.  
  102. for (int i = 0; i < 2; i++) {
  103. for (int j = 0; j < 2; j++) {
  104. cout << w[i][j] << " w ";
  105. }
  106. cout << endl;
  107. }
  108.  
  109. for (int i = 0; i < 2; i++) {
  110. for (int j = 0; j < 2; j++) {
  111. Q[i][j] = B[i][j] + C[i][j];
  112. for (int k = 0; k < 2; k++)
  113. Q[i][j] += C[i][k] * w[k][j];
  114. }
  115. }
  116.  
  117. for (int i = 0; i < 2; i++) {
  118. for (int j = 0; j < 2; j++) {
  119. cout << Q[i][j] << " q ";
  120. }
  121. cout << endl;
  122. }
  123.  
  124. aF[0] = z1[N];
  125. aF[1] = z2[N];
  126. for (int i = 0; i < 2; i++) {
  127. F[i] = -d[i] + C[i][0] * aF[0] + C[i][1] * aF[1];
  128. cout << " F "<< F[i] << endl;
  129. }
  130. cout << endl;
  131.  
  132. L[1] = (Q[1][0] * F[0] - Q[0][0] * F[1]) / (Q[0][0] * Q[1][1] - Q[0][1] * Q[1][0]);
  133. L[0] = (-F[0] - Q[0][1] * L[1]) / Q[0][0];
  134. cout << "Lambdas: " << endl;
  135. cout << L[0] << " " << L[1] << endl;
  136.  
  137. cout << "t: " << "L1: " << "L2: " << endl;
  138. for (int i = 0; i <= N; i++) {
  139. t[i] = i * h;
  140. z1[0] = L[0];
  141. z2[0] = L[1];
  142.  
  143. k11 = function1(t[i], z1[i], z2[i]);
  144. k12 = function2(t[i], z1[i], z2[i]);
  145.  
  146. k21 = function1(t[i] + h / 2, z1[i] + h * k11 / 2, z2[i] + h * k12 / 2);
  147. k22 = function2(t[i] + h / 2, z1[i] + h * k11 / 2, z2[i] + h * k12 / 2);
  148.  
  149. k31 = function1(t[i] + h / 2, z1[i] + h * k21 / 2, z2[i] + h * k22 / 2);
  150. k32 = function2(t[i] + h / 2, z1[i] + h * k21 / 2, z2[i] + h * k22 / 2);
  151.  
  152. k41 = function1(t[i] + h, z1[i] + h * k31, z2[i] + h * k32);
  153. k42 = function2(t[i] + h, z1[i] + h * k31, z2[i] + h * k32);
  154.  
  155. z1[i + 1] = z1[i] + h / 6 * (k11 + 2 * k21 + 2 * k31 + k41);
  156. z2[i + 1] = z2[i] + h / 6 * (k12 + 2 * k22 + 2 * k32 + k42);
  157. cout << t[i] <<" "<< z1[i] << " " << z2[i] << endl;
  158. }
  159.  
  160. system("pause");
  161. return 0;
  162. }
Success #stdin #stdout #stderr 0s 4548KB
stdin
Standard input is empty
stdout
0     0 z1 z2   0
0.0380693     1 z1 z2   0.000192278
0.145019     2 z1 z2   0.00297564
0.310748     3 z1 z2   0.014592
0.525859     4 z1 z2   0.0447406
0.781437     5 z1 z2   0.106022
1.06917     6 z1 z2   0.213246
1.38182     7 z1 z2   0.382451
1.7142     8 z1 z2   0.629528
2.06446     9 z1 z2   0.968439

0.875799 w 0.62266 w 
0.451554 w 0.251308 w 
0.124201 q -0.62266 q 
-0.451554 q 0.748692 q 
 F 6.56425
 F -9.40917

Lambdas: 
-5.01714  9.54152
t:        L1:           L2:     
0      -5.01714      9.54152
0.1      -5.00103      9.54158
0.2      -4.94783      9.54247
0.3      -4.84992      9.54574
0.4      -4.69923      9.55315
0.5      -4.48704      9.56598
0.6      -4.20378      9.58472
0.7      -3.83874      9.60889
0.8      -3.37986      9.63731
0.9      -2.81334      9.66886
1      -2.12315      9.70388
stderr
sh: 1: pause: not found