Advertisement
Guest User

Untitled

a guest
Nov 14th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.22 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6.  
  7. vector<double> y = { 1, 1, 1 };
  8.  
  9.  
  10. vector<double> k1(3, 0), k2(3, 0), k3(3, 0), k4(3, 0);
  11.  
  12. double e =0.001f;
  13.  
  14. vector<vector<double>> A = {
  15. { -1.f / e, 1.f / e, 1.f / e },
  16. { 0, 1.f - 1.f / e, 0 },
  17. { 0, 0, 1.f }
  18. };
  19.  
  20. double h;
  21. double step = 0.0001f;
  22.  
  23. auto getK1() {
  24. vector<double> result(3, 0);
  25. for (int i = 0; i < 3; i++) {
  26. result[i] = step * (A[i][0] * y[0] + A[i][1] * y[1] + A[i][2] * y[2]);
  27. }
  28. return result;
  29. }
  30.  
  31. auto getK2() {
  32. vector<double> result(3, 0);
  33. for (int i = 0; i < 3; i++) {
  34. result[i] = step * (A[i][0] * (y[0] + k1[0]) + A[i][1] * (y[1] + k1[1]) + A[i][2] * (y[2] + k1[2]));
  35. }
  36. return result;
  37. }
  38.  
  39. auto getY() {
  40. vector<double> result(3, 0);
  41. for (int i = 0; i < 3; i++) {
  42. result[i] = y[i] + 0.5f * (k1[i] + k2[i]);
  43. }
  44. return result;
  45. }
  46.  
  47. int main() {
  48. double d = 1 / step;
  49. d = d / 10 + 0.1;
  50. int n = 1, p = d;
  51. for (h = 0 + step; h < 1; h += step, n++) {
  52. k1 = getK1();
  53. k2 = getK2();
  54. y = getY();
  55. if ((n % p) == 0)
  56. cout << h << "; " <<(double)y[0] << "; " <<(double)y[1] << "; " <<(double)y[2] << endl << endl;
  57. }
  58. system("pause");
  59. return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement