Advertisement
JohnByte

Lab Shit 3

Oct 18th, 2017
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.33 KB | None | 0 0
  1.  static void task3()
  2.         {
  3.             Console.Write("Введите левую и правую границы интервала, шаг и точность (через пробел): ");
  4.             string[] tokens = Console.ReadLine().Split(' ');
  5.             double xL, xR, dx, e;
  6.             double[] taylor = new double[2];
  7.  
  8.             try
  9.             {
  10.                 xL = Convert.ToDouble(tokens[0]);
  11.                 xR = Convert.ToDouble(tokens[1]);
  12.                 dx = Convert.ToDouble(tokens[2]);
  13.                 e = Convert.ToDouble(tokens[3]);
  14.  
  15.                 Console.WriteLine("x   y(точн)   y(прибл)   n");
  16.                 if (xL > xR)
  17.                 {
  18.                     Console.WriteLine("Левая граница не должна превышать правую границу");
  19.                 } else if ((xL <= -1) || (xR > 1))
  20.                 {
  21.                     Console.WriteLine("Левая граница должна быть больше 1, а правая - не превышать 1");
  22.                 } else
  23.                 {
  24.                     for (double x = xL; x <= xR; x += dx)
  25.                     {
  26.                         Console.Write(x + "   ");
  27.                         Console.Write(Math.Log(x + 1) + "   ");
  28.                         Console.Write(taylorSerie(x, e)[0]+"   ");
  29.                         taylor = taylorSerie(x, e);
  30.                         Console.Write(taylor[0] + "   ");
  31.                         Console.WriteLine(taylor[1]);
  32.                     }
  33.                 }
  34.             } catch (Exception err)
  35.             {
  36.                 Console.WriteLine(err.StackTrace);
  37.             }
  38.         }
  39.  
  40.  
  41. static double[] taylorSerie(double x, double e)
  42.         {
  43.             double[] data = new double[2];
  44.             data[1] = 2;
  45.             double xi0 = (Math.Pow(-1, 0) * Math.Pow(x, 1)) / 1.0;
  46.             double xi1 = (Math.Pow(-1, 1) * Math.Pow(x, 2)) / 2.0;
  47.             data[0] = xi0 + xi1;
  48.             int n = 2;
  49.  
  50.             while(Math.Abs(xi1-xi0) >= e)
  51.             {
  52.                 xi0 = (Math.Pow(-1, n) * Math.Pow(x, n+1)) / (n+1);
  53.                 xi1 = (Math.Pow(-1, n+1) * Math.Pow(x, n+2)) / (n+2);
  54.                 data[0] += xi0 + xi1;
  55.                 data[1] += 2;
  56.                 n += 2;
  57.             }
  58.  
  59.             return data;
  60.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement