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

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

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

Всем привет. Нужно сделать такое задание: Найти корень уравнения с точностью до третьего знака после запятой. х3 +2 х + 5 = 0 метод итерации Делаю программу следующего вида:
using System;
 
namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            const double min = 0, max = 0, eps = 1e-4;
            double x0, x1;
            int iter = 0;
            x1 = (min + max) / 2;
            bool error = false;
 
            do
            {
                Console.WriteLine("Итерация №{0}, Знчение x = {1}",iter, Math.Round(x1,3));
                x0 = x1;
                x1 = func(x0);
                iter++;
                if (x1 < min || x1 > max)
                {
                    error = true;
                    break;
                }
            } while (Math.Abs(x0 - x1) < eps);
            if (error)
            {
                Console.WriteLine("Не найдено");
            }
            else
            {
                Console.WriteLine("Ответ: X = ", Math.Round(x1, 3));
                Console.WriteLine("Итераций пройдено: ", iter);
            }
            
            Console.ReadKey();
 
        }
 
        public static double func(double x)
        {
            double f = (-5 - Math.Pow(x, 3)) / 2;
            return f;
        }
    }
}
Соответственно выводит "Не найдено". Полаю, что это из минимального и максимального значения. Но они по условию не заданы. Подскажите пожалуйста, что не так я делаю

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

textual
Листинг программы
using System;
 
namespace МетодПростыхИтераций
{
    class Program
    {
        static void Main(string[] args)
        {
            const double eps = 1e-4;
            double x0=0, x1=0;
            int iter = 0;
            bool error = false;
 
            do
            {
                x1 = func(x0);
                iter++;
                if (Math.Abs(x1 - x0) >= eps && iter == 1000)
                {
                    error = true;
                    break;
                }
                x0 = x1;
            } while (Math.Abs(x0 - func(x0)) > eps);
            if (error)
            {
                Console.WriteLine("Не найдено");
            }
            else
            {
                Console.WriteLine("Ответ: X = {0} ", Math.Round(x1, 3));
                Console.WriteLine("Итераций пройдено: {0}", iter);
            }
 
            Console.ReadKey();
        }
        public static double func(double x)
        {
            double f = -5.0/( Math.Pow(x, 2)+2);
            return f;
        }
     }
}

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


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

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

6   голосов , оценка 4.167 из 5
Похожие ответы