Условие
Вычислите с точностью [latex]\varepsilon[/latex] значение функции [latex]f\left( x \right) = \text{sh}x[/latex]. При вычислениях допустимо использовать только арифметические операции.
Входные данные
В одной строке задано два числа [latex]x[/latex] и [latex]E[/latex].
Выходные данные
В одной строке вывести значение функции [latex]f\left( x \right) = \text{sh}x[/latex] и [latex]\text{sinh}x[/latex] (для проверки).
[latex]\text{sh} \left( x \right) = x — \frac {x^{3}}{3!}+\frac{x^{5}}{5!} — \cdots = \displaystyle\sum_{n=0}^{\infty}\frac{1}{(2n+1)!}x^{ 2n+1 },x\in{C}[/latex]
Тесты
Входные данные | Выходные данные
(мои и стандартной функции) |
1.57 1e-10000 | 2.2993 2.2993 |
3.14 1e-100000 | 11.5303 11.5303 |
0 0.1 | 0 0 |
1.05 1e-1000 | 1.25386 1.25386 |
0.785 0 | 0.868144 0.868144 |
0.52 0.01 | 0.543435 0.543754 |
Код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <iostream> #include <cmath> using namespace std; int main() { int i=0; double x, E; cin >> x >> E; double sh=x, a=x; while((a*=(x*x/(2*i+2)/(2*i+3)))>E) { sh+=a; i++; } cout << sh << ' ' << sinh(x); return 0; } |
Решение
Для того чтобы найти с точностью значение функции, в данном варианте это [latex]f\left( x \right) = \text{sh}x[/latex] — гиперболический синус, надо воспользоваться рядом Тейлора. Находим следующий член ряда Тейлора и прибавляем к функции и так пока не дойдем до члена, который будет меньше, либо равен точности. Чтобы проверить на правильность наших вычислений можно воспользоваться уже готовой функцией нахождения гиперболического синуса [latex]\text{sinh}x[/latex].
Код программы
Зачтено.
Жаль, что так поздно.