Лабораторна робота
Тема:
Накопичення суми
Мета роботи: оволодiння прийомами складання циклiчних алгорит-
мiв i програм з накопичення суми i добутку певної
кiлькостi членiв ряду.
Завдання: Обчислити
Короткі теоретичні відомості:
Можливi такi варiанти постановки задачi накопичення суми або
добутку
s= a ; s= a ; s= a ; s= a .
Тут - символ суми, - символ добутку,
a - значення чергового члена ряду, n - кiлькiсть членiв.
37
Накопичення суми або добутку виконують в циклi за формулами:
для суми s=s+a , для добутку s=s*a . Перед циклом змiннiй s при-
своюїться початкове значення: для суми s=0, для добутку s=1.
Якщо ряд маї кiнцеве число членiв, в якостi параметра циклу
вибирають змiнну i - порядковий номер члена, якщо - безмежне, то
a - значення члена ряду.
При накопиченнi суми або добутку безмежного числа членiв ряд
повинен бути збiжним, тобто при i --- a --- 0. Обчислювальний
процес припиняїться, якщо ¦a ¦< , де - задана похибка.
Як правило, a представляї собою арифметичний вираз. З метою
його спрощення, зменшення похибки обчислень та запобiгання пере-
повнення пам'ятi при одержаннi промiжних результатiв слiд там,
де це можливо, використовувати рекурсiю для обчислення чергового
члена ряду за формулою a =F(a ).
Блок-схема матиме такий вигляд
Початок
i, h, y, s=0,
ні
=0
так
h=
s=s+h
*s
Друк
у
Кінець
Ідентифікація змінних:
Змінна | Ідентифікатор
b | b
i | i
? | s
h | h
c | c
Програма:
#include<math.h>
main()
{
int i;
float b=21.2, c=16.35,
s=0, h, y;
for(i=1;i<=8;i++)
{
if(pow(i,2)==9) continue;
h=1/(pow(i,2)-9);
s+=h;
}
y=sqrt(b+c)*s;
printf("y=%f",y);
getch();
}
Результати:
y= - 0.241583
Висновок: Я оволодiв прийомами складання циклiчних алгорит-
мiв i програм з накопичення суми i добутку певної
кiлькостi членiв ряду.