Вычислите с точностью [latex]\varepsilon[/latex] значение функции . При вычислениях допустимо использовать только арифметические операции.
Решение задачи:
Для нахождения значения функции (гиперболический косинус) с точностью [latex]\varepsilon[/latex] воспользуемся формулой Тейлора (разложение функции в бесконечную сумму степенных функций):[latex]chx=1+\frac{x^2}{2}+\frac{x^4}{4}+[/latex]…[latex]=\sum_{n=0}^{\infty}\frac{1}{(2n+1)!}\times x^{2n}[/latex]. [latex]x_n=\frac{1}{(2n+1)!}\times x^{2n}[/latex], тогда [latex]x_{n-1}=\frac{1}{(2(n-1)+1)!}\times x^{2(n-1)}[/latex]. Рекуррентное соотношение [latex]x_n[/latex] и [latex]x_{n-1}=[/latex][latex]\frac{x_n}{x_{n-1}}=\frac{x^2}{2n\times(2n-1)}[/latex].
Код программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include <iostream> #include <cmath> using namespace std; double ch(double x, double e) { double result = 1; double member = 1; for (int i = 1; abs(member) >= e; i++) { member *= x * x; member /= 2*i * (2*i - 1); result += member; } return result; } int main() { double x, e; cin >> x >> e; cout << ch(x, e); return 0; } |
Тесты:
Входные данные | Выходные данные | |
x | e | ch(x) |
9 | 0.01 | 4051.54 |
16 | 0.0001 | 4.44306e+06 |
0.85 | 0.00001 | 1.38353 |
0.11 | 0.001 | 1.00606 |
Здесь можно посмотреть решение задачи на ideone.com