Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1 семестр / Лабароторная работа №6 прога

.docx
Скачиваний:
2
Добавлен:
16.05.2023
Размер:
111.56 Кб
Скачать

ФГБОУ ВО

«Уфимский государственный авиационный технический университет»

Кафедра ТК

ОТЧЕТ

по лабораторной работе № 6

по дисциплине «Программирование»

Вариант № 13

Выполнил: студент гр. ИВТ-127Б

Проверил: доцент каф. ТК

Блинова Д. В.

Уфа 2021

Тема работы: Циклы, использующие рекуррентные соотношения.

Цель работы: Получение навыков реализации программы на языке С++ с использованием рекуррентных соотношений.

Задачи работы:

  1. Составить блок-схему алгоритма работы программы;

  2. Написание программы на языке С++ с использованием рекуррентных соотношений;

  3. Тестирование работоспособности программы для различных исходных данных

Вариант № 13

Задание:

Выполнение задания:

Решение задачи:

  1. Пока очередной член по абсолютной величине меньше eps, выполняются п2 и п3

  2. К сумме прибавляется очередной член последовательности.

  3. Вычисляется новый член последовательности при помощи множителя.

Схема алгоритма работы программы:

Текст программы:

#include <iostream>

#include<math.h>

using namespace std;

int main()

{

setlocale(0, "");

double x, eps, sum = 0, p = 1, k = 0;

cout << "При заданном х с точностью eps вычислить сумму ((-1)^k*x^k)/(2k)!" << endl;

cout <<endl<< "Введите x" << endl << "x=";

cin >> x;

cout << endl << "Введите eps" << endl << "E=";

cin >> eps;

while (abs(p) >= eps) {

sum += p;

p = -p * (x / (2 * k + 2));

k++;

}

cout<< endl << "Сумма=" << sum;

return 0;

}

Тестовый пример:

Вычисления представлены в таблице при x=5 и eps= 0.00000001, каждое следующее слагаемое вычисляется по формуле p = -p * (x / (2 * k + 2))

X=

5

k

p

sum

0

1,00000000

1,00000000

1

-2,50000000

-1,50000000

2

3,12500000

1,62500000

3

-2,60416667

-0,97916667

4

1,62760417

0,64843750

5

-0,81380208

-0,16536458

6

0,33908420

0,17371962

7

-0,12110150

0,05261812

8

0,03784422

0,09046234

9

-0,01051228

0,07995005

10

0,00262807

0,08257812

11

-0,00059729

0,08198084

12

0,00012444

0,08210527

13

-0,00002393

0,08208134

14

0,00000427

0,08208561

15

-0,00000071

0,08208490

16

0,00000011

0,08208501

17

-0,00000002

0,08208500

Вывод: В ходе выполнения лабораторной работы были получены навыки реализации циклических программ на языке С++ с использованием рекуррентных соотношений.

Контрольные вопросы:

  1. Рекуррентное соотношение-соотношения вида, когда каждое следующее слагаемое зависит от предыдущего.

  2. Рекуррентное соотношение для вычисления следующего слагаемого выглядит так p(i+1) = p(i)  q, где вид множителя q определяется так: 𝑞 = 𝑝(𝑖+1)/ 𝑝(i)

  3. Выигрыш в использовании рекуррентных соотношений состоит в экономии времени работы программы и памяти.

  4. Это означает, что вычисления прекратятся только тогда, когда очередной член по абсолютной величине будет меньше 

  5. while(abs(p)>=eps)

{//тело цикла

}

  1. for (i=0; abs(q*p)≥eps; i++)

{//тело цикла

} где q множитель