Нахождение корней уравнения - C#
Формулировка задачи:
Вопрос скорее математический.
Это программа нахождения корней уравнения cos(x) = x
Объясните пожалуйста логику. Я не понимаю как таким способом можно найти x?
И калькулятор не подтверждает, что программа работает.
class Program
{
static void Main(string[] args)
{
double x, left = 0, right = 1;
do
{
x = (left + right) / 2;
if ((Math.Cos(x) - x) * (Math.Cos(left) - left) < 0)
right = x;
else left = x;
} while (Math.Abs(right - left) < 1e-4);
Console.WriteLine("Корень равен = " + x);
}
}Решение задачи: «Нахождение корней уравнения»
textual
Листинг программы
using System;
namespace ConsoleApplicationTest
{
internal class Program
{
private static void Main()
{
// Точность.
double accuracy = 1e-8;
// Интервал поиска.
double min = 0;
double max = Math.PI / 2;
// Длина интервала.
var length = max - min;
// Начальная ошибка.
var err = length;
// Корень.
double x = 0;
while (err > accuracy && F(x) !=0)
{
// Вычисляем середину интервала.
x = (min + max) / 2;
// Найдём новый интервал, в котором функция меняет знак.
if (F(min) * F(x) < 0)
{
max = x;
}
else if (F(x) * F(max) < 0)
{
min = x;
}
// Вычисляем новую ошибку.
err = (max - min) / length;
}
Console.WriteLine(x);
Console.ReadKey();
}
// Функция.
public static double F(double x)
{
return Math.Cos(x) - x;
}
}
}