Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Сначала задаем переменные, вводим x и eps, и проверяем корректность введённого eps (|EPS| < 1). Потом мы находим значение стандартной функции sin, и с помощью цикла while ищем значение ряда с точностью |EPS| < 1. После нахождения ряда выводим: сначала значение стандартной функции, а затем значение ряда.
- */
- #include <stdio.h>
- #include <math.h>
- /*
- 1. Убрана рекурсивная функция
- 2. Знак в 27 строке определяется иначе
- 3. Убрана функция pow
- */
- int main()
- {
- float sinus1, sinus2, n = 1, eps, x, factorial = 1, power, edi = 1; // зададим переменные: sinus1 - стандартная функция sin, sinus2 - значение ряда, eps - EPS, x - вводимое значение х, factorial - значение факториала х, power - значение степени x, edi - вспомогательная переменная для определения знака
- scanf("%f", &x); // вводим х
- scanf("%f", &eps); // вводим EPS
- if(fabs(eps) >= 1) { // проверяем, корректны ли введенные данные
- printf("invalid value");
- }
- else {
- power = x;
- sinus1 = sin(x); // заносим в переменную sinus1 значение стандартной функции
- sinus2 = x; // заносим в переменную sinus2 значение ряда, при n = 1
- while(fabs(eps) < fabs(sinus2 - sinus1)) { // выполняем цикл пока не выполнится условие |EPS| < 1
- n += 2; // увеличиваем n на 2 каждый раз (т.к. как n - нечетные числа больше нуля)
- factorial = factorial * n *(n-1); // высчитываем факториал х для текущей итерации
- power = power * x * x; // высчитываем степень х для текущей итерации
- edi *= -1; // меняем знак вспомогательной переменной edi
- sinus2 = sinus2 + edi * (power / factorial); // считаем значение ряда
- }
- printf("standard function = %f row value = %f", sinus1, sinus2); // выводим сначала значение стандартной функции, затем значение ряда
- }
- }
Add Comment
Please, Sign In to add comment