МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Державний університет інформатики і штучного інтелекту
Д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
# include
# include
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