Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*********************************************
- * Алтайский государственный университет *
- * Кафедра информатики *
- * *
- * Курс "Языки и методы программитрования" *
- * Лекция 7. Примеры программ с циклами *
- * *
- * Задача о разложении функции в ряд *
- * (эффективный вариант) *
- * *
- **********************************************/
- #include <stdio.h>
- #include <math.h>
- #define MAX_ITER 1000.0
- void main() {
- double x, // аргумент функции
- fx, // значение функции
- Sn, // слагаемое с номером n
- S, // сумма ряда
- eps, // погрешность разложения в ряд
- a,
- SFACT = 1.0,// Сумма фактариала
- n; // номер слагаемого
- // Ввод аргумента функции и погрешности разложения
- printf(" x=");
- scanf("%lf",&x);
- printf("eps=");
- scanf("%lf",&eps);
- printf(" a=");
- scanf("%lf",&a);
- // Вычисление функции в точке x
- fx= pow(a, x);
- // Вычисление слагаемого с номером 0
- n=1;
- Sn=1;
- S=Sn;
- // Пока
- // значение функции fx отличается от суммы ряда S более, чем на eps,
- // И номер слагаемого не слишком велик
- // повторять
- while(fabs(fx-S) > eps && n < MAX_ITER) {
- // Вычислить очередное слагаемое домножением предыдущего
- SFACT*=n;
- Sn=(pow(x*log(a),n))/(SFACT);
- // Добавить слагаемое к сумме
- 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