Найти корни уравнения - 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();
}
}