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