, : float, : Top


23 Простейшие численные методы

(A) Деление пополам

Дано действительное число a и натуральное n. Вычислите корень n-й степени из числа a.

Для решения используйте метод деления отрезка пополам.

Число a – действительное, неотрицательное, не превосходит 1000, задано с точностью до 6 знаков после запятой. Число n – натуральное, не превосходящее 10.

Программа должна вывести единственное число: ответ на задачу с точностью не менее 6 знаков после запятой.

     Ввод                       Вывод
     2 2                       1.4142135623730951

Важное замечание о структуре программы

Программа должна содержать функцию double f(double x), возвращающее значение функции, корень которой ищется.

Программа должна содержать функцию double solve(double left, double right), которая должна возвращать корень функции f на отрезке [left;right].

Функция solve не должна использовать никакой специфической информации относительно свойств функции f, она должна работать для любой непрерывной функции f и любого отрезка.

Параменты a и n, необходимые для вычисления функции f необходимо объявить глобальными переменными.

Функция main должна считать значения a и n и вызвать функцию solve для некоторого интервала для поиска корня функции.

(С) Метод касательных

Программа должна содержать функцию double f(double x), возвращающее значение функции, корень которой ищется.

Важное замечание о структуре программы

Программа должна содержать функцию double df(double x), возвращающую производную функции, корень которой ищется.

Программа должна содержать функцию double solve(double start), которая должна возвращать корень функции, найденный методом касательных, start – начальная точка для поиска корня.

Функция solve не должна использовать никакой специфической информации относительно свойств функции f, она должна работать для любой дифференцируемой функции f и любой начальной точки.

Параменты a и n, необходимые для вычисления функции f необходимо объявить глобальными переменными. Решите предыдущую задачу используя метод касательных.

Функция main должна считать значения a и n и вызвать функцию solve для некоторой начальной точки.

(D) Кубическое уравнение

Даны четыре действительных числа: A, B, C, D. Найдите все корни уравнения Ax3+Bx2+Cx+D=0. Известно, что все корни этого уравнения не превосходят по абсолютной величине 1000. Известно, что любые два корня этого уравнения различаются не менее, чем на 10-6.

Программа получает на вход четыре действительных числа: A, B, C, D. Любые из этих четырех чисел, но не все одновременно, могут быть равны 0.

Программа должна вывести от 0 до 3 действительных чисел: корни данного уравнения в порядке возрастания. Кратные корни должны быть выведены только один раз. Значения корней необходимо выводить с точностью до 6 знаков после точки.

     Ввод                       Вывод
     1 -2 1 0                       0 1