Advertisement
mrAnderson33

Untitled

Dec 18th, 2017
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.17 KB | None | 0 0
  1. using System;
  2.  
  3. namespace курсач
  4. {
  5.     delegate double func(double x);
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             const double eps = 0.00001;
  11.  
  12.             Console.WriteLine("Первый корень x1:");
  13.             Nuton((x) => 3*Math.Sqrt(x+1)-Math.Exp(x) - 0.5,(x)=>3/(2*Math.Sqrt(x+1))-Math.Exp(x),-0.99, eps);
  14.             Console.WriteLine("Второй корень x2:");
  15.             Nuton((x) => 3 * Math.Sqrt(x + 1) - Math.Exp(x) - 0.5, (x) => 3 / (2 * Math.Sqrt(x + 1)) - Math.Exp(x), 1, eps);
  16.         }
  17.  
  18.         public static double Nuton(func f, func df, double a, double eps)
  19.         {
  20.             double xn = a;
  21.             int counter = 0;
  22.  
  23.             func xk = (x) => x - f(x) / df(x);
  24.  
  25.             while (Math.Abs(xk(xn) - xn) > eps)
  26.                 Console.WriteLine("Итерация № {0} , Текущее приблежение к корню x = {1}", counter++, xn = xk(xn));
  27.             xn = Math.Round(xn, 5);
  28.             Console.WriteLine("x * = {0}", xn);
  29.  
  30.             return xn;
  31.         }
  32.        
  33.         public static double MPD(func f, double a, double b ,double eps)
  34.         {
  35.                 double xn = 0;
  36.                 int counter = 0;
  37.                 while (Math.Abs(b - a) > eps)
  38.                 {
  39.                     xn = (a + b) / 2;
  40.                     Console.WriteLine("Итерация № {0} , Текущее приблежение к корню x = {1}", counter++, xn);
  41.                     if (f(xn) * f(a) < 0) b = xn;
  42.                     else if (f(xn) * f(b) < 0) a = xn;
  43.                 }
  44.             xn = Math.Round(xn, 5);
  45.             Console.WriteLine("x * = {0}", xn);
  46.             return xn;
  47.         }
  48.  
  49.         public static double MPI(func f, double x, double eps)
  50.         {
  51.             double xn = x;
  52.             int counter = 0;
  53.  
  54.             while (Math.Abs(f(xn) - xn) > eps)
  55.                 Console.WriteLine("Итерация № {0} , Текущее приблежение к корню x = {1}" ,counter++, xn=f(xn));
  56.             xn = Math.Round(xn, 5);
  57.             Console.WriteLine("x * = {0}" ,xn);
  58.             return xn;
  59.         }
  60.     }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement