Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace mv_lab3
- {
- class Program
- {
- static double zExact = 10.5844484649508098;
- static double SequenceSum(int i) // Сумма первых i элементов
- {
- double res = 0;
- for (int n = 1; n <= i; n++)
- res += 1 / (Math.Pow(n, 1.1));
- return res;
- }
- static double[] z = new double[131073];
- static double[] z_1 = new double[131073];
- static double[] z_2 = new double[131073];
- static double[] z_3 = new double[131073];
- static double[] z_4 = new double[131073];
- static void Main(string[] args)
- {
- // Заполним массив z значениями частичных сумм ряда
- for (int n = 1; n <= 131072; n *= 2)
- z[n] = SequenceSum(n);
- // Экстраполируем в первый раз
- for (int n = 2; n <= 131072; n *= 2)
- z_1[n] = z[n] + (z[n] - z[n / 2]) / (Math.Pow(2, 0.1) - 1); // 2.6
- // Второй раз
- for (int n = 4; n <= 131072; n *= 2)
- z_2[n] = z_1[n] + (z_1[n] - z_1[n / 2]) / (Math.Pow(2, 1.1) - 1); // 2.6
- // Третий раз
- for (int n = 8; n <= 131072; n *= 2)
- z_3[n] = z_2[n] + (z_2[n] - z_2[n / 2]) / (Math.Pow(2, 2.1) - 1);
- // В четвертый раз
- for (int n = 16; n <= 131072; n *= 2)
- z_4[n] = z_3[n] + (z_3[n] - z_3[n / 2]) / (Math.Pow(2, 4.1) - 1);
- z_1[0] =
- z_2[0] = z_2[2] =
- z_3[0] = z_3[2] = z_3[4] =
- z_4[0] = z_4[2] = z_4[4] = z_4[8]
- = zExact; // Просто, чтобы в таблице 0 были
- PrintResults();
- Console.ReadKey();
- }
- private static void PrintResults()
- {
- const int colWidth = 22;
- Console.WriteLine(
- "|" +
- Resize("n",7) + "|" +
- Resize("z - z_t",colWidth) + "|" +
- Resize("z - z_1",colWidth) + "|" +
- Resize("z1 - z_t",colWidth) + "|" +
- Resize("z2 - z_t",colWidth) + "|" +
- Resize("z3 - z_t",colWidth) + "|" +
- Resize("z4 - z_t",colWidth)
- + "|"
- );
- string divider = "-";
- while (divider.Length < 7 + colWidth * 6 + 2 + 6)
- divider += divider.First();
- Console.WriteLine(divider);
- for (int n = 2; n <= 131072; n *= 2)
- {
- double r = Math.Abs((z_1[n] - z_2[n]) / (z[n] - z_1[n]));
- Console.WriteLine(
- "|" +
- Resize("" + n, 7) + "|" +
- Resize("" + (z[n] - zExact), colWidth) + "|" +
- Resize("" + (z[n] - z_1[n]), colWidth) + "|" +
- Resize("" + (z_1[n] - zExact), colWidth) + "|" +
- Resize("" + (z_2[n] - zExact), colWidth) + "|" +
- Resize("" + (z_3[n] - zExact), colWidth) + "|" +
- Resize("" + (z_4[n] - zExact), colWidth)
- + "|"
- );
- }
- }
- private static String Resize (String s, int sizeTo)
- {
- while (s.Length < sizeTo)
- {
- if (s.Length % 2 == 0)
- s = " " + s;
- else
- s = s + " ";
- }
- return s;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement