Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР8-С++-10-апреля-2012.doc
Скачиваний:
9
Добавлен:
15.09.2019
Размер:
3.09 Mб
Скачать

2.5.1.2. Пример программы

Вычислить значение суммы.

.

Число членов суммы N определить из условия |ak| < , где |ak| – член суммы с индексом k. Расчеты произвести для х = 1,2 и  = 0,0001.

2.5.1.3. Программа

//Лабораторная работа № 8

//Задание 8-1d

//Накопление сумм в цикле

//Вариант 30

//Автор Петрова Мария гр. ИНФО-101

// 10.04.2012

//= = = = = = = = = = = = == = = = == = = = ==

#include <stdio.h>

#include <conio.h>

#include <iostream.h>

#include <math.h>

int main()

{

int k, n,f, mult;

// k - счетчик членов ряда - параметр цикла

// mult - так называемый мерцающий счетчик

// попеременно принимающий значения +1 и-1

// n - число членов ряда

float x, ak, s, eps;

// f - значение 1/факториал;

// аk - k-й член ряда;

// eps - заданная погрешность

// s - накопленная сумма,

cout << "Введите x, eps :" << endl;

cin >> x >> eps;

for (s=0, mult = -1, f =1,ak = 1, k=0; fabs(ak) >= eps; k++)

{

mult *= -1;

f *= k + 1;

ak = mult*pow(x,k)/f;

s += ak;

}

n = k;

/* вывод результата */

cout << "\n Результаты решения:" << endl;

cout << " Значение x = " << x << endl;

cout << " Погрешность вычислений eps = " << eps << endl;

cout << " Число членов ряда n = " << n << endl;

cout << " Значение суммы s = " << s << endl;

getch();

return 0;

}

2.5.1.4. Тестирование

2.5.1.5. Типичные ошибки при выполнении работы

Результат деления целого числа на целое есть целое число. Для получения правильного результата необходимо явным образом с помощью операции (тип) преобразовать один или оба операнда операции деления к типу float или double.

Внимание. Компилятор такую ошибку не перехватывает!

Библиотечная функция abs имеет аргумент типа int. Использо­вание ее с аргументом вещественного типа приводит к потере дробной части результата.

Для получения правильного результата необходимо использо­вать функцию fabs, аргумент и возвращаемое значение которой имеют тип double.

Счетчик цикла должен быть целым числом. Вещественные чис­ла представляются в памяти компьютера с погрешностью, поэтому при использовании в качестве счетчика вещественной переменной число повторений цикла может на единицу отличаться от планируемого.

При вычислении k-го члена ряда величину k целесообразно преобразовать к действительному типу, что обеспечит возможность суммировать ряды с числом членов, превышающим предельное для типа int значение 32767.

2.5.2. Задание 2. Накопление произведений в цикле

Составить программу для вычисления произведения (табл. 8.12).

Результаты и исходные данные вывести на экран дисплея.

2.5.2.2. Пример 8.4

Вычислить значение функции

.

Расчеты провести для k = 20 и х = 1,5..

2.5.2.3. Программа

//Лабораторная работа № 8

//Задание 8-2d

//Накопление произведений в цикле

//Вариант 30

//Автор Петрова Мария гр. ИНФО-101

// 10.04.2012

//= = = = = = = = = = = = == = = = == = = = ==

# include <stdio.h>

# include <conio.h>

#include <iostream.h>

# include <math.h>

int main()

{

int n, k;

// n - счетчик членов ряда

// k - число членов ряда

float p, x, y;

// p - произведение членов ряда

// y - очередной сомножитель произведения

cout << "Введите число членов произведения k:" << endl;

cin >> k;

cout << "Введите значение для x:" << endl;

cin >> x;

p = 1; //Правило накопления прозведений в цикле

for (n=1; n<=k; n++)

{

y = pow(x, n-1)/(2*n + 1); // Можно заменить одним

p = p * y; // оператором p = p *(pow(x, n-1)/(2*n + 1);

}

/* вывод результата */

cout << "\n Результаты решения:" << endl;

cout << " Число членов произведения k = " << k << endl;

cout << " Значение произведения p = " << p << endl;

getch();

return 0;

}

2.5.2.4. Тестирование

2.5.3. Задание 3. Вычисления суммы ряда с использованием рекуррентных формул

2.5.3.1. Условие задания

Составить программу вычисления суммы ряда S (табл. 8.13) с использованием рекуррентной формулы с точностью для заданных значений х и . Посчитать количество итераций, затраченных для достижения заданной точности. Результаты вычислений вывести на экран дисплея.

Таблица 8.13

Варианты заданий

S

x

1

0,15

10-4

2

0,21

10-5

3

0,12

10-4

4

0,49

10-5

5

0,11

10-4

6

0,8

10-3

7

0,76

10-5

8

0,74

10-5

9

0,12

10-4

10

0,09

10-6

11

0,14

10-5

12

0,87

10-6

13

-0,16

10-5

14

-0,33

10-4

15

0,25

10-5

16

0,08

10-4

17

0,4

10-3

18

0,6

10-5

19

0,55

10-4

20

0,14

10-3

21

-0,23

10-4

22

0,19

10-5

23

-0,18

10-4

24

0,32

10-5

25

0,27

10-4

26

0,18

10-5

27

-0,25

10-6

28

0,16

10-4

29

0,19

10-4

30

0,95

10-5