Найти корни уравнения - C# (186220)
Формулировка задачи:
Здравствуйте.
Пытаюсь отсеить корни в следующем задании:
sin(x) = 2006 * x.
Насколько я понял должно быть 3 корня, это:
-2.59426
2.59426
0
Заранее благодарен.
double x = -3, y1, y2, p; p = 0.00001; string st1, st2; while (x <= 3) { y1 = Math.Sin(x); y2 = 0.2006 * x; st1 = y1.ToString(); st2 = y2.ToString(); string st3 = st1.Substring(1, 5); string st4 = st2.Substring(1, 5); if (st3 == st4) { Console.WriteLine("Y1 = {0}, X = {1}", y1, x); x += p; } else x += p; } Console.ReadKey();
Решение задачи: «Найти корни уравнения»
textual
Листинг программы
class Program { private static double F(double x) { return Math.Sin(x) - 0.2006 * x; } private static double Newton(double x0, double eps, double dx) { double x1 = x0; double dif = Math.Round(F(x1) / F(x1 + dx), 5); double alpha = -1.0 / dif; do { x0 = x1; x1 += Math.Round(alpha * F(x0), 4); } while (Math.Abs(x1 - x0) > eps); return x1; } public static void Main() { const double eps = 0.00001; const double dx = 0.1; double x0 = 1.0; Console.WriteLine(Newton(x0, eps, dx)); x0 = 2.5; Console.WriteLine(Newton(x0, eps, dx)); x0 = -2.65; Console.WriteLine(Newton(x0, eps, dx)); Console.ReadKey(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д