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