Задачи на тему
"Вычисление стандартных функций с помощью суммирования рядов"

Во всех задачах надо вычислить стандартную функцию с точностью ε=1e-12. Для небольших значений x это делается с помощью суммирования степенного ряда. Для значений x, при которых ряд не сходится или сходится очень медленно, надо воспользоваться какой-либо формулой, позволяющей свести вычисление нужной функции к вычислению ее или других функций при "хороших" значениях x. Например, формула

arctg(x) = 2*arctg(z),
z = (sqrt(1 + x*x) - 1)/x,
позволяет вычислить arctg(1)=π/4, сведя задачу к суммированию степенного ряда для
z = sqrt(2) - 1.

Список задач

  1. Вычислить arctg(x).

    Поскольку ряд $$ \text{arctg}(x) = x - x^3/3 + x^5/5 - x^7/7 + \dots $$ сходится лишь в интервале $(-1, 1)$ (для $x=1$ он тоже сходится, но фантастически медленно), его можно суммировать лишь для значений $|x| < 1$. Для проивольного значения $x \ge 1$ можно воспользоваться формулой $$ \begin{array}{l} \text{arctg}(x) = 2 \cdot \text{arctg}(z),\quad \text{где}\\ z = (\sqrt{1 + x^2} - 1)/x \end{array} $$ (учитывая нечетность функции $\text{arctg}(x)$, можно считать, что $x > 0$). Формула позволяет свести вычисление значения функции $\text{arctg}(x)$ для произвольного $x$ к суммированию ряда для $\text{arctg}(z)$ при $0 < z < 1$.

    Доказательство формулы. Нам надо вычислить $y = \text{arctg}(x)$. Идея состоит в том. чтобы найти $z$ такое, что $\text{arctg}(z) = y/2$. Мы получим, что $z < x$, поскольку функция $\text{arctg}(x)$ монотонно возрастает; более того, мы покажем, что $z < 1$.

    Воспользуемся формулой тангенса двойного угла: $$ \text{tg}(2a) = \text{sin}(2a)/\text{cos}(2a) = \frac{2\text{sin}(a)\text{cos}(a)}{\text{cos}^2(a) - \text{sin}^2(a)} = \frac{2\cdot\text{tg}(a)}{1 - \text{tg}^2(a)} $$ Обозначим $y = \text{arctg}(x)$. Мы ищем $z$ такое, что $\text{arctg}(z) = y/2$, т.е. $2\cdot\text{arctg}(z) = y$. Применим к обеим частям последнего равентсва функцию $\text{tg}$. Имеем $$ \text{tg}(2\cdot\text{arctg}(z)) = \text{tg}(y). $$ Так как $y = \text{arctg}(x)$, то $\text{tg}(y) = x$ и $$ \text{tg}(2\cdot\text{arctg}(z)) = x. $$ Воспользуемся формулой тангенса двойного угла, а также тем, что $\text{tg}(\text{arctg}(z)) = z$: $$ \text{tg}(2\cdot\text{arctg}(z)) = \frac{2z}{1 - z^2} $$ Мы получили уравнение для $z$: $$ \frac{2z}{1 - z^2} = x. $$ Из этого уравнения выражаем $z$ через $x$. Преобразуем его к квадратному уравнению: $$ \frac{2z}{1 - z^2} = x \quad \Rightarrow \quad z^2 x + 2z - x = 0, $$ откуда, учитывая ограничение $z > 0$, получаем $$ z = \frac{-2 + \sqrt{4 + 4x^2}}{2x} = (-1 + \sqrt{1 + x^2})/x $$ Учитывая, что $y/2 = \text{arctg}(z)$, получаем $$ \text{arctg}(x) = y = 2\cdot\text{arctg}((\sqrt{1 + x^2} - 1)/x) $$ Итак, мы получили формулу при $x > 0$: $$ \text{arctg}(x) = 2\cdot \text{arctg}((\sqrt{1 + x^2} - 1)/x) $$ Покажем теперь, что $0 < z < 1$. Действительно, поскольку $x > 0$, то $$ z = (\sqrt{1 + x^2} - 1)/x < (\sqrt{1 + 2x + x^2} - 1)/x = ((x + 1) - 1)/x = 1 $$


  2. Вычислить arcsin(x).

    Ряд для функции $\text{arcsin}(x)$ сходится очень плохо вблизи точек $x = \pm 1$, поскольку в этих точках производная функции бесконечна. Решение состоит в том, чтобы свести вычисление $\text{arcsin}(x)$ к вычислению функции arctg. Поскольку функция $\text{arcsin}(x)$ нечетная, можно считать, что $0 < x < 1$ (при $x=1$ $\text{arcsin}(x) = \pi/2$ и можно воспользоваться константой $\pi$). Пусть $y = \text{arcsin}(x)$, тогда $x = \text{sin}(y)$ и $$ \text{tg}(y) = \text{sin}(y)/\text{cos}(y) = x/\sqrt{1 - x^2} $$ Поэтому $$ y = \text{arctg}(x/\sqrt{1 - x^2}) $$ При решении данной задачи можно считать, что функция $\text{arctg}$ уже реализована (это первая задача), и воспользоваться библиотечной функцией $\text{atan}(x)$.


  3. Вычислить arccos(x).

    Как и в предыдущей задаче, сведем вычисление $y = \text{arccos}(x)$ к вычислению функции arctg. Имеем $x = \text{cos}(y)$, поэтому $$ \text{tg}(y) = \text{sin}(y)/\text{cos}(y) = \sqrt{1 - x^2}/x $$ (мы воспользовались тем, что $y = \text{arccos}(x)$, следовательно, $0 \le y \le \pi$ и $\text{sin}(y) \ge 0$; можно считать также, что $x \ne 0$, поскольку при $x = 0$ $\text{arccos}(x) = \pi/2$ и в программе можно воспользоваться константой $\pi$). Заметим также, что функция $\text{tg}(y)$ периодическая с периодом $\pi$. Поэтому из предыдущего равенства следует, что $$ y = \text{arctg}(\sqrt{1 - x^2}/x) + \pi k, \quad k\in\Bbb{Z}. $$ Если $0 < x \le 1$, то $0 \le \text{arccos}(x) < \pi/2$, поэтому $k = 0$ и $$ y = \text{arccos}(x) = \text{arctg}(\sqrt{1 - x^2}/x) \quad \text{при}\ x > 0. $$ Если $-1 \le x < 0$, то $\pi/2 < \text{arccos}(x) \le \pi$, поэтому $k = 1$ и $$ y = \text{arccos}(x) = \text{arctg}(\sqrt{1 - x^2}/x) + \pi\quad \text{при}\ x < 0. $$ Наконец, $\text{arccos}(0) = \pi/2$.

    Как и в предыдущей задаче, можно считать, что функция $\text{arctg}$ уже реализована, и воспользоваться библиотечной функцией $\text{atan}(x)$, а также константой $\pi$.


  4. Вычислить ln(x).
  5. Вычислить xα