Приклад виконання лабораторної роботи №7
Завдання 7-1 (варіант №0)
С класти алгоритм і програму для обчислення сумы числового ряду:
Аналіз завдання
Чисельник і знаменник кожного члена ряду можна знайти множенням попереднього значення на х (для чисельника) або на номер індекса цього члена (для знаменника).
Початкові значення (які передують першим) як для чисельника, так і для знаменника дорівнюють одиниці (х0=1; 0!=1).
Додавання треба починати з початкового значення суми, яке дорівнює нулю і в кожній ітерації до поточного значення суми додавати значення чергового члена ряду, обчислене в поточному циклі.
Блок-схема алгоритму (завдання 7-1)
Програма
// Програма обчислення суми ряду, із заданим числом членів
#include<iostream.h>
#include<conio.h>
#include<math.h>
int main()
{
const int n=10; // n - число членів ряду
double x=0.5; // х - константа ряду
int i; // i - змінна циклу
long fact; // fact - знаменник
double stepin, // stepin - чисельник
suma; // suma - сума ряду
clrscr();
cout<<“\n Програма обчислення суми ряду”;
cout<<“\n згідно завданню 7-1”;
cout<<“\n --------------------------------\n\n“;
stepin=1; // Поч. значення чисельника =1
fact=1; // Поч. значення знаменника =1
suma=0; // Початкове значення суми =0
for (i=1; i<n; i++) // Цикл по i від 1 до n
{
stepin=stepin*x; // Обчислення чисельника
fact=fact*i; // Обчислення знаменника
suma=suma+stepin/fact; // Сума i членів ряду
}
printf(“ Сума із %1i членів заданого ряду дорівнює %7.5f “,n,suma);
getch();
return 0;
}
Результати виконання завдання 7-1:
Програма обчислення суми ряду
(згідно завданню 7-1)
--------------------------------
Сума із 10 членів заданого ряду дорівнює 0.64872
Завдання 7-2(варіант №0)
Р озробити алгоритм і програму обчислення суми нескінченного ряду
із заданою точністю ε>0.
Вважати, що задана точність досягнута, якщо модуль чергового доданка не перевищує величини ε.
Аналіз завдання
Зі збільшенням k чисельник виразу для обчислення чергового члена числової послідовності наближається до одиниці, а знаменник - весь час збільшується, а тому значення всього виразу при збільшенні k зменшується. Ознакою закінчення підрахунку можна вважати досягнення черговим членом числового ряду значення меншого (по модулю) від заданого ε.
Блок-схема алгоритму (завдання 7-2)
Програма
#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<stdio.h>
int main()
{
const double x=5.0, // Постiйна величина ряду
e=1.0e-5; // Точнiсть обчислень
double s,a, // Черговий член ряду
suma; // Сума ряду
int k; // Номер чергового члена
clrscr();
cout<<"\nПрограма обчислення сумы безкiнечного ряду";
cout<<"\n з заданою точнiстю е="<<e;
cout<<"\n---------------------------------------------\n\n";
// Пропущeно 2 рядки
suma=0; // Початкова сума
k=1; // Номер чергового эл-та
do // Початок циклу
{
s=pow(fabs(x),1/k)/k/k/k; // Обчислення k-го члена
suma=suma+s; // Додавання членiв ряду
if (k % 2 == 1)
/* Вивiд на екран в 6 колонок результатiв промiжних
розрахункiв:
k | s | suma | k | s | suma |
(Для нeпарних - перехiд на новий рядок) */
printf("\nk=%2i s=%7.7f suma=%7.7f",k,s,suma);
else
printf(" k=%2i s=%7.7f suma=%7.7f",k,s,suma);
if (k % 48 == 0) // Якщо екран заповнений,
getch(); // то призупинка.
k++; // Перехiд до слiдуючого
} // члену ряду.
while (fabs(s) > e); // Повторити, якщо "ТАК"
printf("\n Пiдрахунок закiнчено при k = %1i",k-1);
printf(" Сумa = %7.5f",suma);
getch();
return 0;
}