Advertisement
inf926k

Untitled

Dec 11th, 2016
361
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.73 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace mv_lab3
  7. {
  8.    
  9.     class Program
  10.     {
  11.         static double zExact = 10.5844484649508098;
  12.         static double SequenceSum(int i)    // Сумма первых i элементов
  13.         {
  14.             double res = 0;
  15.             for (int n = 1; n <= i; n++)
  16.                 res += 1 / (Math.Pow(n, 1.1));
  17.             return res;
  18.         }
  19.         static double[] z = new double[131073];
  20.         static double[] z_1 = new double[131073];
  21.         static double[] z_2 = new double[131073];
  22.         static double[] z_3 = new double[131073];
  23.         static double[] z_4 = new double[131073];
  24.         static void Main(string[] args)
  25.         {
  26.             // Заполним массив z значениями частичных сумм ряда
  27.             for (int n = 1; n <= 131072; n *= 2)
  28.                 z[n] = SequenceSum(n);
  29.  
  30.             // Экстраполируем в первый раз
  31.             for (int n = 2; n <= 131072; n *= 2)
  32.                 z_1[n] = z[n] + (z[n] - z[n / 2]) / (Math.Pow(2, 0.1) - 1); // 2.6
  33.  
  34.             // Второй раз
  35.             for (int n = 4; n <= 131072; n *= 2)
  36.                 z_2[n] = z_1[n] + (z_1[n] - z_1[n / 2]) / (Math.Pow(2, 1.1) - 1); // 2.6
  37.  
  38.             // Третий раз
  39.             for (int n = 8; n <= 131072; n *= 2)
  40.                 z_3[n] = z_2[n] + (z_2[n] - z_2[n / 2]) / (Math.Pow(2, 2.1) - 1);
  41.  
  42.             // В четвертый раз
  43.             for (int n = 16; n <= 131072; n *= 2)
  44.                 z_4[n] = z_3[n] + (z_3[n] - z_3[n / 2]) / (Math.Pow(2, 4.1) - 1);
  45.  
  46.             z_1[0] =
  47.                 z_2[0] = z_2[2] =
  48.                 z_3[0] = z_3[2] = z_3[4] =
  49.                 z_4[0] = z_4[2] = z_4[4] = z_4[8]
  50.                     = zExact; // Просто, чтобы в таблице 0 были
  51.  
  52.             PrintResults();
  53.             Console.ReadKey();
  54.         }
  55.  
  56.         private static void PrintResults()
  57.         {
  58.             const int colWidth = 22;
  59.             Console.WriteLine(
  60.                     "|" +
  61.                     Resize("n",7) + "|" +
  62.                     Resize("z - z_t",colWidth) + "|" +
  63.                     Resize("z - z_1",colWidth) + "|" +
  64.                     Resize("z1 - z_t",colWidth) + "|" +
  65.                     Resize("z2 - z_t",colWidth) + "|" +
  66.                     Resize("z3 - z_t",colWidth) + "|" +
  67.                     Resize("z4 - z_t",colWidth)
  68.                     + "|"
  69.                 );
  70.  
  71.             string divider = "-";
  72.             while (divider.Length < 7 + colWidth * 6 + 2 + 6)
  73.                 divider += divider.First();
  74.             Console.WriteLine(divider);
  75.  
  76.             for (int n = 2; n <= 131072; n *= 2)
  77.             {
  78.                 double r = Math.Abs((z_1[n] - z_2[n]) / (z[n] - z_1[n]));
  79.                 Console.WriteLine(
  80.                     "|" +
  81.                     Resize("" + n, 7) + "|" +
  82.                     Resize("" + (z[n] - zExact), colWidth) + "|" +
  83.                     Resize("" + (z[n] - z_1[n]), colWidth) + "|" +
  84.                     Resize("" + (z_1[n] - zExact), colWidth) + "|" +
  85.                     Resize("" + (z_2[n] - zExact), colWidth) + "|" +
  86.                     Resize("" + (z_3[n] - zExact), colWidth) + "|" +
  87.                     Resize("" + (z_4[n] - zExact), colWidth)
  88.                     + "|"
  89.                 );
  90.             }
  91.         }
  92.  
  93.         private static String Resize (String s, int sizeTo)
  94.         {
  95.             while (s.Length < sizeTo)
  96.             {
  97.                 if (s.Length % 2 == 0)
  98.                     s = " " + s;
  99.                 else
  100.                     s = s + " ";
  101.             }
  102.             return s;
  103.         }
  104.     }
  105.  
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement