Advertisement
vencinachev

IO

Feb 11th, 2023 (edited)
867
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.81 KB | Science | 0 0
  1. using System;
  2.  
  3. namespace Ednomernaminimizaciq
  4. {
  5.     class Program
  6.     {
  7.         static double gradientF(double x)
  8.         {
  9.             return -(1.0 / 2.0) * ((-2 * x - 3) / Math.Pow((-(x * x) - 3 * x + 10), 2.0 / 3.0)) + (1.0 / 3.0) * ((2 * x + 8) / Math.Pow((-(x * x) - 8 * x + 25), 2.0 / 3.0));
  10.         }
  11.  
  12.         static double Fx(double x)
  13.         {
  14.             return -Math.Pow(-x*x - 3*x + 10, 1.0/3.0) + Math.Pow(x * x + 8 * x + 25, 1.0 / 3.0) + 1;
  15.         }
  16.         static void Main(string[] args)
  17.         {
  18.             Console.Write("x0: ");
  19.             double xk = double.Parse(Console.ReadLine());
  20.             Console.Write("a: ");
  21.             double a = double.Parse(Console.ReadLine());
  22.             Console.Write("k_max: ");
  23.             double k_max = double.Parse(Console.ReadLine());
  24.             Console.Write("eps_x: ");
  25.             double eps_x = double.Parse(Console.ReadLine());
  26.             Console.Write("eps_fx: ");
  27.             double eps_fx = double.Parse(Console.ReadLine());
  28.             int k = 0;
  29.             double Fk, Fk1;
  30.             Fk = Fx(xk);
  31.             double xk1 = xk + a * Fk;
  32.             Fk1 = Fx(xk1);
  33.             double gFk, gFk1;
  34.             gFk =  gradientF(xk);
  35.             gFk1 = gradientF(xk1);
  36.             double min = Fk;
  37.             while (k <= k_max && Math.Abs(xk - xk1) > eps_x && Math.Abs(gFk1 - gFk) > eps_fx)
  38.             {
  39.                 xk = xk1;
  40.                 Fk = Fx(xk);
  41.                 min = Math.Min(min, Fk);
  42.                 gFk = gradientF(xk);
  43.                 gFk1 = gradientF(xk1);
  44.                 xk1 = xk + a * Fk;
  45.                 Fk1 = Fx(xk1);
  46.                 k++;
  47.             }
  48.             Console.WriteLine($"xk = {xk}");
  49.             Console.WriteLine($"k = {k}");
  50.             Console.WriteLine($"min = {min}");
  51.         }
  52.     }
  53. }
  54.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement