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