Вычисление суммы бесконечного ряда с точностью епсилон
Вычисление суммы бесконечного ряда с точностью епсилон
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ Государственный университет информатики и искусственного интеллекта Д050103.1.01.10/080.ЛР Кафедра программного обеспечения интеллектуальных систем Лабораторная работа №1 по дисциплине «Основы программирования» на тему: «Вычисление суммы бесконечного ряда» Вариант №14 Проверил: ст. преп. Р.А. Сорокин асс. Е. В. Курило Выполнила: ст. гр. ПО-10а Ю.Ю.Красавина Донецк-2010 Задание: Написать программу на языке программирования С++ Вычисление суммы бесконечного ряда с точностью эпсилон. Вид уравнения: Постановка задачи: Входные данные: e - вещественное число. Выходные данные:S - вещественное число. Промежуточные данные:k - вещественное, a - вещественное,i- целое. Ограничение на входные данные:0<е<1 Метод решения задачи: На первом шаге присвоим значение i:=1, а S:=0. значение a рассчитаем по общей формуле приведенной выше. Рассчитаем k. k = => Следующие а будем вычислятьa:= a *k, а значение i будем увеличивать на каждом шагеi:=i+1; Алгоритм решения задачи: Контрольный просчет для первых 5 итераций: Общая формула |
Значение переменной i | Число в результате просчета по формуле «в лоб»,а | | 1 | | | 2 | | | 3 | | | 4 | | | 5 | | | |
Расчет с коэффициентом: |
Значение i | Значение k | a начальное | результат | | 1 | | | | | 2 | | | | | 3 | | | | | 4 | | | | | 5 | | | | | |
Примечания: Под а начальным имеется ввиду значение переменной, с которой начинается просчет по ниже приведенным формулам: (а1 берется с просчета по начальной формуле, расчет k приведен ниже.) а2=а1*k1; a3=a2*k2; a4=a3*k3; a5=a4*k4. Расчет k: Подставляем в формулу значение i |
Значение i | Переменная k (номер коэффициента.) | | 1 | (k1) | | 2 | (k2) | | 3 | (k3) | | 4 | (k4) | | |
Листинг программы: #include <stdio.h> #include <conio.h> #include <math.h> void main (void) { int i; float a,s,e; clrscr(); do { printf("Write e"); scanf("%f", &e); } while(e<=0||e>=1); s=0; i=1; a=0.7; while(fabs(a)>=e) { s=s+a; a=a*(-sqrt(float(i)/(float(i)+2.0))); i++; } printf("Sum of infinite series =%f",s); getch(); } Контрольный пример: Write e 0.0003 Write e 0.0025 Sum of infinite series =0.458940 Sum of infinite series =0.460040
|