Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- #define MAX_ITER 10.0
- void main() {
- double x, // аргумент функции
- fx, // значение функции
- Sn, // слагаемое с номером n
- S, // сумма ряда
- eps, // погрешность разложения в ряд
- n; // номер слагаемого
- // Ввод аргумента функции и погрешности разложения
- do {
- printf("x = ");
- scanf_s("%lf", &x);
- } while (fabs(x) >= 1);
- printf("eps = ");
- scanf_s("%lf", &eps);
- // Вычисление функции в точке x
- fx = sqrt(1 + x);
- // Вычисление слагаемого с номером 0
- n = 1;
- Sn = 1;
- S = Sn;
- // Пока
- // значение функции fx отличается от суммы ряда S более, чем на eps,
- // И номер слагаемого не слишком велик
- // повторять
- while (fabs(fx - S) > eps && n < MAX_ITER) {
- // Вычислить очередное слагаемое домножением предыдущего
- Sn *= ((-1) * (2 * n - 1) * (2 * n) * (1 - 2 * n)) / (4 * n * n * (1 - 2 * n));
- // Добавить слагаемое к сумме
- S += Sn;
- // Нарастить номер слагаемого
- n += 1;
- }
- // Предупреждение при достижении максимально допустимого количества итераций
- if (n == MAX_ITER)
- printf("Достигнуто максимальное количество итераций:\n", fx);
- // Вывести значение функции, суммы и количество слагаемых
- printf("fx=%12.10lf\n", fx);
- printf(" S=%12.10lf\n", S);
- printf(" n=%1.0lf\n", n);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement