Advertisement
Guest User

Untitled

a guest
Nov 15th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.66 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using static System.Math;
  7.  
  8.  
  9.  
  10.  
  11. namespace ConsoleApplication2
  12. {
  13.  
  14. class Program
  15.  
  16. {
  17.  
  18.  
  19. public static double fun(double x, double y, double n,double T)
  20. {
  21. double tau = (T) / (n - 1);
  22. return (Cos(0.8 * tau * y) - x);
  23. }
  24.  
  25. static void Main(string[] args)
  26.  
  27. {
  28.  
  29.  
  30. //задача о вынужденных колебаниях
  31.  
  32. //метод эйлера
  33.  
  34. int n = 1000;
  35.  
  36. double w0 = 1;
  37.  
  38. double lam = 0.8;
  39.  
  40. double t0 = 0;
  41.  
  42. double T = 10*PI;
  43.  
  44. double x0 = 0; double v0 = 0;//начальные условия
  45.  
  46. double[] vn = new double[n + 1];
  47.  
  48. vn[0] = v0;
  49.  
  50. double[] xn = new double[n + 1];
  51.  
  52. xn[0] = x0;
  53.  
  54. double tau = (T - t0) / (n-1);
  55.  
  56. System.IO.StreamWriter textFile1 =
  57.  
  58. new System.IO.StreamWriter(@"E:\8_euler.txt");
  59. double t=0;
  60. for (int i = 1; i <= n; i++)
  61.  
  62. {
  63. t = i;
  64. vn[i] = vn[i - 1] + tau * (- w0 * w0 * xn[i - 1]+Cos(lam*tau*t));
  65.  
  66. xn[i] = xn[i - 1] + tau * vn[i - 1];
  67.  
  68. Console.Write(xn[i] + " ");
  69.  
  70. textFile1.WriteLine(xn[i]);
  71.  
  72. }
  73.  
  74. textFile1.Close();
  75.  
  76. //метод эйлера-кромера
  77.  
  78. System.IO.StreamWriter textFile2 =
  79.  
  80. new System.IO.StreamWriter(@"E:\8_eulerkromer.txt");
  81.  
  82. for (int i = 1; i <= n; i++)
  83.  
  84. {
  85.  
  86. vn[i] = vn[i - 1] + tau * (-w0 * w0 * xn[i - 1] + Cos(lam * tau * t));
  87.  
  88. xn[i] = xn[i - 1] + tau * vn[i];
  89.  
  90. Console.Write(xn[i] + " ");
  91.  
  92. textFile2.WriteLine(xn[i]);
  93.  
  94. }
  95.  
  96. textFile2.Close();
  97.  
  98.  
  99.  
  100.  
  101. //метод рунге кутта
  102.  
  103. System.IO.StreamWriter textFile3 =
  104.  
  105. new System.IO.StreamWriter(@"E:\8_rungekutt.txt");
  106.  
  107. for (int i = 1; i <= n; i++)
  108.  
  109. {
  110. t = i;
  111. double k0 = fun(xn[i - 1],t,n, T) ;
  112.  
  113. double k1 = fun(xn[i - 1]+tau/2, t, n, T);
  114.  
  115. double k2 = fun(xn[i - 1]+tau/2, t, n, T);
  116.  
  117. double k3 = fun(xn[i - 1] + tau, t, n, T);
  118.  
  119. vn[i] = vn[i - 1] + tau / 6 * (k0 + 2 * k1 + 2 * k2 + k3);
  120.  
  121. xn[i] = xn[i - 1] + tau * vn[i];
  122.  
  123. Console.Write(xn[i] + " ");
  124.  
  125. textFile3.WriteLine(xn[i]);
  126.  
  127. }
  128.  
  129. textFile3.Close();
  130.  
  131. }
  132.  
  133. }
  134.  
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement