MLoop7

Задача

Вычислите с точностью \epsilon значение функции f\left( x \right) = \tan x. При вычислениях допустимо использовать только арифметические операции.

Решение

Функцию [latex]f(x)=\tan x [/latex] можно представить в виде: [latex]f(x)=\frac{\sin x}{\cos x}[/latex] (по свойствам тангенса). Поэтому будем раскладывать в ряд две функции: [latex]\sin x[/latex] и [latex]\cos x[/latex].

Для решения задачи необходимо воспользоваться формулой Тейлора  с опорной точкой x_{0}=0 (ряд Маклорена). Для функции [latex]f(x)=\sin x[/latex]  она имеет следующий вид:

[latex]f(x)=x-\frac{x^{3}}{3!}+\frac{x^{5}}{5!}-\cdots=\sum_{n=0}^{\infty}(-1)^{n}\frac{x^{2n+1}}{(2n+1)!}[/latex]

А для [latex]f(x)=\cos x[/latex]:

[latex]f(x)=1-\frac{x^{2}}{2!}+\frac{x^{4}}{4!}-\cdots=\sum_{n=0}^{\infty}(-1)^{n}\frac{x^{2n}}{(2n)!}[/latex]

Далее нам нужно найти рекуррентные формулы для членов данных рядов.

[latex]\frac{a_n}{a_n-_1}=\frac{-x^{2}}{(2n+2)(2n+3)}[/latex];

[latex]\frac{b_n}{b_n-_1}=\frac{-x^{2}}{(2n+1)(2n+2)}[/latex]

При помощи функции fmod удалим период, так как тангенс [latex]\pi[/latex] периодичная функция.

Затем необходимо накапливать сумму текущих членов ряда для синуса и косинуса соответственно до тех пор, пока слагаемое не будет меньше заданной точности.

Код

 

Тесты

Входные данные Выходные данные
0.42 0.001 0.446569
1.52 0.001 19.9377
3.1415 0.0001 -0.000113798

Задача взята отсюда.

Код программы на Ideone.com.

Related Images:

Ю1.13

Задача. Заданы уравнения двух пересекающихся прямых на плоскости: [latex]y=k_{1}+b_{1}[/latex]; [latex]y=k_{2}+b_{2}[/latex] . Найти (в градусах и минутах) угол между ними, используя формулу: [latex]\tan\varphi=\frac{(k_{2}-k_{1})}{(1+k_{2}*k_{1})} [/latex] .

 Значение k1  Значение k2 Ответ
 -6  -38  -7 градусов 57 минут (два целых отрицательных числа)
 13  15  0 градусов 35 минут (два целых числа)
 33.7  21.6  0 градусов 57 минут (два числа с запятой)
 1  1  0 градусов 0 минут (получаем 0 в числителе)
 1  -1  0 градусов (получаем ноль в знаменателе)

 

Для вычисления угла между двумя прямыми, зная тангенс, воспользуемся формулой [latex]\varphi=atan\tan\varphi[/latex]. Полученный результат переводим в градусы по формуле: [latex]\varphi=\frac{180*\varphi}{\Pi}[/latex] . Далее переведем результат в градусы и минуты. Для этого сначала найдем ближайшее целое число меньше полученного и запишем его, как градусы(при этом, если градусы отрицательные, то мы найдем ближайшее большее целое число, и запишем его, как градусы). После этого, от первоначального  числа отнимем полученное и переведем его в минуты( если градусы были отрицательными, то от полученного отнимем первоначальное). Для этого результат вычитания домножим на 60. Этот результат запишем в минуты. ( Примечание: если [latex]k2*k1=-1[/latex] , то ответ — 0 градусов )

Related Images: