Метод простых итераций - 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;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д