fr0stn1k

ChordMethod

Dec 19th, 2016
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.93 KB | None | 0 0
  1. using System;
  2.  
  3. namespace ChordMethod
  4. {
  5.     class Program
  6.     {
  7.         public void Main (string [] args) //Область x0=2, x1=10, с погрешностью e=0.001
  8.         {
  9.             //Стартовые данные
  10.             int x0, x1;
  11.             double e;
  12.  
  13.             //Ввод данных
  14.             Console.WriteLine("-------------------Решение нелинейных уравнений методом хорд-------------------\n");
  15.             Console.Write("Укажите первую границу отрезка, на котором будет искаться корень: ");
  16.             x0 = Convert.ToInt32(Console.ReadLine());
  17.             Console.Write("Укажите вторую границу отрезка, на котором будет искаться корень: ");
  18.             x1 = Convert.ToInt32(Console.ReadLine());
  19.             Console.Write("Укажите нужную точность: ");
  20.             e = Convert.ToDouble(Console.ReadLine());
  21.             //Ввод данных в уравнение  
  22.             Console.WriteLine("\nВведите коэффициенты уравнения, в формате: ax^p+bx^q+c");
  23.             //a
  24.             Console.Write("a = ");
  25.             double a = double.Parse(Console.ReadLine());
  26.             //p
  27.             Console.Write("p = ");
  28.             double p = double.Parse(Console.ReadLine());
  29.             //b
  30.             Console.Write("b = ");
  31.             double b = double.Parse(Console.ReadLine());
  32.             //q
  33.             Console.Write("q = ");
  34.             double q = double.Parse(Console.ReadLine());
  35.             //c
  36.             Console.Write("c = ");
  37.             double c = double.Parse(Console.ReadLine());
  38.             Console.WriteLine("\nУравнение имеет вид: " + a + "*x^" + p + "+" + b + "*x^" + q + "+" + c);
  39.  
  40.  
  41.             //Вызов метода для проведения вычисления
  42.             double x = method_chord(x0, x1, e);
  43.             //Вывод найденного значения
  44.             Console.WriteLine("\n---------------Результат решения нелинейного уравнения методом Хорд------------\n");
  45.             Console.Write("Результат: x = ");
  46.             Console.WriteLine (x);
  47.             Console.ReadLine ();
  48.         }
  49.  
  50.         //Черная коробка с вычислениями, использует метод function для вычисления
  51.         public static double method_chord (double x_prev, double x_curr, double e)
  52.         {
  53.             double x_next = 0;
  54.             double tmp;
  55.  
  56.             do {
  57.                 tmp = x_next;
  58.                 x_next = x_curr - function (x_curr) * (x_prev - x_curr) / (function (x_prev) - function (x_curr));
  59.                 x_prev = x_curr;
  60.                 x_curr = tmp;
  61.             } while (Math.Abs (x_next - x_curr) > e);
  62.  
  63.             return x_next;
  64.         }
  65.         //Метод с функцией, который проводите вычисления, принимает одно значение
  66.         public static double function (double x )
  67.         {
  68.             return  a * (Math.Pow (x, p)) - b * (Math.Pow (x, q)) - c;
  69.         }
  70.     }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment