Метод простых итераций - 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;
}
}
}