- •1. Краткие теоретические сведения
- •1.1. Понятие ицвп
- •1.2. Алгоритмы вычисления сумм и произведений в цикле
- •А) суммы; б) произведения
- •1.3. Выбор типа общего члена суммы (произведения) при вычислении сумм и произведений в цикле
- •1.4. Вывод рекуррентных формул
- •А) вариант 1; б) вариант 2
- •1.4. Оператор цикла со спецификацией итерационного типа (типа условия)
- •А) выполнения оператора while ; б) функции примера 8.6
- •1.5. Уточнение корней уравнений
- •1.6. Использование оператора цикла do … while в ицвп
- •1.7. Использование операторов break и continue в ицвп
- •2. Задание
- •2.4.1.2. Пример
- •2.4.1.3. Программа
- •2.4.2.4. Тестирование
- •2.4.3. Задание 3. Использование рекуррентных формул в цикле
- •2.4.3.1. Условие задания
- •Варианты заданий
- •Варианты заданий
- •2.4.3.2. Пример
- •2.4.3.3. Программа
- •Варианты заданий
- •2.4.4.2. Пример
- •2.4.4.3. Программа
- •2.5.1.2. Пример программы
- •2.5.1.3. Программа
- •2.5.1.4. Тестирование
- •2.5.1.5. Типичные ошибки при выполнении работы
- •2.5.2. Задание 2. Накопление произведений в цикле
- •2.5.2.2. Пример 8.4
- •2.5.2.3. Программа
- •2.5.3.2. Пример для варианта 30
- •2.5.3.3. Программа
- •2.5.3.4. Тестирование
- •2.5.4. Задание 4. Вычисление значения функции с помощью разложения в ряд
- •2.5.4.1. Условие задания
- •Варианты заданий
- •2.5.4.2. Пример для варианта 30
- •2.5.4.3. Программа
- •2.5.4.4. Тестирование
- •3. Выводы
- •4. Требование к отчету
- •4. Краткие теоретические сведения.
- •Вопросы для самоконтроля
- •Литература
- •1. Краткие теоретические сведения 2
- •1.1. Понятие ицвп 2
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 |