Метод простых итераций - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. Нужно сделать такое задание: Найти корень уравнения с точностью до третьего знака после запятой. х3 +2 х + 5 = 0 метод итерации Делаю программу следующего вида:
Листинг программы
  1. using System;
  2. namespace ConsoleApplication4
  3. {
  4. class Program
  5. {
  6. static void Main(string[] args)
  7. {
  8. const double min = 0, max = 0, eps = 1e-4;
  9. double x0, x1;
  10. int iter = 0;
  11. x1 = (min + max) / 2;
  12. bool error = false;
  13. do
  14. {
  15. Console.WriteLine("Итерация №{0}, Знчение x = {1}",iter, Math.Round(x1,3));
  16. x0 = x1;
  17. x1 = func(x0);
  18. iter++;
  19. if (x1 < min || x1 > max)
  20. {
  21. error = true;
  22. break;
  23. }
  24. } while (Math.Abs(x0 - x1) < eps);
  25. if (error)
  26. {
  27. Console.WriteLine("Не найдено");
  28. }
  29. else
  30. {
  31. Console.WriteLine("Ответ: X = ", Math.Round(x1, 3));
  32. Console.WriteLine("Итераций пройдено: ", iter);
  33. }
  34. Console.ReadKey();
  35. }
  36. public static double func(double x)
  37. {
  38. double f = (-5 - Math.Pow(x, 3)) / 2;
  39. return f;
  40. }
  41. }
  42. }
Соответственно выводит "Не найдено". Полаю, что это из минимального и максимального значения. Но они по условию не заданы. Подскажите пожалуйста, что не так я делаю

Решение задачи: «Метод простых итераций»

textual
Листинг программы
  1. using System;
  2.  
  3. namespace МетодПростыхИтераций
  4. {
  5.     class Program
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             const double eps = 1e-4;
  10.             double x0=0, x1=0;
  11.             int iter = 0;
  12.             bool error = false;
  13.  
  14.             do
  15.             {
  16.                 x1 = func(x0);
  17.                 iter++;
  18.                 if (Math.Abs(x1 - x0) >= eps && iter == 1000)
  19.                 {
  20.                     error = true;
  21.                     break;
  22.                 }
  23.                 x0 = x1;
  24.             } while (Math.Abs(x0 - func(x0)) > eps);
  25.             if (error)
  26.             {
  27.                 Console.WriteLine("Не найдено");
  28.             }
  29.             else
  30.             {
  31.                 Console.WriteLine("Ответ: X = {0} ", Math.Round(x1, 3));
  32.                 Console.WriteLine("Итераций пройдено: {0}", iter);
  33.             }
  34.  
  35.             Console.ReadKey();
  36.         }
  37.         public static double func(double x)
  38.         {
  39.             double f = -5.0/( Math.Pow(x, 2)+2);
  40.             return f;
  41.         }
  42.      }
  43. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы