Advertisement
Xsufu

Итерационные методы решения нелинейных уравнений

Oct 24th, 2020 (edited)
577
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 29.55 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4.  
  5. namespace Nonlinear_Iteration {
  6.     class Program {
  7.  
  8.         //делегат для методов ф-ий
  9.         delegate float function(float x);
  10.         //делегат для методов производных
  11.         delegate float derivative(float x);
  12.         //делегат для Фи в простых итерациях
  13.         delegate float Phi(float x);
  14.  
  15.         //выбор ф-ии >>
  16.         static float test_function1(float x) {
  17.             return (float)Math.Pow(x, 3) + 3 * x + 1;
  18.         }
  19.  
  20.         static float test_function2(float x) {
  21.             return x + (float)Math.Log(x, 10) - 0.5F;
  22.         }
  23.  
  24.         static float test_function3(float x) {
  25.             return (float)Math.Tan(0.4 * x + 0.4) - (float)Math.Pow(x, 2);
  26.         }
  27.         //<<
  28.  
  29.         //производная первого порядка
  30.         static float derivative1(float x) {
  31.             return 3 * (float)Math.Pow(x, 2) + 3;
  32.         }
  33.  
  34.         static float derivative2(float x) {
  35.             return 1 + (1 / ((float)Math.Log(10) * x));
  36.         }
  37.  
  38.         static float derivative3(float x) {
  39.             return -2 * x + (0.4F / (float)Math.Pow(Math.Cos(0.4 - 0.4 * x), 2));
  40.         }
  41.         //<<
  42.  
  43.         //производная второго порядка
  44.         static float SecondDerivative(float x, int menu) {
  45.             switch (menu) {
  46.                 case 1:
  47.                     return 6 * x;
  48.                 case 2:
  49.                     return -1 / ((float)Math.Log(10) * (float)Math.Pow(x, 2));
  50.                 case 3:
  51.                     float up = 8 * (float)Math.Sin(0.4F * x + 0.4);
  52.                     float down = 25 * (float)Math.Pow(Math.Cos(0.4F * x + 0.4F), 3);
  53.                     return (up / down) - 2;
  54.             }
  55.             return 0;
  56.         }
  57.  
  58.         //вычисление "x" для Ньютона
  59.         static float CalculatingX(float x, function test_function, derivative derivative) {
  60.             return x - (test_function(x) / derivative(x));
  61.         }
  62.  
  63.         //вычисление "x" для Мод-го Ньютона
  64.         static float ModCalculatingX(float x, float Dx0, function test_function) {
  65.             return x - (test_function(x) / Dx0);
  66.         }
  67.  
  68.         //вычисление "x" для метода секущих
  69.         static float SecantCalc(float x, float xp, function test_function) {
  70.             return x - (test_function(x) * (x - xp) / (test_function(x) - test_function(xp)));
  71.         }
  72.  
  73.         //бета для Риддерса
  74.         static float B(float x, float xp) {
  75.             return (xp + x) / 2;
  76.         }
  77.  
  78.         //вычисление "x" для Риддерса
  79.         static float CalcXRidder(float x, float xp, function test_function) {
  80.             float sqr = (float)Math.Pow(test_function(B(x, xp)),2) - test_function(xp) * test_function(x);
  81.             return B(x, xp) + (B(x, xp) - xp) * ((test_function(xp) - test_function(x)) * test_function(B(x,xp)) / (float)Math.Sqrt(sqr));
  82.         }
  83.  
  84.         //вычисление "x" для Мюллера
  85.         static float CalcXMuller(float x, float xp, float xp2, function test_function) {
  86.             float a, b, c, q, res, znam1, znam2;
  87.             q = (x - xp) / (xp - xp2);
  88.             c = (1 + q) * test_function(x);
  89.             b = (2 * q) * test_function(x) - (float)Math.Pow(1 + q, 2) * test_function(xp) + (float)Math.Pow(q, 2) * test_function(xp2);
  90.             a = q * test_function(x) - q * (1 + q) * test_function(xp) + (float)Math.Pow(q, 2) * test_function(xp2);
  91.             znam1 = b + (float)Math.Sqrt(Math.Pow(b, 2) - 4 * a * c);
  92.             znam2 = b - (float)Math.Sqrt(Math.Pow(b, 2) - 4 * a * c);
  93.             if (znam1 > znam2)
  94.                 res = x - (x - xp) * (2 * c / znam1);
  95.             else
  96.                 res = x - (x - xp) * (2 * c / znam2);
  97.             return res;
  98.         }
  99.  
  100.         //Выбор Фи для простых итераций >>
  101.         static float Phi1(float x) {
  102.             return (float)Math.Pow(-3 * x - 1, 1 / 3f);
  103.         }
  104.  
  105.         static float Phi2(float x) {
  106.             return 0.5F - (float)Math.Log(x, 10);
  107.         }
  108.  
  109.         static float Phi3(float x) {
  110.             return (float)Math.Sqrt((float)Math.Tan(0.4f * x + 0.4));
  111.         }
  112.         //<<
  113.  
  114.         //производная от фи
  115.         static float DerivativePhi(float x, int menu) {
  116.             switch (menu) {
  117.                 case 1:
  118.                     return 1 / (float)Math.Pow(-3 * x - 1, 2 / 3F);
  119.                 case 2:
  120.                     return - (1 / (x * (float)Math.Log(10)));
  121.                 case 3:
  122.                     float sec = 1 / (float)Math.Pow((float)Math.Cos(0.4f * x + 0.4), 2);
  123.                     float znam = 5 * (float)Math.Sqrt(Math.Tan(0.4f * x + 0.4));
  124.                     return sec / znam;
  125.             }
  126.             return 0;
  127.         }
  128.  
  129.         //Метод Ньютона
  130.         static void Newton(int a, int b, int menu) {
  131.             //массив для ответов
  132.             string[] lines = new string[20];
  133.             //счётчик корней
  134.             int count = 1;
  135.             //счётчик итераций
  136.             int ItCount = 1;
  137.             //шаг
  138.             float h = 0.00001F;
  139.             //сохранение предыщего значения x
  140.             float prevF = 0;
  141.             //индекс массива result
  142.             int i = 0;
  143.             //точность
  144.             double eps = 0.000001;
  145.  
  146.             //массив хранения f(x) в локализации
  147.             List<float> result = new List<float>();
  148.  
  149.             //делегат для ф-ии
  150.             function test_function = test_function1;
  151.             //делегат для производной
  152.             derivative derivative = derivative1;
  153.             //присваение ф-ии делегату
  154.             switch (menu) {
  155.                 case 1:
  156.                     test_function = test_function1;
  157.                     derivative = derivative1;
  158.                     break;
  159.                 case 2:
  160.                     test_function = test_function2;
  161.                     derivative = derivative2;
  162.                     break;
  163.                 case 3:
  164.                     test_function = test_function3;
  165.                     derivative = derivative3;
  166.                     break;
  167.             }
  168.  
  169.             //локализуем и сразу считаем
  170.             for (float f = a; f <= b; f += h, i++) {
  171.                 //вычисляем знаечение f(x)
  172.                 result.Add(test_function(f));
  173.  
  174.                 //если дошли до второго f(x)
  175.                 if (i > 0) {
  176.                     //если знак поменялся или одно из f(x) равно нулю
  177.                     if ((result[i] * result[i-1] <= 0) && (result[i]!=0 && result[i-1]!=0)) {
  178.                         //перезаписываем предыдущее заначение x
  179.                         float A = prevF;
  180.                         //перезаписываем текущее заначение x
  181.                         float B = f;
  182.                         //вычисляем x для уточнения корней
  183.                         float x;
  184.                         x = test_function(A) * SecondDerivative(A, menu) > 0 ? A : B;
  185.                         float xi = CalculatingX(x, test_function, derivative);
  186.                         //вычисляем расстояние между точками
  187.                         float check = Math.Abs(x - xi);
  188.  
  189.                         while (check > eps) {
  190.                             //вычисляем xk+1
  191.                             xi = CalculatingX(x, test_function, derivative);
  192.                             //вычисляем расстояние между точками
  193.                             check = Math.Abs(x - xi);
  194.                             //запоминаем xk
  195.                             x = xi;
  196.                             ItCount++;
  197.                         }
  198.  
  199.                         Console.WriteLine($"x{count}: " + x);
  200.                         lines[count - 1] = Convert.ToString(x);
  201.                         count++;
  202.                     }
  203.                 }
  204.                 prevF = f;
  205.             }
  206.             Console.WriteLine("Результат работы программы записан в файл, кол-во итераций: " + ItCount);
  207.         }
  208.  
  209.         //Модифицированный метод Ньютона
  210.         static void ModNewton (int a, int b, int menu) {
  211.             //массив для ответов
  212.             string[] lines = new string[20];
  213.             //счётчик корней
  214.             int count = 1;
  215.             //счётчик итераций
  216.             int ItCount = 1;
  217.             //шаг
  218.             float h = 0.00003F;
  219.             //сохранение предыщего значения x
  220.             float prevF = 0;
  221.             //индекс массива result
  222.             int i = 0;
  223.             //точность
  224.             double eps = 0.000001;
  225.  
  226.             //массив хранения f(x) в локализации
  227.             List<float> result = new List<float>();
  228.  
  229.             //делегат для ф-ии
  230.             function test_function = test_function1;
  231.             //делегат для производной
  232.             derivative derivative = derivative1;
  233.             //присваение ф-ии делегату
  234.             switch (menu) {
  235.                 case 1:
  236.                     test_function = test_function1;
  237.                     derivative = derivative1;
  238.                     break;
  239.                 case 2:
  240.                     test_function = test_function2;
  241.                     derivative = derivative2;
  242.                     break;
  243.                 case 3:
  244.                     test_function = test_function3;
  245.                     derivative = derivative3;
  246.                     break;
  247.             }
  248.  
  249.             //локализуем и сразу считаем
  250.             for (float f = a; f <= b; f += h, i++) {
  251.                 //вычисляем знаечение f(x)
  252.                 result.Add(test_function(f));
  253.  
  254.                 //если дошли до второго f(x)
  255.                 if (i > 0) {
  256.                     //если знак поменялся или одно из f(x) равно нулю
  257.                     if (result[i] * result[i - 1] < 0 || result[i] == 0 || result[i - 1] == 0) {
  258.                         //перезаписываем предыдущее заначение x
  259.                         float A = prevF;
  260.                         //перезаписываем текущее заначение x
  261.                         float B = f;
  262.                         //вычисляем начальное приближение x0
  263.                         float x;
  264.                         x = test_function(A) * SecondDerivative(A, menu) > 0 ? A : B;
  265.                         //вычисляем производную x0
  266.                         float DerX0 = derivative(x);
  267.                         //вычисляем xk
  268.                         float xi = ModCalculatingX(x, DerX0, test_function);
  269.                         //вычисляем расстояние между корнями
  270.                         float check = Math.Abs(x - xi);
  271.  
  272.                         while (check > eps) {
  273.                             //вычисляем новое значение x
  274.                             xi = ModCalculatingX(x, DerX0, test_function);
  275.                             //вычисляем расстояние между точками
  276.                             check = Math.Abs(x - xi);
  277.                             //запоминаем xk
  278.                             x = xi;
  279.                             ItCount++;
  280.                         }
  281.  
  282.                         Console.WriteLine($"x{count}: " + x);
  283.                         lines[count - 1] = Convert.ToString(x);
  284.                         count++;
  285.                     }
  286.                 }
  287.                 prevF = f;
  288.             }
  289.             //путь для ответа
  290.             string AnswerPath = Environment.CurrentDirectory + @"\output.txt";
  291.             //запись ответа в файл
  292.             File.WriteAllLines($"{AnswerPath}", lines);
  293.             Console.WriteLine("Результат работы программы записан в файл, кол-во итераций: " + ItCount);
  294.         }
  295.  
  296.         //Метод Секущих
  297.         static void Secant (int a, int b, int menu) {
  298.             //массив для ответов
  299.             string[] lines = new string[20];
  300.             //счётчик корней
  301.             int count = 1;
  302.             //счётчик итераций
  303.             int ItCount = 1;
  304.             //шаг
  305.             float h = 0.00003F;
  306.             //сохранение предыщего значения x
  307.             float prevF = 0;
  308.             //индекс массива result
  309.             int i = 0;
  310.             //точность
  311.             double eps = 0.000001;
  312.  
  313.             //массив хранения f(x) в локализации
  314.             List<float> result = new List<float>();
  315.  
  316.             //делегат для ф-ии
  317.             function test_function = test_function1;
  318.             //делегат для производной
  319.             derivative derivative = derivative1;
  320.             //присваение ф-ии делегату
  321.             switch (menu) {
  322.                 case 1:
  323.                     test_function = test_function1;
  324.                     derivative = derivative1;
  325.                     break;
  326.                 case 2:
  327.                     test_function = test_function2;
  328.                     derivative = derivative2;
  329.                     break;
  330.                 case 3:
  331.                     test_function = test_function3;
  332.                     derivative = derivative3;
  333.                     break;
  334.             }
  335.  
  336.             //локализуем и сразу считаем
  337.             for (float f = a; f <= b; f += h, i++) {
  338.                 //вычисляем знаечение f(x)
  339.                 result.Add(test_function(f));
  340.  
  341.                 //если дошли до второго f(x)
  342.                 if (i > 0) {
  343.                     //если знак поменялся или одно из f(x) равно нулю
  344.                     if (result[i] * result[i - 1] < 0 || result[i] == 0 || result[i - 1] == 0) {
  345.                         //перезаписываем предыдущее заначение x
  346.                         float A = prevF;
  347.                         //перезаписываем текущее заначение x
  348.                         float B = f;
  349.                         //вычисляем x для уточнения корней
  350.                         float x, xp;
  351.                        
  352.                         if (test_function(A) * SecondDerivative(A, menu) > 0) {
  353.                             //xk
  354.                             x = A;
  355.                             //xk-1
  356.                             xp = x + (float)eps;
  357.                         }
  358.  
  359.                         else {
  360.                             //xk
  361.                             x = B;
  362.                             //xk-1
  363.                             xp = x - (float)eps;
  364.                         }
  365.  
  366.                         float xi = SecantCalc(x, xp, test_function);
  367.                         //вычисляем расстояние между корнями
  368.                         float check = Math.Abs(x - xi);
  369.  
  370.                         while (check > eps) {
  371.                             //вычисляем новое значение x
  372.                             xi = SecantCalc(x, xp, test_function);
  373.                             //вычисляем расстояние между точками
  374.                             check = Math.Abs(x - xi);
  375.                             //запоминаем xk-1
  376.                             xp = x;
  377.                             //запоминаем xk
  378.                             x = xi;
  379.                             ItCount++;
  380.                         }
  381.  
  382.                         Console.WriteLine($"x{count}: " + x);
  383.                         lines[count - 1] = Convert.ToString(x);
  384.                         count++;
  385.                     }
  386.                 }
  387.                 prevF = f;
  388.             }
  389.             //путь для ответа
  390.             string AnswerPath = Environment.CurrentDirectory + @"\output.txt";
  391.             //запись ответа в файл
  392.             File.WriteAllLines($"{AnswerPath}", lines);
  393.             Console.WriteLine("Результат работы программы записан в файл, кол-во итераций: " + ItCount);
  394.         }
  395.        
  396.         //Метод простых итераций
  397.         static void SimpleIteration(int a, int b, int menu) {
  398.             //массив для ответов
  399.             string[] lines = new string[20];
  400.             //счётчик корней
  401.             int count = 1;
  402.             //счётчик итераций
  403.             int ItCount = 1;
  404.             //шаг
  405.             float h = 0.00003F;
  406.             //сохранение предыщего значения x
  407.             float prevF = 0;
  408.             //индекс массива result
  409.             int i = 0;
  410.  
  411.             //массив хранения f(x) в локализации
  412.             List<float> result = new List<float>();
  413.  
  414.             //делегат для ф-ии
  415.             function test_function = test_function1;
  416.             Phi Phi = Phi1;
  417.             //присваение ф-ии делегату
  418.             switch (menu) {
  419.                 case 1:
  420.                     test_function = test_function1;
  421.                     Phi = Phi1;
  422.                     break;
  423.                 case 2:
  424.                     test_function = test_function2;
  425.                     Phi = Phi2;
  426.                     break;
  427.                 case 3:
  428.                     test_function = test_function3;
  429.                     Phi = Phi3;
  430.                     break;
  431.             }
  432.            
  433.  
  434.             //локализуем и сразу считаем
  435.             for (float f = a; f <= b; f += h, i++) {
  436.                 //вычисляем знаечение f(x)
  437.                 result.Add(test_function(f));
  438.  
  439.                 //если дошли до второго f(x)
  440.                 if (i > 0) {
  441.                     //если знак поменялся или одно из f(x) равно нулю
  442.                     if (result[i] * result[i - 1] < 0 || result[i] == 0 || result[i - 1] == 0) {
  443.                         //перезаписываем предыдущее заначение x
  444.                         float A = prevF;
  445.                         //перезаписываем текущее заначение x
  446.                         float B = f;
  447.                         //вычисляем x для уточнения корней
  448.                         float x;
  449.                         x = B;
  450.                         float xi;
  451.                         //вычисляем расстояние между корнями
  452.                         float check = Math.Abs(DerivativePhi(x, menu));
  453.  
  454.                         while (check >= 1) {
  455.                             xi = Phi(x);
  456.                             x = xi;
  457.                             check = Math.Abs(DerivativePhi(x, menu));
  458.                             ItCount++;
  459.                         }
  460.  
  461.                         Console.WriteLine($"x{count}: " + x);
  462.                         lines[count - 1] = Convert.ToString(x);
  463.                         count++;
  464.                     }
  465.                 }
  466.                 prevF = f;
  467.             }
  468.             //путь для ответа
  469.             string AnswerPath = Environment.CurrentDirectory + @"\output.txt";
  470.             //запись ответа в файл
  471.             File.WriteAllLines($"{AnswerPath}", lines);
  472.             Console.WriteLine("Результат работы программы записан в файл, кол-во итераций: " + ItCount);
  473.         }
  474.  
  475.         //Метод Риддера
  476.         static void Ridder(int a, int b, int menu) {
  477.             //массив для ответов
  478.             string[] lines = new string[20];
  479.             //счётчик корней
  480.             int count = 1;
  481.             //счётчик итераций
  482.             int ItCount = 1;
  483.             //шаг
  484.             float h = 0.00003F;
  485.             //сохранение предыщего значения x
  486.             float prevF = 0;
  487.             //индекс массива result
  488.             int i = 0;
  489.             //точность
  490.             double eps = 0.000001;
  491.  
  492.             //массив хранения f(x) в локализации
  493.             List<float> result = new List<float>();
  494.  
  495.             //делегат для ф-ии
  496.             function test_function = test_function1;
  497.             //делегат для производной
  498.             derivative derivative = derivative1;
  499.             //присваение ф-ии делегату
  500.             switch (menu) {
  501.                 case 1:
  502.                     test_function = test_function1;
  503.                     derivative = derivative1;
  504.                     break;
  505.                 case 2:
  506.                     test_function = test_function2;
  507.                     derivative = derivative2;
  508.                     break;
  509.                 case 3:
  510.                     test_function = test_function3;
  511.                     derivative = derivative3;
  512.                     break;
  513.             }
  514.  
  515.             //локализуем и сразу считаем
  516.             for (float f = a; f <= b; f += h, i++) {
  517.                 //вычисляем знаечение f(x)
  518.                 result.Add(test_function(f));
  519.  
  520.                 //если дошли до второго f(x)
  521.                 if (i > 0) {
  522.                     //если знак поменялся или одно из f(x) равно нулю
  523.                     if (result[i] * result[i - 1] < 0 || result[i] == 0 || result[i - 1] == 0) {
  524.                         //перезаписываем предыдущее заначение x
  525.                         float A = prevF;
  526.                         //перезаписываем текущее заначение x
  527.                         float B = f;
  528.                         //вычисляем x для уточнения корней
  529.                         float x, xp, xi;
  530.                         xp = A;
  531.                         x = B;
  532.                         xi = CalcXRidder(x, xp, test_function);
  533.  
  534.                         //вычисляем расстояние между корнями
  535.                         float check = Math.Abs(x - xi);
  536.  
  537.                         while (check > eps) {
  538.                             xi = CalcXRidder(x, xp, test_function);
  539.                             check = Math.Abs(x - xi);
  540.                             xp = x;
  541.                             x = xi;
  542.                             ItCount++;
  543.                         }
  544.  
  545.                         Console.WriteLine($"x{count}: " + x);
  546.                         lines[count - 1] = Convert.ToString(x);
  547.                         count++;
  548.                     }
  549.                 }
  550.                 prevF = f;
  551.             }
  552.             //путь для ответа
  553.             string AnswerPath = Environment.CurrentDirectory + @"\output.txt";
  554.             //запись ответа в файл
  555.             File.WriteAllLines($"{AnswerPath}", lines);
  556.             Console.WriteLine("Результат работы программы записан в файл, кол-во итераций: " + ItCount);
  557.         }
  558.  
  559.         //Метод Мюллера
  560.         static void Muller(int a, int b, int menu) {
  561.             //массив для ответов
  562.             string[] lines = new string[20];
  563.             //счётчик корней
  564.             int count = 1;
  565.             //счётчик итераций
  566.             int ItCount = 1;
  567.             //шаг
  568.             float h = 0.00003F;
  569.             //сохранение предыщего значения x
  570.             float prevF = 0;
  571.             //индекс массива result
  572.             int i = 0;
  573.             //точность
  574.             double eps = 0.000001;
  575.  
  576.             //массив хранения f(x) в локализации
  577.             List<float> result = new List<float>();
  578.  
  579.             //делегат для ф-ии
  580.             function test_function = test_function1;
  581.             //делегат для производной
  582.             derivative derivative = derivative1;
  583.             //присваение ф-ии делегату
  584.             switch (menu) {
  585.                 case 1:
  586.                     test_function = test_function1;
  587.                     derivative = derivative1;
  588.                     break;
  589.                 case 2:
  590.                     test_function = test_function2;
  591.                     derivative = derivative2;
  592.                     break;
  593.                 case 3:
  594.                     test_function = test_function3;
  595.                     derivative = derivative3;
  596.                     break;
  597.             }
  598.  
  599.             //локализуем и сразу считаем
  600.             for (float f = a; f <= b; f += h, i++) {
  601.                 //вычисляем знаечение f(x)
  602.                 result.Add(test_function(f));
  603.  
  604.                 //если дошли до второго f(x)
  605.                 if (i > 0) {
  606.                     //если знак поменялся или одно из f(x) равно нулю
  607.                     if (result[i] * result[i - 1] < 0 || result[i] == 0 || result[i - 1] == 0) {
  608.                         //перезаписываем предыдущее заначение x
  609.                         float A = prevF;
  610.                         //перезаписываем текущее заначение x
  611.                         float B = f;
  612.                         //вычисляем x для уточнения корней
  613.                         float x, xp, xp2, xi;
  614.                         x = A;
  615.                         xp = B;
  616.                         xp2 = (A + B) / 2;
  617.                         xi = CalcXMuller(x, xp, xp2, test_function);
  618.                         //вычисляем расстояние между корнями
  619.                         float check = Math.Abs(x - xi);
  620.  
  621.                         while (check > eps) {
  622.                             xi = CalcXMuller(x, xp, xp2, test_function);
  623.                             check = Math.Abs(x - xi);
  624.                             xp2 = xp;
  625.                             xp = x;
  626.                             x = xi;
  627.                             ItCount++;
  628.                         }
  629.  
  630.                         Console.WriteLine($"x{count}: " + x);
  631.                         lines[count - 1] = Convert.ToString(x);
  632.                         count++;
  633.                     }
  634.                 }
  635.                 prevF = f;
  636.             }
  637.             //путь для ответа
  638.             string AnswerPath = Environment.CurrentDirectory + @"\output.txt";
  639.             //запись ответа в файл
  640.             File.WriteAllLines($"{AnswerPath}", lines);
  641.             Console.WriteLine("Результат работы программы записан в файл, кол-во итераций: " + ItCount);
  642.         }
  643.  
  644.         static void Main(string[] args) {
  645.             DateTime t1 = new DateTime();
  646.             t1 = DateTime.Now;
  647.  
  648.             int a = -10, b = -a;
  649.             int menu = 0;
  650.             Console.Write("Выберите ф-ию: \n1) x^3 + 3x + 1 \n2) x + Lg(x) - 0.5 \n3) tg(0.4x + 0.4) - x^2\n>> ");
  651.             menu = Int32.Parse(Console.ReadLine());
  652.  
  653.             Console.WriteLine(" ————————————————————————— ");
  654.             Console.WriteLine("|  Выберите метод решения |");
  655.             Console.WriteLine("|-------------------------|");
  656.             Console.WriteLine("| 1 |  Ньютона            |");
  657.             Console.WriteLine("| 2 |  Мод-ый ньютона     |");
  658.             Console.WriteLine("| 3 |  Секущих            |");
  659.             Console.WriteLine("| 4 |  Простых итераций   |");
  660.             Console.WriteLine("| 5 |  Риддерса           |");
  661.             Console.WriteLine("| 6 |  Мюллера            |");
  662.             Console.WriteLine(" ————————————————————————— ");
  663.             Console.Write(">> ");
  664.             int MainMenu;
  665.             MainMenu = Int32.Parse(Console.ReadLine());
  666.             switch (MainMenu) {
  667.                 case 1: Newton(a, b, menu); break;
  668.                 case 2: ModNewton(a, b, menu); break;
  669.                 case 3: Secant(a, b, menu); break;
  670.                 case 4: SimpleIteration(a, b, menu); break;
  671.                 case 5: Ridder(a, b, menu); break;
  672.                 case 6: Muller(a, b, menu); break;
  673.                 default: Console.WriteLine("Неверное значение"); break;
  674.             }
  675.  
  676.             DateTime t2 = new DateTime();
  677.             t2 = DateTime.Now;
  678.             Console.WriteLine(t2 - t1);
  679.             Console.ReadKey();
  680.         }
  681.     }
  682. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement