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